Skip to content

Commit 36dffd6

Browse files
Bot Updating Templated Files
1 parent 16e9b46 commit 36dffd6

File tree

2 files changed

+65
-21
lines changed

2 files changed

+65
-21
lines changed

.github/workflows/external_trigger.yml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -18,8 +18,8 @@ jobs:
1818
fi
1919
echo "**** External trigger running off of alpine branch. To disable this trigger, set a Github secret named \"PAUSE_EXTERNAL_TRIGGER_MARIADB_ALPINE\". ****"
2020
echo "**** Retrieving external version ****"
21-
EXT_RELEASE=$(docker run --rm alpine:3.13 sh -c 'apk update --quiet --repository '"http://dl-cdn.alpinelinux.org/alpine/v3.13/main/"'\
22-
&& apk info --repository '"http://dl-cdn.alpinelinux.org/alpine/v3.13/main/"' '"mariadb"' | md5sum | cut -c1-8')
21+
EXT_RELEASE=$(curl -sL "http://dl-cdn.alpinelinux.org/alpine/v3.13/main/x86_64/APKINDEX.tar.gz" | tar -xz -C /tmp \
22+
&& awk '/^P:'"mariadb"'$/,/V:/' /tmp/APKINDEX | sed -n 2p | sed 's/^V://')
2323
if [ -z "${EXT_RELEASE}" ] || [ "${EXT_RELEASE}" == "null" ]; then
2424
echo "**** Can't retrieve external version, exiting ****"
2525
FAILURE_REASON="Can't retrieve external version for mariadb branch alpine"

Jenkinsfile

Lines changed: 63 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -104,11 +104,10 @@ pipeline {
104104
// If this is an alpine repo change for external version determine an md5 from the version string
105105
stage("Set tag Alpine Repo"){
106106
steps{
107-
sh '''docker pull alpine:${DIST_TAG}'''
108107
script{
109108
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://' ''',
112111
returnStdout: true).trim()
113112
env.RELEASE_LINK = 'alpine_repo'
114113
}
@@ -236,22 +235,67 @@ pipeline {
236235
TEMPDIR=$(mktemp -d)
237236
docker pull ghcr.io/linuxserver/jenkins-builder:latest
238237
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
239281
CURRENTHASH=$(grep -hs ^ ${TEMPLATED_FILES} | md5sum | cut -c1-8)
240282
cd ${TEMPDIR}/docker-${CONTAINER_NAME}
241283
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
243285
mkdir -p ${TEMPDIR}/repo
244286
git clone https://github.com/${LS_USER}/${LS_REPO}.git ${TEMPDIR}/repo/${LS_REPO}
245287
cd ${TEMPDIR}/repo/${LS_REPO}
246288
git checkout -f alpine
247289
cd ${TEMPDIR}/docker-${CONTAINER_NAME}
248290
mkdir -p ${TEMPDIR}/repo/${LS_REPO}/.github/workflows
249291
mkdir -p ${TEMPDIR}/repo/${LS_REPO}/.github/ISSUE_TEMPLATE
250-
rm -f ${TEMPDIR}/repo/${LS_REPO}/.github/ISSUE_TEMPLATE.md
251292
cp --parents ${TEMPLATED_FILES} ${TEMPDIR}/repo/${LS_REPO}/ || :
252293
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
253298
git add ${TEMPLATED_FILES}
254-
git rm .github/ISSUE_TEMPLATE.md || :
255299
git commit -m 'Bot Updating Templated Files'
256300
git push https://LinuxServer-CI:${GITHUB_TOKEN}@github.com/${LS_USER}/${LS_REPO}.git --all
257301
echo "true" > /tmp/${COMMIT_SHA}-${BUILD_NUMBER}
@@ -260,8 +304,8 @@ pipeline {
260304
fi
261305
mkdir -p ${TEMPDIR}/gitbook
262306
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/
265309
cd ${TEMPDIR}/gitbook/docker-documentation/
266310
git add images/docker-${CONTAINER_NAME}.md
267311
git commit -m 'Bot Updating Documentation'
@@ -271,13 +315,13 @@ pipeline {
271315
git clone https://github.com/linuxserver/docker-templates.git ${TEMPDIR}/unraid/docker-templates
272316
git clone https://github.com/linuxserver/templates.git ${TEMPDIR}/unraid/templates
273317
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
275319
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
277321
if grep -wq "${CONTAINER_NAME}" ${TEMPDIR}/unraid/templates/unraid/ignore.list; then
278322
echo "Image is on the ignore list, skipping Unraid template upload"
279323
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/
281325
cd ${TEMPDIR}/unraid/templates/
282326
git add unraid/${CONTAINER_NAME}.xml
283327
git commit -m 'Bot Updating Unraid Template'
@@ -517,7 +561,7 @@ pipeline {
517561
}
518562
sh '''#! /bin/bash
519563
set -e
520-
docker pull ghcr.io/linuxserver/lsiodev-ci:latest
564+
docker pull ghcr.io/linuxserver/ci:latest
521565
if [ "${MULTIARCH}" == "true" ]; then
522566
docker pull ghcr.io/linuxserver/lsiodev-buildcache:arm32v7-${COMMIT_SHA}-${BUILD_NUMBER}
523567
docker pull ghcr.io/linuxserver/lsiodev-buildcache:arm64v8-${COMMIT_SHA}-${BUILD_NUMBER}
@@ -542,7 +586,7 @@ pipeline {
542586
-e WEB_PATH=\"${CI_WEBPATH}\" \
543587
-e DO_REGION="ams3" \
544588
-e DO_BUCKET="lsio-ci" \
545-
-t ghcr.io/linuxserver/lsiodev-ci:latest \
589+
-t ghcr.io/linuxserver/ci:latest \
546590
python /ci/ci.py'''
547591
}
548592
}
@@ -687,19 +731,19 @@ pipeline {
687731
environment name: 'EXIT_STATUS', value: ''
688732
}
689733
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}"
691735
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}'",\
693737
"object": "'${COMMIT_SHA}'",\
694738
"message": "Tagging Release '${EXT_RELEASE_CLEAN}'-ls'${LS_TAG_NUMBER}' to alpine",\
695739
"type": "commit",\
696740
"tagger": {"name": "LinuxServer Jenkins","email": "[email protected]","date": "'${GITHUB_DATE}'"}}' '''
697741
echo "Pushing New release for Tag"
698742
sh '''#! /bin/bash
699743
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}'",\
701745
"target_commitish": "alpine",\
702-
"name": "'${EXT_RELEASE_CLEAN}'-ls'${LS_TAG_NUMBER}'",\
746+
"name": "'${META_TAG}'",\
703747
"body": "**LinuxServer Changes:**\\n\\n'${LS_RELEASE_NOTES}'\\n**Repo Changes:**\\n\\n' > start
704748
printf '","draft": false,"prerelease": false}' >> releasebody.json
705749
paste -d'\\0' start releasebody.json > releasebody.json.done
@@ -726,15 +770,15 @@ pipeline {
726770
TEMPDIR=$(mktemp -d)
727771
docker pull ghcr.io/linuxserver/jenkins-builder:latest
728772
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
730774
docker run --rm=true \
731775
-e DOCKERHUB_USERNAME=$DOCKERUSER \
732776
-e DOCKERHUB_PASSWORD=$DOCKERPASS \
733777
-e GIT_REPOSITORY=${LS_USER}/${LS_REPO} \
734778
-e DOCKER_REPOSITORY=${IMAGE} \
735779
-e GIT_BRANCH=master \
736780
-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'
738782
rm -Rf ${TEMPDIR} '''
739783
}
740784
}

0 commit comments

Comments
 (0)