@@ -167,7 +167,7 @@ pipeline {
167167 env. GITLABIMAGE = ' registry.gitlab.com/linuxserver.io/' + env. LS_REPO + ' /' + env. CONTAINER_NAME
168168 env. QUAYIMAGE = ' quay.io/linuxserver.io/' + env. CONTAINER_NAME
169169 if (env. MULTIARCH == ' true' ) {
170- env. CI_TAGS = ' amd64-' + env. EXT_RELEASE_CLEAN + ' -ls' + env. LS_TAG_NUMBER + ' |arm64v8-' + env. EXT_RELEASE_CLEAN + ' -ls' + env. LS_TAG_NUMBER
170+ 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
171171 } else {
172172 env. CI_TAGS = env. EXT_RELEASE_CLEAN + ' -ls' + env. LS_TAG_NUMBER
173173 }
@@ -190,7 +190,7 @@ pipeline {
190190 env. GITLABIMAGE = ' registry.gitlab.com/linuxserver.io/' + env. LS_REPO + ' /lsiodev-' + env. CONTAINER_NAME
191191 env. QUAYIMAGE = ' quay.io/linuxserver.io/lsiodev-' + env. CONTAINER_NAME
192192 if (env. MULTIARCH == ' true' ) {
193- 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
193+ 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
194194 } else {
195195 env. CI_TAGS = env. EXT_RELEASE_CLEAN + ' -pkg-' + env. PACKAGE_TAG + ' -dev-' + env. COMMIT_SHA
196196 }
@@ -213,7 +213,7 @@ pipeline {
213213 env. GITLABIMAGE = ' registry.gitlab.com/linuxserver.io/' + env. LS_REPO + ' /lspipepr-' + env. CONTAINER_NAME
214214 env. QUAYIMAGE = ' quay.io/linuxserver.io/lspipepr-' + env. CONTAINER_NAME
215215 if (env. MULTIARCH == ' true' ) {
216- env. CI_TAGS = ' amd64-' + env. EXT_RELEASE_CLEAN + ' -pkg-' + env. PACKAGE_TAG + ' -pr-' + env. PULL_REQUEST + ' |arm64v8-' + env. EXT_RELEASE_CLEAN + ' -pkg-' + env. PACKAGE_TAG + ' -pr-' + env. PULL_REQUEST
216+ env. CI_TAGS = ' amd64-' + env. EXT_RELEASE_CLEAN + ' -pkg-' + env. PACKAGE_TAG + ' -pr-' + env. PULL_REQUEST + ' |arm32v7- ' + env . EXT_RELEASE_CLEAN + ' -pkg- ' + env . PACKAGE_TAG + ' -pr- ' + env . PULL_REQUEST + ' | arm64v8-' + env. EXT_RELEASE_CLEAN + ' -pkg-' + env. PACKAGE_TAG + ' -pr-' + env. PULL_REQUEST
217217 } else {
218218 env. CI_TAGS = env. EXT_RELEASE_CLEAN + ' -pkg-' + env. PACKAGE_TAG + ' -pr-' + env. PULL_REQUEST
219219 }
@@ -499,6 +499,40 @@ pipeline {
499499 --build-arg ${ BUILD_VERSION_ARG} =${ EXT_RELEASE} --build-arg VERSION=\" ${ VERSION_TAG} \" --build-arg BUILD_DATE=${ GITHUB_DATE} ."
500500 }
501501 }
502+ stage(' Build ARMHF' ) {
503+ agent {
504+ label ' ARMHF'
505+ }
506+ steps {
507+ echo " Running on node: ${ NODE_NAME} "
508+ echo ' Logging into Github'
509+ sh ''' #! /bin/bash
510+ echo $GITHUB_TOKEN | docker login ghcr.io -u LinuxServer-CI --password-stdin
511+ '''
512+ sh " docker build \
513+ --label \" org.opencontainers.image.created=${ GITHUB_DATE} \" \
514+ --label \" org.opencontainers.image.authors=linuxserver.io\" \
515+ --label \" org.opencontainers.image.url=https://github.com/linuxserver/docker-booksonic-air/packages\" \
516+ --label \" org.opencontainers.image.documentation=https://docs.linuxserver.io/images/docker-booksonic-air\" \
517+ --label \" org.opencontainers.image.source=https://github.com/linuxserver/docker-booksonic-air\" \
518+ --label \" org.opencontainers.image.version=${ EXT_RELEASE_CLEAN} -ls${ LS_TAG_NUMBER} \" \
519+ --label \" org.opencontainers.image.revision=${ COMMIT_SHA} \" \
520+ --label \" org.opencontainers.image.vendor=linuxserver.io\" \
521+ --label \" org.opencontainers.image.licenses=GPL-3.0-only\" \
522+ --label \" org.opencontainers.image.ref.name=${ COMMIT_SHA} \" \
523+ --label \" org.opencontainers.image.title=Booksonic-air\" \
524+ --label \" org.opencontainers.image.description=[Booksonic-air](http://booksonic.org) is a platform for accessing the audiobooks you own wherever you are. At the moment the platform consists of: * Booksonic Air - A server for streaming your audiobooks, successor to the original Booksonic server and based on Airsonic. * Booksonic App - An DSub based Android app for connection to Booksonic-Air servers.\" \
525+ --no-cache --pull -f Dockerfile.armhf -t ${ IMAGE} :arm32v7-${ META_TAG} \
526+ --build-arg ${ BUILD_VERSION_ARG} =${ EXT_RELEASE} --build-arg VERSION=\" ${ VERSION_TAG} \" --build-arg BUILD_DATE=${ GITHUB_DATE} ."
527+ sh " docker tag ${ IMAGE} :arm32v7-${ META_TAG} ghcr.io/linuxserver/lsiodev-buildcache:arm32v7-${ COMMIT_SHA} -${ BUILD_NUMBER} "
528+ retry(5 ) {
529+ sh " docker push ghcr.io/linuxserver/lsiodev-buildcache:arm32v7-${ COMMIT_SHA} -${ BUILD_NUMBER} "
530+ }
531+ sh ''' docker rmi \
532+ ${IMAGE}:arm32v7-${META_TAG} \
533+ ghcr.io/linuxserver/lsiodev-buildcache:arm32v7-${COMMIT_SHA}-${BUILD_NUMBER} || :'''
534+ }
535+ }
502536 stage(' Build ARM64' ) {
503537 agent {
504538 label ' ARM64'
@@ -662,7 +696,9 @@ pipeline {
662696 set -e
663697 docker pull ghcr.io/linuxserver/ci:latest
664698 if [ "${MULTIARCH}" == "true" ]; then
699+ docker pull ghcr.io/linuxserver/lsiodev-buildcache:arm32v7-${COMMIT_SHA}-${BUILD_NUMBER}
665700 docker pull ghcr.io/linuxserver/lsiodev-buildcache:arm64v8-${COMMIT_SHA}-${BUILD_NUMBER}
701+ docker tag ghcr.io/linuxserver/lsiodev-buildcache:arm32v7-${COMMIT_SHA}-${BUILD_NUMBER} ${IMAGE}:arm32v7-${META_TAG}
666702 docker tag ghcr.io/linuxserver/lsiodev-buildcache:arm64v8-${COMMIT_SHA}-${BUILD_NUMBER} ${IMAGE}:arm64v8-${META_TAG}
667703 fi
668704 docker run --rm \
@@ -778,42 +814,56 @@ pipeline {
778814 echo $GITLAB_TOKEN | docker login registry.gitlab.com -u LinuxServer.io --password-stdin
779815 echo $QUAYPASS | docker login quay.io -u $QUAYUSER --password-stdin
780816 if [ "${CI}" == "false" ]; then
817+ docker pull ghcr.io/linuxserver/lsiodev-buildcache:arm32v7-${COMMIT_SHA}-${BUILD_NUMBER}
818+ docker tag ghcr.io/linuxserver/lsiodev-buildcache:arm32v7-${COMMIT_SHA}-${BUILD_NUMBER} ${IMAGE}:arm32v7-${META_TAG}
781819 docker pull ghcr.io/linuxserver/lsiodev-buildcache:arm64v8-${COMMIT_SHA}-${BUILD_NUMBER}
782820 docker tag ghcr.io/linuxserver/lsiodev-buildcache:arm64v8-${COMMIT_SHA}-${BUILD_NUMBER} ${IMAGE}:arm64v8-${META_TAG}
783821 fi
784822 for MANIFESTIMAGE in "${IMAGE}" "${GITLABIMAGE}" "${GITHUBIMAGE}" "${QUAYIMAGE}"; do
785823 docker tag ${IMAGE}:amd64-${META_TAG} ${MANIFESTIMAGE}:amd64-${META_TAG}
786824 docker tag ${MANIFESTIMAGE}:amd64-${META_TAG} ${MANIFESTIMAGE}:amd64-latest
787825 docker tag ${MANIFESTIMAGE}:amd64-${META_TAG} ${MANIFESTIMAGE}:amd64-${EXT_RELEASE_TAG}
826+ docker tag ${IMAGE}:arm32v7-${META_TAG} ${MANIFESTIMAGE}:arm32v7-${META_TAG}
827+ docker tag ${MANIFESTIMAGE}:arm32v7-${META_TAG} ${MANIFESTIMAGE}:arm32v7-latest
828+ docker tag ${MANIFESTIMAGE}:arm32v7-${META_TAG} ${MANIFESTIMAGE}:arm32v7-${EXT_RELEASE_TAG}
788829 docker tag ${IMAGE}:arm64v8-${META_TAG} ${MANIFESTIMAGE}:arm64v8-${META_TAG}
789830 docker tag ${MANIFESTIMAGE}:arm64v8-${META_TAG} ${MANIFESTIMAGE}:arm64v8-latest
790831 docker tag ${MANIFESTIMAGE}:arm64v8-${META_TAG} ${MANIFESTIMAGE}:arm64v8-${EXT_RELEASE_TAG}
791832 if [ -n "${SEMVER}" ]; then
792833 docker tag ${MANIFESTIMAGE}:amd64-${META_TAG} ${MANIFESTIMAGE}:amd64-${SEMVER}
834+ docker tag ${MANIFESTIMAGE}:arm32v7-${META_TAG} ${MANIFESTIMAGE}:arm32v7-${SEMVER}
793835 docker tag ${MANIFESTIMAGE}:arm64v8-${META_TAG} ${MANIFESTIMAGE}:arm64v8-${SEMVER}
794836 fi
795837 docker push ${MANIFESTIMAGE}:amd64-${META_TAG}
796838 docker push ${MANIFESTIMAGE}:amd64-${EXT_RELEASE_TAG}
797839 docker push ${MANIFESTIMAGE}:amd64-latest
840+ docker push ${MANIFESTIMAGE}:arm32v7-${META_TAG}
841+ docker push ${MANIFESTIMAGE}:arm32v7-latest
842+ docker push ${MANIFESTIMAGE}:arm32v7-${EXT_RELEASE_TAG}
798843 docker push ${MANIFESTIMAGE}:arm64v8-${META_TAG}
799844 docker push ${MANIFESTIMAGE}:arm64v8-latest
800845 docker push ${MANIFESTIMAGE}:arm64v8-${EXT_RELEASE_TAG}
801846 if [ -n "${SEMVER}" ]; then
802847 docker push ${MANIFESTIMAGE}:amd64-${SEMVER}
848+ docker push ${MANIFESTIMAGE}:arm32v7-${SEMVER}
803849 docker push ${MANIFESTIMAGE}:arm64v8-${SEMVER}
804850 fi
805851 docker manifest push --purge ${MANIFESTIMAGE}:latest || :
806- docker manifest create ${MANIFESTIMAGE}:latest ${MANIFESTIMAGE}:amd64-latest ${MANIFESTIMAGE}:arm64v8-latest
852+ docker manifest create ${MANIFESTIMAGE}:latest ${MANIFESTIMAGE}:amd64-latest ${MANIFESTIMAGE}:arm32v7-latest ${MANIFESTIMAGE}:arm64v8-latest
853+ docker manifest annotate ${MANIFESTIMAGE}:latest ${MANIFESTIMAGE}:arm32v7-latest --os linux --arch arm
807854 docker manifest annotate ${MANIFESTIMAGE}:latest ${MANIFESTIMAGE}:arm64v8-latest --os linux --arch arm64 --variant v8
808855 docker manifest push --purge ${MANIFESTIMAGE}:${META_TAG} || :
809- docker manifest create ${MANIFESTIMAGE}:${META_TAG} ${MANIFESTIMAGE}:amd64-${META_TAG} ${MANIFESTIMAGE}:arm64v8-${META_TAG}
856+ docker manifest create ${MANIFESTIMAGE}:${META_TAG} ${MANIFESTIMAGE}:amd64-${META_TAG} ${MANIFESTIMAGE}:arm32v7-${META_TAG} ${MANIFESTIMAGE}:arm64v8-${META_TAG}
857+ docker manifest annotate ${MANIFESTIMAGE}:${META_TAG} ${MANIFESTIMAGE}:arm32v7-${META_TAG} --os linux --arch arm
810858 docker manifest annotate ${MANIFESTIMAGE}:${META_TAG} ${MANIFESTIMAGE}:arm64v8-${META_TAG} --os linux --arch arm64 --variant v8
811859 docker manifest push --purge ${MANIFESTIMAGE}:${EXT_RELEASE_TAG} || :
812- docker manifest create ${MANIFESTIMAGE}:${EXT_RELEASE_TAG} ${MANIFESTIMAGE}:amd64-${EXT_RELEASE_TAG} ${MANIFESTIMAGE}:arm64v8-${EXT_RELEASE_TAG}
860+ docker manifest create ${MANIFESTIMAGE}:${EXT_RELEASE_TAG} ${MANIFESTIMAGE}:amd64-${EXT_RELEASE_TAG} ${MANIFESTIMAGE}:arm32v7-${EXT_RELEASE_TAG} ${MANIFESTIMAGE}:arm64v8-${EXT_RELEASE_TAG}
861+ docker manifest annotate ${MANIFESTIMAGE}:${EXT_RELEASE_TAG} ${MANIFESTIMAGE}:arm32v7-${EXT_RELEASE_TAG} --os linux --arch arm
813862 docker manifest annotate ${MANIFESTIMAGE}:${EXT_RELEASE_TAG} ${MANIFESTIMAGE}:arm64v8-${EXT_RELEASE_TAG} --os linux --arch arm64 --variant v8
814863 if [ -n "${SEMVER}" ]; then
815864 docker manifest push --purge ${MANIFESTIMAGE}:${SEMVER} || :
816- docker manifest create ${MANIFESTIMAGE}:${SEMVER} ${MANIFESTIMAGE}:amd64-${SEMVER} ${MANIFESTIMAGE}:arm64v8-${SEMVER}
865+ docker manifest create ${MANIFESTIMAGE}:${SEMVER} ${MANIFESTIMAGE}:amd64-${SEMVER} ${MANIFESTIMAGE}:arm32v7-${SEMVER} ${MANIFESTIMAGE}:arm64v8-${SEMVER}
866+ docker manifest annotate ${MANIFESTIMAGE}:${SEMVER} ${MANIFESTIMAGE}:arm32v7-${SEMVER} --os linux --arch arm
817867 docker manifest annotate ${MANIFESTIMAGE}:${SEMVER} ${MANIFESTIMAGE}:arm64v8-${SEMVER} --os linux --arch arm64 --variant v8
818868 fi
819869 docker manifest push --purge ${MANIFESTIMAGE}:latest
@@ -831,16 +881,21 @@ pipeline {
831881 ${DELETEIMAGE}:amd64-${META_TAG} \
832882 ${DELETEIMAGE}:amd64-latest \
833883 ${DELETEIMAGE}:amd64-${EXT_RELEASE_TAG} \
884+ ${DELETEIMAGE}:arm32v7-${META_TAG} \
885+ ${DELETEIMAGE}:arm32v7-latest \
886+ ${DELETEIMAGE}:arm32v7-${EXT_RELEASE_TAG} \
834887 ${DELETEIMAGE}:arm64v8-${META_TAG} \
835888 ${DELETEIMAGE}:arm64v8-latest \
836889 ${DELETEIMAGE}:arm64v8-${EXT_RELEASE_TAG} || :
837890 if [ -n "${SEMVER}" ]; then
838891 docker rmi \
839892 ${DELETEIMAGE}:amd64-${SEMVER} \
893+ ${DELETEIMAGE}:arm32v7-${SEMVER} \
840894 ${DELETEIMAGE}:arm64v8-${SEMVER} || :
841895 fi
842896 done
843897 docker rmi \
898+ ghcr.io/linuxserver/lsiodev-buildcache:arm32v7-${COMMIT_SHA}-${BUILD_NUMBER} \
844899 ghcr.io/linuxserver/lsiodev-buildcache:arm64v8-${COMMIT_SHA}-${BUILD_NUMBER} || :
845900 '''
846901 }
0 commit comments