@@ -27,7 +27,7 @@ pipeline {
27
27
DEV_DOCKERHUB_IMAGE = ' lsiodev/socket-proxy'
28
28
PR_DOCKERHUB_IMAGE = ' lspipepr/socket-proxy'
29
29
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/'
31
31
DIST_REPO_PACKAGES = ' haproxy'
32
32
MULTIARCH = ' true'
33
33
CI = ' true'
@@ -199,7 +199,7 @@ pipeline {
199
199
env. GITLABIMAGE = ' registry.gitlab.com/linuxserver.io/' + env. LS_REPO + ' /' + env. CONTAINER_NAME
200
200
env. QUAYIMAGE = ' quay.io/linuxserver.io/' + env. CONTAINER_NAME
201
201
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
203
203
} else {
204
204
env. CI_TAGS = env. EXT_RELEASE_CLEAN + ' -ls' + env. LS_TAG_NUMBER
205
205
}
@@ -223,7 +223,7 @@ pipeline {
223
223
env. GITLABIMAGE = ' registry.gitlab.com/linuxserver.io/' + env. LS_REPO + ' /lsiodev-' + env. CONTAINER_NAME
224
224
env. QUAYIMAGE = ' quay.io/linuxserver.io/lsiodev-' + env. CONTAINER_NAME
225
225
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
227
227
} else {
228
228
env. CI_TAGS = env. EXT_RELEASE_CLEAN + ' -pkg-' + env. PACKAGE_TAG + ' -dev-' + env. COMMIT_SHA
229
229
}
@@ -247,7 +247,7 @@ pipeline {
247
247
env. GITLABIMAGE = ' registry.gitlab.com/linuxserver.io/' + env. LS_REPO + ' /lspipepr-' + env. CONTAINER_NAME
248
248
env. QUAYIMAGE = ' quay.io/linuxserver.io/lspipepr-' + env. CONTAINER_NAME
249
249
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
251
251
} else {
252
252
env. CI_TAGS = env. EXT_RELEASE_CLEAN + ' -pkg-' + env. PACKAGE_TAG + ' -dev-' + env. COMMIT_SHA + ' -pr-' + env. PULL_REQUEST
253
253
}
@@ -698,6 +698,73 @@ pipeline {
698
698
'''
699
699
}
700
700
}
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
+ }
701
768
}
702
769
}
703
770
// Take the image we just built and dump package versions for comparison
@@ -811,6 +878,8 @@ pipeline {
811
878
if [ "${MULTIARCH}" == "true" ]; then
812
879
docker pull ghcr.io/linuxserver/lsiodev-buildcache:arm64v8-${COMMIT_SHA}-${BUILD_NUMBER} --platform=arm64
813
880
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}
814
883
fi
815
884
docker run --rm \
816
885
--shm-size=1gb \
@@ -885,18 +954,20 @@ pipeline {
885
954
done
886
955
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}
887
956
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}
888
958
if [ -n "${SEMVER}" ]; then
889
959
docker buildx imagetools create --prefer-index=false -t ${MANIFESTIMAGE}:amd64-${SEMVER} ${CACHEIMAGE}:amd64-${COMMIT_SHA}-${BUILD_NUMBER}
890
960
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}
891
962
fi
892
963
done
893
964
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}
896
967
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}
898
969
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}
900
971
fi
901
972
done
902
973
'''
0 commit comments