Skip to content

Commit 44ed3d6

Browse files
Bot Updating Templated Files
1 parent c39a1e5 commit 44ed3d6

File tree

1 file changed

+54
-66
lines changed

1 file changed

+54
-66
lines changed

Jenkinsfile

+54-66
Original file line numberDiff line numberDiff line change
@@ -42,7 +42,12 @@ pipeline {
4242
// Setup all the basic environment variables needed for the build
4343
stage("Set ENV Variables base"){
4444
steps{
45-
sh '''docker pull quay.io/skopeo/stable:v1 || : '''
45+
sh '''#! /bin/bash
46+
containers=$(docker ps -aq)
47+
if [[ -n "${containers}" ]]; then
48+
docker stop ${containers}
49+
fi
50+
docker system prune -af --volumes || : '''
4651
script{
4752
env.EXIT_STATUS = ''
4853
env.LS_RELEASE = sh(
@@ -208,12 +213,12 @@ pipeline {
208213
env.GITLABIMAGE = 'registry.gitlab.com/linuxserver.io/' + env.LS_REPO + '/lspipepr-' + env.CONTAINER_NAME
209214
env.QUAYIMAGE = 'quay.io/linuxserver.io/lspipepr-' + env.CONTAINER_NAME
210215
if (env.MULTIARCH == 'true') {
211-
env.CI_TAGS = 'amd64-' + 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
216+
env.CI_TAGS = 'amd64-' + env.EXT_RELEASE_CLEAN + '-pkg-' + env.PACKAGE_TAG + '-dev-' + env.COMMIT_SHA + '-pr-' + env.PULL_REQUEST + '|arm64v8-' + env.EXT_RELEASE_CLEAN + '-pkg-' + env.PACKAGE_TAG + '-dev-' + env.COMMIT_SHA + '-pr-' + env.PULL_REQUEST
212217
} else {
213-
env.CI_TAGS = env.EXT_RELEASE_CLEAN + '-pkg-' + env.PACKAGE_TAG + '-pr-' + env.PULL_REQUEST
218+
env.CI_TAGS = env.EXT_RELEASE_CLEAN + '-pkg-' + env.PACKAGE_TAG + '-dev-' + env.COMMIT_SHA + '-pr-' + env.PULL_REQUEST
214219
}
215-
env.VERSION_TAG = env.EXT_RELEASE_CLEAN + '-pkg-' + env.PACKAGE_TAG + '-pr-' + env.PULL_REQUEST
216-
env.META_TAG = env.EXT_RELEASE_CLEAN + '-pkg-' + env.PACKAGE_TAG + '-pr-' + env.PULL_REQUEST
220+
env.VERSION_TAG = env.EXT_RELEASE_CLEAN + '-pkg-' + env.PACKAGE_TAG + '-dev-' + env.COMMIT_SHA + '-pr-' + env.PULL_REQUEST
221+
env.META_TAG = env.EXT_RELEASE_CLEAN + '-pkg-' + env.PACKAGE_TAG + '-dev-' + env.COMMIT_SHA + '-pr-' + env.PULL_REQUEST
217222
env.EXT_RELEASE_TAG = 'version-' + env.EXT_RELEASE_CLEAN
218223
env.CODE_URL = 'https://github.com/' + env.LS_USER + '/' + env.LS_REPO + '/pull/' + env.PULL_REQUEST
219224
env.DOCKERHUB_LINK = 'https://hub.docker.com/r/' + env.PR_DOCKERHUB_IMAGE + '/tags/'
@@ -341,6 +346,8 @@ pipeline {
341346
git clone https://github.com/linuxserver/templates.git ${TEMPDIR}/unraid/templates
342347
if [[ -f ${TEMPDIR}/unraid/docker-templates/linuxserver.io/img/${CONTAINER_NAME}-logo.png ]]; then
343348
sed -i "s|master/linuxserver.io/img/linuxserver-ls-logo.png|master/linuxserver.io/img/${CONTAINER_NAME}-logo.png|" ${TEMPDIR}/docker-${CONTAINER_NAME}/.jenkins-external/${CONTAINER_NAME}.xml
349+
elif [[ -f ${TEMPDIR}/unraid/docker-templates/linuxserver.io/img/${CONTAINER_NAME}-icon.png ]]; then
350+
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
344351
fi
345352
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
346353
cd ${TEMPDIR}/unraid/templates/
@@ -432,8 +439,7 @@ pipeline {
432439
}
433440
steps{
434441
sh '''#! /bin/bash
435-
set -e
436-
PACKAGE_UUID=$(curl -X GET -H "Authorization: Bearer ${SCARF_TOKEN}" https://scarf.sh/api/v1/organizations/linuxserver-ci/packages | jq -r '.[] | select(.name=="linuxserver/sqlitebrowser") | .uuid')
442+
PACKAGE_UUID=$(curl -X GET -H "Authorization: Bearer ${SCARF_TOKEN}" https://scarf.sh/api/v1/organizations/linuxserver-ci/packages | jq -r '.[] | select(.name=="linuxserver/sqlitebrowser") | .uuid' || :)
437443
if [ -z "${PACKAGE_UUID}" ]; then
438444
echo "Adding package to Scarf.sh"
439445
curl -sX POST https://scarf.sh/api/v1/organizations/linuxserver-ci/packages \
@@ -543,9 +549,12 @@ pipeline {
543549
retry(5) {
544550
sh "docker push ghcr.io/linuxserver/lsiodev-buildcache:arm64v8-${COMMIT_SHA}-${BUILD_NUMBER}"
545551
}
546-
sh '''docker rmi \
547-
${IMAGE}:arm64v8-${META_TAG} \
548-
ghcr.io/linuxserver/lsiodev-buildcache:arm64v8-${COMMIT_SHA}-${BUILD_NUMBER} || :'''
552+
sh '''#! /bin/bash
553+
containers=$(docker ps -aq)
554+
if [[ -n "${containers}" ]]; then
555+
docker stop ${containers}
556+
fi
557+
docker system prune -af --volumes || : '''
549558
}
550559
}
551560
}
@@ -606,13 +615,6 @@ pipeline {
606615
environment name: 'EXIT_STATUS', value: ''
607616
}
608617
steps {
609-
sh '''#! /bin/bash
610-
echo "Packages were updated. Cleaning up the image and exiting."
611-
if [ "${MULTIARCH}" == "true" ] && [ "${PACKAGE_CHECK}" == "false" ]; then
612-
docker rmi ${IMAGE}:amd64-${META_TAG}
613-
else
614-
docker rmi ${IMAGE}:${META_TAG}
615-
fi'''
616618
script{
617619
env.EXIT_STATUS = 'ABORTED'
618620
}
@@ -630,13 +632,6 @@ pipeline {
630632
}
631633
}
632634
steps {
633-
sh '''#! /bin/bash
634-
echo "There are no package updates. Cleaning up the image and exiting."
635-
if [ "${MULTIARCH}" == "true" ] && [ "${PACKAGE_CHECK}" == "false" ]; then
636-
docker rmi ${IMAGE}:amd64-${META_TAG}
637-
else
638-
docker rmi ${IMAGE}:${META_TAG}
639-
fi'''
640635
script{
641636
env.EXIT_STATUS = 'ABORTED'
642637
}
@@ -735,17 +730,6 @@ pipeline {
735730
done
736731
'''
737732
}
738-
sh '''#! /bin/bash
739-
for DELETEIMAGE in "${GITHUBIMAGE}" "${GITLABIMAGE}" "${QUAYIMAGE}" "${IMAGE}"; do
740-
docker rmi \
741-
${DELETEIMAGE}:${META_TAG} \
742-
${DELETEIMAGE}:${EXT_RELEASE_TAG} \
743-
${DELETEIMAGE}:latest || :
744-
if [ -n "${SEMVER}" ]; then
745-
docker rmi ${DELETEIMAGE}:${SEMVER} || :
746-
fi
747-
done
748-
'''
749733
}
750734
}
751735
}
@@ -816,9 +800,16 @@ pipeline {
816800
docker manifest create ${MANIFESTIMAGE}:${SEMVER} ${MANIFESTIMAGE}:amd64-${SEMVER} ${MANIFESTIMAGE}:arm64v8-${SEMVER}
817801
docker manifest annotate ${MANIFESTIMAGE}:${SEMVER} ${MANIFESTIMAGE}:arm64v8-${SEMVER} --os linux --arch arm64 --variant v8
818802
fi
819-
docker manifest push --purge ${MANIFESTIMAGE}:arm32v7-latest || :
820-
docker manifest create ${MANIFESTIMAGE}:arm32v7-latest ${MANIFESTIMAGE}:amd64-latest
821-
docker manifest push --purge ${MANIFESTIMAGE}:arm32v7-latest
803+
token=$(curl -sX GET "https://ghcr.io/token?scope=repository%3Alinuxserver%2F${CONTAINER_NAME}%3Apull" | jq -r '.token')
804+
digest=$(curl -s \
805+
--header "Accept: application/vnd.docker.distribution.manifest.v2+json" \
806+
--header "Authorization: Bearer ${token}" \
807+
"https://ghcr.io/v2/linuxserver/${CONTAINER_NAME}/manifests/arm32v7-latest")
808+
if [[ $(echo "$digest" | jq -r '.layers') != "null" ]]; then
809+
docker manifest push --purge ${MANIFESTIMAGE}:arm32v7-latest || :
810+
docker manifest create ${MANIFESTIMAGE}:arm32v7-latest ${MANIFESTIMAGE}:amd64-latest
811+
docker manifest push --purge ${MANIFESTIMAGE}:arm32v7-latest
812+
fi
822813
docker manifest push --purge ${MANIFESTIMAGE}:latest
823814
docker manifest push --purge ${MANIFESTIMAGE}:${META_TAG}
824815
docker manifest push --purge ${MANIFESTIMAGE}:${EXT_RELEASE_TAG}
@@ -828,24 +819,6 @@ pipeline {
828819
done
829820
'''
830821
}
831-
sh '''#! /bin/bash
832-
for DELETEIMAGE in "${GITHUBIMAGE}" "${GITLABIMAGE}" "${QUAYIMAGE}" "${IMAGE}"; do
833-
docker rmi \
834-
${DELETEIMAGE}:amd64-${META_TAG} \
835-
${DELETEIMAGE}:amd64-latest \
836-
${DELETEIMAGE}:amd64-${EXT_RELEASE_TAG} \
837-
${DELETEIMAGE}:arm64v8-${META_TAG} \
838-
${DELETEIMAGE}:arm64v8-latest \
839-
${DELETEIMAGE}:arm64v8-${EXT_RELEASE_TAG} || :
840-
if [ -n "${SEMVER}" ]; then
841-
docker rmi \
842-
${DELETEIMAGE}:amd64-${SEMVER} \
843-
${DELETEIMAGE}:arm64v8-${SEMVER} || :
844-
fi
845-
done
846-
docker rmi \
847-
ghcr.io/linuxserver/lsiodev-buildcache:arm64v8-${COMMIT_SHA}-${BUILD_NUMBER} || :
848-
'''
849822
}
850823
}
851824
}
@@ -916,7 +889,6 @@ pipeline {
916889
stage('Pull Request Comment') {
917890
when {
918891
not {environment name: 'CHANGE_ID', value: ''}
919-
environment name: 'CI', value: 'true'
920892
environment name: 'EXIT_STATUS', value: ''
921893
}
922894
steps {
@@ -970,16 +942,24 @@ pipeline {
970942
echo "$escaped_table"
971943
}
972944
973-
# Retrieve JSON data from URL
974-
data=$(get_json "$CI_JSON_URL")
975-
# Create table from JSON data
976-
table=$(build_table "$data")
977-
echo -e "$table"
945+
if [[ "${CI}" = "true" ]]; then
946+
# Retrieve JSON data from URL
947+
data=$(get_json "$CI_JSON_URL")
948+
# Create table from JSON data
949+
table=$(build_table "$data")
950+
echo -e "$table"
978951
979-
curl -X POST -H "Authorization: token $GITHUB_TOKEN" \
980-
-H "Accept: application/vnd.github.v3+json" \
981-
"https://api.github.com/repos/$LS_USER/$LS_REPO/issues/$PULL_REQUEST/comments" \
982-
-d "{\\"body\\": \\"I am a bot, here are the test results for this PR: \\n${CI_URL}\\n${SHELLCHECK_URL}\\n${table}\\"}"'''
952+
curl -X POST -H "Authorization: token $GITHUB_TOKEN" \
953+
-H "Accept: application/vnd.github.v3+json" \
954+
"https://api.github.com/repos/$LS_USER/$LS_REPO/issues/$PULL_REQUEST/comments" \
955+
-d "{\\"body\\": \\"I am a bot, here are the test results for this PR: \\n${CI_URL}\\n${SHELLCHECK_URL}\\n${table}\\"}"
956+
else
957+
curl -X POST -H "Authorization: token $GITHUB_TOKEN" \
958+
-H "Accept: application/vnd.github.v3+json" \
959+
"https://api.github.com/repos/$LS_USER/$LS_REPO/issues/$PULL_REQUEST/comments" \
960+
-d "{\\"body\\": \\"I am a bot, here is the pushed image/manifest for this PR: \\n\\n\\`${GITHUBIMAGE}:${META_TAG}\\`\\"}"
961+
fi
962+
'''
983963

984964
}
985965
}
@@ -1006,6 +986,14 @@ pipeline {
1006986
}
1007987
}
1008988
cleanup {
989+
sh '''#! /bin/bash
990+
echo "Performing docker system prune!!"
991+
containers=$(docker ps -aq)
992+
if [[ -n "${containers}" ]]; then
993+
docker stop ${containers}
994+
fi
995+
docker system prune -af --volumes || :
996+
'''
1009997
cleanWs()
1010998
}
1011999
}

0 commit comments

Comments
 (0)