Skip to content

Commit 4f5c314

Browse files
Bot Updating Templated Files
1 parent 49cc265 commit 4f5c314

1 file changed

Lines changed: 73 additions & 35 deletions

File tree

Jenkinsfile

Lines changed: 73 additions & 35 deletions
Original file line numberDiff line numberDiff line change
@@ -208,6 +208,7 @@ pipeline {
208208
env.META_TAG = 'arch-xfce-' + env.EXT_RELEASE_CLEAN + '-ls' + env.LS_TAG_NUMBER
209209
env.EXT_RELEASE_TAG = 'arch-xfce-version-' + env.EXT_RELEASE_CLEAN
210210
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'
211+
env.CITEST_IMAGETAG = 'latest'
211212
}
212213
}
213214
}
@@ -233,6 +234,7 @@ pipeline {
233234
env.EXT_RELEASE_TAG = 'arch-xfce-version-' + env.EXT_RELEASE_CLEAN
234235
env.DOCKERHUB_LINK = 'https://hub.docker.com/r/' + env.DEV_DOCKERHUB_IMAGE + '/tags/'
235236
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'
237+
env.CITEST_IMAGETAG = 'develop'
236238
}
237239
}
238240
}
@@ -258,6 +260,7 @@ pipeline {
258260
env.CODE_URL = 'https://github.com/' + env.LS_USER + '/' + env.LS_REPO + '/pull/' + env.PULL_REQUEST
259261
env.DOCKERHUB_LINK = 'https://hub.docker.com/r/' + env.PR_DOCKERHUB_IMAGE + '/tags/'
260262
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'
263+
env.CITEST_IMAGETAG = 'develop'
261264
}
262265
}
263266
}
@@ -280,7 +283,7 @@ pipeline {
280283
-v ${WORKSPACE}:/mnt \
281284
-e AWS_ACCESS_KEY_ID=\"${S3_KEY}\" \
282285
-e AWS_SECRET_ACCESS_KEY=\"${S3_SECRET}\" \
283-
ghcr.io/linuxserver/baseimage-alpine:3.20 s6-envdir -fn -- /var/run/s6/container_environment /bin/bash -c "\
286+
ghcr.io/linuxserver/baseimage-alpine:3 s6-envdir -fn -- /var/run/s6/container_environment /bin/bash -c "\
284287
apk add --no-cache python3 && \
285288
python3 -m venv /lsiopy && \
286289
pip install --no-cache-dir -U pip && \
@@ -552,13 +555,16 @@ pipeline {
552555
echo $GITHUB_TOKEN | docker login ghcr.io -u LinuxServer-CI --password-stdin
553556
echo $GITLAB_TOKEN | docker login registry.gitlab.com -u LinuxServer.io --password-stdin
554557
echo $QUAYPASS | docker login quay.io -u $QUAYUSER --password-stdin
558+
555559
if [[ "${PACKAGE_CHECK}" != "true" ]]; then
560+
declare -A pids
556561
IFS=',' read -ra CACHE <<< "$BUILDCACHE"
557562
for i in "${CACHE[@]}"; do
558563
docker push ${i}:amd64-${COMMIT_SHA}-${BUILD_NUMBER} &
564+
pids[$!]="$i"
559565
done
560-
for p in $(jobs -p); do
561-
wait "$p" || { echo "job $p failed" >&2; exit 1; }
566+
for p in "${!pids[@]}"; do
567+
wait "$p" || { [[ "${pids[$p]}" != *"quay.io"* ]] && exit 1; }
562568
done
563569
fi
564570
'''
@@ -618,13 +624,16 @@ pipeline {
618624
echo $GITHUB_TOKEN | docker login ghcr.io -u LinuxServer-CI --password-stdin
619625
echo $GITLAB_TOKEN | docker login registry.gitlab.com -u LinuxServer.io --password-stdin
620626
echo $QUAYPASS | docker login quay.io -u $QUAYUSER --password-stdin
627+
621628
if [[ "${PACKAGE_CHECK}" != "true" ]]; then
629+
declare -A pids
622630
IFS=',' read -ra CACHE <<< "$BUILDCACHE"
623631
for i in "${CACHE[@]}"; do
624632
docker push ${i}:amd64-${COMMIT_SHA}-${BUILD_NUMBER} &
633+
pids[$!]="$i"
625634
done
626-
for p in $(jobs -p); do
627-
wait "$p" || { echo "job $p failed" >&2; exit 1; }
635+
for p in "${!pids[@]}"; do
636+
wait "$p" || { [[ "${pids[$p]}" != *"quay.io"* ]] && exit 1; }
628637
done
629638
fi
630639
'''
@@ -678,12 +687,14 @@ pipeline {
678687
echo $GITLAB_TOKEN | docker login registry.gitlab.com -u LinuxServer.io --password-stdin
679688
echo $QUAYPASS | docker login quay.io -u $QUAYUSER --password-stdin
680689
if [[ "${PACKAGE_CHECK}" != "true" ]]; then
690+
declare -A pids
681691
IFS=',' read -ra CACHE <<< "$BUILDCACHE"
682692
for i in "${CACHE[@]}"; do
683693
docker push ${i}:arm64v8-${COMMIT_SHA}-${BUILD_NUMBER} &
694+
pids[$!]="$i"
684695
done
685-
for p in $(jobs -p); do
686-
wait "$p" || { echo "job $p failed" >&2; exit 1; }
696+
for p in "${!pids[@]}"; do
697+
wait "$p" || { [[ "${pids[$p]}" != *"quay.io"* ]] && exit 1; }
687698
done
688699
fi
689700
'''
@@ -808,7 +819,7 @@ pipeline {
808819
CI_DOCKERENV="LSIO_FIRST_PARTY=true"
809820
fi
810821
fi
811-
docker pull ghcr.io/linuxserver/ci:latest
822+
docker pull ghcr.io/linuxserver/ci:${CITEST_IMAGETAG}
812823
if [ "${MULTIARCH}" == "true" ]; then
813824
docker pull ghcr.io/linuxserver/lsiodev-buildcache:arm64v8-${COMMIT_SHA}-${BUILD_NUMBER} --platform=arm64
814825
docker tag ghcr.io/linuxserver/lsiodev-buildcache:arm64v8-${COMMIT_SHA}-${BUILD_NUMBER} ${IMAGE}:arm64v8-${META_TAG}
@@ -832,7 +843,7 @@ pipeline {
832843
-e WEB_PATH=\"${CI_WEBPATH}\" \
833844
-e NODE_NAME=\"${NODE_NAME}\" \
834845
-e SYFT_IMAGE_TAG=\"${CI_SYFT_IMAGE_TAG:-${SYFT_IMAGE_TAG}}\" \
835-
-t ghcr.io/linuxserver/ci:latest \
846+
-t ghcr.io/linuxserver/ci:${CITEST_IMAGETAG} \
836847
python3 test_build.py'''
837848
}
838849
}
@@ -858,9 +869,11 @@ pipeline {
858869
CACHEIMAGE=${i}
859870
fi
860871
done
861-
docker buildx imagetools create --prefer-index=false -t ${PUSHIMAGE}:${META_TAG} -t ${PUSHIMAGE}:arch-xfce -t ${PUSHIMAGE}:${EXT_RELEASE_TAG} ${CACHEIMAGE}:amd64-${COMMIT_SHA}-${BUILD_NUMBER}
872+
docker buildx imagetools create --prefer-index=false -t ${PUSHIMAGE}:${META_TAG} -t ${PUSHIMAGE}:arch-xfce -t ${PUSHIMAGE}:${EXT_RELEASE_TAG} ${CACHEIMAGE}:amd64-${COMMIT_SHA}-${BUILD_NUMBER} || \
873+
{ if [[ "${PUSHIMAGE}" != "${QUAYIMAGE}" ]]; then exit 1; fi; }
862874
if [ -n "${SEMVER}" ]; then
863-
docker buildx imagetools create --prefer-index=false -t ${PUSHIMAGE}:${SEMVER} ${CACHEIMAGE}:amd64-${COMMIT_SHA}-${BUILD_NUMBER}
875+
docker buildx imagetools create --prefer-index=false -t ${PUSHIMAGE}:${SEMVER} ${CACHEIMAGE}:amd64-${COMMIT_SHA}-${BUILD_NUMBER} || \
876+
{ if [[ "${PUSHIMAGE}" != "${QUAYIMAGE}" ]]; then exit 1; fi; }
864877
fi
865878
done
866879
'''
@@ -885,20 +898,27 @@ pipeline {
885898
CACHEIMAGE=${i}
886899
fi
887900
done
888-
docker buildx imagetools create --prefer-index=false -t ${MANIFESTIMAGE}:amd64-${META_TAG} -t ${MANIFESTIMAGE}:amd64-arch-xfce -t ${MANIFESTIMAGE}:amd64-${EXT_RELEASE_TAG} ${CACHEIMAGE}:amd64-${COMMIT_SHA}-${BUILD_NUMBER}
889-
docker buildx imagetools create --prefer-index=false -t ${MANIFESTIMAGE}:arm64v8-${META_TAG} -t ${MANIFESTIMAGE}:arm64v8-arch-xfce -t ${MANIFESTIMAGE}:arm64v8-${EXT_RELEASE_TAG} ${CACHEIMAGE}:arm64v8-${COMMIT_SHA}-${BUILD_NUMBER}
901+
docker buildx imagetools create --prefer-index=false -t ${MANIFESTIMAGE}:amd64-${META_TAG} -t ${MANIFESTIMAGE}:amd64-arch-xfce -t ${MANIFESTIMAGE}:amd64-${EXT_RELEASE_TAG} ${CACHEIMAGE}:amd64-${COMMIT_SHA}-${BUILD_NUMBER} || \
902+
{ if [[ "${MANIFESTIMAGE}" != "${QUAYIMAGE}" ]]; then exit 1; fi; }
903+
docker buildx imagetools create --prefer-index=false -t ${MANIFESTIMAGE}:arm64v8-${META_TAG} -t ${MANIFESTIMAGE}:arm64v8-arch-xfce -t ${MANIFESTIMAGE}:arm64v8-${EXT_RELEASE_TAG} ${CACHEIMAGE}:arm64v8-${COMMIT_SHA}-${BUILD_NUMBER} || \
904+
{ if [[ "${MANIFESTIMAGE}" != "${QUAYIMAGE}" ]]; then exit 1; fi; }
890905
if [ -n "${SEMVER}" ]; then
891-
docker buildx imagetools create --prefer-index=false -t ${MANIFESTIMAGE}:amd64-${SEMVER} ${CACHEIMAGE}:amd64-${COMMIT_SHA}-${BUILD_NUMBER}
892-
docker buildx imagetools create --prefer-index=false -t ${MANIFESTIMAGE}:arm64v8-${SEMVER} ${CACHEIMAGE}:arm64v8-${COMMIT_SHA}-${BUILD_NUMBER}
906+
docker buildx imagetools create --prefer-index=false -t ${MANIFESTIMAGE}:amd64-${SEMVER} ${CACHEIMAGE}:amd64-${COMMIT_SHA}-${BUILD_NUMBER} || \
907+
{ if [[ "${MANIFESTIMAGE}" != "${QUAYIMAGE}" ]]; then exit 1; fi; }
908+
docker buildx imagetools create --prefer-index=false -t ${MANIFESTIMAGE}:arm64v8-${SEMVER} ${CACHEIMAGE}:arm64v8-${COMMIT_SHA}-${BUILD_NUMBER} || \
909+
{ if [[ "${MANIFESTIMAGE}" != "${QUAYIMAGE}" ]]; then exit 1; fi; }
893910
fi
894911
done
895912
for MANIFESTIMAGE in "${IMAGE}" "${GITLABIMAGE}" "${GITHUBIMAGE}" "${QUAYIMAGE}"; do
896-
docker buildx imagetools create -t ${MANIFESTIMAGE}:arch-xfce ${MANIFESTIMAGE}:amd64-arch-xfce ${MANIFESTIMAGE}:arm64v8-arch-xfce
897-
docker buildx imagetools create -t ${MANIFESTIMAGE}:${META_TAG} ${MANIFESTIMAGE}:amd64-${META_TAG} ${MANIFESTIMAGE}:arm64v8-${META_TAG}
898-
899-
docker buildx imagetools create -t ${MANIFESTIMAGE}:${EXT_RELEASE_TAG} ${MANIFESTIMAGE}:amd64-${EXT_RELEASE_TAG} ${MANIFESTIMAGE}:arm64v8-${EXT_RELEASE_TAG}
913+
docker buildx imagetools create -t ${MANIFESTIMAGE}:arch-xfce ${MANIFESTIMAGE}:amd64-arch-xfce ${MANIFESTIMAGE}:arm64v8-arch-xfce || \
914+
{ if [[ "${MANIFESTIMAGE}" != "${QUAYIMAGE}" ]]; then exit 1; fi; }
915+
docker buildx imagetools create -t ${MANIFESTIMAGE}:${META_TAG} ${MANIFESTIMAGE}:amd64-${META_TAG} ${MANIFESTIMAGE}:arm64v8-${META_TAG} || \
916+
{ if [[ "${MANIFESTIMAGE}" != "${QUAYIMAGE}" ]]; then exit 1; fi; }
917+
docker buildx imagetools create -t ${MANIFESTIMAGE}:${EXT_RELEASE_TAG} ${MANIFESTIMAGE}:amd64-${EXT_RELEASE_TAG} ${MANIFESTIMAGE}:arm64v8-${EXT_RELEASE_TAG} || \
918+
{ if [[ "${MANIFESTIMAGE}" != "${QUAYIMAGE}" ]]; then exit 1; fi; }
900919
if [ -n "${SEMVER}" ]; then
901-
docker buildx imagetools create -t ${MANIFESTIMAGE}:${SEMVER} ${MANIFESTIMAGE}:amd64-${SEMVER} ${MANIFESTIMAGE}:arm64v8-${SEMVER}
920+
docker buildx imagetools create -t ${MANIFESTIMAGE}:${SEMVER} ${MANIFESTIMAGE}:amd64-${SEMVER} ${MANIFESTIMAGE}:arm64v8-${SEMVER} || \
921+
{ if [[ "${MANIFESTIMAGE}" != "${QUAYIMAGE}" ]]; then exit 1; fi; }
902922
fi
903923
done
904924
'''
@@ -916,23 +936,41 @@ pipeline {
916936
environment name: 'EXIT_STATUS', value: ''
917937
}
918938
steps {
919-
echo "Pushing New tag for current commit ${META_TAG}"
920-
sh '''curl -H "Authorization: token ${GITHUB_TOKEN}" -X POST https://api.github.com/repos/${LS_USER}/${LS_REPO}/git/tags \
921-
-d '{"tag":"'${META_TAG}'",\
922-
"object": "'${COMMIT_SHA}'",\
923-
"message": "Tagging Release '${EXT_RELEASE_CLEAN}'-ls'${LS_TAG_NUMBER}' to arch-xfce",\
924-
"type": "commit",\
925-
"tagger": {"name": "LinuxServer-CI","email": "ci@linuxserver.io","date": "'${GITHUB_DATE}'"}}' '''
926-
echo "Pushing New release for Tag"
927939
sh '''#! /bin/bash
940+
echo "Auto-generating release notes"
941+
if [ "$(git tag --points-at HEAD)" != "" ]; then
942+
echo "Existing tag points to current commit, suggesting no new LS changes"
943+
AUTO_RELEASE_NOTES="No changes"
944+
else
945+
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 \
946+
-d '{"tag_name":"'${META_TAG}'",\
947+
"target_commitish": "arch-xfce"}' \
948+
| jq -r '.body' | sed 's|## What.s Changed||')
949+
fi
950+
echo "Pushing New tag for current commit ${META_TAG}"
951+
curl -H "Authorization: token ${GITHUB_TOKEN}" -X POST https://api.github.com/repos/${LS_USER}/${LS_REPO}/git/tags \
952+
-d '{"tag":"'${META_TAG}'",\
953+
"object": "'${COMMIT_SHA}'",\
954+
"message": "Tagging Release '${EXT_RELEASE_CLEAN}'-ls'${LS_TAG_NUMBER}' to arch-xfce",\
955+
"type": "commit",\
956+
"tagger": {"name": "LinuxServer-CI","email": "ci@linuxserver.io","date": "'${GITHUB_DATE}'"}}'
957+
echo "Pushing New release for Tag"
928958
echo "Updating to ${EXT_RELEASE_CLEAN}" > releasebody.json
929-
echo '{"tag_name":"'${META_TAG}'",\
930-
"target_commitish": "arch-xfce",\
931-
"name": "'${META_TAG}'",\
932-
"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
933-
printf '","draft": false,"prerelease": true}' >> releasebody.json
934-
paste -d'\\0' start releasebody.json > releasebody.json.done
935-
curl -H "Authorization: token ${GITHUB_TOKEN}" -X POST https://api.github.com/repos/${LS_USER}/${LS_REPO}/releases -d @releasebody.json.done'''
959+
jq -n \
960+
--arg tag_name "$META_TAG" \
961+
--arg target_commitish "arch-xfce" \
962+
--arg ci_url "${CI_URL:-N/A}" \
963+
--arg ls_notes "$AUTO_RELEASE_NOTES" \
964+
--arg remote_notes "$(cat releasebody.json)" \
965+
'{
966+
"tag_name": $tag_name,
967+
"target_commitish": $target_commitish,
968+
"name": $tag_name,
969+
"body": ("**CI Report:**\\n\\n" + $ci_url + "\\n\\n**LinuxServer Changes:**\\n\\n" + $ls_notes + "\\n\\n**Remote Changes:**\\n\\n" + $remote_notes),
970+
"draft": false,
971+
"prerelease": true }' > releasebody.json.done
972+
curl -H "Authorization: token ${GITHUB_TOKEN}" -X POST https://api.github.com/repos/${LS_USER}/${LS_REPO}/releases -d @releasebody.json.done
973+
'''
936974
}
937975
}
938976
// Add protection to the release branch

0 commit comments

Comments
 (0)