@@ -39,7 +39,12 @@ pipeline {
3939 // Setup all the basic environment variables needed for the build
4040 stage(" Set ENV Variables base" ){
4141 steps{
42- sh ''' docker pull quay.io/skopeo/stable:v1 || : '''
42+ sh ''' #! /bin/bash
43+ containers=$(docker ps -aq)
44+ if [[ -n "${containers}" ]]; then
45+ docker stop ${containers}
46+ fi
47+ docker system prune -af --volumes || : '''
4348 script{
4449 env. EXIT_STATUS = ' '
4550 env. LS_RELEASE = sh(
@@ -204,12 +209,12 @@ pipeline {
204209 env. GITLABIMAGE = ' registry.gitlab.com/linuxserver.io/' + env. LS_REPO + ' /lspipepr-' + env. CONTAINER_NAME
205210 env. QUAYIMAGE = ' quay.io/linuxserver.io/lspipepr-' + env. CONTAINER_NAME
206211 if (env. MULTIARCH == ' true' ) {
207- 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
212+ 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
208213 } else {
209- env. CI_TAGS = env. EXT_RELEASE_CLEAN + ' -pkg-' + env. PACKAGE_TAG + ' -pr-' + env. PULL_REQUEST
214+ env. CI_TAGS = env. EXT_RELEASE_CLEAN + ' -pkg-' + env. PACKAGE_TAG + ' -dev- ' + env . COMMIT_SHA + ' - pr-' + env. PULL_REQUEST
210215 }
211- env. VERSION_TAG = env. EXT_RELEASE_CLEAN + ' -pkg-' + env. PACKAGE_TAG + ' -pr-' + env. PULL_REQUEST
212- env. META_TAG = env. EXT_RELEASE_CLEAN + ' -pkg-' + env. PACKAGE_TAG + ' -pr-' + env. PULL_REQUEST
216+ env. VERSION_TAG = env. EXT_RELEASE_CLEAN + ' -pkg-' + env. PACKAGE_TAG + ' -dev- ' + env . COMMIT_SHA + ' - pr-' + env. PULL_REQUEST
217+ env. META_TAG = env. EXT_RELEASE_CLEAN + ' -pkg-' + env. PACKAGE_TAG + ' -dev- ' + env . COMMIT_SHA + ' - pr-' + env. PULL_REQUEST
213218 env. EXT_RELEASE_TAG = ' version-' + env. EXT_RELEASE_CLEAN
214219 env. CODE_URL = ' https://github.com/' + env. LS_USER + ' /' + env. LS_REPO + ' /pull/' + env. PULL_REQUEST
215220 env. DOCKERHUB_LINK = ' https://hub.docker.com/r/' + env. PR_DOCKERHUB_IMAGE + ' /tags/'
@@ -337,6 +342,8 @@ pipeline {
337342 git clone https://github.com/linuxserver/templates.git ${TEMPDIR}/unraid/templates
338343 if [[ -f ${TEMPDIR}/unraid/docker-templates/linuxserver.io/img/${CONTAINER_NAME}-logo.png ]]; then
339344 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
345+ elif [[ -f ${TEMPDIR}/unraid/docker-templates/linuxserver.io/img/${CONTAINER_NAME}-icon.png ]]; then
346+ 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
340347 fi
341348 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
342349 cd ${TEMPDIR}/unraid/templates/
@@ -428,8 +435,7 @@ pipeline {
428435 }
429436 steps{
430437 sh ''' #! /bin/bash
431- set -e
432- PACKAGE_UUID=$(curl -X GET -H "Authorization: Bearer ${SCARF_TOKEN}" https://scarf.sh/api/v1/organizations/linuxserver-ci/packages | jq -r '.[] | select(.name=="linuxserver/unifi-controller") | .uuid')
438+ PACKAGE_UUID=$(curl -X GET -H "Authorization: Bearer ${SCARF_TOKEN}" https://scarf.sh/api/v1/organizations/linuxserver-ci/packages | jq -r '.[] | select(.name=="linuxserver/unifi-controller") | .uuid' || :)
433439 if [ -z "${PACKAGE_UUID}" ]; then
434440 echo "Adding package to Scarf.sh"
435441 curl -sX POST https://scarf.sh/api/v1/organizations/linuxserver-ci/packages \
@@ -539,9 +545,12 @@ pipeline {
539545 retry(5 ) {
540546 sh " docker push ghcr.io/linuxserver/lsiodev-buildcache:arm64v8-${ COMMIT_SHA} -${ BUILD_NUMBER} "
541547 }
542- sh ''' docker rmi \
543- ${IMAGE}:arm64v8-${META_TAG} \
544- ghcr.io/linuxserver/lsiodev-buildcache:arm64v8-${COMMIT_SHA}-${BUILD_NUMBER} || :'''
548+ sh ''' #! /bin/bash
549+ containers=$(docker ps -aq)
550+ if [[ -n "${containers}" ]]; then
551+ docker stop ${containers}
552+ fi
553+ docker system prune -af --volumes || : '''
545554 }
546555 }
547556 }
@@ -602,13 +611,6 @@ pipeline {
602611 environment name : ' EXIT_STATUS' , value : ' '
603612 }
604613 steps {
605- sh ''' #! /bin/bash
606- echo "Packages were updated. Cleaning up the image and exiting."
607- if [ "${MULTIARCH}" == "true" ] && [ "${PACKAGE_CHECK}" == "false" ]; then
608- docker rmi ${IMAGE}:amd64-${META_TAG}
609- else
610- docker rmi ${IMAGE}:${META_TAG}
611- fi'''
612614 script{
613615 env. EXIT_STATUS = ' ABORTED'
614616 }
@@ -626,13 +628,6 @@ pipeline {
626628 }
627629 }
628630 steps {
629- sh ''' #! /bin/bash
630- echo "There are no package updates. Cleaning up the image and exiting."
631- if [ "${MULTIARCH}" == "true" ] && [ "${PACKAGE_CHECK}" == "false" ]; then
632- docker rmi ${IMAGE}:amd64-${META_TAG}
633- else
634- docker rmi ${IMAGE}:${META_TAG}
635- fi'''
636631 script{
637632 env. EXIT_STATUS = ' ABORTED'
638633 }
@@ -731,17 +726,6 @@ pipeline {
731726 done
732727 '''
733728 }
734- sh ''' #! /bin/bash
735- for DELETEIMAGE in "${GITHUBIMAGE}" "${GITLABIMAGE}" "${QUAYIMAGE}" "${IMAGE}"; do
736- docker rmi \
737- ${DELETEIMAGE}:${META_TAG} \
738- ${DELETEIMAGE}:${EXT_RELEASE_TAG} \
739- ${DELETEIMAGE}:latest || :
740- if [ -n "${SEMVER}" ]; then
741- docker rmi ${DELETEIMAGE}:${SEMVER} || :
742- fi
743- done
744- '''
745729 }
746730 }
747731 }
@@ -812,9 +796,16 @@ pipeline {
812796 docker manifest create ${MANIFESTIMAGE}:${SEMVER} ${MANIFESTIMAGE}:amd64-${SEMVER} ${MANIFESTIMAGE}:arm64v8-${SEMVER}
813797 docker manifest annotate ${MANIFESTIMAGE}:${SEMVER} ${MANIFESTIMAGE}:arm64v8-${SEMVER} --os linux --arch arm64 --variant v8
814798 fi
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
799+ token=$(curl -sX GET "https://ghcr.io/token?scope=repository%3Alinuxserver%2F${CONTAINER_NAME}%3Apull" | jq -r '.token')
800+ digest=$(curl -s \
801+ --header "Accept: application/vnd.docker.distribution.manifest.v2+json" \
802+ --header "Authorization: Bearer ${token}" \
803+ "https://ghcr.io/v2/linuxserver/${CONTAINER_NAME}/manifests/arm32v7-latest")
804+ if [[ $(echo "$digest" | jq -r '.layers') != "null" ]]; then
805+ docker manifest push --purge ${MANIFESTIMAGE}:arm32v7-latest || :
806+ docker manifest create ${MANIFESTIMAGE}:arm32v7-latest ${MANIFESTIMAGE}:amd64-latest
807+ docker manifest push --purge ${MANIFESTIMAGE}:arm32v7-latest
808+ fi
818809 docker manifest push --purge ${MANIFESTIMAGE}:latest
819810 docker manifest push --purge ${MANIFESTIMAGE}:${META_TAG}
820811 docker manifest push --purge ${MANIFESTIMAGE}:${EXT_RELEASE_TAG}
@@ -824,24 +815,6 @@ pipeline {
824815 done
825816 '''
826817 }
827- sh ''' #! /bin/bash
828- for DELETEIMAGE in "${GITHUBIMAGE}" "${GITLABIMAGE}" "${QUAYIMAGE}" "${IMAGE}"; do
829- docker rmi \
830- ${DELETEIMAGE}:amd64-${META_TAG} \
831- ${DELETEIMAGE}:amd64-latest \
832- ${DELETEIMAGE}:amd64-${EXT_RELEASE_TAG} \
833- ${DELETEIMAGE}:arm64v8-${META_TAG} \
834- ${DELETEIMAGE}:arm64v8-latest \
835- ${DELETEIMAGE}:arm64v8-${EXT_RELEASE_TAG} || :
836- if [ -n "${SEMVER}" ]; then
837- docker rmi \
838- ${DELETEIMAGE}:amd64-${SEMVER} \
839- ${DELETEIMAGE}:arm64v8-${SEMVER} || :
840- fi
841- done
842- docker rmi \
843- ghcr.io/linuxserver/lsiodev-buildcache:arm64v8-${COMMIT_SHA}-${BUILD_NUMBER} || :
844- '''
845818 }
846819 }
847820 }
@@ -912,7 +885,6 @@ pipeline {
912885 stage(' Pull Request Comment' ) {
913886 when {
914887 not {environment name : ' CHANGE_ID' , value : ' ' }
915- environment name : ' CI' , value : ' true'
916888 environment name : ' EXIT_STATUS' , value : ' '
917889 }
918890 steps {
@@ -966,16 +938,24 @@ pipeline {
966938 echo "$escaped_table"
967939 }
968940
969- # Retrieve JSON data from URL
970- data=$(get_json "$CI_JSON_URL")
971- # Create table from JSON data
972- table=$(build_table "$data")
973- echo -e "$table"
941+ if [[ "${CI}" = "true" ]]; then
942+ # Retrieve JSON data from URL
943+ data=$(get_json "$CI_JSON_URL")
944+ # Create table from JSON data
945+ table=$(build_table "$data")
946+ echo -e "$table"
974947
975- curl -X POST -H "Authorization: token $GITHUB_TOKEN" \
976- -H "Accept: application/vnd.github.v3+json" \
977- "https://api.github.com/repos/$LS_USER/$LS_REPO/issues/$PULL_REQUEST/comments" \
978- -d "{\\ "body\\ ": \\ "I am a bot, here are the test results for this PR: \\ n${CI_URL}\\ n${SHELLCHECK_URL}\\ n${table}\\ "}"'''
948+ curl -X POST -H "Authorization: token $GITHUB_TOKEN" \
949+ -H "Accept: application/vnd.github.v3+json" \
950+ "https://api.github.com/repos/$LS_USER/$LS_REPO/issues/$PULL_REQUEST/comments" \
951+ -d "{\\ "body\\ ": \\ "I am a bot, here are the test results for this PR: \\ n${CI_URL}\\ n${SHELLCHECK_URL}\\ n${table}\\ "}"
952+ else
953+ curl -X POST -H "Authorization: token $GITHUB_TOKEN" \
954+ -H "Accept: application/vnd.github.v3+json" \
955+ "https://api.github.com/repos/$LS_USER/$LS_REPO/issues/$PULL_REQUEST/comments" \
956+ -d "{\\ "body\\ ": \\ "I am a bot, here is the pushed image/manifest for this PR: \\ n\\ n\\ `${GITHUBIMAGE}:${META_TAG}\\ `\\ "}"
957+ fi
958+ '''
979959
980960 }
981961 }
@@ -1002,6 +982,14 @@ pipeline {
1002982 }
1003983 }
1004984 cleanup {
985+ sh ''' #! /bin/bash
986+ echo "Performing docker system prune!!"
987+ containers=$(docker ps -aq)
988+ if [[ -n "${containers}" ]]; then
989+ docker stop ${containers}
990+ fi
991+ docker system prune -af --volumes || :
992+ '''
1005993 cleanWs()
1006994 }
1007995 }
0 commit comments