@@ -155,7 +155,7 @@ pipeline {
155
155
env. GITLABIMAGE = ' registry.gitlab.com/linuxserver.io/' + env. LS_REPO + ' /' + env. CONTAINER_NAME
156
156
env. QUAYIMAGE = ' quay.io/linuxserver.io/' + env. CONTAINER_NAME
157
157
if (env. MULTIARCH == ' true' ) {
158
- env. CI_TAGS = ' amd64-' + env. EXT_RELEASE_CLEAN + ' -ls' + env. LS_TAG_NUMBER + ' |arm32v7- ' + env . EXT_RELEASE_CLEAN + ' -ls ' + env . LS_TAG_NUMBER + ' | arm64v8-' + env. EXT_RELEASE_CLEAN + ' -ls' + env. LS_TAG_NUMBER
158
+ env. CI_TAGS = ' amd64-' + env. EXT_RELEASE_CLEAN + ' -ls' + env. LS_TAG_NUMBER + ' |arm64v8-' + env. EXT_RELEASE_CLEAN + ' -ls' + env. LS_TAG_NUMBER
159
159
} else {
160
160
env. CI_TAGS = env. EXT_RELEASE_CLEAN + ' -ls' + env. LS_TAG_NUMBER
161
161
}
@@ -178,7 +178,7 @@ pipeline {
178
178
env. GITLABIMAGE = ' registry.gitlab.com/linuxserver.io/' + env. LS_REPO + ' /lsiodev-' + env. CONTAINER_NAME
179
179
env. QUAYIMAGE = ' quay.io/linuxserver.io/lsiodev-' + env. CONTAINER_NAME
180
180
if (env. MULTIARCH == ' true' ) {
181
- env. CI_TAGS = ' amd64-' + env. EXT_RELEASE_CLEAN + ' -pkg-' + env. PACKAGE_TAG + ' -dev-' + env. COMMIT_SHA + ' |arm32v7- ' + env . EXT_RELEASE_CLEAN + ' -pkg- ' + env . PACKAGE_TAG + ' -dev- ' + env . COMMIT_SHA + ' | arm64v8-' + env. EXT_RELEASE_CLEAN + ' -pkg-' + env. PACKAGE_TAG + ' -dev-' + env. COMMIT_SHA
181
+ env. CI_TAGS = ' amd64-' + env. EXT_RELEASE_CLEAN + ' -pkg-' + env. PACKAGE_TAG + ' -dev-' + env. COMMIT_SHA + ' |arm64v8-' + env. EXT_RELEASE_CLEAN + ' -pkg-' + env. PACKAGE_TAG + ' -dev-' + env. COMMIT_SHA
182
182
} else {
183
183
env. CI_TAGS = env. EXT_RELEASE_CLEAN + ' -pkg-' + env. PACKAGE_TAG + ' -dev-' + env. COMMIT_SHA
184
184
}
@@ -201,7 +201,7 @@ pipeline {
201
201
env. GITLABIMAGE = ' registry.gitlab.com/linuxserver.io/' + env. LS_REPO + ' /lspipepr-' + env. CONTAINER_NAME
202
202
env. QUAYIMAGE = ' quay.io/linuxserver.io/lspipepr-' + env. CONTAINER_NAME
203
203
if (env. MULTIARCH == ' true' ) {
204
- env. CI_TAGS = ' amd64-' + env. EXT_RELEASE_CLEAN + ' -pkg-' + env. PACKAGE_TAG + ' -dev-' + env. COMMIT_SHA + ' -pr-' + env. PULL_REQUEST + ' |arm32v7- ' + 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
204
+ 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
205
205
} else {
206
206
env. CI_TAGS = env. EXT_RELEASE_CLEAN + ' -pkg-' + env. PACKAGE_TAG + ' -dev-' + env. COMMIT_SHA + ' -pr-' + env. PULL_REQUEST
207
207
}
@@ -272,7 +272,7 @@ pipeline {
272
272
echo "Jenkinsfile is up to date."
273
273
fi
274
274
# Stage 2 - Delete old templates
275
- OLD_TEMPLATES=".github/ISSUE_TEMPLATE.md .github/ISSUE_TEMPLATE/issue.bug.md .github/ISSUE_TEMPLATE/issue.feature.md .github/workflows/call_invalid_helper.yml .github/workflows/stale.yml"
275
+ OLD_TEMPLATES=".github/ISSUE_TEMPLATE.md .github/ISSUE_TEMPLATE/issue.bug.md .github/ISSUE_TEMPLATE/issue.feature.md .github/workflows/call_invalid_helper.yml .github/workflows/stale.yml Dockerfile.armhf "
276
276
for i in ${OLD_TEMPLATES}; do
277
277
if [[ -f "${i}" ]]; then
278
278
TEMPLATES_TO_DELETE="${i} ${TEMPLATES_TO_DELETE}"
@@ -308,12 +308,13 @@ pipeline {
308
308
mkdir -p ${TEMPDIR}/repo/${LS_REPO}/.github/workflows
309
309
mkdir -p ${TEMPDIR}/repo/${LS_REPO}/.github/ISSUE_TEMPLATE
310
310
cp --parents ${TEMPLATED_FILES} ${TEMPDIR}/repo/${LS_REPO}/ || :
311
+ cp --parents readme-vars.yml ${TEMPDIR}/repo/${LS_REPO}/ || :
311
312
cd ${TEMPDIR}/repo/${LS_REPO}/
312
313
if ! grep -q '.jenkins-external' .gitignore 2>/dev/null; then
313
314
echo ".jenkins-external" >> .gitignore
314
315
git add .gitignore
315
316
fi
316
- git add ${TEMPLATED_FILES}
317
+ git add readme-vars.yml ${TEMPLATED_FILES}
317
318
git commit -m 'Bot Updating Templated Files'
318
319
git push https://LinuxServer-CI:${GITHUB_TOKEN}@github.com/${LS_USER}/${LS_REPO}.git --all
319
320
echo "true" > /tmp/${COMMIT_SHA}-${BUILD_NUMBER}
@@ -484,44 +485,6 @@ pipeline {
484
485
--build-arg ${ BUILD_VERSION_ARG} =${ EXT_RELEASE} --build-arg VERSION=\" ${ VERSION_TAG} \" --build-arg BUILD_DATE=${ GITHUB_DATE} ."
485
486
}
486
487
}
487
- stage(' Build ARMHF' ) {
488
- agent {
489
- label ' ARMHF'
490
- }
491
- steps {
492
- echo " Running on node: ${ NODE_NAME} "
493
- echo ' Logging into Github'
494
- sh ''' #! /bin/bash
495
- echo $GITHUB_TOKEN | docker login ghcr.io -u LinuxServer-CI --password-stdin
496
- '''
497
- sh " sed -r -i 's|(^FROM .*)|\\ 1\\ n\\ nENV LSIO_FIRST_PARTY=true|g' Dockerfile.armhf"
498
- sh " docker buildx build \
499
- --label \" org.opencontainers.image.created=${ GITHUB_DATE} \" \
500
- --label \" org.opencontainers.image.authors=linuxserver.io\" \
501
- --label \" org.opencontainers.image.url=https://github.com/linuxserver/docker-readme-sync/packages\" \
502
- --label \" org.opencontainers.image.documentation=https://docs.linuxserver.io/images/docker-readme-sync\" \
503
- --label \" org.opencontainers.image.source=https://github.com/linuxserver/docker-readme-sync\" \
504
- --label \" org.opencontainers.image.version=${ EXT_RELEASE_CLEAN} -ls${ LS_TAG_NUMBER} \" \
505
- --label \" org.opencontainers.image.revision=${ COMMIT_SHA} \" \
506
- --label \" org.opencontainers.image.vendor=linuxserver.io\" \
507
- --label \" org.opencontainers.image.licenses=GPL-3.0-only\" \
508
- --label \" org.opencontainers.image.ref.name=${ COMMIT_SHA} \" \
509
- --label \" org.opencontainers.image.title=Readme-sync\" \
510
- --label \" org.opencontainers.image.description=readme-sync image by linuxserver.io\" \
511
- --no-cache --pull -f Dockerfile.armhf -t ${ IMAGE} :arm32v7-${ META_TAG} --platform=linux/arm/v7 \
512
- --build-arg ${ BUILD_VERSION_ARG} =${ EXT_RELEASE} --build-arg VERSION=\" ${ VERSION_TAG} \" --build-arg BUILD_DATE=${ GITHUB_DATE} ."
513
- sh " docker tag ${ IMAGE} :arm32v7-${ META_TAG} ghcr.io/linuxserver/lsiodev-buildcache:arm32v7-${ COMMIT_SHA} -${ BUILD_NUMBER} "
514
- retry(5 ) {
515
- sh " docker push ghcr.io/linuxserver/lsiodev-buildcache:arm32v7-${ COMMIT_SHA} -${ BUILD_NUMBER} "
516
- }
517
- sh ''' #! /bin/bash
518
- containers=$(docker ps -aq)
519
- if [[ -n "${containers}" ]]; then
520
- docker stop ${containers}
521
- fi
522
- docker system prune -af --volumes || : '''
523
- }
524
- }
525
488
stage(' Build ARM64' ) {
526
489
agent {
527
490
label ' ARM64'
@@ -662,9 +625,7 @@ pipeline {
662
625
set -e
663
626
docker pull ghcr.io/linuxserver/ci:latest
664
627
if [ "${MULTIARCH}" == "true" ]; then
665
- docker pull ghcr.io/linuxserver/lsiodev-buildcache:arm32v7-${COMMIT_SHA}-${BUILD_NUMBER}
666
628
docker pull ghcr.io/linuxserver/lsiodev-buildcache:arm64v8-${COMMIT_SHA}-${BUILD_NUMBER}
667
- docker tag ghcr.io/linuxserver/lsiodev-buildcache:arm32v7-${COMMIT_SHA}-${BUILD_NUMBER} ${IMAGE}:arm32v7-${META_TAG}
668
629
docker tag ghcr.io/linuxserver/lsiodev-buildcache:arm64v8-${COMMIT_SHA}-${BUILD_NUMBER} ${IMAGE}:arm64v8-${META_TAG}
669
630
fi
670
631
docker run --rm \
@@ -767,58 +728,54 @@ pipeline {
767
728
echo $GITLAB_TOKEN | docker login registry.gitlab.com -u LinuxServer.io --password-stdin
768
729
echo $QUAYPASS | docker login quay.io -u $QUAYUSER --password-stdin
769
730
if [ "${CI}" == "false" ]; then
770
- docker pull ghcr.io/linuxserver/lsiodev-buildcache:arm32v7-${COMMIT_SHA}-${BUILD_NUMBER}
771
- docker tag ghcr.io/linuxserver/lsiodev-buildcache:arm32v7-${COMMIT_SHA}-${BUILD_NUMBER} ${IMAGE}:arm32v7-${META_TAG}
772
731
docker pull ghcr.io/linuxserver/lsiodev-buildcache:arm64v8-${COMMIT_SHA}-${BUILD_NUMBER}
773
732
docker tag ghcr.io/linuxserver/lsiodev-buildcache:arm64v8-${COMMIT_SHA}-${BUILD_NUMBER} ${IMAGE}:arm64v8-${META_TAG}
774
733
fi
775
734
for MANIFESTIMAGE in "${IMAGE}" "${GITLABIMAGE}" "${GITHUBIMAGE}" "${QUAYIMAGE}"; do
776
735
docker tag ${IMAGE}:amd64-${META_TAG} ${MANIFESTIMAGE}:amd64-${META_TAG}
777
736
docker tag ${MANIFESTIMAGE}:amd64-${META_TAG} ${MANIFESTIMAGE}:amd64-latest
778
737
docker tag ${MANIFESTIMAGE}:amd64-${META_TAG} ${MANIFESTIMAGE}:amd64-${EXT_RELEASE_TAG}
779
- docker tag ${IMAGE}:arm32v7-${META_TAG} ${MANIFESTIMAGE}:arm32v7-${META_TAG}
780
- docker tag ${MANIFESTIMAGE}:arm32v7-${META_TAG} ${MANIFESTIMAGE}:arm32v7-latest
781
- docker tag ${MANIFESTIMAGE}:arm32v7-${META_TAG} ${MANIFESTIMAGE}:arm32v7-${EXT_RELEASE_TAG}
782
738
docker tag ${IMAGE}:arm64v8-${META_TAG} ${MANIFESTIMAGE}:arm64v8-${META_TAG}
783
739
docker tag ${MANIFESTIMAGE}:arm64v8-${META_TAG} ${MANIFESTIMAGE}:arm64v8-latest
784
740
docker tag ${MANIFESTIMAGE}:arm64v8-${META_TAG} ${MANIFESTIMAGE}:arm64v8-${EXT_RELEASE_TAG}
785
741
if [ -n "${SEMVER}" ]; then
786
742
docker tag ${MANIFESTIMAGE}:amd64-${META_TAG} ${MANIFESTIMAGE}:amd64-${SEMVER}
787
- docker tag ${MANIFESTIMAGE}:arm32v7-${META_TAG} ${MANIFESTIMAGE}:arm32v7-${SEMVER}
788
743
docker tag ${MANIFESTIMAGE}:arm64v8-${META_TAG} ${MANIFESTIMAGE}:arm64v8-${SEMVER}
789
744
fi
790
745
docker push ${MANIFESTIMAGE}:amd64-${META_TAG}
791
746
docker push ${MANIFESTIMAGE}:amd64-${EXT_RELEASE_TAG}
792
747
docker push ${MANIFESTIMAGE}:amd64-latest
793
- docker push ${MANIFESTIMAGE}:arm32v7-${META_TAG}
794
- docker push ${MANIFESTIMAGE}:arm32v7-latest
795
- docker push ${MANIFESTIMAGE}:arm32v7-${EXT_RELEASE_TAG}
796
748
docker push ${MANIFESTIMAGE}:arm64v8-${META_TAG}
797
749
docker push ${MANIFESTIMAGE}:arm64v8-latest
798
750
docker push ${MANIFESTIMAGE}:arm64v8-${EXT_RELEASE_TAG}
799
751
if [ -n "${SEMVER}" ]; then
800
752
docker push ${MANIFESTIMAGE}:amd64-${SEMVER}
801
- docker push ${MANIFESTIMAGE}:arm32v7-${SEMVER}
802
753
docker push ${MANIFESTIMAGE}:arm64v8-${SEMVER}
803
754
fi
804
755
docker manifest push --purge ${MANIFESTIMAGE}:latest || :
805
- docker manifest create ${MANIFESTIMAGE}:latest ${MANIFESTIMAGE}:amd64-latest ${MANIFESTIMAGE}:arm32v7-latest ${MANIFESTIMAGE}:arm64v8-latest
806
- docker manifest annotate ${MANIFESTIMAGE}:latest ${MANIFESTIMAGE}:arm32v7-latest --os linux --arch arm
756
+ docker manifest create ${MANIFESTIMAGE}:latest ${MANIFESTIMAGE}:amd64-latest ${MANIFESTIMAGE}:arm64v8-latest
807
757
docker manifest annotate ${MANIFESTIMAGE}:latest ${MANIFESTIMAGE}:arm64v8-latest --os linux --arch arm64 --variant v8
808
758
docker manifest push --purge ${MANIFESTIMAGE}:${META_TAG} || :
809
- docker manifest create ${MANIFESTIMAGE}:${META_TAG} ${MANIFESTIMAGE}:amd64-${META_TAG} ${MANIFESTIMAGE}:arm32v7-${META_TAG} ${MANIFESTIMAGE}:arm64v8-${META_TAG}
810
- docker manifest annotate ${MANIFESTIMAGE}:${META_TAG} ${MANIFESTIMAGE}:arm32v7-${META_TAG} --os linux --arch arm
759
+ docker manifest create ${MANIFESTIMAGE}:${META_TAG} ${MANIFESTIMAGE}:amd64-${META_TAG} ${MANIFESTIMAGE}:arm64v8-${META_TAG}
811
760
docker manifest annotate ${MANIFESTIMAGE}:${META_TAG} ${MANIFESTIMAGE}:arm64v8-${META_TAG} --os linux --arch arm64 --variant v8
812
761
docker manifest push --purge ${MANIFESTIMAGE}:${EXT_RELEASE_TAG} || :
813
- docker manifest create ${MANIFESTIMAGE}:${EXT_RELEASE_TAG} ${MANIFESTIMAGE}:amd64-${EXT_RELEASE_TAG} ${MANIFESTIMAGE}:arm32v7-${EXT_RELEASE_TAG} ${MANIFESTIMAGE}:arm64v8-${EXT_RELEASE_TAG}
814
- docker manifest annotate ${MANIFESTIMAGE}:${EXT_RELEASE_TAG} ${MANIFESTIMAGE}:arm32v7-${EXT_RELEASE_TAG} --os linux --arch arm
762
+ docker manifest create ${MANIFESTIMAGE}:${EXT_RELEASE_TAG} ${MANIFESTIMAGE}:amd64-${EXT_RELEASE_TAG} ${MANIFESTIMAGE}:arm64v8-${EXT_RELEASE_TAG}
815
763
docker manifest annotate ${MANIFESTIMAGE}:${EXT_RELEASE_TAG} ${MANIFESTIMAGE}:arm64v8-${EXT_RELEASE_TAG} --os linux --arch arm64 --variant v8
816
764
if [ -n "${SEMVER}" ]; then
817
765
docker manifest push --purge ${MANIFESTIMAGE}:${SEMVER} || :
818
- docker manifest create ${MANIFESTIMAGE}:${SEMVER} ${MANIFESTIMAGE}:amd64-${SEMVER} ${MANIFESTIMAGE}:arm32v7-${SEMVER} ${MANIFESTIMAGE}:arm64v8-${SEMVER}
819
- docker manifest annotate ${MANIFESTIMAGE}:${SEMVER} ${MANIFESTIMAGE}:arm32v7-${SEMVER} --os linux --arch arm
766
+ docker manifest create ${MANIFESTIMAGE}:${SEMVER} ${MANIFESTIMAGE}:amd64-${SEMVER} ${MANIFESTIMAGE}:arm64v8-${SEMVER}
820
767
docker manifest annotate ${MANIFESTIMAGE}:${SEMVER} ${MANIFESTIMAGE}:arm64v8-${SEMVER} --os linux --arch arm64 --variant v8
821
768
fi
769
+ token=$(curl -sX GET "https://ghcr.io/token?scope=repository%3Alinuxserver%2F${CONTAINER_NAME}%3Apull" | jq -r '.token')
770
+ digest=$(curl -s \
771
+ --header "Accept: application/vnd.docker.distribution.manifest.v2+json" \
772
+ --header "Authorization: Bearer ${token}" \
773
+ "https://ghcr.io/v2/linuxserver/${CONTAINER_NAME}/manifests/arm32v7-latest")
774
+ if [[ $(echo "$digest" | jq -r '.layers') != "null" ]]; then
775
+ docker manifest push --purge ${MANIFESTIMAGE}:arm32v7-latest || :
776
+ docker manifest create ${MANIFESTIMAGE}:arm32v7-latest ${MANIFESTIMAGE}:amd64-latest
777
+ docker manifest push --purge ${MANIFESTIMAGE}:arm32v7-latest
778
+ fi
822
779
docker manifest push --purge ${MANIFESTIMAGE}:latest
823
780
docker manifest push --purge ${MANIFESTIMAGE}:${META_TAG}
824
781
docker manifest push --purge ${MANIFESTIMAGE}:${EXT_RELEASE_TAG}
0 commit comments