@@ -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