Skip to content
This repository was archived by the owner on Jun 30, 2022. It is now read-only.

Commit 2b066b7

Browse files
committed
adding latest build logic and license in preperation for the monthly waterfall
1 parent ecef381 commit 2b066b7

File tree

2 files changed

+759
-23
lines changed

2 files changed

+759
-23
lines changed

Jenkinsfile

Lines changed: 85 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -35,7 +35,7 @@ pipeline {
3535
script{
3636
env.EXIT_STATUS = ''
3737
env.LS_RELEASE = sh(
38-
script: '''curl -s https://api.github.com/repos/${LS_USER}/${LS_REPO}/releases/latest | jq -r '. | .tag_name' ''',
38+
script: '''docker run --rm alexeiled/skopeo sh -c 'skopeo inspect docker://docker.io/'${DOCKERHUB_IMAGE}':latest 2>/dev/null' | jq -r '.Labels.build_version' | awk '{print $3}' | grep '\\-ls' || : ''',
3939
returnStdout: true).trim()
4040
env.LS_RELEASE_NOTES = sh(
4141
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' ''',
@@ -49,6 +49,14 @@ pipeline {
4949
env.CODE_URL = 'https://github.com/' + env.LS_USER + '/' + env.LS_REPO + '/commit/' + env.GIT_COMMIT
5050
env.DOCKERHUB_LINK = 'https://hub.docker.com/r/' + env.DOCKERHUB_IMAGE + '/tags/'
5151
env.PULL_REQUEST = env.CHANGE_ID
52+
env.LICENSE_TAG = sh(
53+
script: '''#!/bin/bash
54+
if [ -e LICENSE ] ; then
55+
cat LICENSE | md5sum | cut -c1-8
56+
else
57+
echo none
58+
fi''',
59+
returnStdout: true).trim()
5260
}
5361
script{
5462
env.LS_RELEASE_NUMBER = sh(
@@ -195,6 +203,73 @@ pipeline {
195203
}
196204
}
197205
}
206+
// Use helper containers to render templated files
207+
stage('Update-Templates') {
208+
when {
209+
branch "master"
210+
environment name: 'CHANGE_ID', value: ''
211+
expression {
212+
env.CONTAINER_NAME != null
213+
}
214+
}
215+
steps {
216+
sh '''#! /bin/bash
217+
set -e
218+
TEMPDIR=$(mktemp -d)
219+
docker pull linuxserver/jenkins-builder:latest
220+
docker run --rm -e CONTAINER_NAME=${CONTAINER_NAME} -e GITHUB_BRANCH=master -v ${TEMPDIR}:/ansible/jenkins linuxserver/jenkins-builder:latest
221+
docker pull linuxserver/doc-builder:latest
222+
docker run --rm -e CONTAINER_NAME=${CONTAINER_NAME} -e GITHUB_BRANCH=master -v ${TEMPDIR}:/ansible/readme linuxserver/doc-builder:latest
223+
if [ "$(md5sum ${TEMPDIR}/${LS_REPO}/Jenkinsfile | awk '{ print $1 }')" != "$(md5sum Jenkinsfile | awk '{ print $1 }')" ] || \
224+
[ "$(md5sum ${TEMPDIR}/${CONTAINER_NAME}/README.md | awk '{ print $1 }')" != "$(md5sum README.md | awk '{ print $1 }')" ] || \
225+
[ "$(md5sum ${TEMPDIR}/${LS_REPO}/LICENSE | md5sum | cut -c1-8)" != "${LICENSE_TAG}" ]; then
226+
mkdir -p ${TEMPDIR}/repo
227+
git clone https://github.com/${LS_USER}/${LS_REPO}.git ${TEMPDIR}/repo/${LS_REPO}
228+
git --git-dir ${TEMPDIR}/repo/${LS_REPO}/.git checkout -f master
229+
cp ${TEMPDIR}/${CONTAINER_NAME}/README.md ${TEMPDIR}/repo/${LS_REPO}/
230+
cp ${TEMPDIR}/docker-${CONTAINER_NAME}/Jenkinsfile ${TEMPDIR}/repo/${LS_REPO}/
231+
cp ${TEMPDIR}/docker-${CONTAINER_NAME}/LICENSE ${TEMPDIR}/repo/${LS_REPO}/
232+
cd ${TEMPDIR}/repo/${LS_REPO}/
233+
git --git-dir ${TEMPDIR}/repo/${LS_REPO}/.git add Jenkinsfile README.md LICENSE
234+
git --git-dir ${TEMPDIR}/repo/${LS_REPO}/.git commit -m 'Bot Updating Templated Files'
235+
git --git-dir ${TEMPDIR}/repo/${LS_REPO}/.git push https://LinuxServer-CI:${GITHUB_TOKEN}@github.com/${LS_USER}/${LS_REPO}.git --all
236+
echo "true" > /tmp/${COMMIT_SHA}-${BUILD_NUMBER}
237+
else
238+
echo "false" > /tmp/${COMMIT_SHA}-${BUILD_NUMBER}
239+
fi
240+
mkdir -p ${TEMPDIR}/gitbook
241+
git clone https://github.com/linuxserver/docker-documentation.git ${TEMPDIR}/gitbook/docker-documentation
242+
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
243+
cp ${TEMPDIR}/${CONTAINER_NAME}/docker-${CONTAINER_NAME}.md ${TEMPDIR}/gitbook/docker-documentation/images/
244+
cd ${TEMPDIR}/gitbook/docker-documentation/
245+
git add images/docker-${CONTAINER_NAME}.md
246+
git commit -m 'Bot Updating Templated Files'
247+
git push https://LinuxServer-CI:${GITHUB_TOKEN}@github.com/linuxserver/docker-documentation.git --all
248+
fi
249+
rm -Rf ${TEMPDIR}'''
250+
script{
251+
env.FILES_UPDATED = sh(
252+
script: '''cat /tmp/${COMMIT_SHA}-${BUILD_NUMBER}''',
253+
returnStdout: true).trim()
254+
}
255+
}
256+
}
257+
// Exit the build if the Templated files were just updated
258+
stage('Template-exit') {
259+
when {
260+
branch "master"
261+
environment name: 'CHANGE_ID', value: ''
262+
environment name: 'FILES_UPDATED', value: 'true'
263+
expression {
264+
env.CONTAINER_NAME != null
265+
}
266+
}
267+
steps {
268+
script{
269+
env.EXIT_STATUS = 'ABORTED'
270+
}
271+
}
272+
}
198273
/* ###############
199274
Build Container
200275
############### */
@@ -239,15 +314,13 @@ pipeline {
239314
sh '''#! /bin/bash
240315
echo $DOCKERPASS | docker login -u $DOCKERUSER --password-stdin
241316
'''
242-
sh "curl https://lsio-ci.ams3.digitaloceanspaces.com/qemu-arm-static -o qemu-arm-static"
243-
sh "chmod +x qemu-*"
244317
sh "docker build --no-cache --pull -f Dockerfile.armhf -t ${IMAGE}:arm32v7-${META_TAG} \
245318
--build-arg ${BUILD_VERSION_ARG}=${EXT_RELEASE} --build-arg VERSION=\"${META_TAG}\" --build-arg BUILD_DATE=${GITHUB_DATE} ."
246319
sh "docker tag ${IMAGE}:arm32v7-${META_TAG} lsiodev/buildcache:arm32v7-${COMMIT_SHA}-${BUILD_NUMBER}"
247320
sh "docker push lsiodev/buildcache:arm32v7-${COMMIT_SHA}-${BUILD_NUMBER}"
248321
sh '''docker rmi \
249322
${IMAGE}:arm32v7-${META_TAG} \
250-
lsiodev/buildcache:arm32v7-${COMMIT_SHA}-${BUILD_NUMBER} '''
323+
lsiodev/buildcache:arm32v7-${COMMIT_SHA}-${BUILD_NUMBER} || :'''
251324
}
252325
}
253326
}
@@ -268,15 +341,13 @@ pipeline {
268341
sh '''#! /bin/bash
269342
echo $DOCKERPASS | docker login -u $DOCKERUSER --password-stdin
270343
'''
271-
sh "curl https://lsio-ci.ams3.digitaloceanspaces.com/qemu-aarch64-static -o qemu-aarch64-static"
272-
sh "chmod +x qemu-*"
273344
sh "docker build --no-cache --pull -f Dockerfile.aarch64 -t ${IMAGE}:arm64v8-${META_TAG} \
274345
--build-arg ${BUILD_VERSION_ARG}=${EXT_RELEASE} --build-arg VERSION=\"${META_TAG}\" --build-arg BUILD_DATE=${GITHUB_DATE} ."
275346
sh "docker tag ${IMAGE}:arm64v8-${META_TAG} lsiodev/buildcache:arm64v8-${COMMIT_SHA}-${BUILD_NUMBER}"
276347
sh "docker push lsiodev/buildcache:arm64v8-${COMMIT_SHA}-${BUILD_NUMBER}"
277348
sh '''docker rmi \
278349
${IMAGE}:arm64v8-${META_TAG} \
279-
lsiodev/buildcache:arm64v8-${COMMIT_SHA}-${BUILD_NUMBER} '''
350+
lsiodev/buildcache:arm64v8-${COMMIT_SHA}-${BUILD_NUMBER} || :'''
280351
}
281352
}
282353
}
@@ -440,7 +511,7 @@ pipeline {
440511
sh "docker push ${IMAGE}:${META_TAG}"
441512
sh '''docker rmi \
442513
${IMAGE}:${META_TAG} \
443-
${IMAGE}:latest '''
514+
${IMAGE}:latest || :'''
444515

445516
}
446517
}
@@ -489,15 +560,6 @@ pipeline {
489560
sh "docker manifest annotate ${IMAGE}:${META_TAG} ${IMAGE}:arm64v8-${META_TAG} --os linux --arch arm64 --variant v8"
490561
sh "docker manifest push --purge ${IMAGE}:latest"
491562
sh "docker manifest push --purge ${IMAGE}:${META_TAG}"
492-
sh '''docker rmi \
493-
${IMAGE}:amd64-${META_TAG} \
494-
${IMAGE}:amd64-latest \
495-
${IMAGE}:arm32v7-${META_TAG} \
496-
${IMAGE}:arm32v7-latest \
497-
${IMAGE}:arm64v8-${META_TAG} \
498-
${IMAGE}:arm64v8-latest \
499-
lsiodev/buildcache:arm32v7-${COMMIT_SHA}-${BUILD_NUMBER} \
500-
lsiodev/buildcache:arm64v8-${COMMIT_SHA}-${BUILD_NUMBER} '''
501563
}
502564
}
503565
}
@@ -506,25 +568,25 @@ pipeline {
506568
when {
507569
branch "master"
508570
expression {
509-
env.LS_RELEASE != env.EXT_RELEASE_CLEAN + '-pkg-' + env.PACKAGE_TAG + '-ls' + env.LS_TAG_NUMBER
571+
env.LS_RELEASE != env.EXT_RELEASE_CLEAN + '-ls' + env.LS_TAG_NUMBER
510572
}
511573
environment name: 'CHANGE_ID', value: ''
512574
environment name: 'EXIT_STATUS', value: ''
513575
}
514576
steps {
515-
echo "Pushing New tag for current commit ${EXT_RELEASE_CLEAN}-pkg-${PACKAGE_TAG}-ls${LS_TAG_NUMBER}"
577+
echo "Pushing New tag for current commit ${EXT_RELEASE_CLEAN}-ls${LS_TAG_NUMBER}"
516578
sh '''curl -H "Authorization: token ${GITHUB_TOKEN}" -X POST https://api.github.com/repos/${LS_USER}/${LS_REPO}/git/tags \
517-
-d '{"tag":"'${EXT_RELEASE_CLEAN}'-pkg-'${PACKAGE_TAG}'-ls'${LS_TAG_NUMBER}'",\
579+
-d '{"tag":"'${EXT_RELEASE_CLEAN}'-ls'${LS_TAG_NUMBER}'",\
518580
"object": "'${COMMIT_SHA}'",\
519-
"message": "Tagging Release '${EXT_RELEASE_CLEAN}'-pkg-'${PACKAGE_TAG}'-ls'${LS_TAG_NUMBER}' to master",\
581+
"message": "Tagging Release '${EXT_RELEASE_CLEAN}'-ls'${LS_TAG_NUMBER}' to master",\
520582
"type": "commit",\
521583
"tagger": {"name": "LinuxServer Jenkins","email": "jenkins@linuxserver.io","date": "'${GITHUB_DATE}'"}}' '''
522584
echo "Pushing New release for Tag"
523585
sh '''#! /bin/bash
524586
echo "Updating base packages to ${PACKAGE_TAG}" > releasebody.json
525-
echo '{"tag_name":"'${EXT_RELEASE_CLEAN}'-pkg-'${PACKAGE_TAG}'-ls'${LS_TAG_NUMBER}'",\
587+
echo '{"tag_name":"'${EXT_RELEASE_CLEAN}'-ls'${LS_TAG_NUMBER}'",\
526588
"target_commitish": "master",\
527-
"name": "'${EXT_RELEASE_CLEAN}'-pkg-'${PACKAGE_TAG}'-ls'${LS_TAG_NUMBER}'",\
589+
"name": "'${EXT_RELEASE_CLEAN}'-ls'${LS_TAG_NUMBER}'",\
528590
"body": "**LinuxServer Changes:**\\n\\n'${LS_RELEASE_NOTES}'\\n**OS Changes:**\\n\\n' > start
529591
printf '","draft": false,"prerelease": false}' >> releasebody.json
530592
paste -d'\\0' start releasebody.json > releasebody.json.done

0 commit comments

Comments
 (0)