@@ -27,7 +27,7 @@ pipeline {
2727 DEV_DOCKERHUB_IMAGE = ' lsiodev/socket-proxy'
2828 PR_DOCKERHUB_IMAGE = ' lspipepr/socket-proxy'
2929 DIST_IMAGE = ' alpine'
30- DIST_REPO = ' http://dl-cdn.alpinelinux.org/alpine/v3.21 /main/'
30+ DIST_REPO = ' http://dl-cdn.alpinelinux.org/alpine/v3.22 /main/'
3131 DIST_REPO_PACKAGES = ' haproxy'
3232 MULTIARCH = ' true'
3333 CI = ' true'
@@ -199,7 +199,7 @@ pipeline {
199199 env. GITLABIMAGE = ' registry.gitlab.com/linuxserver.io/' + env. LS_REPO + ' /' + env. CONTAINER_NAME
200200 env. QUAYIMAGE = ' quay.io/linuxserver.io/' + env. CONTAINER_NAME
201201 if (env. MULTIARCH == ' true' ) {
202- env. CI_TAGS = ' amd64-' + env. EXT_RELEASE_CLEAN + ' -ls' + env. LS_TAG_NUMBER + ' |arm64v8-' + env. EXT_RELEASE_CLEAN + ' -ls' + env. LS_TAG_NUMBER
202+ env. CI_TAGS = ' amd64-' + env. EXT_RELEASE_CLEAN + ' -ls' + env. LS_TAG_NUMBER + ' |riscv64- ' + env . EXT_RELEASE_CLEAN + ' -ls ' + env . LS_TAG_NUMBER + ' | arm64v8-' + env. EXT_RELEASE_CLEAN + ' -ls' + env. LS_TAG_NUMBER
203203 } else {
204204 env. CI_TAGS = env. EXT_RELEASE_CLEAN + ' -ls' + env. LS_TAG_NUMBER
205205 }
@@ -223,7 +223,7 @@ pipeline {
223223 env. GITLABIMAGE = ' registry.gitlab.com/linuxserver.io/' + env. LS_REPO + ' /lsiodev-' + env. CONTAINER_NAME
224224 env. QUAYIMAGE = ' quay.io/linuxserver.io/lsiodev-' + env. CONTAINER_NAME
225225 if (env. MULTIARCH == ' true' ) {
226- 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
226+ env. CI_TAGS = ' amd64-' + env. EXT_RELEASE_CLEAN + ' -pkg-' + env. PACKAGE_TAG + ' -dev-' + env. COMMIT_SHA + ' |riscv64- ' + 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
227227 } else {
228228 env. CI_TAGS = env. EXT_RELEASE_CLEAN + ' -pkg-' + env. PACKAGE_TAG + ' -dev-' + env. COMMIT_SHA
229229 }
@@ -247,7 +247,7 @@ pipeline {
247247 env. GITLABIMAGE = ' registry.gitlab.com/linuxserver.io/' + env. LS_REPO + ' /lspipepr-' + env. CONTAINER_NAME
248248 env. QUAYIMAGE = ' quay.io/linuxserver.io/lspipepr-' + env. CONTAINER_NAME
249249 if (env. MULTIARCH == ' true' ) {
250- 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
250+ env. CI_TAGS = ' amd64-' + env. EXT_RELEASE_CLEAN + ' -pkg-' + env. PACKAGE_TAG + ' -dev-' + env. COMMIT_SHA + ' -pr-' + env. PULL_REQUEST + ' |riscv64- ' + 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
251251 } else {
252252 env. CI_TAGS = env. EXT_RELEASE_CLEAN + ' -pkg-' + env. PACKAGE_TAG + ' -dev-' + env. COMMIT_SHA + ' -pr-' + env. PULL_REQUEST
253253 }
@@ -698,6 +698,73 @@ pipeline {
698698 '''
699699 }
700700 }
701+ stage(' Build RISCV64' ) {
702+ agent {
703+ label ' RISCV64'
704+ }
705+ steps {
706+ echo " Running on node: ${ NODE_NAME} "
707+ sh " sed -r -i 's|(^FROM .*)|\\ 1\\ n\\ nENV LSIO_FIRST_PARTY=true|g' Dockerfile.riscv64"
708+ sh " docker buildx build \
709+ --label \" org.opencontainers.image.created=${ GITHUB_DATE} \" \
710+ --label \" org.opencontainers.image.authors=linuxserver.io\" \
711+ --label \" org.opencontainers.image.url=https://github.com/linuxserver/docker-socket-proxy/packages\" \
712+ --label \" org.opencontainers.image.documentation=https://docs.linuxserver.io/images/docker-socket-proxy\" \
713+ --label \" org.opencontainers.image.source=https://github.com/linuxserver/docker-socket-proxy\" \
714+ --label \" org.opencontainers.image.version=${ EXT_RELEASE_CLEAN} -ls${ LS_TAG_NUMBER} \" \
715+ --label \" org.opencontainers.image.revision=${ COMMIT_SHA} \" \
716+ --label \" org.opencontainers.image.vendor=linuxserver.io\" \
717+ --label \" org.opencontainers.image.licenses=GPL-3.0-only\" \
718+ --label \" org.opencontainers.image.ref.name=${ COMMIT_SHA} \" \
719+ --label \" org.opencontainers.image.title=Socket-proxy\" \
720+ --label \" org.opencontainers.image.description=The Socket Proxy is a security-enhanced proxy which allows you to apply access rules to the Docker socket, limiting the attack surface for containers such as watchtower or Traefik that need to use it.\" \
721+ --no-cache --pull -f Dockerfile.riscv64 -t ${ IMAGE} :riscv64-${ META_TAG} --platform=linux/riscv64 \
722+ --provenance=true --sbom=true --builder=container --load \
723+ --build-arg ${ BUILD_VERSION_ARG} =${ EXT_RELEASE} --build-arg VERSION=\" ${ VERSION_TAG} \" --build-arg BUILD_DATE=${ GITHUB_DATE} ."
724+ sh ''' #! /bin/bash
725+ set -e
726+ IFS=',' read -ra CACHE <<< "$BUILDCACHE"
727+ for i in "${CACHE[@]}"; do
728+ docker tag ${IMAGE}:riscv64-${META_TAG} ${i}:riscv64-${COMMIT_SHA}-${BUILD_NUMBER}
729+ done
730+ '''
731+ withCredentials([
732+ [
733+ $class : ' UsernamePasswordMultiBinding' ,
734+ credentialsId : ' Quay.io-Robot' ,
735+ usernameVariable : ' QUAYUSER' ,
736+ passwordVariable : ' QUAYPASS'
737+ ]
738+ ]) {
739+ retry_backoff(5 ,5 ) {
740+ sh ''' #! /bin/bash
741+ set -e
742+ echo $DOCKERHUB_TOKEN | docker login -u linuxserverci --password-stdin
743+ echo $GITHUB_TOKEN | docker login ghcr.io -u LinuxServer-CI --password-stdin
744+ echo $GITLAB_TOKEN | docker login registry.gitlab.com -u LinuxServer.io --password-stdin
745+ echo $QUAYPASS | docker login quay.io -u $QUAYUSER --password-stdin
746+ if [[ "${PACKAGE_CHECK}" != "true" ]]; then
747+ IFS=',' read -ra CACHE <<< "$BUILDCACHE"
748+ for i in "${CACHE[@]}"; do
749+ docker push ${i}:riscv64-${COMMIT_SHA}-${BUILD_NUMBER} &
750+ done
751+ for p in $(jobs -p); do
752+ wait "$p" || { echo "job $p failed" >&2; exit 1; }
753+ done
754+ fi
755+ '''
756+ }
757+ }
758+ sh ''' #! /bin/bash
759+ containers=$(docker ps -aq)
760+ if [[ -n "${containers}" ]]; then
761+ docker stop ${containers}
762+ fi
763+ docker system prune -f --volumes || :
764+ docker image prune -af || :
765+ '''
766+ }
767+ }
701768 }
702769 }
703770 // Take the image we just built and dump package versions for comparison
@@ -811,6 +878,8 @@ pipeline {
811878 if [ "${MULTIARCH}" == "true" ]; then
812879 docker pull ghcr.io/linuxserver/lsiodev-buildcache:arm64v8-${COMMIT_SHA}-${BUILD_NUMBER} --platform=arm64
813880 docker tag ghcr.io/linuxserver/lsiodev-buildcache:arm64v8-${COMMIT_SHA}-${BUILD_NUMBER} ${IMAGE}:arm64v8-${META_TAG}
881+ docker pull ghcr.io/linuxserver/lsiodev-buildcache:riscv64-${COMMIT_SHA}-${BUILD_NUMBER} --platform=riscv64
882+ docker tag ghcr.io/linuxserver/lsiodev-buildcache:riscv64-${COMMIT_SHA}-${BUILD_NUMBER} ${IMAGE}:riscv64-${META_TAG}
814883 fi
815884 docker run --rm \
816885 --shm-size=1gb \
@@ -885,18 +954,20 @@ pipeline {
885954 done
886955 docker buildx imagetools create --prefer-index=false -t ${MANIFESTIMAGE}:amd64-${META_TAG} -t ${MANIFESTIMAGE}:amd64-latest -t ${MANIFESTIMAGE}:amd64-${EXT_RELEASE_TAG} ${CACHEIMAGE}:amd64-${COMMIT_SHA}-${BUILD_NUMBER}
887956 docker buildx imagetools create --prefer-index=false -t ${MANIFESTIMAGE}:arm64v8-${META_TAG} -t ${MANIFESTIMAGE}:arm64v8-latest -t ${MANIFESTIMAGE}:arm64v8-${EXT_RELEASE_TAG} ${CACHEIMAGE}:arm64v8-${COMMIT_SHA}-${BUILD_NUMBER}
957+ docker buildx imagetools create --prefer-index=false -t ${MANIFESTIMAGE}:riscv64-${META_TAG} -t ${MANIFESTIMAGE}:riscv64-latest -t ${MANIFESTIMAGE}:riscv64-${EXT_RELEASE_TAG} ${CACHEIMAGE}:riscv64-${COMMIT_SHA}-${BUILD_NUMBER}
888958 if [ -n "${SEMVER}" ]; then
889959 docker buildx imagetools create --prefer-index=false -t ${MANIFESTIMAGE}:amd64-${SEMVER} ${CACHEIMAGE}:amd64-${COMMIT_SHA}-${BUILD_NUMBER}
890960 docker buildx imagetools create --prefer-index=false -t ${MANIFESTIMAGE}:arm64v8-${SEMVER} ${CACHEIMAGE}:arm64v8-${COMMIT_SHA}-${BUILD_NUMBER}
961+ docker buildx imagetools create --prefer-index=false -t ${MANIFESTIMAGE}:riscv64-${SEMVER} ${CACHEIMAGE}:riscv64-${COMMIT_SHA}-${BUILD_NUMBER}
891962 fi
892963 done
893964 for MANIFESTIMAGE in "${IMAGE}" "${GITLABIMAGE}" "${GITHUBIMAGE}" "${QUAYIMAGE}"; do
894- docker buildx imagetools create -t ${MANIFESTIMAGE}:latest ${MANIFESTIMAGE}:amd64-latest ${MANIFESTIMAGE}:arm64v8-latest
895- docker buildx imagetools create -t ${MANIFESTIMAGE}:${META_TAG} ${MANIFESTIMAGE}:amd64-${META_TAG} ${MANIFESTIMAGE}:arm64v8-${META_TAG}
965+ docker buildx imagetools create -t ${MANIFESTIMAGE}:latest ${MANIFESTIMAGE}:amd64-latest ${MANIFESTIMAGE}:riscv64-latest ${MANIFESTIMAGE}: arm64v8-latest
966+ docker buildx imagetools create -t ${MANIFESTIMAGE}:${META_TAG} ${MANIFESTIMAGE}:amd64-${META_TAG} ${MANIFESTIMAGE}:riscv64-${META_TAG} ${MANIFESTIMAGE}: arm64v8-${META_TAG}
896967
897- docker buildx imagetools create -t ${MANIFESTIMAGE}:${EXT_RELEASE_TAG} ${MANIFESTIMAGE}:amd64-${EXT_RELEASE_TAG} ${MANIFESTIMAGE}:arm64v8-${EXT_RELEASE_TAG}
968+ docker buildx imagetools create -t ${MANIFESTIMAGE}:${EXT_RELEASE_TAG} ${MANIFESTIMAGE}:amd64-${EXT_RELEASE_TAG} ${MANIFESTIMAGE}:riscv64-${EXT_RELEASE_TAG} ${MANIFESTIMAGE}: arm64v8-${EXT_RELEASE_TAG}
898969 if [ -n "${SEMVER}" ]; then
899- docker buildx imagetools create -t ${MANIFESTIMAGE}:${SEMVER} ${MANIFESTIMAGE}:amd64-${SEMVER} ${MANIFESTIMAGE}:arm64v8-${SEMVER}
970+ docker buildx imagetools create -t ${MANIFESTIMAGE}:${SEMVER} ${MANIFESTIMAGE}:amd64-${SEMVER} ${MANIFESTIMAGE}:riscv64-${SEMVER} ${MANIFESTIMAGE}: arm64v8-${SEMVER}
900971 fi
901972 done
902973 '''
0 commit comments