@@ -163,7 +163,7 @@ pipeline {
163
163
env. GITLABIMAGE = ' registry.gitlab.com/linuxserver.io/' + env. LS_REPO + ' /' + env. CONTAINER_NAME
164
164
env. QUAYIMAGE = ' quay.io/linuxserver.io/' + env. CONTAINER_NAME
165
165
if (env. MULTIARCH == ' true' ) {
166
- 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
166
+ env. CI_TAGS = ' amd64-' + env. EXT_RELEASE_CLEAN + ' -ls' + env. LS_TAG_NUMBER + ' |arm64v8-' + env. EXT_RELEASE_CLEAN + ' -ls' + env. LS_TAG_NUMBER
167
167
} else {
168
168
env. CI_TAGS = env. EXT_RELEASE_CLEAN + ' -ls' + env. LS_TAG_NUMBER
169
169
}
@@ -186,7 +186,7 @@ pipeline {
186
186
env. GITLABIMAGE = ' registry.gitlab.com/linuxserver.io/' + env. LS_REPO + ' /lsiodev-' + env. CONTAINER_NAME
187
187
env. QUAYIMAGE = ' quay.io/linuxserver.io/lsiodev-' + env. CONTAINER_NAME
188
188
if (env. MULTIARCH == ' true' ) {
189
- 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
189
+ 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
190
190
} else {
191
191
env. CI_TAGS = env. EXT_RELEASE_CLEAN + ' -pkg-' + env. PACKAGE_TAG + ' -dev-' + env. COMMIT_SHA
192
192
}
@@ -209,7 +209,7 @@ pipeline {
209
209
env. GITLABIMAGE = ' registry.gitlab.com/linuxserver.io/' + env. LS_REPO + ' /lspipepr-' + env. CONTAINER_NAME
210
210
env. QUAYIMAGE = ' quay.io/linuxserver.io/lspipepr-' + env. CONTAINER_NAME
211
211
if (env. MULTIARCH == ' true' ) {
212
- 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
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
213
213
} else {
214
214
env. CI_TAGS = env. EXT_RELEASE_CLEAN + ' -pkg-' + env. PACKAGE_TAG + ' -dev-' + env. COMMIT_SHA + ' -pr-' + env. PULL_REQUEST
215
215
}
@@ -280,7 +280,7 @@ pipeline {
280
280
echo "Jenkinsfile is up to date."
281
281
fi
282
282
# Stage 2 - Delete old templates
283
- 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"
283
+ 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 "
284
284
for i in ${OLD_TEMPLATES}; do
285
285
if [[ -f "${i}" ]]; then
286
286
TEMPLATES_TO_DELETE="${i} ${TEMPLATES_TO_DELETE}"
@@ -316,12 +316,13 @@ pipeline {
316
316
mkdir -p ${TEMPDIR}/repo/${LS_REPO}/.github/workflows
317
317
mkdir -p ${TEMPDIR}/repo/${LS_REPO}/.github/ISSUE_TEMPLATE
318
318
cp --parents ${TEMPLATED_FILES} ${TEMPDIR}/repo/${LS_REPO}/ || :
319
+ cp --parents readme-vars.yml ${TEMPDIR}/repo/${LS_REPO}/ || :
319
320
cd ${TEMPDIR}/repo/${LS_REPO}/
320
321
if ! grep -q '.jenkins-external' .gitignore 2>/dev/null; then
321
322
echo ".jenkins-external" >> .gitignore
322
323
git add .gitignore
323
324
fi
324
- git add ${TEMPLATED_FILES}
325
+ git add readme-vars.yml ${TEMPLATED_FILES}
325
326
git commit -m 'Bot Updating Templated Files'
326
327
git push https://LinuxServer-CI:${GITHUB_TOKEN}@github.com/${LS_USER}/${LS_REPO}.git --all
327
328
echo "true" > /tmp/${COMMIT_SHA}-${BUILD_NUMBER}
@@ -515,44 +516,6 @@ pipeline {
515
516
--build-arg ${ BUILD_VERSION_ARG} =${ EXT_RELEASE} --build-arg VERSION=\" ${ VERSION_TAG} \" --build-arg BUILD_DATE=${ GITHUB_DATE} ."
516
517
}
517
518
}
518
- stage(' Build ARMHF' ) {
519
- agent {
520
- label ' ARMHF'
521
- }
522
- steps {
523
- echo " Running on node: ${ NODE_NAME} "
524
- echo ' Logging into Github'
525
- sh ''' #! /bin/bash
526
- echo $GITHUB_TOKEN | docker login ghcr.io -u LinuxServer-CI --password-stdin
527
- '''
528
- sh " sed -r -i 's|(^FROM .*)|\\ 1\\ n\\ nENV LSIO_FIRST_PARTY=true|g' Dockerfile.armhf"
529
- sh " docker buildx build \
530
- --label \" org.opencontainers.image.created=${ GITHUB_DATE} \" \
531
- --label \" org.opencontainers.image.authors=linuxserver.io\" \
532
- --label \" org.opencontainers.image.url=https://github.com/linuxserver/docker-code-server/packages\" \
533
- --label \" org.opencontainers.image.documentation=https://docs.linuxserver.io/images/docker-code-server\" \
534
- --label \" org.opencontainers.image.source=https://github.com/linuxserver/docker-code-server\" \
535
- --label \" org.opencontainers.image.version=${ EXT_RELEASE_CLEAN} -ls${ LS_TAG_NUMBER} \" \
536
- --label \" org.opencontainers.image.revision=${ COMMIT_SHA} \" \
537
- --label \" org.opencontainers.image.vendor=linuxserver.io\" \
538
- --label \" org.opencontainers.image.licenses=GPL-3.0-only\" \
539
- --label \" org.opencontainers.image.ref.name=${ COMMIT_SHA} \" \
540
- --label \" org.opencontainers.image.title=Code-server\" \
541
- --label \" org.opencontainers.image.description=[Code-server](https://coder.com) is VS Code running on a remote server, accessible through the browser. - Code on your Chromebook, tablet, and laptop with a consistent dev environment. - If you have a Windows or Mac workstation, more easily develop for Linux. - Take advantage of large cloud servers to speed up tests, compilations, downloads, and more. - Preserve battery life when you're on the go. - All intensive computation runs on your server. - You're no longer running excess instances of Chrome.\" \
542
- --no-cache --pull -f Dockerfile.armhf -t ${ IMAGE} :arm32v7-${ META_TAG} --platform=linux/arm/v7 \
543
- --build-arg ${ BUILD_VERSION_ARG} =${ EXT_RELEASE} --build-arg VERSION=\" ${ VERSION_TAG} \" --build-arg BUILD_DATE=${ GITHUB_DATE} ."
544
- sh " docker tag ${ IMAGE} :arm32v7-${ META_TAG} ghcr.io/linuxserver/lsiodev-buildcache:arm32v7-${ COMMIT_SHA} -${ BUILD_NUMBER} "
545
- retry(5 ) {
546
- sh " docker push ghcr.io/linuxserver/lsiodev-buildcache:arm32v7-${ COMMIT_SHA} -${ BUILD_NUMBER} "
547
- }
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 || : '''
554
- }
555
- }
556
519
stage(' Build ARM64' ) {
557
520
agent {
558
521
label ' ARM64'
@@ -693,9 +656,7 @@ pipeline {
693
656
set -e
694
657
docker pull ghcr.io/linuxserver/ci:latest
695
658
if [ "${MULTIARCH}" == "true" ]; then
696
- docker pull ghcr.io/linuxserver/lsiodev-buildcache:arm32v7-${COMMIT_SHA}-${BUILD_NUMBER}
697
659
docker pull ghcr.io/linuxserver/lsiodev-buildcache:arm64v8-${COMMIT_SHA}-${BUILD_NUMBER}
698
- docker tag ghcr.io/linuxserver/lsiodev-buildcache:arm32v7-${COMMIT_SHA}-${BUILD_NUMBER} ${IMAGE}:arm32v7-${META_TAG}
699
660
docker tag ghcr.io/linuxserver/lsiodev-buildcache:arm64v8-${COMMIT_SHA}-${BUILD_NUMBER} ${IMAGE}:arm64v8-${META_TAG}
700
661
fi
701
662
docker run --rm \
@@ -798,58 +759,54 @@ pipeline {
798
759
echo $GITLAB_TOKEN | docker login registry.gitlab.com -u LinuxServer.io --password-stdin
799
760
echo $QUAYPASS | docker login quay.io -u $QUAYUSER --password-stdin
800
761
if [ "${CI}" == "false" ]; then
801
- docker pull ghcr.io/linuxserver/lsiodev-buildcache:arm32v7-${COMMIT_SHA}-${BUILD_NUMBER}
802
- docker tag ghcr.io/linuxserver/lsiodev-buildcache:arm32v7-${COMMIT_SHA}-${BUILD_NUMBER} ${IMAGE}:arm32v7-${META_TAG}
803
762
docker pull ghcr.io/linuxserver/lsiodev-buildcache:arm64v8-${COMMIT_SHA}-${BUILD_NUMBER}
804
763
docker tag ghcr.io/linuxserver/lsiodev-buildcache:arm64v8-${COMMIT_SHA}-${BUILD_NUMBER} ${IMAGE}:arm64v8-${META_TAG}
805
764
fi
806
765
for MANIFESTIMAGE in "${IMAGE}" "${GITLABIMAGE}" "${GITHUBIMAGE}" "${QUAYIMAGE}"; do
807
766
docker tag ${IMAGE}:amd64-${META_TAG} ${MANIFESTIMAGE}:amd64-${META_TAG}
808
767
docker tag ${MANIFESTIMAGE}:amd64-${META_TAG} ${MANIFESTIMAGE}:amd64-latest
809
768
docker tag ${MANIFESTIMAGE}:amd64-${META_TAG} ${MANIFESTIMAGE}:amd64-${EXT_RELEASE_TAG}
810
- docker tag ${IMAGE}:arm32v7-${META_TAG} ${MANIFESTIMAGE}:arm32v7-${META_TAG}
811
- docker tag ${MANIFESTIMAGE}:arm32v7-${META_TAG} ${MANIFESTIMAGE}:arm32v7-latest
812
- docker tag ${MANIFESTIMAGE}:arm32v7-${META_TAG} ${MANIFESTIMAGE}:arm32v7-${EXT_RELEASE_TAG}
813
769
docker tag ${IMAGE}:arm64v8-${META_TAG} ${MANIFESTIMAGE}:arm64v8-${META_TAG}
814
770
docker tag ${MANIFESTIMAGE}:arm64v8-${META_TAG} ${MANIFESTIMAGE}:arm64v8-latest
815
771
docker tag ${MANIFESTIMAGE}:arm64v8-${META_TAG} ${MANIFESTIMAGE}:arm64v8-${EXT_RELEASE_TAG}
816
772
if [ -n "${SEMVER}" ]; then
817
773
docker tag ${MANIFESTIMAGE}:amd64-${META_TAG} ${MANIFESTIMAGE}:amd64-${SEMVER}
818
- docker tag ${MANIFESTIMAGE}:arm32v7-${META_TAG} ${MANIFESTIMAGE}:arm32v7-${SEMVER}
819
774
docker tag ${MANIFESTIMAGE}:arm64v8-${META_TAG} ${MANIFESTIMAGE}:arm64v8-${SEMVER}
820
775
fi
821
776
docker push ${MANIFESTIMAGE}:amd64-${META_TAG}
822
777
docker push ${MANIFESTIMAGE}:amd64-${EXT_RELEASE_TAG}
823
778
docker push ${MANIFESTIMAGE}:amd64-latest
824
- docker push ${MANIFESTIMAGE}:arm32v7-${META_TAG}
825
- docker push ${MANIFESTIMAGE}:arm32v7-latest
826
- docker push ${MANIFESTIMAGE}:arm32v7-${EXT_RELEASE_TAG}
827
779
docker push ${MANIFESTIMAGE}:arm64v8-${META_TAG}
828
780
docker push ${MANIFESTIMAGE}:arm64v8-latest
829
781
docker push ${MANIFESTIMAGE}:arm64v8-${EXT_RELEASE_TAG}
830
782
if [ -n "${SEMVER}" ]; then
831
783
docker push ${MANIFESTIMAGE}:amd64-${SEMVER}
832
- docker push ${MANIFESTIMAGE}:arm32v7-${SEMVER}
833
784
docker push ${MANIFESTIMAGE}:arm64v8-${SEMVER}
834
785
fi
835
786
docker manifest push --purge ${MANIFESTIMAGE}:latest || :
836
- docker manifest create ${MANIFESTIMAGE}:latest ${MANIFESTIMAGE}:amd64-latest ${MANIFESTIMAGE}:arm32v7-latest ${MANIFESTIMAGE}:arm64v8-latest
837
- docker manifest annotate ${MANIFESTIMAGE}:latest ${MANIFESTIMAGE}:arm32v7-latest --os linux --arch arm
787
+ docker manifest create ${MANIFESTIMAGE}:latest ${MANIFESTIMAGE}:amd64-latest ${MANIFESTIMAGE}:arm64v8-latest
838
788
docker manifest annotate ${MANIFESTIMAGE}:latest ${MANIFESTIMAGE}:arm64v8-latest --os linux --arch arm64 --variant v8
839
789
docker manifest push --purge ${MANIFESTIMAGE}:${META_TAG} || :
840
- docker manifest create ${MANIFESTIMAGE}:${META_TAG} ${MANIFESTIMAGE}:amd64-${META_TAG} ${MANIFESTIMAGE}:arm32v7-${META_TAG} ${MANIFESTIMAGE}:arm64v8-${META_TAG}
841
- docker manifest annotate ${MANIFESTIMAGE}:${META_TAG} ${MANIFESTIMAGE}:arm32v7-${META_TAG} --os linux --arch arm
790
+ docker manifest create ${MANIFESTIMAGE}:${META_TAG} ${MANIFESTIMAGE}:amd64-${META_TAG} ${MANIFESTIMAGE}:arm64v8-${META_TAG}
842
791
docker manifest annotate ${MANIFESTIMAGE}:${META_TAG} ${MANIFESTIMAGE}:arm64v8-${META_TAG} --os linux --arch arm64 --variant v8
843
792
docker manifest push --purge ${MANIFESTIMAGE}:${EXT_RELEASE_TAG} || :
844
- docker manifest create ${MANIFESTIMAGE}:${EXT_RELEASE_TAG} ${MANIFESTIMAGE}:amd64-${EXT_RELEASE_TAG} ${MANIFESTIMAGE}:arm32v7-${EXT_RELEASE_TAG} ${MANIFESTIMAGE}:arm64v8-${EXT_RELEASE_TAG}
845
- docker manifest annotate ${MANIFESTIMAGE}:${EXT_RELEASE_TAG} ${MANIFESTIMAGE}:arm32v7-${EXT_RELEASE_TAG} --os linux --arch arm
793
+ docker manifest create ${MANIFESTIMAGE}:${EXT_RELEASE_TAG} ${MANIFESTIMAGE}:amd64-${EXT_RELEASE_TAG} ${MANIFESTIMAGE}:arm64v8-${EXT_RELEASE_TAG}
846
794
docker manifest annotate ${MANIFESTIMAGE}:${EXT_RELEASE_TAG} ${MANIFESTIMAGE}:arm64v8-${EXT_RELEASE_TAG} --os linux --arch arm64 --variant v8
847
795
if [ -n "${SEMVER}" ]; then
848
796
docker manifest push --purge ${MANIFESTIMAGE}:${SEMVER} || :
849
- docker manifest create ${MANIFESTIMAGE}:${SEMVER} ${MANIFESTIMAGE}:amd64-${SEMVER} ${MANIFESTIMAGE}:arm32v7-${SEMVER} ${MANIFESTIMAGE}:arm64v8-${SEMVER}
850
- docker manifest annotate ${MANIFESTIMAGE}:${SEMVER} ${MANIFESTIMAGE}:arm32v7-${SEMVER} --os linux --arch arm
797
+ docker manifest create ${MANIFESTIMAGE}:${SEMVER} ${MANIFESTIMAGE}:amd64-${SEMVER} ${MANIFESTIMAGE}:arm64v8-${SEMVER}
851
798
docker manifest annotate ${MANIFESTIMAGE}:${SEMVER} ${MANIFESTIMAGE}:arm64v8-${SEMVER} --os linux --arch arm64 --variant v8
852
799
fi
800
+ token=$(curl -sX GET "https://ghcr.io/token?scope=repository%3Alinuxserver%2F${CONTAINER_NAME}%3Apull" | jq -r '.token')
801
+ digest=$(curl -s \
802
+ --header "Accept: application/vnd.docker.distribution.manifest.v2+json" \
803
+ --header "Authorization: Bearer ${token}" \
804
+ "https://ghcr.io/v2/linuxserver/${CONTAINER_NAME}/manifests/arm32v7-latest")
805
+ if [[ $(echo "$digest" | jq -r '.layers') != "null" ]]; then
806
+ docker manifest push --purge ${MANIFESTIMAGE}:arm32v7-latest || :
807
+ docker manifest create ${MANIFESTIMAGE}:arm32v7-latest ${MANIFESTIMAGE}:amd64-latest
808
+ docker manifest push --purge ${MANIFESTIMAGE}:arm32v7-latest
809
+ fi
853
810
docker manifest push --purge ${MANIFESTIMAGE}:latest
854
811
docker manifest push --purge ${MANIFESTIMAGE}:${META_TAG}
855
812
docker manifest push --purge ${MANIFESTIMAGE}:${EXT_RELEASE_TAG}
0 commit comments