@@ -19,7 +19,14 @@ pipeline {
1919 PR_DOCKERHUB_IMAGE = ' lspipepr/mono'
2020 DIST_IMAGE = ' ubuntu'
2121 MULTIARCH = ' true'
22- CI = ' false'
22+ CI = ' true'
23+ CI_WEB = ' false'
24+ CI_PORT = ' 80'
25+ CI_SSL = ' true'
26+ CI_DELAY = ' 30'
27+ CI_DOCKERENV = ' TZ=US/Pacific'
28+ CI_AUTH = ' user:password'
29+ CI_WEBPATH = ' '
2330 }
2431 stages {
2532 // Setup all the basic environment variables needed for the build
@@ -113,7 +120,7 @@ pipeline {
113120 script{
114121 env. IMAGE = env. DOCKERHUB_IMAGE
115122 if (env. MULTIARCH == ' true' ) {
116- 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
123+ 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
117124 } else {
118125 env. CI_TAGS = env. EXT_RELEASE_CLEAN + ' -ls' + env. LS_TAG_NUMBER
119126 }
@@ -131,7 +138,7 @@ pipeline {
131138 script{
132139 env. IMAGE = env. DEV_DOCKERHUB_IMAGE
133140 if (env. MULTIARCH == ' true' ) {
134- 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
141+ 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
135142 } else {
136143 env. CI_TAGS = env. EXT_RELEASE_CLEAN + ' -pkg-' + env. PACKAGE_TAG + ' -dev-' + env. COMMIT_SHA
137144 }
@@ -149,7 +156,7 @@ pipeline {
149156 script{
150157 env. IMAGE = env. PR_DOCKERHUB_IMAGE
151158 if (env. MULTIARCH == ' true' ) {
152- 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
159+ 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
153160 } else {
154161 env. CI_TAGS = env. EXT_RELEASE_CLEAN + ' -pkg-' + env. PACKAGE_TAG + ' -pr-' + env. PULL_REQUEST
155162 }
@@ -159,67 +166,32 @@ pipeline {
159166 }
160167 }
161168 }
162- // Use helper containers to render templated files
163- stage(' Update-Templates ' ) {
169+ // Run ShellCheck
170+ stage(' ShellCheck ' ) {
164171 when {
165- branch " bionic"
166- environment name : ' CHANGE_ID' , value : ' '
167- expression {
168- env. CONTAINER_NAME != null
169- }
170- }
171- steps {
172- sh ''' #! /bin/bash
173- set -e
174- TEMPDIR=$(mktemp -d)
175- docker pull linuxserver/jenkins-builder:latest
176- docker run --rm -e CONTAINER_NAME=${CONTAINER_NAME} -e GITHUB_BRANCH=bionic -v ${TEMPDIR}:/ansible/jenkins linuxserver/jenkins-builder:latest
177- docker pull linuxserver/doc-builder:latest
178- docker run --rm -e CONTAINER_NAME=${CONTAINER_NAME} -e GITHUB_BRANCH=bionic -v ${TEMPDIR}:/ansible/readme linuxserver/doc-builder:latest
179- if [ "$(md5sum ${TEMPDIR}/${LS_REPO}/Jenkinsfile | awk '{ print $1 }')" != "$(md5sum Jenkinsfile | awk '{ print $1 }')" ] || [ "$(md5sum ${TEMPDIR}/${CONTAINER_NAME}/README.md | awk '{ print $1 }')" != "$(md5sum README.md | awk '{ print $1 }')" ]; then
180- mkdir -p ${TEMPDIR}/repo
181- git clone https://github.com/${LS_USER}/${LS_REPO}.git ${TEMPDIR}/repo/${LS_REPO}
182- git --git-dir ${TEMPDIR}/repo/${LS_REPO}/.git checkout -f bionic
183- cp ${TEMPDIR}/${CONTAINER_NAME}/README.md ${TEMPDIR}/repo/${LS_REPO}/
184- cp ${TEMPDIR}/docker-${CONTAINER_NAME}/Jenkinsfile ${TEMPDIR}/repo/${LS_REPO}/
185- cd ${TEMPDIR}/repo/${LS_REPO}/
186- git --git-dir ${TEMPDIR}/repo/${LS_REPO}/.git add Jenkinsfile README.md
187- git --git-dir ${TEMPDIR}/repo/${LS_REPO}/.git commit -m 'Bot Updating Templated Files'
188- git --git-dir ${TEMPDIR}/repo/${LS_REPO}/.git push https://LinuxServer-CI:${GITHUB_TOKEN}@github.com/${LS_USER}/${LS_REPO}.git --all
189- echo "true" > /tmp/${COMMIT_SHA}-${BUILD_NUMBER}
190- else
191- echo "false" > /tmp/${COMMIT_SHA}-${BUILD_NUMBER}
192- fi
193- mkdir -p ${TEMPDIR}/gitbook
194- git clone https://github.com/linuxserver/docker-documentation.git ${TEMPDIR}/gitbook/docker-documentation
195- 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
196- cp ${TEMPDIR}/${CONTAINER_NAME}/docker-${CONTAINER_NAME}.md ${TEMPDIR}/gitbook/docker-documentation/images/
197- cd ${TEMPDIR}/gitbook/docker-documentation/
198- git add images/docker-${CONTAINER_NAME}.md
199- git commit -m 'Bot Updating Templated Files'
200- git push https://LinuxServer-CI:${GITHUB_TOKEN}@github.com/linuxserver/docker-documentation.git --all
201- fi
202- rm -Rf ${TEMPDIR}'''
203- script{
204- env. FILES_UPDATED = sh(
205- script : ''' cat /tmp/${COMMIT_SHA}-${BUILD_NUMBER}''' ,
206- returnStdout : true ). trim()
207- }
208- }
209- }
210- // Exit the build if the Templated files were just updated
211- stage(' Template-exit' ) {
212- when {
213- branch " bionic"
214- environment name : ' CHANGE_ID' , value : ' '
215- environment name : ' FILES_UPDATED' , value : ' true'
216- expression {
217- env. CONTAINER_NAME != null
218- }
172+ environment name : ' CI' , value : ' true'
219173 }
220174 steps {
221- script{
222- env. EXIT_STATUS = ' ABORTED'
175+ withCredentials([
176+ string(credentialsId : ' spaces-key' , variable : ' DO_KEY' ),
177+ string(credentialsId : ' spaces-secret' , variable : ' DO_SECRET' )
178+ ]) {
179+ script{
180+ env. SHELLCHECK_URL = ' https://lsio-ci.ams3.digitaloceanspaces.com/' + env. IMAGE + ' /' + env. META_TAG + ' /shellcheck-result.xml'
181+ }
182+ sh ''' curl -sL https://raw.githubusercontent.com/linuxserver/docker-shellcheck/master/checkrun.sh | /bin/bash'''
183+ sh ''' #! /bin/bash
184+ set -e
185+ docker pull lsiodev/spaces-file-upload:latest
186+ docker run --rm \
187+ -e DESTINATION=\" ${IMAGE}/${META_TAG}/shellcheck-result.xml\" \
188+ -e FILE_NAME="shellcheck-result.xml" \
189+ -e MIMETYPE="text/xml" \
190+ -v ${WORKSPACE}:/mnt \
191+ -e SECRET_KEY=\" ${DO_SECRET}\" \
192+ -e ACCESS_KEY=\" ${DO_KEY}\" \
193+ -t lsiodev/spaces-file-upload:latest \
194+ python /upload.py'''
223195 }
224196 }
225197 }
@@ -269,13 +241,13 @@ pipeline {
269241 '''
270242 sh " curl https://lsio-ci.ams3.digitaloceanspaces.com/qemu-arm-static -o qemu-arm-static"
271243 sh " chmod +x qemu-*"
272- sh " docker build --no-cache -f Dockerfile.armhf -t ${ IMAGE} :arm32v6 -${ META_TAG} \
244+ sh " docker build --no-cache -f Dockerfile.armhf -t ${ IMAGE} :arm32v7 -${ META_TAG} \
273245 --build-arg ${ BUILD_VERSION_ARG} =${ EXT_RELEASE} --build-arg VERSION=\" ${ META_TAG} \" --build-arg BUILD_DATE=${ GITHUB_DATE} ."
274- sh " docker tag ${ IMAGE} :arm32v6 -${ META_TAG} lsiodev/buildcache:arm32v6 -${ COMMIT_SHA} -${ BUILD_NUMBER} "
275- sh " docker push lsiodev/buildcache:arm32v6 -${ COMMIT_SHA} -${ BUILD_NUMBER} "
246+ sh " docker tag ${ IMAGE} :arm32v7 -${ META_TAG} lsiodev/buildcache:arm32v7 -${ COMMIT_SHA} -${ BUILD_NUMBER} "
247+ sh " docker push lsiodev/buildcache:arm32v7 -${ COMMIT_SHA} -${ BUILD_NUMBER} "
276248 sh ''' docker rmi \
277- ${IMAGE}:arm32v6 -${META_TAG} \
278- lsiodev/buildcache:arm32v6 -${COMMIT_SHA}-${BUILD_NUMBER} '''
249+ ${IMAGE}:arm32v7 -${META_TAG} \
250+ lsiodev/buildcache:arm32v7 -${COMMIT_SHA}-${BUILD_NUMBER} '''
279251 }
280252 }
281253 }
@@ -328,13 +300,13 @@ pipeline {
328300 fi
329301 if [ "${DIST_IMAGE}" == "alpine" ]; then
330302 docker run --rm --entrypoint '/bin/sh' -v ${TEMPDIR}:/tmp ${LOCAL_CONTAINER} -c '\
331- apk info > packages && \
332- apk info -v > versions && \
333- paste -d " " packages versions > /tmp/package_versions.txt && \
303+ apk info -v > /tmp/package_versions.txt && \
304+ sort -o /tmp/package_versions.txt /tmp/package_versions.txt && \
334305 chmod 777 /tmp/package_versions.txt'
335306 elif [ "${DIST_IMAGE}" == "ubuntu" ]; then
336307 docker run --rm --entrypoint '/bin/sh' -v ${TEMPDIR}:/tmp ${LOCAL_CONTAINER} -c '\
337- apt list -qq --installed | cut -d" " -f1-2 > /tmp/package_versions.txt && \
308+ apt list -qq --installed | sed "s#/.*now ##g" | cut -d" " -f1 > /tmp/package_versions.txt && \
309+ sort -o /tmp/package_versions.txt /tmp/package_versions.txt && \
338310 chmod 777 /tmp/package_versions.txt'
339311 fi
340312 NEW_PACKAGE_TAG=$(md5sum ${TEMPDIR}/package_versions.txt | cut -c1-8 )
@@ -414,9 +386,9 @@ pipeline {
414386 set -e
415387 docker pull lsiodev/ci:latest
416388 if [ "${MULTIARCH}" == "true" ]; then
417- docker pull lsiodev/buildcache:arm32v6 -${COMMIT_SHA}-${BUILD_NUMBER}
389+ docker pull lsiodev/buildcache:arm32v7 -${COMMIT_SHA}-${BUILD_NUMBER}
418390 docker pull lsiodev/buildcache:arm64v8-${COMMIT_SHA}-${BUILD_NUMBER}
419- docker tag lsiodev/buildcache:arm32v6 -${COMMIT_SHA}-${BUILD_NUMBER} ${IMAGE}:arm32v6 -${META_TAG}
391+ docker tag lsiodev/buildcache:arm32v7 -${COMMIT_SHA}-${BUILD_NUMBER} ${IMAGE}:arm32v7 -${META_TAG}
420392 docker tag lsiodev/buildcache:arm64v8-${COMMIT_SHA}-${BUILD_NUMBER} ${IMAGE}:arm64v8-${META_TAG}
421393 fi
422394 docker run --rm \
@@ -493,38 +465,38 @@ pipeline {
493465 '''
494466 sh ''' #! /bin/bash
495467 if [ "${CI}" == "false" ]; then
496- docker pull lsiodev/buildcache:arm32v6 -${COMMIT_SHA}-${BUILD_NUMBER}
468+ docker pull lsiodev/buildcache:arm32v7 -${COMMIT_SHA}-${BUILD_NUMBER}
497469 docker pull lsiodev/buildcache:arm64v8-${COMMIT_SHA}-${BUILD_NUMBER}
498- docker tag lsiodev/buildcache:arm32v6 -${COMMIT_SHA}-${BUILD_NUMBER} ${IMAGE}:arm32v6 -${META_TAG}
470+ docker tag lsiodev/buildcache:arm32v7 -${COMMIT_SHA}-${BUILD_NUMBER} ${IMAGE}:arm32v7 -${META_TAG}
499471 docker tag lsiodev/buildcache:arm64v8-${COMMIT_SHA}-${BUILD_NUMBER} ${IMAGE}:arm64v8-${META_TAG}
500472 fi'''
501473 sh " docker tag ${ IMAGE} :amd64-${ META_TAG} ${ IMAGE} :amd64-bionic"
502- sh " docker tag ${ IMAGE} :arm32v6 -${ META_TAG} ${ IMAGE} :arm32v6 -bionic"
474+ sh " docker tag ${ IMAGE} :arm32v7 -${ META_TAG} ${ IMAGE} :arm32v7 -bionic"
503475 sh " docker tag ${ IMAGE} :arm64v8-${ META_TAG} ${ IMAGE} :arm64v8-bionic"
504476 sh " docker push ${ IMAGE} :amd64-${ META_TAG} "
505- sh " docker push ${ IMAGE} :arm32v6 -${ META_TAG} "
477+ sh " docker push ${ IMAGE} :arm32v7 -${ META_TAG} "
506478 sh " docker push ${ IMAGE} :arm64v8-${ META_TAG} "
507479 sh " docker push ${ IMAGE} :amd64-bionic"
508- sh " docker push ${ IMAGE} :arm32v6 -bionic"
480+ sh " docker push ${ IMAGE} :arm32v7 -bionic"
509481 sh " docker push ${ IMAGE} :arm64v8-bionic"
510482 sh " docker manifest push --purge ${ IMAGE} :bionic || :"
511- sh " docker manifest create ${ IMAGE} :bionic ${ IMAGE} :amd64-bionic ${ IMAGE} :arm32v6 -bionic ${ IMAGE} :arm64v8-bionic"
512- sh " docker manifest annotate ${ IMAGE} :bionic ${ IMAGE} :arm32v6 -bionic --os linux --arch arm"
483+ sh " docker manifest create ${ IMAGE} :bionic ${ IMAGE} :amd64-bionic ${ IMAGE} :arm32v7 -bionic ${ IMAGE} :arm64v8-bionic"
484+ sh " docker manifest annotate ${ IMAGE} :bionic ${ IMAGE} :arm32v7 -bionic --os linux --arch arm"
513485 sh " docker manifest annotate ${ IMAGE} :bionic ${ IMAGE} :arm64v8-bionic --os linux --arch arm64 --variant v8"
514486 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"
487+ sh " docker manifest create ${ IMAGE} :${ META_TAG} ${ IMAGE} :amd64-${ META_TAG} ${ IMAGE} :arm32v7 -${ META_TAG} ${ IMAGE} :arm64v8-${ META_TAG} "
488+ sh " docker manifest annotate ${ IMAGE} :${ META_TAG} ${ IMAGE} :arm32v7 -${ META_TAG} --os linux --arch arm"
517489 sh " docker manifest annotate ${ IMAGE} :${ META_TAG} ${ IMAGE} :arm64v8-${ META_TAG} --os linux --arch arm64 --variant v8"
518490 sh " docker manifest push --purge ${ IMAGE} :bionic"
519491 sh " docker manifest push --purge ${ IMAGE} :${ META_TAG} "
520492 sh ''' docker rmi \
521493 ${IMAGE}:amd64-${META_TAG} \
522494 ${IMAGE}:amd64-bionic \
523- ${IMAGE}:arm32v6 -${META_TAG} \
524- ${IMAGE}:arm32v6 -bionic \
495+ ${IMAGE}:arm32v7 -${META_TAG} \
496+ ${IMAGE}:arm32v7 -bionic \
525497 ${IMAGE}:arm64v8-${META_TAG} \
526498 ${IMAGE}:arm64v8-bionic \
527- lsiodev/buildcache:arm32v6 -${COMMIT_SHA}-${BUILD_NUMBER} \
499+ lsiodev/buildcache:arm32v7 -${COMMIT_SHA}-${BUILD_NUMBER} \
528500 lsiodev/buildcache:arm64v8-${COMMIT_SHA}-${BUILD_NUMBER} '''
529501 }
530502 }
@@ -595,7 +567,7 @@ pipeline {
595567 }
596568 steps {
597569 sh ''' curl -H "Authorization: token ${GITHUB_TOKEN}" -X POST https://api.github.com/repos/${LS_USER}/${LS_REPO}/issues/${PULL_REQUEST}/comments \
598- -d '{"body": "I am a bot, here are the test results for this PR '${CI_URL}'"}' '''
570+ -d '{"body": "I am a bot, here are the test results for this PR: \\ n '${CI_URL}' \\ n'${SHELLCHECK_URL }'"}' '''
599571 }
600572 }
601573 }
@@ -610,12 +582,12 @@ pipeline {
610582 }
611583 else if (currentBuild. currentResult == " SUCCESS" ){
612584 sh ''' curl -X POST --data '{"avatar_url": "https://wiki.jenkins-ci.org/download/attachments/2916393/headshot.png","embeds": [{"color": 1681177,\
613- "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"}],\
585+ "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"}],\
614586 "username": "Jenkins"}' ${BUILDS_DISCORD} '''
615587 }
616588 else {
617589 sh ''' curl -X POST --data '{"avatar_url": "https://wiki.jenkins-ci.org/download/attachments/2916393/headshot.png","embeds": [{"color": 16711680,\
618- "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"}],\
590+ "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"}],\
619591 "username": "Jenkins"}' ${BUILDS_DISCORD} '''
620592 }
621593 }
0 commit comments