@@ -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(
@@ -214,12 +219,12 @@ pipeline {
214219 env. GITLABIMAGE = ' registry.gitlab.com/linuxserver.io/' + env. LS_REPO + ' /lspipepr-' + env. CONTAINER_NAME
215220 env. QUAYIMAGE = ' quay.io/linuxserver.io/lspipepr-' + env. CONTAINER_NAME
216221 if (env. MULTIARCH == ' true' ) {
217- 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
222+ 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
218223 } else {
219- env. CI_TAGS = env. EXT_RELEASE_CLEAN + ' -pkg-' + env. PACKAGE_TAG + ' -pr-' + env. PULL_REQUEST
224+ env. CI_TAGS = env. EXT_RELEASE_CLEAN + ' -pkg-' + env. PACKAGE_TAG + ' -dev- ' + env . COMMIT_SHA + ' - pr-' + env. PULL_REQUEST
220225 }
221- env. VERSION_TAG = env. EXT_RELEASE_CLEAN + ' -pkg-' + env. PACKAGE_TAG + ' -pr-' + env. PULL_REQUEST
222- env. META_TAG = env. EXT_RELEASE_CLEAN + ' -pkg-' + env. PACKAGE_TAG + ' -pr-' + env. PULL_REQUEST
226+ env. VERSION_TAG = env. EXT_RELEASE_CLEAN + ' -pkg-' + env. PACKAGE_TAG + ' -dev- ' + env . COMMIT_SHA + ' - pr-' + env. PULL_REQUEST
227+ env. META_TAG = env. EXT_RELEASE_CLEAN + ' -pkg-' + env. PACKAGE_TAG + ' -dev- ' + env . COMMIT_SHA + ' - pr-' + env. PULL_REQUEST
223228 env. EXT_RELEASE_TAG = ' version-' + env. EXT_RELEASE_CLEAN
224229 env. CODE_URL = ' https://github.com/' + env. LS_USER + ' /' + env. LS_REPO + ' /pull/' + env. PULL_REQUEST
225230 env. DOCKERHUB_LINK = ' https://hub.docker.com/r/' + env. PR_DOCKERHUB_IMAGE + ' /tags/'
@@ -347,6 +352,8 @@ pipeline {
347352 git clone https://github.com/linuxserver/templates.git ${TEMPDIR}/unraid/templates
348353 if [[ -f ${TEMPDIR}/unraid/docker-templates/linuxserver.io/img/${CONTAINER_NAME}-logo.png ]]; then
349354 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
355+ elif [[ -f ${TEMPDIR}/unraid/docker-templates/linuxserver.io/img/${CONTAINER_NAME}-icon.png ]]; then
356+ 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
350357 fi
351358 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
352359 cd ${TEMPDIR}/unraid/templates/
@@ -438,8 +445,7 @@ pipeline {
438445 }
439446 steps{
440447 sh ''' #! /bin/bash
441- set -e
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/booksonic-air") | .uuid')
448+ PACKAGE_UUID=$(curl -X GET -H "Authorization: Bearer ${SCARF_TOKEN}" https://scarf.sh/api/v1/organizations/linuxserver-ci/packages | jq -r '.[] | select(.name=="linuxserver/booksonic-air") | .uuid' || :)
443449 if [ -z "${PACKAGE_UUID}" ]; then
444450 echo "Adding package to Scarf.sh"
445451 curl -sX POST https://scarf.sh/api/v1/organizations/linuxserver-ci/packages \
@@ -549,9 +555,12 @@ pipeline {
549555 retry(5 ) {
550556 sh " docker push ghcr.io/linuxserver/lsiodev-buildcache:arm64v8-${ COMMIT_SHA} -${ BUILD_NUMBER} "
551557 }
552- sh ''' docker rmi \
553- ${IMAGE}:arm64v8-${META_TAG} \
554- ghcr.io/linuxserver/lsiodev-buildcache:arm64v8-${COMMIT_SHA}-${BUILD_NUMBER} || :'''
558+ sh ''' #! /bin/bash
559+ containers=$(docker ps -aq)
560+ if [[ -n "${containers}" ]]; then
561+ docker stop ${containers}
562+ fi
563+ docker system prune -af --volumes || : '''
555564 }
556565 }
557566 }
@@ -612,13 +621,6 @@ pipeline {
612621 environment name : ' EXIT_STATUS' , value : ' '
613622 }
614623 steps {
615- sh ''' #! /bin/bash
616- echo "Packages were updated. Cleaning up the image and exiting."
617- if [ "${MULTIARCH}" == "true" ] && [ "${PACKAGE_CHECK}" == "false" ]; then
618- docker rmi ${IMAGE}:amd64-${META_TAG}
619- else
620- docker rmi ${IMAGE}:${META_TAG}
621- fi'''
622624 script{
623625 env. EXIT_STATUS = ' ABORTED'
624626 }
@@ -636,13 +638,6 @@ pipeline {
636638 }
637639 }
638640 steps {
639- sh ''' #! /bin/bash
640- echo "There are no package updates. Cleaning up the image and exiting."
641- if [ "${MULTIARCH}" == "true" ] && [ "${PACKAGE_CHECK}" == "false" ]; then
642- docker rmi ${IMAGE}:amd64-${META_TAG}
643- else
644- docker rmi ${IMAGE}:${META_TAG}
645- fi'''
646641 script{
647642 env. EXIT_STATUS = ' ABORTED'
648643 }
@@ -741,17 +736,6 @@ pipeline {
741736 done
742737 '''
743738 }
744- sh ''' #! /bin/bash
745- for DELETEIMAGE in "${GITHUBIMAGE}" "${GITLABIMAGE}" "${QUAYIMAGE}" "${IMAGE}"; do
746- docker rmi \
747- ${DELETEIMAGE}:${META_TAG} \
748- ${DELETEIMAGE}:${EXT_RELEASE_TAG} \
749- ${DELETEIMAGE}:latest || :
750- if [ -n "${SEMVER}" ]; then
751- docker rmi ${DELETEIMAGE}:${SEMVER} || :
752- fi
753- done
754- '''
755739 }
756740 }
757741 }
@@ -822,9 +806,16 @@ pipeline {
822806 docker manifest create ${MANIFESTIMAGE}:${SEMVER} ${MANIFESTIMAGE}:amd64-${SEMVER} ${MANIFESTIMAGE}:arm64v8-${SEMVER}
823807 docker manifest annotate ${MANIFESTIMAGE}:${SEMVER} ${MANIFESTIMAGE}:arm64v8-${SEMVER} --os linux --arch arm64 --variant v8
824808 fi
825- docker manifest push --purge ${MANIFESTIMAGE}:arm32v7-latest || :
826- docker manifest create ${MANIFESTIMAGE}:arm32v7-latest ${MANIFESTIMAGE}:amd64-latest
827- docker manifest push --purge ${MANIFESTIMAGE}:arm32v7-latest
809+ token=$(curl -sX GET "https://ghcr.io/token?scope=repository%3Alinuxserver%2F${CONTAINER_NAME}%3Apull" | jq -r '.token')
810+ digest=$(curl -s \
811+ --header "Accept: application/vnd.docker.distribution.manifest.v2+json" \
812+ --header "Authorization: Bearer ${token}" \
813+ "https://ghcr.io/v2/linuxserver/${CONTAINER_NAME}/manifests/arm32v7-latest")
814+ if [[ $(echo "$digest" | jq -r '.layers') != "null" ]]; then
815+ docker manifest push --purge ${MANIFESTIMAGE}:arm32v7-latest || :
816+ docker manifest create ${MANIFESTIMAGE}:arm32v7-latest ${MANIFESTIMAGE}:amd64-latest
817+ docker manifest push --purge ${MANIFESTIMAGE}:arm32v7-latest
818+ fi
828819 docker manifest push --purge ${MANIFESTIMAGE}:latest
829820 docker manifest push --purge ${MANIFESTIMAGE}:${META_TAG}
830821 docker manifest push --purge ${MANIFESTIMAGE}:${EXT_RELEASE_TAG}
@@ -834,24 +825,6 @@ pipeline {
834825 done
835826 '''
836827 }
837- sh ''' #! /bin/bash
838- for DELETEIMAGE in "${GITHUBIMAGE}" "${GITLABIMAGE}" "${QUAYIMAGE}" "${IMAGE}"; do
839- docker rmi \
840- ${DELETEIMAGE}:amd64-${META_TAG} \
841- ${DELETEIMAGE}:amd64-latest \
842- ${DELETEIMAGE}:amd64-${EXT_RELEASE_TAG} \
843- ${DELETEIMAGE}:arm64v8-${META_TAG} \
844- ${DELETEIMAGE}:arm64v8-latest \
845- ${DELETEIMAGE}:arm64v8-${EXT_RELEASE_TAG} || :
846- if [ -n "${SEMVER}" ]; then
847- docker rmi \
848- ${DELETEIMAGE}:amd64-${SEMVER} \
849- ${DELETEIMAGE}:arm64v8-${SEMVER} || :
850- fi
851- done
852- docker rmi \
853- ghcr.io/linuxserver/lsiodev-buildcache:arm64v8-${COMMIT_SHA}-${BUILD_NUMBER} || :
854- '''
855828 }
856829 }
857830 }
@@ -922,7 +895,6 @@ pipeline {
922895 stage(' Pull Request Comment' ) {
923896 when {
924897 not {environment name : ' CHANGE_ID' , value : ' ' }
925- environment name : ' CI' , value : ' true'
926898 environment name : ' EXIT_STATUS' , value : ' '
927899 }
928900 steps {
@@ -976,16 +948,24 @@ pipeline {
976948 echo "$escaped_table"
977949 }
978950
979- # Retrieve JSON data from URL
980- data=$(get_json "$CI_JSON_URL")
981- # Create table from JSON data
982- table=$(build_table "$data")
983- echo -e "$table"
951+ if [[ "${CI}" = "true" ]]; then
952+ # Retrieve JSON data from URL
953+ data=$(get_json "$CI_JSON_URL")
954+ # Create table from JSON data
955+ table=$(build_table "$data")
956+ echo -e "$table"
984957
985- curl -X POST -H "Authorization: token $GITHUB_TOKEN" \
986- -H "Accept: application/vnd.github.v3+json" \
987- "https://api.github.com/repos/$LS_USER/$LS_REPO/issues/$PULL_REQUEST/comments" \
988- -d "{\\ "body\\ ": \\ "I am a bot, here are the test results for this PR: \\ n${CI_URL}\\ n${SHELLCHECK_URL}\\ n${table}\\ "}"'''
958+ curl -X POST -H "Authorization: token $GITHUB_TOKEN" \
959+ -H "Accept: application/vnd.github.v3+json" \
960+ "https://api.github.com/repos/$LS_USER/$LS_REPO/issues/$PULL_REQUEST/comments" \
961+ -d "{\\ "body\\ ": \\ "I am a bot, here are the test results for this PR: \\ n${CI_URL}\\ n${SHELLCHECK_URL}\\ n${table}\\ "}"
962+ else
963+ curl -X POST -H "Authorization: token $GITHUB_TOKEN" \
964+ -H "Accept: application/vnd.github.v3+json" \
965+ "https://api.github.com/repos/$LS_USER/$LS_REPO/issues/$PULL_REQUEST/comments" \
966+ -d "{\\ "body\\ ": \\ "I am a bot, here is the pushed image/manifest for this PR: \\ n\\ n\\ `${GITHUBIMAGE}:${META_TAG}\\ `\\ "}"
967+ fi
968+ '''
989969
990970 }
991971 }
@@ -1012,6 +992,14 @@ pipeline {
1012992 }
1013993 }
1014994 cleanup {
995+ sh ''' #! /bin/bash
996+ echo "Performing docker system prune!!"
997+ containers=$(docker ps -aq)
998+ if [[ -n "${containers}" ]]; then
999+ docker stop ${containers}
1000+ fi
1001+ docker system prune -af --volumes || :
1002+ '''
10151003 cleanWs()
10161004 }
10171005 }
0 commit comments