@@ -161,7 +161,7 @@ pipeline {
161161 env. GITLABIMAGE = ' registry.gitlab.com/linuxserver.io/' + env. LS_REPO + ' /' + env. CONTAINER_NAME
162162 env. QUAYIMAGE = ' quay.io/linuxserver.io/' + env. CONTAINER_NAME
163163 if (env. MULTIARCH == ' true' ) {
164- 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
164+ env. CI_TAGS = ' amd64-' + env. EXT_RELEASE_CLEAN + ' -ls' + env. LS_TAG_NUMBER + ' |arm64v8-' + env. EXT_RELEASE_CLEAN + ' -ls' + env. LS_TAG_NUMBER
165165 } else {
166166 env. CI_TAGS = env. EXT_RELEASE_CLEAN + ' -ls' + env. LS_TAG_NUMBER
167167 }
@@ -184,7 +184,7 @@ pipeline {
184184 env. GITLABIMAGE = ' registry.gitlab.com/linuxserver.io/' + env. LS_REPO + ' /lsiodev-' + env. CONTAINER_NAME
185185 env. QUAYIMAGE = ' quay.io/linuxserver.io/lsiodev-' + env. CONTAINER_NAME
186186 if (env. MULTIARCH == ' true' ) {
187- 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
187+ 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
188188 } else {
189189 env. CI_TAGS = env. EXT_RELEASE_CLEAN + ' -pkg-' + env. PACKAGE_TAG + ' -dev-' + env. COMMIT_SHA
190190 }
@@ -207,7 +207,7 @@ pipeline {
207207 env. GITLABIMAGE = ' registry.gitlab.com/linuxserver.io/' + env. LS_REPO + ' /lspipepr-' + env. CONTAINER_NAME
208208 env. QUAYIMAGE = ' quay.io/linuxserver.io/lspipepr-' + env. CONTAINER_NAME
209209 if (env. MULTIARCH == ' true' ) {
210- 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
210+ 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
211211 } else {
212212 env. CI_TAGS = env. EXT_RELEASE_CLEAN + ' -pkg-' + env. PACKAGE_TAG + ' -dev-' + env. COMMIT_SHA + ' -pr-' + env. PULL_REQUEST
213213 }
@@ -278,7 +278,7 @@ pipeline {
278278 echo "Jenkinsfile is up to date."
279279 fi
280280 # Stage 2 - Delete old templates
281- 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"
281+ 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 "
282282 for i in ${OLD_TEMPLATES}; do
283283 if [[ -f "${i}" ]]; then
284284 TEMPLATES_TO_DELETE="${i} ${TEMPLATES_TO_DELETE}"
@@ -314,12 +314,13 @@ pipeline {
314314 mkdir -p ${TEMPDIR}/repo/${LS_REPO}/.github/workflows
315315 mkdir -p ${TEMPDIR}/repo/${LS_REPO}/.github/ISSUE_TEMPLATE
316316 cp --parents ${TEMPLATED_FILES} ${TEMPDIR}/repo/${LS_REPO}/ || :
317+ cp --parents readme-vars.yml ${TEMPDIR}/repo/${LS_REPO}/ || :
317318 cd ${TEMPDIR}/repo/${LS_REPO}/
318319 if ! grep -q '.jenkins-external' .gitignore 2>/dev/null; then
319320 echo ".jenkins-external" >> .gitignore
320321 git add .gitignore
321322 fi
322- git add ${TEMPLATED_FILES}
323+ git add readme-vars.yml ${TEMPLATED_FILES}
323324 git commit -m 'Bot Updating Templated Files'
324325 git push https://LinuxServer-CI:${GITHUB_TOKEN}@github.com/${LS_USER}/${LS_REPO}.git --all
325326 echo "true" > /tmp/${COMMIT_SHA}-${BUILD_NUMBER}
@@ -513,44 +514,6 @@ pipeline {
513514 --build-arg ${ BUILD_VERSION_ARG} =${ EXT_RELEASE} --build-arg VERSION=\" ${ VERSION_TAG} \" --build-arg BUILD_DATE=${ GITHUB_DATE} ."
514515 }
515516 }
516- stage(' Build ARMHF' ) {
517- agent {
518- label ' ARMHF'
519- }
520- steps {
521- echo " Running on node: ${ NODE_NAME} "
522- echo ' Logging into Github'
523- sh ''' #! /bin/bash
524- echo $GITHUB_TOKEN | docker login ghcr.io -u LinuxServer-CI --password-stdin
525- '''
526- sh " sed -r -i 's|(^FROM .*)|\\ 1\\ n\\ nENV LSIO_FIRST_PARTY=true|g' Dockerfile.armhf"
527- sh " docker buildx build \
528- --label \" org.opencontainers.image.created=${ GITHUB_DATE} \" \
529- --label \" org.opencontainers.image.authors=linuxserver.io\" \
530- --label \" org.opencontainers.image.url=https://github.com/linuxserver/docker-wps-office/packages\" \
531- --label \" org.opencontainers.image.documentation=https://docs.linuxserver.io/images/docker-wps-office\" \
532- --label \" org.opencontainers.image.source=https://github.com/linuxserver/docker-wps-office\" \
533- --label \" org.opencontainers.image.version=${ EXT_RELEASE_CLEAN} -ls${ LS_TAG_NUMBER} \" \
534- --label \" org.opencontainers.image.revision=${ COMMIT_SHA} \" \
535- --label \" org.opencontainers.image.vendor=linuxserver.io\" \
536- --label \" org.opencontainers.image.licenses=GPL-3.0-only\" \
537- --label \" org.opencontainers.image.ref.name=${ COMMIT_SHA} \" \
538- --label \" org.opencontainers.image.title=Wps-office\" \
539- --label \" org.opencontainers.image.description=[WPS Office](https://www.wps.com/) is a lightweight, feature-rich comprehensive office suite with high compatibility. As a handy and professional office software, WPS Office allows you to edit files in Writer, Presentation, Spreadsheet, and PDF to improve your work efficiency.\" \
540- --no-cache --pull -f Dockerfile.armhf -t ${ IMAGE} :arm32v7-${ META_TAG} --platform=linux/arm/v7 \
541- --build-arg ${ BUILD_VERSION_ARG} =${ EXT_RELEASE} --build-arg VERSION=\" ${ VERSION_TAG} \" --build-arg BUILD_DATE=${ GITHUB_DATE} ."
542- sh " docker tag ${ IMAGE} :arm32v7-${ META_TAG} ghcr.io/linuxserver/lsiodev-buildcache:arm32v7-${ COMMIT_SHA} -${ BUILD_NUMBER} "
543- retry(5 ) {
544- sh " docker push ghcr.io/linuxserver/lsiodev-buildcache:arm32v7-${ COMMIT_SHA} -${ BUILD_NUMBER} "
545- }
546- sh ''' #! /bin/bash
547- containers=$(docker ps -aq)
548- if [[ -n "${containers}" ]]; then
549- docker stop ${containers}
550- fi
551- docker system prune -af --volumes || : '''
552- }
553- }
554517 stage(' Build ARM64' ) {
555518 agent {
556519 label ' ARM64'
@@ -691,9 +654,7 @@ pipeline {
691654 set -e
692655 docker pull ghcr.io/linuxserver/ci:latest
693656 if [ "${MULTIARCH}" == "true" ]; then
694- docker pull ghcr.io/linuxserver/lsiodev-buildcache:arm32v7-${COMMIT_SHA}-${BUILD_NUMBER}
695657 docker pull ghcr.io/linuxserver/lsiodev-buildcache:arm64v8-${COMMIT_SHA}-${BUILD_NUMBER}
696- docker tag ghcr.io/linuxserver/lsiodev-buildcache:arm32v7-${COMMIT_SHA}-${BUILD_NUMBER} ${IMAGE}:arm32v7-${META_TAG}
697658 docker tag ghcr.io/linuxserver/lsiodev-buildcache:arm64v8-${COMMIT_SHA}-${BUILD_NUMBER} ${IMAGE}:arm64v8-${META_TAG}
698659 fi
699660 docker run --rm \
@@ -796,58 +757,54 @@ pipeline {
796757 echo $GITLAB_TOKEN | docker login registry.gitlab.com -u LinuxServer.io --password-stdin
797758 echo $QUAYPASS | docker login quay.io -u $QUAYUSER --password-stdin
798759 if [ "${CI}" == "false" ]; then
799- docker pull ghcr.io/linuxserver/lsiodev-buildcache:arm32v7-${COMMIT_SHA}-${BUILD_NUMBER}
800- docker tag ghcr.io/linuxserver/lsiodev-buildcache:arm32v7-${COMMIT_SHA}-${BUILD_NUMBER} ${IMAGE}:arm32v7-${META_TAG}
801760 docker pull ghcr.io/linuxserver/lsiodev-buildcache:arm64v8-${COMMIT_SHA}-${BUILD_NUMBER}
802761 docker tag ghcr.io/linuxserver/lsiodev-buildcache:arm64v8-${COMMIT_SHA}-${BUILD_NUMBER} ${IMAGE}:arm64v8-${META_TAG}
803762 fi
804763 for MANIFESTIMAGE in "${IMAGE}" "${GITLABIMAGE}" "${GITHUBIMAGE}" "${QUAYIMAGE}"; do
805764 docker tag ${IMAGE}:amd64-${META_TAG} ${MANIFESTIMAGE}:amd64-${META_TAG}
806765 docker tag ${MANIFESTIMAGE}:amd64-${META_TAG} ${MANIFESTIMAGE}:amd64-latest
807766 docker tag ${MANIFESTIMAGE}:amd64-${META_TAG} ${MANIFESTIMAGE}:amd64-${EXT_RELEASE_TAG}
808- docker tag ${IMAGE}:arm32v7-${META_TAG} ${MANIFESTIMAGE}:arm32v7-${META_TAG}
809- docker tag ${MANIFESTIMAGE}:arm32v7-${META_TAG} ${MANIFESTIMAGE}:arm32v7-latest
810- docker tag ${MANIFESTIMAGE}:arm32v7-${META_TAG} ${MANIFESTIMAGE}:arm32v7-${EXT_RELEASE_TAG}
811767 docker tag ${IMAGE}:arm64v8-${META_TAG} ${MANIFESTIMAGE}:arm64v8-${META_TAG}
812768 docker tag ${MANIFESTIMAGE}:arm64v8-${META_TAG} ${MANIFESTIMAGE}:arm64v8-latest
813769 docker tag ${MANIFESTIMAGE}:arm64v8-${META_TAG} ${MANIFESTIMAGE}:arm64v8-${EXT_RELEASE_TAG}
814770 if [ -n "${SEMVER}" ]; then
815771 docker tag ${MANIFESTIMAGE}:amd64-${META_TAG} ${MANIFESTIMAGE}:amd64-${SEMVER}
816- docker tag ${MANIFESTIMAGE}:arm32v7-${META_TAG} ${MANIFESTIMAGE}:arm32v7-${SEMVER}
817772 docker tag ${MANIFESTIMAGE}:arm64v8-${META_TAG} ${MANIFESTIMAGE}:arm64v8-${SEMVER}
818773 fi
819774 docker push ${MANIFESTIMAGE}:amd64-${META_TAG}
820775 docker push ${MANIFESTIMAGE}:amd64-${EXT_RELEASE_TAG}
821776 docker push ${MANIFESTIMAGE}:amd64-latest
822- docker push ${MANIFESTIMAGE}:arm32v7-${META_TAG}
823- docker push ${MANIFESTIMAGE}:arm32v7-latest
824- docker push ${MANIFESTIMAGE}:arm32v7-${EXT_RELEASE_TAG}
825777 docker push ${MANIFESTIMAGE}:arm64v8-${META_TAG}
826778 docker push ${MANIFESTIMAGE}:arm64v8-latest
827779 docker push ${MANIFESTIMAGE}:arm64v8-${EXT_RELEASE_TAG}
828780 if [ -n "${SEMVER}" ]; then
829781 docker push ${MANIFESTIMAGE}:amd64-${SEMVER}
830- docker push ${MANIFESTIMAGE}:arm32v7-${SEMVER}
831782 docker push ${MANIFESTIMAGE}:arm64v8-${SEMVER}
832783 fi
833784 docker manifest push --purge ${MANIFESTIMAGE}:latest || :
834- docker manifest create ${MANIFESTIMAGE}:latest ${MANIFESTIMAGE}:amd64-latest ${MANIFESTIMAGE}:arm32v7-latest ${MANIFESTIMAGE}:arm64v8-latest
835- docker manifest annotate ${MANIFESTIMAGE}:latest ${MANIFESTIMAGE}:arm32v7-latest --os linux --arch arm
785+ docker manifest create ${MANIFESTIMAGE}:latest ${MANIFESTIMAGE}:amd64-latest ${MANIFESTIMAGE}:arm64v8-latest
836786 docker manifest annotate ${MANIFESTIMAGE}:latest ${MANIFESTIMAGE}:arm64v8-latest --os linux --arch arm64 --variant v8
837787 docker manifest push --purge ${MANIFESTIMAGE}:${META_TAG} || :
838- docker manifest create ${MANIFESTIMAGE}:${META_TAG} ${MANIFESTIMAGE}:amd64-${META_TAG} ${MANIFESTIMAGE}:arm32v7-${META_TAG} ${MANIFESTIMAGE}:arm64v8-${META_TAG}
839- docker manifest annotate ${MANIFESTIMAGE}:${META_TAG} ${MANIFESTIMAGE}:arm32v7-${META_TAG} --os linux --arch arm
788+ docker manifest create ${MANIFESTIMAGE}:${META_TAG} ${MANIFESTIMAGE}:amd64-${META_TAG} ${MANIFESTIMAGE}:arm64v8-${META_TAG}
840789 docker manifest annotate ${MANIFESTIMAGE}:${META_TAG} ${MANIFESTIMAGE}:arm64v8-${META_TAG} --os linux --arch arm64 --variant v8
841790 docker manifest push --purge ${MANIFESTIMAGE}:${EXT_RELEASE_TAG} || :
842- docker manifest create ${MANIFESTIMAGE}:${EXT_RELEASE_TAG} ${MANIFESTIMAGE}:amd64-${EXT_RELEASE_TAG} ${MANIFESTIMAGE}:arm32v7-${EXT_RELEASE_TAG} ${MANIFESTIMAGE}:arm64v8-${EXT_RELEASE_TAG}
843- docker manifest annotate ${MANIFESTIMAGE}:${EXT_RELEASE_TAG} ${MANIFESTIMAGE}:arm32v7-${EXT_RELEASE_TAG} --os linux --arch arm
791+ docker manifest create ${MANIFESTIMAGE}:${EXT_RELEASE_TAG} ${MANIFESTIMAGE}:amd64-${EXT_RELEASE_TAG} ${MANIFESTIMAGE}:arm64v8-${EXT_RELEASE_TAG}
844792 docker manifest annotate ${MANIFESTIMAGE}:${EXT_RELEASE_TAG} ${MANIFESTIMAGE}:arm64v8-${EXT_RELEASE_TAG} --os linux --arch arm64 --variant v8
845793 if [ -n "${SEMVER}" ]; then
846794 docker manifest push --purge ${MANIFESTIMAGE}:${SEMVER} || :
847- docker manifest create ${MANIFESTIMAGE}:${SEMVER} ${MANIFESTIMAGE}:amd64-${SEMVER} ${MANIFESTIMAGE}:arm32v7-${SEMVER} ${MANIFESTIMAGE}:arm64v8-${SEMVER}
848- docker manifest annotate ${MANIFESTIMAGE}:${SEMVER} ${MANIFESTIMAGE}:arm32v7-${SEMVER} --os linux --arch arm
795+ docker manifest create ${MANIFESTIMAGE}:${SEMVER} ${MANIFESTIMAGE}:amd64-${SEMVER} ${MANIFESTIMAGE}:arm64v8-${SEMVER}
849796 docker manifest annotate ${MANIFESTIMAGE}:${SEMVER} ${MANIFESTIMAGE}:arm64v8-${SEMVER} --os linux --arch arm64 --variant v8
850797 fi
798+ token=$(curl -sX GET "https://ghcr.io/token?scope=repository%3Alinuxserver%2F${CONTAINER_NAME}%3Apull" | jq -r '.token')
799+ digest=$(curl -s \
800+ --header "Accept: application/vnd.docker.distribution.manifest.v2+json" \
801+ --header "Authorization: Bearer ${token}" \
802+ "https://ghcr.io/v2/linuxserver/${CONTAINER_NAME}/manifests/arm32v7-latest")
803+ if [[ $(echo "$digest" | jq -r '.layers') != "null" ]]; then
804+ docker manifest push --purge ${MANIFESTIMAGE}:arm32v7-latest || :
805+ docker manifest create ${MANIFESTIMAGE}:arm32v7-latest ${MANIFESTIMAGE}:amd64-latest
806+ docker manifest push --purge ${MANIFESTIMAGE}:arm32v7-latest
807+ fi
851808 docker manifest push --purge ${MANIFESTIMAGE}:latest
852809 docker manifest push --purge ${MANIFESTIMAGE}:${META_TAG}
853810 docker manifest push --purge ${MANIFESTIMAGE}:${EXT_RELEASE_TAG}
0 commit comments