Skip to content

Commit 3de45b3

Browse files
Bot Updating Templated Files
1 parent 3cc05b1 commit 3de45b3

File tree

2 files changed

+141
-44
lines changed

2 files changed

+141
-44
lines changed

Jenkinsfile

Lines changed: 96 additions & 27 deletions
Original file line numberDiff line numberDiff line change
@@ -41,7 +41,7 @@ pipeline {
4141
script: '''curl -s https://api.github.com/repos/${LS_USER}/${LS_REPO}/releases/latest | jq -r '. | .tag_name' ''',
4242
returnStdout: true).trim()
4343
env.LS_RELEASE_NOTES = sh(
44-
script: '''git log -1 --pretty=%B | sed -E ':a;N;$!ba;s/\\r{0,1}\\n/\\\\n/g' ''',
44+
script: '''cat readme-vars.yml | awk -F \\" '/date: "[0-9][0-9].[0-9][0-9].[0-9][0-9]:/ {print $4;exit;}' | sed -E ':a;N;$!ba;s/\\r{0,1}\\n/\\\\n/g' ''',
4545
returnStdout: true).trim()
4646
env.GITHUB_DATE = sh(
4747
script: '''date '+%Y-%m-%dT%H:%M:%S%:z' ''',
@@ -132,7 +132,7 @@ pipeline {
132132
script{
133133
env.IMAGE = env.DOCKERHUB_IMAGE
134134
if (env.MULTIARCH == 'true') {
135-
env.CI_TAGS = 'amd64-' + env.EXT_RELEASE_CLEAN + '-ls' + env.LS_TAG_NUMBER + '|arm32v6-' + env.EXT_RELEASE_CLEAN + '-ls' + env.LS_TAG_NUMBER + '|arm64v8-' + env.EXT_RELEASE_CLEAN + '-ls' + env.LS_TAG_NUMBER
135+
env.CI_TAGS = 'amd64-' + env.EXT_RELEASE_CLEAN + '-ls' + env.LS_TAG_NUMBER + '|arm32v7-' + env.EXT_RELEASE_CLEAN + '-ls' + env.LS_TAG_NUMBER + '|arm64v8-' + env.EXT_RELEASE_CLEAN + '-ls' + env.LS_TAG_NUMBER
136136
} else {
137137
env.CI_TAGS = env.EXT_RELEASE_CLEAN + '-ls' + env.LS_TAG_NUMBER
138138
}
@@ -150,7 +150,7 @@ pipeline {
150150
script{
151151
env.IMAGE = env.DEV_DOCKERHUB_IMAGE
152152
if (env.MULTIARCH == 'true') {
153-
env.CI_TAGS = 'amd64-' + env.EXT_RELEASE_CLEAN + '-pkg-' + env.PACKAGE_TAG + '-dev-' + env.COMMIT_SHA + '|arm32v6-' + env.EXT_RELEASE_CLEAN + '-pkg-' + env.PACKAGE_TAG + '-dev-' + env.COMMIT_SHA + '|arm64v8-' + env.EXT_RELEASE_CLEAN + '-pkg-' + env.PACKAGE_TAG + '-dev-' + env.COMMIT_SHA
153+
env.CI_TAGS = 'amd64-' + env.EXT_RELEASE_CLEAN + '-pkg-' + env.PACKAGE_TAG + '-dev-' + env.COMMIT_SHA + '|arm32v7-' + env.EXT_RELEASE_CLEAN + '-pkg-' + env.PACKAGE_TAG + '-dev-' + env.COMMIT_SHA + '|arm64v8-' + env.EXT_RELEASE_CLEAN + '-pkg-' + env.PACKAGE_TAG + '-dev-' + env.COMMIT_SHA
154154
} else {
155155
env.CI_TAGS = env.EXT_RELEASE_CLEAN + '-pkg-' + env.PACKAGE_TAG + '-dev-' + env.COMMIT_SHA
156156
}
@@ -168,7 +168,7 @@ pipeline {
168168
script{
169169
env.IMAGE = env.PR_DOCKERHUB_IMAGE
170170
if (env.MULTIARCH == 'true') {
171-
env.CI_TAGS = 'amd64-' + env.EXT_RELEASE_CLEAN + '-pkg-' + env.PACKAGE_TAG + '-pr-' + env.PULL_REQUEST + '|arm32v6-' + env.EXT_RELEASE_CLEAN + '-pkg-' + env.PACKAGE_TAG + '-pr-' + env.PULL_REQUEST + '|arm64v8-' + env.EXT_RELEASE_CLEAN + '-pkg-' + env.PACKAGE_TAG + '-pr-' + env.PULL_REQUEST
171+
env.CI_TAGS = 'amd64-' + env.EXT_RELEASE_CLEAN + '-pkg-' + env.PACKAGE_TAG + '-pr-' + env.PULL_REQUEST + '|arm32v7-' + env.EXT_RELEASE_CLEAN + '-pkg-' + env.PACKAGE_TAG + '-pr-' + env.PULL_REQUEST + '|arm64v8-' + env.EXT_RELEASE_CLEAN + '-pkg-' + env.PACKAGE_TAG + '-pr-' + env.PULL_REQUEST
172172
} else {
173173
env.CI_TAGS = env.EXT_RELEASE_CLEAN + '-pkg-' + env.PACKAGE_TAG + '-pr-' + env.PULL_REQUEST
174174
}
@@ -178,6 +178,35 @@ pipeline {
178178
}
179179
}
180180
}
181+
// Run ShellCheck
182+
stage('ShellCheck') {
183+
when {
184+
environment name: 'CI', value: 'true'
185+
}
186+
steps {
187+
withCredentials([
188+
string(credentialsId: 'spaces-key', variable: 'DO_KEY'),
189+
string(credentialsId: 'spaces-secret', variable: 'DO_SECRET')
190+
]) {
191+
script{
192+
env.SHELLCHECK_URL = 'https://lsio-ci.ams3.digitaloceanspaces.com/' + env.IMAGE + '/' + env.META_TAG + '/shellcheck-result.xml'
193+
}
194+
sh '''curl -sL https://raw.githubusercontent.com/linuxserver/docker-shellcheck/master/checkrun.sh | /bin/bash'''
195+
sh '''#! /bin/bash
196+
set -e
197+
docker pull lsiodev/spaces-file-upload:latest
198+
docker run --rm \
199+
-e DESTINATION=\"${IMAGE}/${META_TAG}/shellcheck-result.xml\" \
200+
-e FILE_NAME="shellcheck-result.xml" \
201+
-e MIMETYPE="text/xml" \
202+
-v ${WORKSPACE}:/mnt \
203+
-e SECRET_KEY=\"${DO_SECRET}\" \
204+
-e ACCESS_KEY=\"${DO_KEY}\" \
205+
-t lsiodev/spaces-file-upload:latest \
206+
python /upload.py'''
207+
}
208+
}
209+
}
181210
// Use helper containers to render templated files
182211
stage('Update-Templates') {
183212
when {
@@ -209,6 +238,15 @@ pipeline {
209238
else
210239
echo "false" > /tmp/${COMMIT_SHA}-${BUILD_NUMBER}
211240
fi
241+
mkdir -p ${TEMPDIR}/gitbook
242+
git clone https://github.com/linuxserver/docker-documentation.git ${TEMPDIR}/gitbook/docker-documentation
243+
if [ "${BRANCH_NAME}" = "master" ] && [ ! -f ${TEMPDIR}/gitbook/docker-documentation/images/docker-${CONTAINER_NAME}.md ] || [ "$(md5sum ${TEMPDIR}/gitbook/docker-documentation/images/docker-${CONTAINER_NAME}.md | awk '{ print $1 }')" != "$(md5sum ${TEMPDIR}/${CONTAINER_NAME}/docker-${CONTAINER_NAME}.md | awk '{ print $1 }')" ]; then
244+
cp ${TEMPDIR}/${CONTAINER_NAME}/docker-${CONTAINER_NAME}.md ${TEMPDIR}/gitbook/docker-documentation/images/
245+
cd ${TEMPDIR}/gitbook/docker-documentation/
246+
git add images/docker-${CONTAINER_NAME}.md
247+
git commit -m 'Bot Updating Templated Files'
248+
git push https://LinuxServer-CI:${GITHUB_TOKEN}@github.com/linuxserver/docker-documentation.git --all
249+
fi
212250
rm -Rf ${TEMPDIR}'''
213251
script{
214252
env.FILES_UPDATED = sh(
@@ -243,7 +281,7 @@ pipeline {
243281
environment name: 'EXIT_STATUS', value: ''
244282
}
245283
steps {
246-
sh "docker build --no-cache -t ${IMAGE}:${META_TAG} \
284+
sh "docker build --no-cache --pull -t ${IMAGE}:${META_TAG} \
247285
--build-arg ${BUILD_VERSION_ARG}=${EXT_RELEASE} --build-arg VERSION=\"${META_TAG}\" --build-arg BUILD_DATE=${GITHUB_DATE} ."
248286
}
249287
}
@@ -256,7 +294,7 @@ pipeline {
256294
parallel {
257295
stage('Build X86') {
258296
steps {
259-
sh "docker build --no-cache -t ${IMAGE}:amd64-${META_TAG} \
297+
sh "docker build --no-cache --pull -t ${IMAGE}:amd64-${META_TAG} \
260298
--build-arg ${BUILD_VERSION_ARG}=${EXT_RELEASE} --build-arg VERSION=\"${META_TAG}\" --build-arg BUILD_DATE=${GITHUB_DATE} ."
261299
}
262300
}
@@ -279,10 +317,13 @@ pipeline {
279317
'''
280318
sh "curl https://lsio-ci.ams3.digitaloceanspaces.com/qemu-arm-static -o qemu-arm-static"
281319
sh "chmod +x qemu-*"
282-
sh "docker build --no-cache -f Dockerfile.armhf -t ${IMAGE}:arm32v6-${META_TAG} \
320+
sh "docker build --no-cache --pull -f Dockerfile.armhf -t ${IMAGE}:arm32v7-${META_TAG} \
283321
--build-arg ${BUILD_VERSION_ARG}=${EXT_RELEASE} --build-arg VERSION=\"${META_TAG}\" --build-arg BUILD_DATE=${GITHUB_DATE} ."
284-
sh "docker tag ${IMAGE}:arm32v6-${META_TAG} lsiodev/buildcache:arm32v6-${COMMIT_SHA}-${BUILD_NUMBER}"
285-
sh "docker push lsiodev/buildcache:arm32v6-${COMMIT_SHA}-${BUILD_NUMBER}"
322+
sh "docker tag ${IMAGE}:arm32v7-${META_TAG} lsiodev/buildcache:arm32v7-${COMMIT_SHA}-${BUILD_NUMBER}"
323+
sh "docker push lsiodev/buildcache:arm32v7-${COMMIT_SHA}-${BUILD_NUMBER}"
324+
sh '''docker rmi \
325+
${IMAGE}:arm32v7-${META_TAG} \
326+
lsiodev/buildcache:arm32v7-${COMMIT_SHA}-${BUILD_NUMBER} '''
286327
}
287328
}
288329
}
@@ -305,10 +346,13 @@ pipeline {
305346
'''
306347
sh "curl https://lsio-ci.ams3.digitaloceanspaces.com/qemu-aarch64-static -o qemu-aarch64-static"
307348
sh "chmod +x qemu-*"
308-
sh "docker build --no-cache -f Dockerfile.aarch64 -t ${IMAGE}:arm64v8-${META_TAG} \
349+
sh "docker build --no-cache --pull -f Dockerfile.aarch64 -t ${IMAGE}:arm64v8-${META_TAG} \
309350
--build-arg ${BUILD_VERSION_ARG}=${EXT_RELEASE} --build-arg VERSION=\"${META_TAG}\" --build-arg BUILD_DATE=${GITHUB_DATE} ."
310351
sh "docker tag ${IMAGE}:arm64v8-${META_TAG} lsiodev/buildcache:arm64v8-${COMMIT_SHA}-${BUILD_NUMBER}"
311352
sh "docker push lsiodev/buildcache:arm64v8-${COMMIT_SHA}-${BUILD_NUMBER}"
353+
sh '''docker rmi \
354+
${IMAGE}:arm64v8-${META_TAG} \
355+
lsiodev/buildcache:arm64v8-${COMMIT_SHA}-${BUILD_NUMBER} '''
312356
}
313357
}
314358
}
@@ -332,13 +376,13 @@ pipeline {
332376
fi
333377
if [ "${DIST_IMAGE}" == "alpine" ]; then
334378
docker run --rm --entrypoint '/bin/sh' -v ${TEMPDIR}:/tmp ${LOCAL_CONTAINER} -c '\
335-
apk info > packages && \
336-
apk info -v > versions && \
337-
paste -d " " packages versions > /tmp/package_versions.txt && \
379+
apk info -v > /tmp/package_versions.txt && \
380+
sort -o /tmp/package_versions.txt /tmp/package_versions.txt && \
338381
chmod 777 /tmp/package_versions.txt'
339382
elif [ "${DIST_IMAGE}" == "ubuntu" ]; then
340383
docker run --rm --entrypoint '/bin/sh' -v ${TEMPDIR}:/tmp ${LOCAL_CONTAINER} -c '\
341-
apt list -qq --installed > /tmp/package_versions.txt && \
384+
apt list -qq --installed | sed "s#/.*now ##g" | cut -d" " -f1 > /tmp/package_versions.txt && \
385+
sort -o /tmp/package_versions.txt /tmp/package_versions.txt && \
342386
chmod 777 /tmp/package_versions.txt'
343387
fi
344388
NEW_PACKAGE_TAG=$(md5sum ${TEMPDIR}/package_versions.txt | cut -c1-8 )
@@ -418,9 +462,9 @@ pipeline {
418462
set -e
419463
docker pull lsiodev/ci:latest
420464
if [ "${MULTIARCH}" == "true" ]; then
421-
docker pull lsiodev/buildcache:arm32v6-${COMMIT_SHA}-${BUILD_NUMBER}
465+
docker pull lsiodev/buildcache:arm32v7-${COMMIT_SHA}-${BUILD_NUMBER}
422466
docker pull lsiodev/buildcache:arm64v8-${COMMIT_SHA}-${BUILD_NUMBER}
423-
docker tag lsiodev/buildcache:arm32v6-${COMMIT_SHA}-${BUILD_NUMBER} ${IMAGE}:arm32v6-${META_TAG}
467+
docker tag lsiodev/buildcache:arm32v7-${COMMIT_SHA}-${BUILD_NUMBER} ${IMAGE}:arm32v7-${META_TAG}
424468
docker tag lsiodev/buildcache:arm64v8-${COMMIT_SHA}-${BUILD_NUMBER} ${IMAGE}:arm64v8-${META_TAG}
425469
fi
426470
docker run --rm \
@@ -470,6 +514,10 @@ pipeline {
470514
sh "docker tag ${IMAGE}:${META_TAG} ${IMAGE}:latest"
471515
sh "docker push ${IMAGE}:latest"
472516
sh "docker push ${IMAGE}:${META_TAG}"
517+
sh '''docker rmi \
518+
${IMAGE}:${META_TAG} \
519+
${IMAGE}:latest '''
520+
473521
}
474522
}
475523
}
@@ -493,30 +541,39 @@ pipeline {
493541
'''
494542
sh '''#! /bin/bash
495543
if [ "${CI}" == "false" ]; then
496-
docker pull lsiodev/buildcache:arm32v6-${COMMIT_SHA}-${BUILD_NUMBER}
544+
docker pull lsiodev/buildcache:arm32v7-${COMMIT_SHA}-${BUILD_NUMBER}
497545
docker pull lsiodev/buildcache:arm64v8-${COMMIT_SHA}-${BUILD_NUMBER}
498-
docker tag lsiodev/buildcache:arm32v6-${COMMIT_SHA}-${BUILD_NUMBER} ${IMAGE}:arm32v6-${META_TAG}
546+
docker tag lsiodev/buildcache:arm32v7-${COMMIT_SHA}-${BUILD_NUMBER} ${IMAGE}:arm32v7-${META_TAG}
499547
docker tag lsiodev/buildcache:arm64v8-${COMMIT_SHA}-${BUILD_NUMBER} ${IMAGE}:arm64v8-${META_TAG}
500548
fi'''
501549
sh "docker tag ${IMAGE}:amd64-${META_TAG} ${IMAGE}:amd64-latest"
502-
sh "docker tag ${IMAGE}:arm32v6-${META_TAG} ${IMAGE}:arm32v6-latest"
550+
sh "docker tag ${IMAGE}:arm32v7-${META_TAG} ${IMAGE}:arm32v7-latest"
503551
sh "docker tag ${IMAGE}:arm64v8-${META_TAG} ${IMAGE}:arm64v8-latest"
504552
sh "docker push ${IMAGE}:amd64-${META_TAG}"
505-
sh "docker push ${IMAGE}:arm32v6-${META_TAG}"
553+
sh "docker push ${IMAGE}:arm32v7-${META_TAG}"
506554
sh "docker push ${IMAGE}:arm64v8-${META_TAG}"
507555
sh "docker push ${IMAGE}:amd64-latest"
508-
sh "docker push ${IMAGE}:arm32v6-latest"
556+
sh "docker push ${IMAGE}:arm32v7-latest"
509557
sh "docker push ${IMAGE}:arm64v8-latest"
510558
sh "docker manifest push --purge ${IMAGE}:latest || :"
511-
sh "docker manifest create ${IMAGE}:latest ${IMAGE}:amd64-latest ${IMAGE}:arm32v6-latest ${IMAGE}:arm64v8-latest"
512-
sh "docker manifest annotate ${IMAGE}:latest ${IMAGE}:arm32v6-latest --os linux --arch arm"
559+
sh "docker manifest create ${IMAGE}:latest ${IMAGE}:amd64-latest ${IMAGE}:arm32v7-latest ${IMAGE}:arm64v8-latest"
560+
sh "docker manifest annotate ${IMAGE}:latest ${IMAGE}:arm32v7-latest --os linux --arch arm"
513561
sh "docker manifest annotate ${IMAGE}:latest ${IMAGE}:arm64v8-latest --os linux --arch arm64 --variant v8"
514562
sh "docker manifest push --purge ${IMAGE}:${META_TAG} || :"
515-
sh "docker manifest create ${IMAGE}:${META_TAG} ${IMAGE}:amd64-${META_TAG} ${IMAGE}:arm32v6-${META_TAG} ${IMAGE}:arm64v8-${META_TAG}"
516-
sh "docker manifest annotate ${IMAGE}:${META_TAG} ${IMAGE}:arm32v6-${META_TAG} --os linux --arch arm"
563+
sh "docker manifest create ${IMAGE}:${META_TAG} ${IMAGE}:amd64-${META_TAG} ${IMAGE}:arm32v7-${META_TAG} ${IMAGE}:arm64v8-${META_TAG}"
564+
sh "docker manifest annotate ${IMAGE}:${META_TAG} ${IMAGE}:arm32v7-${META_TAG} --os linux --arch arm"
517565
sh "docker manifest annotate ${IMAGE}:${META_TAG} ${IMAGE}:arm64v8-${META_TAG} --os linux --arch arm64 --variant v8"
518566
sh "docker manifest push --purge ${IMAGE}:latest"
519567
sh "docker manifest push --purge ${IMAGE}:${META_TAG}"
568+
sh '''docker rmi \
569+
${IMAGE}:amd64-${META_TAG} \
570+
${IMAGE}:amd64-latest \
571+
${IMAGE}:arm32v7-${META_TAG} \
572+
${IMAGE}:arm32v7-latest \
573+
${IMAGE}:arm64v8-${META_TAG} \
574+
${IMAGE}:arm64v8-latest \
575+
lsiodev/buildcache:arm32v7-${COMMIT_SHA}-${BUILD_NUMBER} \
576+
lsiodev/buildcache:arm64v8-${COMMIT_SHA}-${BUILD_NUMBER} '''
520577
}
521578
}
522579
}
@@ -577,6 +634,18 @@ pipeline {
577634
}
578635
}
579636
}
637+
// If this is a Pull request send the CI link as a comment on it
638+
stage('Pull Request Comment') {
639+
when {
640+
not {environment name: 'CHANGE_ID', value: ''}
641+
environment name: 'CI', value: 'true'
642+
environment name: 'EXIT_STATUS', value: ''
643+
}
644+
steps {
645+
sh '''curl -H "Authorization: token ${GITHUB_TOKEN}" -X POST https://api.github.com/repos/${LS_USER}/${LS_REPO}/issues/${PULL_REQUEST}/comments \
646+
-d '{"body": "I am a bot, here are the test results for this PR: \\n'${CI_URL}' \\n'${SHELLCHECK_URL}'"}' '''
647+
}
648+
}
580649
}
581650
/* ######################
582651
Send status to Discord
@@ -589,12 +658,12 @@ pipeline {
589658
}
590659
else if (currentBuild.currentResult == "SUCCESS"){
591660
sh ''' curl -X POST --data '{"avatar_url": "https://wiki.jenkins-ci.org/download/attachments/2916393/headshot.png","embeds": [{"color": 1681177,\
592-
"description": "**Build:** '${BUILD_NUMBER}'\\n**CI Results:** '${CI_URL}'\\n**Status:** Success\\n**Job:** '${RUN_DISPLAY_URL}'\\n**Change:** '${CODE_URL}'\\n**External Release:**: '${RELEASE_LINK}'\\n**DockerHub:** '${DOCKERHUB_LINK}'\\n"}],\
661+
"description": "**Build:** '${BUILD_NUMBER}'\\n**CI Results:** '${CI_URL}'\\n**ShellCheck Results:** '${SHELLCHECK_URL}'\\n**Status:** Success\\n**Job:** '${RUN_DISPLAY_URL}'\\n**Change:** '${CODE_URL}'\\n**External Release:**: '${RELEASE_LINK}'\\n**DockerHub:** '${DOCKERHUB_LINK}'\\n"}],\
593662
"username": "Jenkins"}' ${BUILDS_DISCORD} '''
594663
}
595664
else {
596665
sh ''' curl -X POST --data '{"avatar_url": "https://wiki.jenkins-ci.org/download/attachments/2916393/headshot.png","embeds": [{"color": 16711680,\
597-
"description": "**Build:** '${BUILD_NUMBER}'\\n**CI Results:** '${CI_URL}'\\n**Status:** failure\\n**Job:** '${RUN_DISPLAY_URL}'\\n**Change:** '${CODE_URL}'\\n**External Release:**: '${RELEASE_LINK}'\\n**DockerHub:** '${DOCKERHUB_LINK}'\\n"}],\
666+
"description": "**Build:** '${BUILD_NUMBER}'\\n**CI Results:** '${CI_URL}'\\n**ShellCheck Results:** '${SHELLCHECK_URL}'\\n**Status:** failure\\n**Job:** '${RUN_DISPLAY_URL}'\\n**Change:** '${CODE_URL}'\\n**External Release:**: '${RELEASE_LINK}'\\n**DockerHub:** '${DOCKERHUB_LINK}'\\n"}],\
598667
"username": "Jenkins"}' ${BUILDS_DISCORD} '''
599668
}
600669
}

0 commit comments

Comments
 (0)