Skip to content

Commit abda68f

Browse files
Bot Updating Templated Files
1 parent ba2c31d commit abda68f

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
@@ -206,6 +206,7 @@ pipeline {
206206
env.META_TAG = env.EXT_RELEASE_CLEAN + '-ls' + env.LS_TAG_NUMBER
207207
env.EXT_RELEASE_TAG = 'version-' + env.EXT_RELEASE_CLEAN
208208
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'
209+
env.CITEST_IMAGETAG = 'latest'
209210
}
210211
}
211212
}
@@ -231,6 +232,7 @@ pipeline {
231232
env.EXT_RELEASE_TAG = 'version-' + env.EXT_RELEASE_CLEAN
232233
env.DOCKERHUB_LINK = 'https://hub.docker.com/r/' + env.DEV_DOCKERHUB_IMAGE + '/tags/'
233234
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'
235+
env.CITEST_IMAGETAG = 'develop'
234236
}
235237
}
236238
}
@@ -256,6 +258,7 @@ pipeline {
256258
env.CODE_URL = 'https://github.com/' + env.LS_USER + '/' + env.LS_REPO + '/pull/' + env.PULL_REQUEST
257259
env.DOCKERHUB_LINK = 'https://hub.docker.com/r/' + env.PR_DOCKERHUB_IMAGE + '/tags/'
258260
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'
261+
env.CITEST_IMAGETAG = 'develop'
259262
}
260263
}
261264
}
@@ -278,7 +281,7 @@ pipeline {
278281
-v ${WORKSPACE}:/mnt \
279282
-e AWS_ACCESS_KEY_ID=\"${S3_KEY}\" \
280283
-e AWS_SECRET_ACCESS_KEY=\"${S3_SECRET}\" \
281-
ghcr.io/linuxserver/baseimage-alpine:3.20 s6-envdir -fn -- /var/run/s6/container_environment /bin/bash -c "\
284+
ghcr.io/linuxserver/baseimage-alpine:3 s6-envdir -fn -- /var/run/s6/container_environment /bin/bash -c "\
282285
apk add --no-cache python3 && \
283286
python3 -m venv /lsiopy && \
284287
pip install --no-cache-dir -U pip && \
@@ -613,13 +616,16 @@ pipeline {
613616
echo $GITHUB_TOKEN | docker login ghcr.io -u LinuxServer-CI --password-stdin
614617
echo $GITLAB_TOKEN | docker login registry.gitlab.com -u LinuxServer.io --password-stdin
615618
echo $QUAYPASS | docker login quay.io -u $QUAYUSER --password-stdin
619+
616620
if [[ "${PACKAGE_CHECK}" != "true" ]]; then
621+
declare -A pids
617622
IFS=',' read -ra CACHE <<< "$BUILDCACHE"
618623
for i in "${CACHE[@]}"; do
619624
docker push ${i}:amd64-${COMMIT_SHA}-${BUILD_NUMBER} &
625+
pids[$!]="$i"
620626
done
621-
for p in $(jobs -p); do
622-
wait "$p" || { echo "job $p failed" >&2; exit 1; }
627+
for p in "${!pids[@]}"; do
628+
wait "$p" || { [[ "${pids[$p]}" != *"quay.io"* ]] && exit 1; }
623629
done
624630
fi
625631
'''
@@ -679,13 +685,16 @@ pipeline {
679685
echo $GITHUB_TOKEN | docker login ghcr.io -u LinuxServer-CI --password-stdin
680686
echo $GITLAB_TOKEN | docker login registry.gitlab.com -u LinuxServer.io --password-stdin
681687
echo $QUAYPASS | docker login quay.io -u $QUAYUSER --password-stdin
688+
682689
if [[ "${PACKAGE_CHECK}" != "true" ]]; then
690+
declare -A pids
683691
IFS=',' read -ra CACHE <<< "$BUILDCACHE"
684692
for i in "${CACHE[@]}"; do
685693
docker push ${i}:amd64-${COMMIT_SHA}-${BUILD_NUMBER} &
694+
pids[$!]="$i"
686695
done
687-
for p in $(jobs -p); do
688-
wait "$p" || { echo "job $p failed" >&2; exit 1; }
696+
for p in "${!pids[@]}"; do
697+
wait "$p" || { [[ "${pids[$p]}" != *"quay.io"* ]] && exit 1; }
689698
done
690699
fi
691700
'''
@@ -739,12 +748,14 @@ pipeline {
739748
echo $GITLAB_TOKEN | docker login registry.gitlab.com -u LinuxServer.io --password-stdin
740749
echo $QUAYPASS | docker login quay.io -u $QUAYUSER --password-stdin
741750
if [[ "${PACKAGE_CHECK}" != "true" ]]; then
751+
declare -A pids
742752
IFS=',' read -ra CACHE <<< "$BUILDCACHE"
743753
for i in "${CACHE[@]}"; do
744754
docker push ${i}:arm64v8-${COMMIT_SHA}-${BUILD_NUMBER} &
755+
pids[$!]="$i"
745756
done
746-
for p in $(jobs -p); do
747-
wait "$p" || { echo "job $p failed" >&2; exit 1; }
757+
for p in "${!pids[@]}"; do
758+
wait "$p" || { [[ "${pids[$p]}" != *"quay.io"* ]] && exit 1; }
748759
done
749760
fi
750761
'''
@@ -869,7 +880,7 @@ pipeline {
869880
CI_DOCKERENV="LSIO_FIRST_PARTY=true"
870881
fi
871882
fi
872-
docker pull ghcr.io/linuxserver/ci:latest
883+
docker pull ghcr.io/linuxserver/ci:${CITEST_IMAGETAG}
873884
if [ "${MULTIARCH}" == "true" ]; then
874885
docker pull ghcr.io/linuxserver/lsiodev-buildcache:arm64v8-${COMMIT_SHA}-${BUILD_NUMBER} --platform=arm64
875886
docker tag ghcr.io/linuxserver/lsiodev-buildcache:arm64v8-${COMMIT_SHA}-${BUILD_NUMBER} ${IMAGE}:arm64v8-${META_TAG}
@@ -893,7 +904,7 @@ pipeline {
893904
-e WEB_PATH=\"${CI_WEBPATH}\" \
894905
-e NODE_NAME=\"${NODE_NAME}\" \
895906
-e SYFT_IMAGE_TAG=\"${CI_SYFT_IMAGE_TAG:-${SYFT_IMAGE_TAG}}\" \
896-
-t ghcr.io/linuxserver/ci:latest \
907+
-t ghcr.io/linuxserver/ci:${CITEST_IMAGETAG} \
897908
python3 test_build.py'''
898909
}
899910
}
@@ -919,9 +930,11 @@ pipeline {
919930
CACHEIMAGE=${i}
920931
fi
921932
done
922-
docker buildx imagetools create --prefer-index=false -t ${PUSHIMAGE}:${META_TAG} -t ${PUSHIMAGE}:latest -t ${PUSHIMAGE}:${EXT_RELEASE_TAG} ${CACHEIMAGE}:amd64-${COMMIT_SHA}-${BUILD_NUMBER}
933+
docker buildx imagetools create --prefer-index=false -t ${PUSHIMAGE}:${META_TAG} -t ${PUSHIMAGE}:latest -t ${PUSHIMAGE}:${EXT_RELEASE_TAG} ${CACHEIMAGE}:amd64-${COMMIT_SHA}-${BUILD_NUMBER} || \
934+
{ if [[ "${PUSHIMAGE}" != "${QUAYIMAGE}" ]]; then exit 1; fi; }
923935
if [ -n "${SEMVER}" ]; then
924-
docker buildx imagetools create --prefer-index=false -t ${PUSHIMAGE}:${SEMVER} ${CACHEIMAGE}:amd64-${COMMIT_SHA}-${BUILD_NUMBER}
936+
docker buildx imagetools create --prefer-index=false -t ${PUSHIMAGE}:${SEMVER} ${CACHEIMAGE}:amd64-${COMMIT_SHA}-${BUILD_NUMBER} || \
937+
{ if [[ "${PUSHIMAGE}" != "${QUAYIMAGE}" ]]; then exit 1; fi; }
925938
fi
926939
done
927940
'''
@@ -946,20 +959,27 @@ pipeline {
946959
CACHEIMAGE=${i}
947960
fi
948961
done
949-
docker buildx imagetools create --prefer-index=false -t ${MANIFESTIMAGE}:amd64-${META_TAG} -t ${MANIFESTIMAGE}:amd64-latest -t ${MANIFESTIMAGE}:amd64-${EXT_RELEASE_TAG} ${CACHEIMAGE}:amd64-${COMMIT_SHA}-${BUILD_NUMBER}
950-
docker buildx imagetools create --prefer-index=false -t ${MANIFESTIMAGE}:arm64v8-${META_TAG} -t ${MANIFESTIMAGE}:arm64v8-latest -t ${MANIFESTIMAGE}:arm64v8-${EXT_RELEASE_TAG} ${CACHEIMAGE}:arm64v8-${COMMIT_SHA}-${BUILD_NUMBER}
962+
docker buildx imagetools create --prefer-index=false -t ${MANIFESTIMAGE}:amd64-${META_TAG} -t ${MANIFESTIMAGE}:amd64-latest -t ${MANIFESTIMAGE}:amd64-${EXT_RELEASE_TAG} ${CACHEIMAGE}:amd64-${COMMIT_SHA}-${BUILD_NUMBER} || \
963+
{ if [[ "${MANIFESTIMAGE}" != "${QUAYIMAGE}" ]]; then exit 1; fi; }
964+
docker buildx imagetools create --prefer-index=false -t ${MANIFESTIMAGE}:arm64v8-${META_TAG} -t ${MANIFESTIMAGE}:arm64v8-latest -t ${MANIFESTIMAGE}:arm64v8-${EXT_RELEASE_TAG} ${CACHEIMAGE}:arm64v8-${COMMIT_SHA}-${BUILD_NUMBER} || \
965+
{ if [[ "${MANIFESTIMAGE}" != "${QUAYIMAGE}" ]]; then exit 1; fi; }
951966
if [ -n "${SEMVER}" ]; then
952-
docker buildx imagetools create --prefer-index=false -t ${MANIFESTIMAGE}:amd64-${SEMVER} ${CACHEIMAGE}:amd64-${COMMIT_SHA}-${BUILD_NUMBER}
953-
docker buildx imagetools create --prefer-index=false -t ${MANIFESTIMAGE}:arm64v8-${SEMVER} ${CACHEIMAGE}:arm64v8-${COMMIT_SHA}-${BUILD_NUMBER}
967+
docker buildx imagetools create --prefer-index=false -t ${MANIFESTIMAGE}:amd64-${SEMVER} ${CACHEIMAGE}:amd64-${COMMIT_SHA}-${BUILD_NUMBER} || \
968+
{ if [[ "${MANIFESTIMAGE}" != "${QUAYIMAGE}" ]]; then exit 1; fi; }
969+
docker buildx imagetools create --prefer-index=false -t ${MANIFESTIMAGE}:arm64v8-${SEMVER} ${CACHEIMAGE}:arm64v8-${COMMIT_SHA}-${BUILD_NUMBER} || \
970+
{ if [[ "${MANIFESTIMAGE}" != "${QUAYIMAGE}" ]]; then exit 1; fi; }
954971
fi
955972
done
956973
for MANIFESTIMAGE in "${IMAGE}" "${GITLABIMAGE}" "${GITHUBIMAGE}" "${QUAYIMAGE}"; do
957-
docker buildx imagetools create -t ${MANIFESTIMAGE}:latest ${MANIFESTIMAGE}:amd64-latest ${MANIFESTIMAGE}:arm64v8-latest
958-
docker buildx imagetools create -t ${MANIFESTIMAGE}:${META_TAG} ${MANIFESTIMAGE}:amd64-${META_TAG} ${MANIFESTIMAGE}:arm64v8-${META_TAG}
959-
960-
docker buildx imagetools create -t ${MANIFESTIMAGE}:${EXT_RELEASE_TAG} ${MANIFESTIMAGE}:amd64-${EXT_RELEASE_TAG} ${MANIFESTIMAGE}:arm64v8-${EXT_RELEASE_TAG}
974+
docker buildx imagetools create -t ${MANIFESTIMAGE}:latest ${MANIFESTIMAGE}:amd64-latest ${MANIFESTIMAGE}:arm64v8-latest || \
975+
{ if [[ "${MANIFESTIMAGE}" != "${QUAYIMAGE}" ]]; then exit 1; fi; }
976+
docker buildx imagetools create -t ${MANIFESTIMAGE}:${META_TAG} ${MANIFESTIMAGE}:amd64-${META_TAG} ${MANIFESTIMAGE}:arm64v8-${META_TAG} || \
977+
{ if [[ "${MANIFESTIMAGE}" != "${QUAYIMAGE}" ]]; then exit 1; fi; }
978+
docker buildx imagetools create -t ${MANIFESTIMAGE}:${EXT_RELEASE_TAG} ${MANIFESTIMAGE}:amd64-${EXT_RELEASE_TAG} ${MANIFESTIMAGE}:arm64v8-${EXT_RELEASE_TAG} || \
979+
{ if [[ "${MANIFESTIMAGE}" != "${QUAYIMAGE}" ]]; then exit 1; fi; }
961980
if [ -n "${SEMVER}" ]; then
962-
docker buildx imagetools create -t ${MANIFESTIMAGE}:${SEMVER} ${MANIFESTIMAGE}:amd64-${SEMVER} ${MANIFESTIMAGE}:arm64v8-${SEMVER}
981+
docker buildx imagetools create -t ${MANIFESTIMAGE}:${SEMVER} ${MANIFESTIMAGE}:amd64-${SEMVER} ${MANIFESTIMAGE}:arm64v8-${SEMVER} || \
982+
{ if [[ "${MANIFESTIMAGE}" != "${QUAYIMAGE}" ]]; then exit 1; fi; }
963983
fi
964984
done
965985
'''
@@ -977,23 +997,41 @@ pipeline {
977997
environment name: 'EXIT_STATUS', value: ''
978998
}
979999
steps {
980-
echo "Pushing New tag for current commit ${META_TAG}"
981-
sh '''curl -H "Authorization: token ${GITHUB_TOKEN}" -X POST https://api.github.com/repos/${LS_USER}/${LS_REPO}/git/tags \
982-
-d '{"tag":"'${META_TAG}'",\
983-
"object": "'${COMMIT_SHA}'",\
984-
"message": "Tagging Release '${EXT_RELEASE_CLEAN}'-ls'${LS_TAG_NUMBER}' to main",\
985-
"type": "commit",\
986-
"tagger": {"name": "LinuxServer-CI","email": "ci@linuxserver.io","date": "'${GITHUB_DATE}'"}}' '''
987-
echo "Pushing New release for Tag"
9881000
sh '''#! /bin/bash
1001+
echo "Auto-generating release notes"
1002+
if [ "$(git tag --points-at HEAD)" != "" ]; then
1003+
echo "Existing tag points to current commit, suggesting no new LS changes"
1004+
AUTO_RELEASE_NOTES="No changes"
1005+
else
1006+
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 \
1007+
-d '{"tag_name":"'${META_TAG}'",\
1008+
"target_commitish": "main"}' \
1009+
| jq -r '.body' | sed 's|## What.s Changed||')
1010+
fi
1011+
echo "Pushing New tag for current commit ${META_TAG}"
1012+
curl -H "Authorization: token ${GITHUB_TOKEN}" -X POST https://api.github.com/repos/${LS_USER}/${LS_REPO}/git/tags \
1013+
-d '{"tag":"'${META_TAG}'",\
1014+
"object": "'${COMMIT_SHA}'",\
1015+
"message": "Tagging Release '${EXT_RELEASE_CLEAN}'-ls'${LS_TAG_NUMBER}' to main",\
1016+
"type": "commit",\
1017+
"tagger": {"name": "LinuxServer-CI","email": "ci@linuxserver.io","date": "'${GITHUB_DATE}'"}}'
1018+
echo "Pushing New release for Tag"
9891019
echo "Updating PIP version of ${EXT_PIP} to ${EXT_RELEASE_CLEAN}" > releasebody.json
990-
echo '{"tag_name":"'${META_TAG}'",\
991-
"target_commitish": "main",\
992-
"name": "'${META_TAG}'",\
993-
"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
994-
printf '","draft": false,"prerelease": false}' >> releasebody.json
995-
paste -d'\\0' start releasebody.json > releasebody.json.done
996-
curl -H "Authorization: token ${GITHUB_TOKEN}" -X POST https://api.github.com/repos/${LS_USER}/${LS_REPO}/releases -d @releasebody.json.done'''
1020+
jq -n \
1021+
--arg tag_name "$META_TAG" \
1022+
--arg target_commitish "main" \
1023+
--arg ci_url "${CI_URL:-N/A}" \
1024+
--arg ls_notes "$AUTO_RELEASE_NOTES" \
1025+
--arg remote_notes "$(cat releasebody.json)" \
1026+
'{
1027+
"tag_name": $tag_name,
1028+
"target_commitish": $target_commitish,
1029+
"name": $tag_name,
1030+
"body": ("**CI Report:**\\n\\n" + $ci_url + "\\n\\n**LinuxServer Changes:**\\n\\n" + $ls_notes + "\\n\\n**Remote Changes:**\\n\\n" + $remote_notes),
1031+
"draft": false,
1032+
"prerelease": false }' > releasebody.json.done
1033+
curl -H "Authorization: token ${GITHUB_TOKEN}" -X POST https://api.github.com/repos/${LS_USER}/${LS_REPO}/releases -d @releasebody.json.done
1034+
'''
9971035
}
9981036
}
9991037
// Add protection to the release branch

0 commit comments

Comments
 (0)