@@ -165,7 +165,7 @@ pipeline {
165165 env. GITLABIMAGE = ' registry.gitlab.com/linuxserver.io/' + env. LS_REPO + ' /' + env. CONTAINER_NAME
166166 env. QUAYIMAGE = ' quay.io/linuxserver.io/' + env. CONTAINER_NAME
167167 if (env. MULTIARCH == ' true' ) {
168- 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
168+ env. CI_TAGS = ' amd64-' + env. EXT_RELEASE_CLEAN + ' -ls' + env. LS_TAG_NUMBER + ' |arm64v8-' + env. EXT_RELEASE_CLEAN + ' -ls' + env. LS_TAG_NUMBER
169169 } else {
170170 env. CI_TAGS = env. EXT_RELEASE_CLEAN + ' -ls' + env. LS_TAG_NUMBER
171171 }
@@ -188,7 +188,7 @@ pipeline {
188188 env. GITLABIMAGE = ' registry.gitlab.com/linuxserver.io/' + env. LS_REPO + ' /lsiodev-' + env. CONTAINER_NAME
189189 env. QUAYIMAGE = ' quay.io/linuxserver.io/lsiodev-' + env. CONTAINER_NAME
190190 if (env. MULTIARCH == ' true' ) {
191- 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
191+ 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
192192 } else {
193193 env. CI_TAGS = env. EXT_RELEASE_CLEAN + ' -pkg-' + env. PACKAGE_TAG + ' -dev-' + env. COMMIT_SHA
194194 }
@@ -211,7 +211,7 @@ pipeline {
211211 env. GITLABIMAGE = ' registry.gitlab.com/linuxserver.io/' + env. LS_REPO + ' /lspipepr-' + env. CONTAINER_NAME
212212 env. QUAYIMAGE = ' quay.io/linuxserver.io/lspipepr-' + env. CONTAINER_NAME
213213 if (env. MULTIARCH == ' true' ) {
214- 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
214+ 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
215215 } else {
216216 env. CI_TAGS = env. EXT_RELEASE_CLEAN + ' -pkg-' + env. PACKAGE_TAG + ' -dev-' + env. COMMIT_SHA + ' -pr-' + env. PULL_REQUEST
217217 }
@@ -282,7 +282,7 @@ pipeline {
282282 echo "Jenkinsfile is up to date."
283283 fi
284284 # Stage 2 - Delete old templates
285- 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"
285+ 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 "
286286 for i in ${OLD_TEMPLATES}; do
287287 if [[ -f "${i}" ]]; then
288288 TEMPLATES_TO_DELETE="${i} ${TEMPLATES_TO_DELETE}"
@@ -318,12 +318,13 @@ pipeline {
318318 mkdir -p ${TEMPDIR}/repo/${LS_REPO}/.github/workflows
319319 mkdir -p ${TEMPDIR}/repo/${LS_REPO}/.github/ISSUE_TEMPLATE
320320 cp --parents ${TEMPLATED_FILES} ${TEMPDIR}/repo/${LS_REPO}/ || :
321+ cp --parents readme-vars.yml ${TEMPDIR}/repo/${LS_REPO}/ || :
321322 cd ${TEMPDIR}/repo/${LS_REPO}/
322323 if ! grep -q '.jenkins-external' .gitignore 2>/dev/null; then
323324 echo ".jenkins-external" >> .gitignore
324325 git add .gitignore
325326 fi
326- git add ${TEMPLATED_FILES}
327+ git add readme-vars.yml ${TEMPLATED_FILES}
327328 git commit -m 'Bot Updating Templated Files'
328329 git push https://LinuxServer-CI:${GITHUB_TOKEN}@github.com/${LS_USER}/${LS_REPO}.git --all
329330 echo "true" > /tmp/${COMMIT_SHA}-${BUILD_NUMBER}
@@ -517,44 +518,6 @@ pipeline {
517518 --build-arg ${ BUILD_VERSION_ARG} =${ EXT_RELEASE} --build-arg VERSION=\" ${ VERSION_TAG} \" --build-arg BUILD_DATE=${ GITHUB_DATE} ."
518519 }
519520 }
520- stage(' Build ARMHF' ) {
521- agent {
522- label ' ARMHF'
523- }
524- steps {
525- echo " Running on node: ${ NODE_NAME} "
526- echo ' Logging into Github'
527- sh ''' #! /bin/bash
528- echo $GITHUB_TOKEN | docker login ghcr.io -u LinuxServer-CI --password-stdin
529- '''
530- sh " sed -r -i 's|(^FROM .*)|\\ 1\\ n\\ nENV LSIO_FIRST_PARTY=true|g' Dockerfile.armhf"
531- sh " docker buildx build \
532- --label \" org.opencontainers.image.created=${ GITHUB_DATE} \" \
533- --label \" org.opencontainers.image.authors=linuxserver.io\" \
534- --label \" org.opencontainers.image.url=https://github.com/linuxserver/docker-embystat/packages\" \
535- --label \" org.opencontainers.image.documentation=https://docs.linuxserver.io/images/docker-embystat\" \
536- --label \" org.opencontainers.image.source=https://github.com/linuxserver/docker-embystat\" \
537- --label \" org.opencontainers.image.version=${ EXT_RELEASE_CLEAN} -ls${ LS_TAG_NUMBER} \" \
538- --label \" org.opencontainers.image.revision=${ COMMIT_SHA} \" \
539- --label \" org.opencontainers.image.vendor=linuxserver.io\" \
540- --label \" org.opencontainers.image.licenses=GPL-3.0-only\" \
541- --label \" org.opencontainers.image.ref.name=${ COMMIT_SHA} \" \
542- --label \" org.opencontainers.image.title=Embystat\" \
543- --label \" org.opencontainers.image.description=[Embystat](https://github.com/mregni/EmbyStat) is a personal web server that can calculate all kinds of statistics from your (local) Emby server. Just install this on your server and let him calculate all kinds of fun stuff.\" \
544- --no-cache --pull -f Dockerfile.armhf -t ${ IMAGE} :arm32v7-${ META_TAG} --platform=linux/arm/v7 \
545- --build-arg ${ BUILD_VERSION_ARG} =${ EXT_RELEASE} --build-arg VERSION=\" ${ VERSION_TAG} \" --build-arg BUILD_DATE=${ GITHUB_DATE} ."
546- sh " docker tag ${ IMAGE} :arm32v7-${ META_TAG} ghcr.io/linuxserver/lsiodev-buildcache:arm32v7-${ COMMIT_SHA} -${ BUILD_NUMBER} "
547- retry(5 ) {
548- sh " docker push ghcr.io/linuxserver/lsiodev-buildcache:arm32v7-${ COMMIT_SHA} -${ BUILD_NUMBER} "
549- }
550- sh ''' #! /bin/bash
551- containers=$(docker ps -aq)
552- if [[ -n "${containers}" ]]; then
553- docker stop ${containers}
554- fi
555- docker system prune -af --volumes || : '''
556- }
557- }
558521 stage(' Build ARM64' ) {
559522 agent {
560523 label ' ARM64'
@@ -695,9 +658,7 @@ pipeline {
695658 set -e
696659 docker pull ghcr.io/linuxserver/ci:latest
697660 if [ "${MULTIARCH}" == "true" ]; then
698- docker pull ghcr.io/linuxserver/lsiodev-buildcache:arm32v7-${COMMIT_SHA}-${BUILD_NUMBER}
699661 docker pull ghcr.io/linuxserver/lsiodev-buildcache:arm64v8-${COMMIT_SHA}-${BUILD_NUMBER}
700- docker tag ghcr.io/linuxserver/lsiodev-buildcache:arm32v7-${COMMIT_SHA}-${BUILD_NUMBER} ${IMAGE}:arm32v7-${META_TAG}
701662 docker tag ghcr.io/linuxserver/lsiodev-buildcache:arm64v8-${COMMIT_SHA}-${BUILD_NUMBER} ${IMAGE}:arm64v8-${META_TAG}
702663 fi
703664 docker run --rm \
@@ -800,58 +761,54 @@ pipeline {
800761 echo $GITLAB_TOKEN | docker login registry.gitlab.com -u LinuxServer.io --password-stdin
801762 echo $QUAYPASS | docker login quay.io -u $QUAYUSER --password-stdin
802763 if [ "${CI}" == "false" ]; then
803- docker pull ghcr.io/linuxserver/lsiodev-buildcache:arm32v7-${COMMIT_SHA}-${BUILD_NUMBER}
804- docker tag ghcr.io/linuxserver/lsiodev-buildcache:arm32v7-${COMMIT_SHA}-${BUILD_NUMBER} ${IMAGE}:arm32v7-${META_TAG}
805764 docker pull ghcr.io/linuxserver/lsiodev-buildcache:arm64v8-${COMMIT_SHA}-${BUILD_NUMBER}
806765 docker tag ghcr.io/linuxserver/lsiodev-buildcache:arm64v8-${COMMIT_SHA}-${BUILD_NUMBER} ${IMAGE}:arm64v8-${META_TAG}
807766 fi
808767 for MANIFESTIMAGE in "${IMAGE}" "${GITLABIMAGE}" "${GITHUBIMAGE}" "${QUAYIMAGE}"; do
809768 docker tag ${IMAGE}:amd64-${META_TAG} ${MANIFESTIMAGE}:amd64-${META_TAG}
810769 docker tag ${MANIFESTIMAGE}:amd64-${META_TAG} ${MANIFESTIMAGE}:amd64-latest
811770 docker tag ${MANIFESTIMAGE}:amd64-${META_TAG} ${MANIFESTIMAGE}:amd64-${EXT_RELEASE_TAG}
812- docker tag ${IMAGE}:arm32v7-${META_TAG} ${MANIFESTIMAGE}:arm32v7-${META_TAG}
813- docker tag ${MANIFESTIMAGE}:arm32v7-${META_TAG} ${MANIFESTIMAGE}:arm32v7-latest
814- docker tag ${MANIFESTIMAGE}:arm32v7-${META_TAG} ${MANIFESTIMAGE}:arm32v7-${EXT_RELEASE_TAG}
815771 docker tag ${IMAGE}:arm64v8-${META_TAG} ${MANIFESTIMAGE}:arm64v8-${META_TAG}
816772 docker tag ${MANIFESTIMAGE}:arm64v8-${META_TAG} ${MANIFESTIMAGE}:arm64v8-latest
817773 docker tag ${MANIFESTIMAGE}:arm64v8-${META_TAG} ${MANIFESTIMAGE}:arm64v8-${EXT_RELEASE_TAG}
818774 if [ -n "${SEMVER}" ]; then
819775 docker tag ${MANIFESTIMAGE}:amd64-${META_TAG} ${MANIFESTIMAGE}:amd64-${SEMVER}
820- docker tag ${MANIFESTIMAGE}:arm32v7-${META_TAG} ${MANIFESTIMAGE}:arm32v7-${SEMVER}
821776 docker tag ${MANIFESTIMAGE}:arm64v8-${META_TAG} ${MANIFESTIMAGE}:arm64v8-${SEMVER}
822777 fi
823778 docker push ${MANIFESTIMAGE}:amd64-${META_TAG}
824779 docker push ${MANIFESTIMAGE}:amd64-${EXT_RELEASE_TAG}
825780 docker push ${MANIFESTIMAGE}:amd64-latest
826- docker push ${MANIFESTIMAGE}:arm32v7-${META_TAG}
827- docker push ${MANIFESTIMAGE}:arm32v7-latest
828- docker push ${MANIFESTIMAGE}:arm32v7-${EXT_RELEASE_TAG}
829781 docker push ${MANIFESTIMAGE}:arm64v8-${META_TAG}
830782 docker push ${MANIFESTIMAGE}:arm64v8-latest
831783 docker push ${MANIFESTIMAGE}:arm64v8-${EXT_RELEASE_TAG}
832784 if [ -n "${SEMVER}" ]; then
833785 docker push ${MANIFESTIMAGE}:amd64-${SEMVER}
834- docker push ${MANIFESTIMAGE}:arm32v7-${SEMVER}
835786 docker push ${MANIFESTIMAGE}:arm64v8-${SEMVER}
836787 fi
837788 docker manifest push --purge ${MANIFESTIMAGE}:latest || :
838- docker manifest create ${MANIFESTIMAGE}:latest ${MANIFESTIMAGE}:amd64-latest ${MANIFESTIMAGE}:arm32v7-latest ${MANIFESTIMAGE}:arm64v8-latest
839- docker manifest annotate ${MANIFESTIMAGE}:latest ${MANIFESTIMAGE}:arm32v7-latest --os linux --arch arm
789+ docker manifest create ${MANIFESTIMAGE}:latest ${MANIFESTIMAGE}:amd64-latest ${MANIFESTIMAGE}:arm64v8-latest
840790 docker manifest annotate ${MANIFESTIMAGE}:latest ${MANIFESTIMAGE}:arm64v8-latest --os linux --arch arm64 --variant v8
841791 docker manifest push --purge ${MANIFESTIMAGE}:${META_TAG} || :
842- docker manifest create ${MANIFESTIMAGE}:${META_TAG} ${MANIFESTIMAGE}:amd64-${META_TAG} ${MANIFESTIMAGE}:arm32v7-${META_TAG} ${MANIFESTIMAGE}:arm64v8-${META_TAG}
843- docker manifest annotate ${MANIFESTIMAGE}:${META_TAG} ${MANIFESTIMAGE}:arm32v7-${META_TAG} --os linux --arch arm
792+ docker manifest create ${MANIFESTIMAGE}:${META_TAG} ${MANIFESTIMAGE}:amd64-${META_TAG} ${MANIFESTIMAGE}:arm64v8-${META_TAG}
844793 docker manifest annotate ${MANIFESTIMAGE}:${META_TAG} ${MANIFESTIMAGE}:arm64v8-${META_TAG} --os linux --arch arm64 --variant v8
845794 docker manifest push --purge ${MANIFESTIMAGE}:${EXT_RELEASE_TAG} || :
846- docker manifest create ${MANIFESTIMAGE}:${EXT_RELEASE_TAG} ${MANIFESTIMAGE}:amd64-${EXT_RELEASE_TAG} ${MANIFESTIMAGE}:arm32v7-${EXT_RELEASE_TAG} ${MANIFESTIMAGE}:arm64v8-${EXT_RELEASE_TAG}
847- docker manifest annotate ${MANIFESTIMAGE}:${EXT_RELEASE_TAG} ${MANIFESTIMAGE}:arm32v7-${EXT_RELEASE_TAG} --os linux --arch arm
795+ docker manifest create ${MANIFESTIMAGE}:${EXT_RELEASE_TAG} ${MANIFESTIMAGE}:amd64-${EXT_RELEASE_TAG} ${MANIFESTIMAGE}:arm64v8-${EXT_RELEASE_TAG}
848796 docker manifest annotate ${MANIFESTIMAGE}:${EXT_RELEASE_TAG} ${MANIFESTIMAGE}:arm64v8-${EXT_RELEASE_TAG} --os linux --arch arm64 --variant v8
849797 if [ -n "${SEMVER}" ]; then
850798 docker manifest push --purge ${MANIFESTIMAGE}:${SEMVER} || :
851- docker manifest create ${MANIFESTIMAGE}:${SEMVER} ${MANIFESTIMAGE}:amd64-${SEMVER} ${MANIFESTIMAGE}:arm32v7-${SEMVER} ${MANIFESTIMAGE}:arm64v8-${SEMVER}
852- docker manifest annotate ${MANIFESTIMAGE}:${SEMVER} ${MANIFESTIMAGE}:arm32v7-${SEMVER} --os linux --arch arm
799+ docker manifest create ${MANIFESTIMAGE}:${SEMVER} ${MANIFESTIMAGE}:amd64-${SEMVER} ${MANIFESTIMAGE}:arm64v8-${SEMVER}
853800 docker manifest annotate ${MANIFESTIMAGE}:${SEMVER} ${MANIFESTIMAGE}:arm64v8-${SEMVER} --os linux --arch arm64 --variant v8
854801 fi
802+ token=$(curl -sX GET "https://ghcr.io/token?scope=repository%3Alinuxserver%2F${CONTAINER_NAME}%3Apull" | jq -r '.token')
803+ digest=$(curl -s \
804+ --header "Accept: application/vnd.docker.distribution.manifest.v2+json" \
805+ --header "Authorization: Bearer ${token}" \
806+ "https://ghcr.io/v2/linuxserver/${CONTAINER_NAME}/manifests/arm32v7-latest")
807+ if [[ $(echo "$digest" | jq -r '.layers') != "null" ]]; then
808+ docker manifest push --purge ${MANIFESTIMAGE}:arm32v7-latest || :
809+ docker manifest create ${MANIFESTIMAGE}:arm32v7-latest ${MANIFESTIMAGE}:amd64-latest
810+ docker manifest push --purge ${MANIFESTIMAGE}:arm32v7-latest
811+ fi
855812 docker manifest push --purge ${MANIFESTIMAGE}:latest
856813 docker manifest push --purge ${MANIFESTIMAGE}:${META_TAG}
857814 docker manifest push --purge ${MANIFESTIMAGE}:${EXT_RELEASE_TAG}
0 commit comments