@@ -104,11 +104,10 @@ pipeline {
104
104
// If this is an alpine repo change for external version determine an md5 from the version string
105
105
stage(" Set tag Alpine Repo" ){
106
106
steps{
107
- sh ''' docker pull alpine:${DIST_TAG}'''
108
107
script{
109
108
env. EXT_RELEASE = sh(
110
- script : ''' docker run --rm alpine:${DIST_TAG} sh -c 'apk update --quiet --repository '"${DIST_REPO}"' \
111
- && apk info --repository '"${DIST_REPO}"' ' "${DIST_REPO_PACKAGES}"' | md5sum | cut -c1-8 ' ''' ,
109
+ script : ''' curl -sL "${DIST_REPO}x86_64/APKINDEX.tar.gz" | tar -xz -C /tmp \
110
+ && awk '/^P:' "${DIST_REPO_PACKAGES}"'$/,/V:/' /tmp/APKINDEX | sed -n 2p | sed 's/^V:// ' ''' ,
112
111
returnStdout : true ). trim()
113
112
env. RELEASE_LINK = ' alpine_repo'
114
113
}
@@ -236,22 +235,67 @@ pipeline {
236
235
TEMPDIR=$(mktemp -d)
237
236
docker pull ghcr.io/linuxserver/jenkins-builder:latest
238
237
docker run --rm -e CONTAINER_NAME=${CONTAINER_NAME} -e GITHUB_BRANCH=alpine -v ${TEMPDIR}:/ansible/jenkins ghcr.io/linuxserver/jenkins-builder:latest
238
+ # Stage 1 - Jenkinsfile update
239
+ if [[ "$(md5sum Jenkinsfile | awk '{ print $1 }')" != "$(md5sum ${TEMPDIR}/docker-${CONTAINER_NAME}/Jenkinsfile | awk '{ print $1 }')" ]]; then
240
+ mkdir -p ${TEMPDIR}/repo
241
+ git clone https://github.com/${LS_USER}/${LS_REPO}.git ${TEMPDIR}/repo/${LS_REPO}
242
+ cd ${TEMPDIR}/repo/${LS_REPO}
243
+ git checkout -f alpine
244
+ cp ${TEMPDIR}/docker-${CONTAINER_NAME}/Jenkinsfile ${TEMPDIR}/repo/${LS_REPO}/
245
+ git add Jenkinsfile
246
+ git commit -m 'Bot Updating Templated Files'
247
+ git push https://LinuxServer-CI:${GITHUB_TOKEN}@github.com/${LS_USER}/${LS_REPO}.git --all
248
+ echo "true" > /tmp/${COMMIT_SHA}-${BUILD_NUMBER}
249
+ echo "Updating Jenkinsfile"
250
+ rm -Rf ${TEMPDIR}
251
+ exit 0
252
+ else
253
+ echo "Jenkinsfile is up to date."
254
+ fi
255
+ # Stage 2 - Delete old templates
256
+ OLD_TEMPLATES=".github/ISSUE_TEMPLATE.md"
257
+ for i in ${OLD_TEMPLATES}; do
258
+ if [[ -f "${i}" ]]; then
259
+ TEMPLATES_TO_DELETE="${i} ${TEMPLATES_TO_DELETE}"
260
+ fi
261
+ done
262
+ if [[ -n "${TEMPLATES_TO_DELETE}" ]]; then
263
+ mkdir -p ${TEMPDIR}/repo
264
+ git clone https://github.com/${LS_USER}/${LS_REPO}.git ${TEMPDIR}/repo/${LS_REPO}
265
+ cd ${TEMPDIR}/repo/${LS_REPO}
266
+ git checkout -f alpine
267
+ cd ${TEMPDIR}/docker-${CONTAINER_NAME}
268
+ for i in ${TEMPLATES_TO_DELETE}; do
269
+ git rm "${i}"
270
+ done
271
+ git commit -m 'Bot Updating Templated Files'
272
+ git push https://LinuxServer-CI:${GITHUB_TOKEN}@github.com/${LS_USER}/${LS_REPO}.git --all
273
+ echo "true" > /tmp/${COMMIT_SHA}-${BUILD_NUMBER}
274
+ echo "Deleting old templates"
275
+ rm -Rf ${TEMPDIR}
276
+ exit 0
277
+ else
278
+ echo "No templates to delete"
279
+ fi
280
+ # Stage 3 - Update templates
239
281
CURRENTHASH=$(grep -hs ^ ${TEMPLATED_FILES} | md5sum | cut -c1-8)
240
282
cd ${TEMPDIR}/docker-${CONTAINER_NAME}
241
283
NEWHASH=$(grep -hs ^ ${TEMPLATED_FILES} | md5sum | cut -c1-8)
242
- if [[ "${CURRENTHASH}" != "${NEWHASH}" ]]; then
284
+ if [[ "${CURRENTHASH}" != "${NEWHASH}" ]] || ! grep -q '.jenkins-external' "${WORKSPACE}/.gitignore" 2>/dev/null ; then
243
285
mkdir -p ${TEMPDIR}/repo
244
286
git clone https://github.com/${LS_USER}/${LS_REPO}.git ${TEMPDIR}/repo/${LS_REPO}
245
287
cd ${TEMPDIR}/repo/${LS_REPO}
246
288
git checkout -f alpine
247
289
cd ${TEMPDIR}/docker-${CONTAINER_NAME}
248
290
mkdir -p ${TEMPDIR}/repo/${LS_REPO}/.github/workflows
249
291
mkdir -p ${TEMPDIR}/repo/${LS_REPO}/.github/ISSUE_TEMPLATE
250
- rm -f ${TEMPDIR}/repo/${LS_REPO}/.github/ISSUE_TEMPLATE.md
251
292
cp --parents ${TEMPLATED_FILES} ${TEMPDIR}/repo/${LS_REPO}/ || :
252
293
cd ${TEMPDIR}/repo/${LS_REPO}/
294
+ if ! grep -q '.jenkins-external' .gitignore 2>/dev/null; then
295
+ echo ".jenkins-external" >> .gitignore
296
+ git add .gitignore
297
+ fi
253
298
git add ${TEMPLATED_FILES}
254
- git rm .github/ISSUE_TEMPLATE.md || :
255
299
git commit -m 'Bot Updating Templated Files'
256
300
git push https://LinuxServer-CI:${GITHUB_TOKEN}@github.com/${LS_USER}/${LS_REPO}.git --all
257
301
echo "true" > /tmp/${COMMIT_SHA}-${BUILD_NUMBER}
@@ -260,8 +304,8 @@ pipeline {
260
304
fi
261
305
mkdir -p ${TEMPDIR}/gitbook
262
306
git clone https://github.com/linuxserver/docker-documentation.git ${TEMPDIR}/gitbook/docker-documentation
263
- if [[ ("${BRANCH_NAME}" == "master") || ("${BRANCH_NAME}" == "main") ]] && [[ (! -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}/docker-${CONTAINER_NAME}/docker-${CONTAINER_NAME}.md | awk '{ print $1 }')") ]]; then
264
- cp ${TEMPDIR}/docker-${CONTAINER_NAME}/docker-${CONTAINER_NAME}.md ${TEMPDIR}/gitbook/docker-documentation/images/
307
+ if [[ ("${BRANCH_NAME}" == "master") || ("${BRANCH_NAME}" == "main") ]] && [[ (! -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}/docker-${CONTAINER_NAME}/.jenkins-external/ docker-${CONTAINER_NAME}.md | awk '{ print $1 }')") ]]; then
308
+ cp ${TEMPDIR}/docker-${CONTAINER_NAME}/.jenkins-external/ docker-${CONTAINER_NAME}.md ${TEMPDIR}/gitbook/docker-documentation/images/
265
309
cd ${TEMPDIR}/gitbook/docker-documentation/
266
310
git add images/docker-${CONTAINER_NAME}.md
267
311
git commit -m 'Bot Updating Documentation'
@@ -271,13 +315,13 @@ pipeline {
271
315
git clone https://github.com/linuxserver/docker-templates.git ${TEMPDIR}/unraid/docker-templates
272
316
git clone https://github.com/linuxserver/templates.git ${TEMPDIR}/unraid/templates
273
317
if [[ -f ${TEMPDIR}/unraid/docker-templates/linuxserver.io/img/${CONTAINER_NAME}-icon.png ]]; then
274
- sed -i "s|master/linuxserver.io/img/linuxserver-ls-logo.png|master/linuxserver.io/img/${CONTAINER_NAME}-icon.png|" ${TEMPDIR}/docker-${CONTAINER_NAME}/${CONTAINER_NAME}.xml
318
+ sed -i "s|master/linuxserver.io/img/linuxserver-ls-logo.png|master/linuxserver.io/img/${CONTAINER_NAME}-icon.png|" ${TEMPDIR}/docker-${CONTAINER_NAME}/.jenkins-external/ ${CONTAINER_NAME}.xml
275
319
fi
276
- if [[ ("${BRANCH_NAME}" == "master") || ("${BRANCH_NAME}" == "main") ]] && [[ (! -f ${TEMPDIR}/unraid/templates/unraid/${CONTAINER_NAME}.xml) || ("$(md5sum ${TEMPDIR}/unraid/templates/unraid/${CONTAINER_NAME}.xml | awk '{ print $1 }')" != "$(md5sum ${TEMPDIR}/docker-${CONTAINER_NAME}/${CONTAINER_NAME}.xml | awk '{ print $1 }')") ]]; then
320
+ if [[ ("${BRANCH_NAME}" == "master") || ("${BRANCH_NAME}" == "main") ]] && [[ (! -f ${TEMPDIR}/unraid/templates/unraid/${CONTAINER_NAME}.xml) || ("$(md5sum ${TEMPDIR}/unraid/templates/unraid/${CONTAINER_NAME}.xml | awk '{ print $1 }')" != "$(md5sum ${TEMPDIR}/docker-${CONTAINER_NAME}/.jenkins-external/ ${CONTAINER_NAME}.xml | awk '{ print $1 }')") ]]; then
277
321
if grep -wq "${CONTAINER_NAME}" ${TEMPDIR}/unraid/templates/unraid/ignore.list; then
278
322
echo "Image is on the ignore list, skipping Unraid template upload"
279
323
else
280
- cp ${TEMPDIR}/docker-${CONTAINER_NAME}/${CONTAINER_NAME}.xml ${TEMPDIR}/unraid/templates/unraid/
324
+ cp ${TEMPDIR}/docker-${CONTAINER_NAME}/.jenkins-external/ ${CONTAINER_NAME}.xml ${TEMPDIR}/unraid/templates/unraid/
281
325
cd ${TEMPDIR}/unraid/templates/
282
326
git add unraid/${CONTAINER_NAME}.xml
283
327
git commit -m 'Bot Updating Unraid Template'
@@ -517,7 +561,7 @@ pipeline {
517
561
}
518
562
sh ''' #! /bin/bash
519
563
set -e
520
- docker pull ghcr.io/linuxserver/lsiodev- ci:latest
564
+ docker pull ghcr.io/linuxserver/ci:latest
521
565
if [ "${MULTIARCH}" == "true" ]; then
522
566
docker pull ghcr.io/linuxserver/lsiodev-buildcache:arm32v7-${COMMIT_SHA}-${BUILD_NUMBER}
523
567
docker pull ghcr.io/linuxserver/lsiodev-buildcache:arm64v8-${COMMIT_SHA}-${BUILD_NUMBER}
@@ -542,7 +586,7 @@ pipeline {
542
586
-e WEB_PATH=\" ${CI_WEBPATH}\" \
543
587
-e DO_REGION="ams3" \
544
588
-e DO_BUCKET="lsio-ci" \
545
- -t ghcr.io/linuxserver/lsiodev- ci:latest \
589
+ -t ghcr.io/linuxserver/ci:latest \
546
590
python /ci/ci.py'''
547
591
}
548
592
}
@@ -687,19 +731,19 @@ pipeline {
687
731
environment name : ' EXIT_STATUS' , value : ' '
688
732
}
689
733
steps {
690
- echo " Pushing New tag for current commit ${ EXT_RELEASE_CLEAN } -ls ${ LS_TAG_NUMBER } "
734
+ echo " Pushing New tag for current commit ${ META_TAG } "
691
735
sh ''' curl -H "Authorization: token ${GITHUB_TOKEN}" -X POST https://api.github.com/repos/${LS_USER}/${LS_REPO}/git/tags \
692
- -d '{"tag":"'${EXT_RELEASE_CLEAN}'-ls'${LS_TAG_NUMBER }'",\
736
+ -d '{"tag":"'${META_TAG }'",\
693
737
"object": "'${COMMIT_SHA}'",\
694
738
"message": "Tagging Release '${EXT_RELEASE_CLEAN}'-ls'${LS_TAG_NUMBER}' to alpine",\
695
739
"type": "commit",\
696
740
"tagger": {"name": "LinuxServer Jenkins","email": "[email protected] ","date": "'${GITHUB_DATE}'"}}' '''
697
741
echo " Pushing New release for Tag"
698
742
sh ''' #! /bin/bash
699
743
echo "Updating external repo packages to ${EXT_RELEASE_CLEAN}" > releasebody.json
700
- echo '{"tag_name":"'${EXT_RELEASE_CLEAN}'-ls'${LS_TAG_NUMBER }'",\
744
+ echo '{"tag_name":"'${META_TAG }'",\
701
745
"target_commitish": "alpine",\
702
- "name": "'${EXT_RELEASE_CLEAN}'-ls'${LS_TAG_NUMBER }'",\
746
+ "name": "'${META_TAG }'",\
703
747
"body": "**LinuxServer Changes:**\\ n\\ n'${LS_RELEASE_NOTES}'\\ n**Repo Changes:**\\ n\\ n' > start
704
748
printf '","draft": false,"prerelease": false}' >> releasebody.json
705
749
paste -d'\\ 0' start releasebody.json > releasebody.json.done
@@ -726,15 +770,15 @@ pipeline {
726
770
TEMPDIR=$(mktemp -d)
727
771
docker pull ghcr.io/linuxserver/jenkins-builder:latest
728
772
docker run --rm -e CONTAINER_NAME=${CONTAINER_NAME} -e GITHUB_BRANCH="${BRANCH_NAME}" -v ${TEMPDIR}:/ansible/jenkins ghcr.io/linuxserver/jenkins-builder:latest
729
- docker pull ghcr.io/linuxserver/lsiodev- readme-sync
773
+ docker pull ghcr.io/linuxserver/readme-sync
730
774
docker run --rm=true \
731
775
-e DOCKERHUB_USERNAME=$DOCKERUSER \
732
776
-e DOCKERHUB_PASSWORD=$DOCKERPASS \
733
777
-e GIT_REPOSITORY=${LS_USER}/${LS_REPO} \
734
778
-e DOCKER_REPOSITORY=${IMAGE} \
735
779
-e GIT_BRANCH=master \
736
780
-v ${TEMPDIR}/docker-${CONTAINER_NAME}:/mnt \
737
- ghcr.io/linuxserver/lsiodev- readme-sync bash -c 'node sync'
781
+ ghcr.io/linuxserver/readme-sync bash -c 'node sync'
738
782
rm -Rf ${TEMPDIR} '''
739
783
}
740
784
}
0 commit comments