Skip to content

Commit f7b388a

Browse files
Bot Updating Templated Files
1 parent e8f27b4 commit f7b388a

File tree

1 file changed

+73
-35
lines changed

1 file changed

+73
-35
lines changed

Jenkinsfile

Lines changed: 73 additions & 35 deletions
Original file line numberDiff line numberDiff line change
@@ -210,6 +210,7 @@ pipeline {
210210
env.META_TAG = 'development-' + env.EXT_RELEASE_CLEAN + '-ls' + env.LS_TAG_NUMBER
211211
env.EXT_RELEASE_TAG = 'development-version-' + env.EXT_RELEASE_CLEAN
212212
env.BUILDCACHE = 'docker.io/lsiodev/buildcache,registry.gitlab.com/linuxserver.io/docker-jenkins-builder/lsiodev-buildcache,ghcr.io/linuxserver/lsiodev-buildcache,quay.io/linuxserver.io/lsiodev-buildcache'
213+
env.CITEST_IMAGETAG = 'latest'
213214
}
214215
}
215216
}
@@ -235,6 +236,7 @@ pipeline {
235236
env.EXT_RELEASE_TAG = 'development-version-' + env.EXT_RELEASE_CLEAN
236237
env.DOCKERHUB_LINK = 'https://hub.docker.com/r/' + env.DEV_DOCKERHUB_IMAGE + '/tags/'
237238
env.BUILDCACHE = 'docker.io/lsiodev/buildcache,registry.gitlab.com/linuxserver.io/docker-jenkins-builder/lsiodev-buildcache,ghcr.io/linuxserver/lsiodev-buildcache,quay.io/linuxserver.io/lsiodev-buildcache'
239+
env.CITEST_IMAGETAG = 'develop'
238240
}
239241
}
240242
}
@@ -260,6 +262,7 @@ pipeline {
260262
env.CODE_URL = 'https://github.com/' + env.LS_USER + '/' + env.LS_REPO + '/pull/' + env.PULL_REQUEST
261263
env.DOCKERHUB_LINK = 'https://hub.docker.com/r/' + env.PR_DOCKERHUB_IMAGE + '/tags/'
262264
env.BUILDCACHE = 'docker.io/lsiodev/buildcache,registry.gitlab.com/linuxserver.io/docker-jenkins-builder/lsiodev-buildcache,ghcr.io/linuxserver/lsiodev-buildcache,quay.io/linuxserver.io/lsiodev-buildcache'
265+
env.CITEST_IMAGETAG = 'develop'
263266
}
264267
}
265268
}
@@ -282,7 +285,7 @@ pipeline {
282285
-v ${WORKSPACE}:/mnt \
283286
-e AWS_ACCESS_KEY_ID=\"${S3_KEY}\" \
284287
-e AWS_SECRET_ACCESS_KEY=\"${S3_SECRET}\" \
285-
ghcr.io/linuxserver/baseimage-alpine:3.20 s6-envdir -fn -- /var/run/s6/container_environment /bin/bash -c "\
288+
ghcr.io/linuxserver/baseimage-alpine:3 s6-envdir -fn -- /var/run/s6/container_environment /bin/bash -c "\
286289
apk add --no-cache python3 && \
287290
python3 -m venv /lsiopy && \
288291
pip install --no-cache-dir -U pip && \
@@ -617,13 +620,16 @@ pipeline {
617620
echo $GITHUB_TOKEN | docker login ghcr.io -u LinuxServer-CI --password-stdin
618621
echo $GITLAB_TOKEN | docker login registry.gitlab.com -u LinuxServer.io --password-stdin
619622
echo $QUAYPASS | docker login quay.io -u $QUAYUSER --password-stdin
623+
620624
if [[ "${PACKAGE_CHECK}" != "true" ]]; then
625+
declare -A pids
621626
IFS=',' read -ra CACHE <<< "$BUILDCACHE"
622627
for i in "${CACHE[@]}"; do
623628
docker push ${i}:amd64-${COMMIT_SHA}-${BUILD_NUMBER} &
629+
pids[$!]="$i"
624630
done
625-
for p in $(jobs -p); do
626-
wait "$p" || { echo "job $p failed" >&2; exit 1; }
631+
for p in "${!pids[@]}"; do
632+
wait "$p" || { [[ "${pids[$p]}" != *"quay.io"* ]] && exit 1; }
627633
done
628634
fi
629635
'''
@@ -683,13 +689,16 @@ pipeline {
683689
echo $GITHUB_TOKEN | docker login ghcr.io -u LinuxServer-CI --password-stdin
684690
echo $GITLAB_TOKEN | docker login registry.gitlab.com -u LinuxServer.io --password-stdin
685691
echo $QUAYPASS | docker login quay.io -u $QUAYUSER --password-stdin
692+
686693
if [[ "${PACKAGE_CHECK}" != "true" ]]; then
694+
declare -A pids
687695
IFS=',' read -ra CACHE <<< "$BUILDCACHE"
688696
for i in "${CACHE[@]}"; do
689697
docker push ${i}:amd64-${COMMIT_SHA}-${BUILD_NUMBER} &
698+
pids[$!]="$i"
690699
done
691-
for p in $(jobs -p); do
692-
wait "$p" || { echo "job $p failed" >&2; exit 1; }
700+
for p in "${!pids[@]}"; do
701+
wait "$p" || { [[ "${pids[$p]}" != *"quay.io"* ]] && exit 1; }
693702
done
694703
fi
695704
'''
@@ -743,12 +752,14 @@ pipeline {
743752
echo $GITLAB_TOKEN | docker login registry.gitlab.com -u LinuxServer.io --password-stdin
744753
echo $QUAYPASS | docker login quay.io -u $QUAYUSER --password-stdin
745754
if [[ "${PACKAGE_CHECK}" != "true" ]]; then
755+
declare -A pids
746756
IFS=',' read -ra CACHE <<< "$BUILDCACHE"
747757
for i in "${CACHE[@]}"; do
748758
docker push ${i}:arm64v8-${COMMIT_SHA}-${BUILD_NUMBER} &
759+
pids[$!]="$i"
749760
done
750-
for p in $(jobs -p); do
751-
wait "$p" || { echo "job $p failed" >&2; exit 1; }
761+
for p in "${!pids[@]}"; do
762+
wait "$p" || { [[ "${pids[$p]}" != *"quay.io"* ]] && exit 1; }
752763
done
753764
fi
754765
'''
@@ -873,7 +884,7 @@ pipeline {
873884
CI_DOCKERENV="LSIO_FIRST_PARTY=true"
874885
fi
875886
fi
876-
docker pull ghcr.io/linuxserver/ci:latest
887+
docker pull ghcr.io/linuxserver/ci:${CITEST_IMAGETAG}
877888
if [ "${MULTIARCH}" == "true" ]; then
878889
docker pull ghcr.io/linuxserver/lsiodev-buildcache:arm64v8-${COMMIT_SHA}-${BUILD_NUMBER} --platform=arm64
879890
docker tag ghcr.io/linuxserver/lsiodev-buildcache:arm64v8-${COMMIT_SHA}-${BUILD_NUMBER} ${IMAGE}:arm64v8-${META_TAG}
@@ -897,7 +908,7 @@ pipeline {
897908
-e WEB_PATH=\"${CI_WEBPATH}\" \
898909
-e NODE_NAME=\"${NODE_NAME}\" \
899910
-e SYFT_IMAGE_TAG=\"${CI_SYFT_IMAGE_TAG:-${SYFT_IMAGE_TAG}}\" \
900-
-t ghcr.io/linuxserver/ci:latest \
911+
-t ghcr.io/linuxserver/ci:${CITEST_IMAGETAG} \
901912
python3 test_build.py'''
902913
}
903914
}
@@ -923,9 +934,11 @@ pipeline {
923934
CACHEIMAGE=${i}
924935
fi
925936
done
926-
docker buildx imagetools create --prefer-index=false -t ${PUSHIMAGE}:${META_TAG} -t ${PUSHIMAGE}:development -t ${PUSHIMAGE}:${EXT_RELEASE_TAG} ${CACHEIMAGE}:amd64-${COMMIT_SHA}-${BUILD_NUMBER}
937+
docker buildx imagetools create --prefer-index=false -t ${PUSHIMAGE}:${META_TAG} -t ${PUSHIMAGE}:development -t ${PUSHIMAGE}:${EXT_RELEASE_TAG} ${CACHEIMAGE}:amd64-${COMMIT_SHA}-${BUILD_NUMBER} || \
938+
{ if [[ "${PUSHIMAGE}" != "${QUAYIMAGE}" ]]; then exit 1; fi; }
927939
if [ -n "${SEMVER}" ]; then
928-
docker buildx imagetools create --prefer-index=false -t ${PUSHIMAGE}:${SEMVER} ${CACHEIMAGE}:amd64-${COMMIT_SHA}-${BUILD_NUMBER}
940+
docker buildx imagetools create --prefer-index=false -t ${PUSHIMAGE}:${SEMVER} ${CACHEIMAGE}:amd64-${COMMIT_SHA}-${BUILD_NUMBER} || \
941+
{ if [[ "${PUSHIMAGE}" != "${QUAYIMAGE}" ]]; then exit 1; fi; }
929942
fi
930943
done
931944
'''
@@ -950,20 +963,27 @@ pipeline {
950963
CACHEIMAGE=${i}
951964
fi
952965
done
953-
docker buildx imagetools create --prefer-index=false -t ${MANIFESTIMAGE}:amd64-${META_TAG} -t ${MANIFESTIMAGE}:amd64-development -t ${MANIFESTIMAGE}:amd64-${EXT_RELEASE_TAG} ${CACHEIMAGE}:amd64-${COMMIT_SHA}-${BUILD_NUMBER}
954-
docker buildx imagetools create --prefer-index=false -t ${MANIFESTIMAGE}:arm64v8-${META_TAG} -t ${MANIFESTIMAGE}:arm64v8-development -t ${MANIFESTIMAGE}:arm64v8-${EXT_RELEASE_TAG} ${CACHEIMAGE}:arm64v8-${COMMIT_SHA}-${BUILD_NUMBER}
966+
docker buildx imagetools create --prefer-index=false -t ${MANIFESTIMAGE}:amd64-${META_TAG} -t ${MANIFESTIMAGE}:amd64-development -t ${MANIFESTIMAGE}:amd64-${EXT_RELEASE_TAG} ${CACHEIMAGE}:amd64-${COMMIT_SHA}-${BUILD_NUMBER} || \
967+
{ if [[ "${MANIFESTIMAGE}" != "${QUAYIMAGE}" ]]; then exit 1; fi; }
968+
docker buildx imagetools create --prefer-index=false -t ${MANIFESTIMAGE}:arm64v8-${META_TAG} -t ${MANIFESTIMAGE}:arm64v8-development -t ${MANIFESTIMAGE}:arm64v8-${EXT_RELEASE_TAG} ${CACHEIMAGE}:arm64v8-${COMMIT_SHA}-${BUILD_NUMBER} || \
969+
{ if [[ "${MANIFESTIMAGE}" != "${QUAYIMAGE}" ]]; then exit 1; fi; }
955970
if [ -n "${SEMVER}" ]; then
956-
docker buildx imagetools create --prefer-index=false -t ${MANIFESTIMAGE}:amd64-${SEMVER} ${CACHEIMAGE}:amd64-${COMMIT_SHA}-${BUILD_NUMBER}
957-
docker buildx imagetools create --prefer-index=false -t ${MANIFESTIMAGE}:arm64v8-${SEMVER} ${CACHEIMAGE}:arm64v8-${COMMIT_SHA}-${BUILD_NUMBER}
971+
docker buildx imagetools create --prefer-index=false -t ${MANIFESTIMAGE}:amd64-${SEMVER} ${CACHEIMAGE}:amd64-${COMMIT_SHA}-${BUILD_NUMBER} || \
972+
{ if [[ "${MANIFESTIMAGE}" != "${QUAYIMAGE}" ]]; then exit 1; fi; }
973+
docker buildx imagetools create --prefer-index=false -t ${MANIFESTIMAGE}:arm64v8-${SEMVER} ${CACHEIMAGE}:arm64v8-${COMMIT_SHA}-${BUILD_NUMBER} || \
974+
{ if [[ "${MANIFESTIMAGE}" != "${QUAYIMAGE}" ]]; then exit 1; fi; }
958975
fi
959976
done
960977
for MANIFESTIMAGE in "${IMAGE}" "${GITLABIMAGE}" "${GITHUBIMAGE}" "${QUAYIMAGE}"; do
961-
docker buildx imagetools create -t ${MANIFESTIMAGE}:development ${MANIFESTIMAGE}:amd64-development ${MANIFESTIMAGE}:arm64v8-development
962-
docker buildx imagetools create -t ${MANIFESTIMAGE}:${META_TAG} ${MANIFESTIMAGE}:amd64-${META_TAG} ${MANIFESTIMAGE}:arm64v8-${META_TAG}
963-
964-
docker buildx imagetools create -t ${MANIFESTIMAGE}:${EXT_RELEASE_TAG} ${MANIFESTIMAGE}:amd64-${EXT_RELEASE_TAG} ${MANIFESTIMAGE}:arm64v8-${EXT_RELEASE_TAG}
978+
docker buildx imagetools create -t ${MANIFESTIMAGE}:development ${MANIFESTIMAGE}:amd64-development ${MANIFESTIMAGE}:arm64v8-development || \
979+
{ if [[ "${MANIFESTIMAGE}" != "${QUAYIMAGE}" ]]; then exit 1; fi; }
980+
docker buildx imagetools create -t ${MANIFESTIMAGE}:${META_TAG} ${MANIFESTIMAGE}:amd64-${META_TAG} ${MANIFESTIMAGE}:arm64v8-${META_TAG} || \
981+
{ if [[ "${MANIFESTIMAGE}" != "${QUAYIMAGE}" ]]; then exit 1; fi; }
982+
docker buildx imagetools create -t ${MANIFESTIMAGE}:${EXT_RELEASE_TAG} ${MANIFESTIMAGE}:amd64-${EXT_RELEASE_TAG} ${MANIFESTIMAGE}:arm64v8-${EXT_RELEASE_TAG} || \
983+
{ if [[ "${MANIFESTIMAGE}" != "${QUAYIMAGE}" ]]; then exit 1; fi; }
965984
if [ -n "${SEMVER}" ]; then
966-
docker buildx imagetools create -t ${MANIFESTIMAGE}:${SEMVER} ${MANIFESTIMAGE}:amd64-${SEMVER} ${MANIFESTIMAGE}:arm64v8-${SEMVER}
985+
docker buildx imagetools create -t ${MANIFESTIMAGE}:${SEMVER} ${MANIFESTIMAGE}:amd64-${SEMVER} ${MANIFESTIMAGE}:arm64v8-${SEMVER} || \
986+
{ if [[ "${MANIFESTIMAGE}" != "${QUAYIMAGE}" ]]; then exit 1; fi; }
967987
fi
968988
done
969989
'''
@@ -981,23 +1001,41 @@ pipeline {
9811001
environment name: 'EXIT_STATUS', value: ''
9821002
}
9831003
steps {
984-
echo "Pushing New tag for current commit ${META_TAG}"
985-
sh '''curl -H "Authorization: token ${GITHUB_TOKEN}" -X POST https://api.github.com/repos/${LS_USER}/${LS_REPO}/git/tags \
986-
-d '{"tag":"'${META_TAG}'",\
987-
"object": "'${COMMIT_SHA}'",\
988-
"message": "Tagging Release '${EXT_RELEASE_CLEAN}'-ls'${LS_TAG_NUMBER}' to development",\
989-
"type": "commit",\
990-
"tagger": {"name": "LinuxServer-CI","email": "[email protected]","date": "'${GITHUB_DATE}'"}}' '''
991-
echo "Pushing New release for Tag"
9921004
sh '''#! /bin/bash
1005+
echo "Auto-generating release notes"
1006+
if [ "$(git tag --points-at HEAD)" != "" ]; then
1007+
echo "Existing tag points to current commit, suggesting no new LS changes"
1008+
AUTO_RELEASE_NOTES="No changes"
1009+
else
1010+
AUTO_RELEASE_NOTES=$(curl -fsL -H "Authorization: token ${GITHUB_TOKEN}" -H "Accept: application/vnd.github+json" -X POST https://api.github.com/repos/${LS_USER}/${LS_REPO}/releases/generate-notes \
1011+
-d '{"tag_name":"'${META_TAG}'",\
1012+
"target_commitish": "development"}' \
1013+
| jq -r '.body' | sed 's|## What.s Changed||')
1014+
fi
1015+
echo "Pushing New tag for current commit ${META_TAG}"
1016+
curl -H "Authorization: token ${GITHUB_TOKEN}" -X POST https://api.github.com/repos/${LS_USER}/${LS_REPO}/git/tags \
1017+
-d '{"tag":"'${META_TAG}'",\
1018+
"object": "'${COMMIT_SHA}'",\
1019+
"message": "Tagging Release '${EXT_RELEASE_CLEAN}'-ls'${LS_TAG_NUMBER}' to development",\
1020+
"type": "commit",\
1021+
"tagger": {"name": "LinuxServer-CI","email": "[email protected]","date": "'${GITHUB_DATE}'"}}'
1022+
echo "Pushing New release for Tag"
9931023
echo "Data change at JSON endpoint ${JSON_URL}" > releasebody.json
994-
echo '{"tag_name":"'${META_TAG}'",\
995-
"target_commitish": "development",\
996-
"name": "'${META_TAG}'",\
997-
"body": "**CI Report:**\\n\\n'${CI_URL:-N/A}'\\n\\n**LinuxServer Changes:**\\n\\n'${LS_RELEASE_NOTES}'\\n\\n**Remote Changes:**\\n\\n' > start
998-
printf '","draft": false,"prerelease": true}' >> releasebody.json
999-
paste -d'\\0' start releasebody.json > releasebody.json.done
1000-
curl -H "Authorization: token ${GITHUB_TOKEN}" -X POST https://api.github.com/repos/${LS_USER}/${LS_REPO}/releases -d @releasebody.json.done'''
1024+
jq -n \
1025+
--arg tag_name "$META_TAG" \
1026+
--arg target_commitish "development" \
1027+
--arg ci_url "${CI_URL:-N/A}" \
1028+
--arg ls_notes "$AUTO_RELEASE_NOTES" \
1029+
--arg remote_notes "$(cat releasebody.json)" \
1030+
'{
1031+
"tag_name": $tag_name,
1032+
"target_commitish": $target_commitish,
1033+
"name": $tag_name,
1034+
"body": ("**CI Report:**\\n\\n" + $ci_url + "\\n\\n**LinuxServer Changes:**\\n\\n" + $ls_notes + "\\n\\n**Remote Changes:**\\n\\n" + $remote_notes),
1035+
"draft": false,
1036+
"prerelease": true }' > releasebody.json.done
1037+
curl -H "Authorization: token ${GITHUB_TOKEN}" -X POST https://api.github.com/repos/${LS_USER}/${LS_REPO}/releases -d @releasebody.json.done
1038+
'''
10011039
}
10021040
}
10031041
// Add protection to the release branch

0 commit comments

Comments
 (0)