Skip to content
This repository was archived by the owner on Jan 7, 2024. It is now read-only.

Commit 213ecaa

Browse files
Bot Updating Templated Files
1 parent 931a72c commit 213ecaa

File tree

1 file changed

+54
-66
lines changed

1 file changed

+54
-66
lines changed

Jenkinsfile

Lines changed: 54 additions & 66 deletions
Original file line numberDiff line numberDiff line change
@@ -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

Comments
 (0)