@@ -8,7 +8,7 @@ pipeline {
8
8
}
9
9
// Input to determine if this is a package check
10
10
parameters {
11
- string(defaultValue : ' false' , description : ' package check run' , name : ' PACKAGE_CHECK' )
11
+ string(defaultValue : ' false' , description : ' package check run' , name : ' PACKAGE_CHECK' )
12
12
}
13
13
// Configuration for the variables used for this specific repo
14
14
environment {
@@ -195,6 +195,7 @@ pipeline {
195
195
env. VERSION_TAG = env. EXT_RELEASE_CLEAN + ' -ls' + env. LS_TAG_NUMBER
196
196
env. META_TAG = env. EXT_RELEASE_CLEAN + ' -ls' + env. LS_TAG_NUMBER
197
197
env. EXT_RELEASE_TAG = ' version-' + env. EXT_RELEASE_CLEAN
198
+ env. BUILDCACHE = ' docker.io/lsiodev/buildcache,registry.gitlab.com/linuxserver.io/docker-jenkins-builder/lsiodev-buildcache,ghcr.io/linuxserver/lsiodev-buildcache,quay.io/linuxserver.io/lsiodev-buildcache'
198
199
}
199
200
}
200
201
}
@@ -219,6 +220,7 @@ pipeline {
219
220
env. META_TAG = env. EXT_RELEASE_CLEAN + ' -pkg-' + env. PACKAGE_TAG + ' -dev-' + env. COMMIT_SHA
220
221
env. EXT_RELEASE_TAG = ' version-' + env. EXT_RELEASE_CLEAN
221
222
env. DOCKERHUB_LINK = ' https://hub.docker.com/r/' + env. DEV_DOCKERHUB_IMAGE + ' /tags/'
223
+ env. BUILDCACHE = ' docker.io/lsiodev/buildcache,registry.gitlab.com/linuxserver.io/docker-jenkins-builder/lsiodev-buildcache,ghcr.io/linuxserver/lsiodev-buildcache,quay.io/linuxserver.io/lsiodev-buildcache'
222
224
}
223
225
}
224
226
}
@@ -243,6 +245,7 @@ pipeline {
243
245
env. EXT_RELEASE_TAG = ' version-' + env. EXT_RELEASE_CLEAN
244
246
env. CODE_URL = ' https://github.com/' + env. LS_USER + ' /' + env. LS_REPO + ' /pull/' + env. PULL_REQUEST
245
247
env. DOCKERHUB_LINK = ' https://hub.docker.com/r/' + env. PR_DOCKERHUB_IMAGE + ' /tags/'
248
+ env. BUILDCACHE = ' docker.io/lsiodev/buildcache,registry.gitlab.com/linuxserver.io/docker-jenkins-builder/lsiodev-buildcache,ghcr.io/linuxserver/lsiodev-buildcache,quay.io/linuxserver.io/lsiodev-buildcache'
246
249
}
247
250
}
248
251
}
@@ -513,8 +516,40 @@ pipeline {
513
516
--label \" org.opencontainers.image.title=Socket-proxy\" \
514
517
--label \" org.opencontainers.image.description=socket-proxy image by linuxserver.io\" \
515
518
--no-cache --pull -t ${ IMAGE} :${ META_TAG} --platform=linux/amd64 \
516
- --provenance=false --sbom=false \
519
+ --provenance=false --sbom=false --builder=container --load \
517
520
--build-arg ${ BUILD_VERSION_ARG} =${ EXT_RELEASE} --build-arg VERSION=\" ${ VERSION_TAG} \" --build-arg BUILD_DATE=${ GITHUB_DATE} ."
521
+ sh ''' #! /bin/bash
522
+ set -e
523
+ IFS=',' read -ra CACHE <<< "$BUILDCACHE"
524
+ for i in "${CACHE[@]}"; do
525
+ docker tag ${IMAGE}:${META_TAG} ${i}:amd64-${COMMIT_SHA}-${BUILD_NUMBER}
526
+ done
527
+ '''
528
+ withCredentials([
529
+ [
530
+ $class : ' UsernamePasswordMultiBinding' ,
531
+ credentialsId : ' Quay.io-Robot' ,
532
+ usernameVariable : ' QUAYUSER' ,
533
+ passwordVariable : ' QUAYPASS'
534
+ ]
535
+ ]) {
536
+ retry_backoff(5 ,5 ) {
537
+ sh ''' #! /bin/bash
538
+ set -e
539
+ echo $DOCKERHUB_TOKEN | docker login -u linuxserverci --password-stdin
540
+ echo $GITHUB_TOKEN | docker login ghcr.io -u LinuxServer-CI --password-stdin
541
+ echo $GITLAB_TOKEN | docker login registry.gitlab.com -u LinuxServer.io --password-stdin
542
+ echo $QUAYPASS | docker login quay.io -u $QUAYUSER --password-stdin
543
+ if [[ "${PACKAGE_CHECK}" != "true" ]]; then
544
+ IFS=',' read -ra CACHE <<< "$BUILDCACHE"
545
+ for i in "${CACHE[@]}"; do
546
+ docker push ${i}:amd64-${COMMIT_SHA}-${BUILD_NUMBER} &
547
+ done
548
+ wait
549
+ fi
550
+ '''
551
+ }
552
+ }
518
553
}
519
554
}
520
555
// Build MultiArch Docker containers for push to LS Repo
@@ -545,8 +580,40 @@ pipeline {
545
580
--label \" org.opencontainers.image.title=Socket-proxy\" \
546
581
--label \" org.opencontainers.image.description=socket-proxy image by linuxserver.io\" \
547
582
--no-cache --pull -t ${ IMAGE} :amd64-${ META_TAG} --platform=linux/amd64 \
548
- --provenance=false --sbom=false \
583
+ --provenance=false --sbom=false --builder=container --load \
549
584
--build-arg ${ BUILD_VERSION_ARG} =${ EXT_RELEASE} --build-arg VERSION=\" ${ VERSION_TAG} \" --build-arg BUILD_DATE=${ GITHUB_DATE} ."
585
+ sh ''' #! /bin/bash
586
+ set -e
587
+ IFS=',' read -ra CACHE <<< "$BUILDCACHE"
588
+ for i in "${CACHE[@]}"; do
589
+ docker tag ${IMAGE}:amd64-${META_TAG} ${i}:amd64-${COMMIT_SHA}-${BUILD_NUMBER}
590
+ done
591
+ '''
592
+ withCredentials([
593
+ [
594
+ $class : ' UsernamePasswordMultiBinding' ,
595
+ credentialsId : ' Quay.io-Robot' ,
596
+ usernameVariable : ' QUAYUSER' ,
597
+ passwordVariable : ' QUAYPASS'
598
+ ]
599
+ ]) {
600
+ retry_backoff(5 ,5 ) {
601
+ sh ''' #! /bin/bash
602
+ set -e
603
+ echo $DOCKERHUB_TOKEN | docker login -u linuxserverci --password-stdin
604
+ echo $GITHUB_TOKEN | docker login ghcr.io -u LinuxServer-CI --password-stdin
605
+ echo $GITLAB_TOKEN | docker login registry.gitlab.com -u LinuxServer.io --password-stdin
606
+ echo $QUAYPASS | docker login quay.io -u $QUAYUSER --password-stdin
607
+ if [[ "${PACKAGE_CHECK}" != "true" ]]; then
608
+ IFS=',' read -ra CACHE <<< "$BUILDCACHE"
609
+ for i in "${CACHE[@]}"; do
610
+ docker push ${i}:amd64-${COMMIT_SHA}-${BUILD_NUMBER} &
611
+ done
612
+ wait
613
+ fi
614
+ '''
615
+ }
616
+ }
550
617
}
551
618
}
552
619
stage(' Build ARM64' ) {
@@ -555,10 +622,6 @@ pipeline {
555
622
}
556
623
steps {
557
624
echo " Running on node: ${ NODE_NAME} "
558
- echo ' Logging into Github'
559
- sh ''' #! /bin/bash
560
- echo $GITHUB_TOKEN | docker login ghcr.io -u LinuxServer-CI --password-stdin
561
- '''
562
625
sh " sed -r -i 's|(^FROM .*)|\\ 1\\ n\\ nENV LSIO_FIRST_PARTY=true|g' Dockerfile.aarch64"
563
626
sh " docker buildx build \
564
627
--label \" org.opencontainers.image.created=${ GITHUB_DATE} \" \
@@ -574,18 +637,47 @@ pipeline {
574
637
--label \" org.opencontainers.image.title=Socket-proxy\" \
575
638
--label \" org.opencontainers.image.description=socket-proxy image by linuxserver.io\" \
576
639
--no-cache --pull -f Dockerfile.aarch64 -t ${ IMAGE} :arm64v8-${ META_TAG} --platform=linux/arm64 \
577
- --provenance=false --sbom=false \
640
+ --provenance=false --sbom=false --builder=container --load \
578
641
--build-arg ${ BUILD_VERSION_ARG} =${ EXT_RELEASE} --build-arg VERSION=\" ${ VERSION_TAG} \" --build-arg BUILD_DATE=${ GITHUB_DATE} ."
579
- sh " docker tag ${ IMAGE} :arm64v8-${ META_TAG} ghcr.io/linuxserver/lsiodev-buildcache:arm64v8-${ COMMIT_SHA} -${ BUILD_NUMBER} "
580
- retry_backoff(5 ,5 ) {
581
- sh " docker push ghcr.io/linuxserver/lsiodev-buildcache:arm64v8-${ COMMIT_SHA} -${ BUILD_NUMBER} "
642
+ sh ''' #! /bin/bash
643
+ set -e
644
+ IFS=',' read -ra CACHE <<< "$BUILDCACHE"
645
+ for i in "${CACHE[@]}"; do
646
+ docker tag ${IMAGE}:arm64v8-${META_TAG} ${i}:arm64v8-${COMMIT_SHA}-${BUILD_NUMBER}
647
+ done
648
+ '''
649
+ withCredentials([
650
+ [
651
+ $class : ' UsernamePasswordMultiBinding' ,
652
+ credentialsId : ' Quay.io-Robot' ,
653
+ usernameVariable : ' QUAYUSER' ,
654
+ passwordVariable : ' QUAYPASS'
655
+ ]
656
+ ]) {
657
+ retry_backoff(5 ,5 ) {
658
+ sh ''' #! /bin/bash
659
+ set -e
660
+ echo $DOCKERHUB_TOKEN | docker login -u linuxserverci --password-stdin
661
+ echo $GITHUB_TOKEN | docker login ghcr.io -u LinuxServer-CI --password-stdin
662
+ echo $GITLAB_TOKEN | docker login registry.gitlab.com -u LinuxServer.io --password-stdin
663
+ echo $QUAYPASS | docker login quay.io -u $QUAYUSER --password-stdin
664
+ if [[ "${PACKAGE_CHECK}" != "true" ]]; then
665
+ IFS=',' read -ra CACHE <<< "$BUILDCACHE"
666
+ for i in "${CACHE[@]}"; do
667
+ docker push ${i}:arm64v8-${COMMIT_SHA}-${BUILD_NUMBER} &
668
+ done
669
+ wait
670
+ fi
671
+ '''
672
+ }
582
673
}
583
674
sh ''' #! /bin/bash
584
675
containers=$(docker ps -aq)
585
676
if [[ -n "${containers}" ]]; then
586
677
docker stop ${containers}
587
678
fi
588
- docker system prune -af --volumes || : '''
679
+ docker system prune -af --volumes || :
680
+ '''
589
681
}
590
682
}
591
683
}
@@ -735,37 +827,23 @@ pipeline {
735
827
environment name : ' EXIT_STATUS' , value : ' '
736
828
}
737
829
steps {
738
- withCredentials([
739
- [
740
- $class : ' UsernamePasswordMultiBinding' ,
741
- credentialsId : ' Quay.io-Robot' ,
742
- usernameVariable : ' QUAYUSER' ,
743
- passwordVariable : ' QUAYPASS'
744
- ]
745
- ]) {
746
- retry_backoff(5 ,5 ) {
747
- sh ''' #! /bin/bash
748
- set -e
749
- echo $DOCKERHUB_TOKEN | docker login -u linuxserverci --password-stdin
750
- echo $GITHUB_TOKEN | docker login ghcr.io -u LinuxServer-CI --password-stdin
751
- echo $GITLAB_TOKEN | docker login registry.gitlab.com -u LinuxServer.io --password-stdin
752
- echo $QUAYPASS | docker login quay.io -u $QUAYUSER --password-stdin
753
- for PUSHIMAGE in "${GITHUBIMAGE}" "${GITLABIMAGE}" "${QUAYIMAGE}" "${IMAGE}"; do
754
- docker tag ${IMAGE}:${META_TAG} ${PUSHIMAGE}:${META_TAG}
755
- docker tag ${PUSHIMAGE}:${META_TAG} ${PUSHIMAGE}:latest
756
- docker tag ${PUSHIMAGE}:${META_TAG} ${PUSHIMAGE}:${EXT_RELEASE_TAG}
757
- if [ -n "${SEMVER}" ]; then
758
- docker tag ${PUSHIMAGE}:${META_TAG} ${PUSHIMAGE}:${SEMVER}
759
- fi
760
- docker push ${PUSHIMAGE}:latest
761
- docker push ${PUSHIMAGE}:${META_TAG}
762
- docker push ${PUSHIMAGE}:${EXT_RELEASE_TAG}
763
- if [ -n "${SEMVER}" ]; then
764
- docker push ${PUSHIMAGE}:${SEMVER}
765
- fi
830
+ retry_backoff(5 ,5 ) {
831
+ sh ''' #! /bin/bash
832
+ set -e
833
+ for PUSHIMAGE in "${IMAGE}" "${GITLABIMAGE}" "${GITHUBIMAGE}" "${QUAYIMAGE}"; do
834
+ [[ ${PUSHIMAGE%%/*} =~ \\ . ]] && PUSHIMAGEPLUS="${PUSHIMAGE}" || PUSHIMAGEPLUS="docker.io/${PUSHIMAGE}"
835
+ IFS=',' read -ra CACHE <<< "$BUILDCACHE"
836
+ for i in "${CACHE[@]}"; do
837
+ if [[ "${PUSHIMAGEPLUS}" == "$(cut -d "/" -f1 <<< ${i})"* ]]; then
838
+ CACHEIMAGE=${i}
839
+ fi
766
840
done
767
- '''
768
- }
841
+ docker buildx imagetools create --prefer-index=false -t ${PUSHIMAGE}:${META_TAG} -t ${PUSHIMAGE}:latest -t ${PUSHIMAGE}:${EXT_RELEASE_TAG} ${CACHEIMAGE}:amd64-${COMMIT_SHA}-${BUILD_NUMBER}
842
+ if [ -n "${SEMVER}" ]; then
843
+ docker buildx imagetools create --prefer-index=false -t ${PUSHIMAGE}:${SEMVER} ${CACHEIMAGE}:amd64-${COMMIT_SHA}-${BUILD_NUMBER}
844
+ fi
845
+ done
846
+ '''
769
847
}
770
848
}
771
849
}
@@ -776,57 +854,34 @@ pipeline {
776
854
environment name : ' EXIT_STATUS' , value : ' '
777
855
}
778
856
steps {
779
- withCredentials([
780
- [
781
- $class : ' UsernamePasswordMultiBinding' ,
782
- credentialsId : ' Quay.io-Robot' ,
783
- usernameVariable : ' QUAYUSER' ,
784
- passwordVariable : ' QUAYPASS'
785
- ]
786
- ]) {
787
- retry_backoff(5 ,5 ) {
788
- sh ''' #! /bin/bash
789
- set -e
790
- echo $DOCKERHUB_TOKEN | docker login -u linuxserverci --password-stdin
791
- echo $GITHUB_TOKEN | docker login ghcr.io -u LinuxServer-CI --password-stdin
792
- echo $GITLAB_TOKEN | docker login registry.gitlab.com -u LinuxServer.io --password-stdin
793
- echo $QUAYPASS | docker login quay.io -u $QUAYUSER --password-stdin
794
- if [ "${CI}" == "false" ]; then
795
- docker pull ghcr.io/linuxserver/lsiodev-buildcache:arm64v8-${COMMIT_SHA}-${BUILD_NUMBER} --platform=arm64
796
- docker tag ghcr.io/linuxserver/lsiodev-buildcache:arm64v8-${COMMIT_SHA}-${BUILD_NUMBER} ${IMAGE}:arm64v8-${META_TAG}
797
- fi
798
- for MANIFESTIMAGE in "${IMAGE}" "${GITLABIMAGE}" "${GITHUBIMAGE}" "${QUAYIMAGE}"; do
799
- docker tag ${IMAGE}:amd64-${META_TAG} ${MANIFESTIMAGE}:amd64-${META_TAG}
800
- docker tag ${MANIFESTIMAGE}:amd64-${META_TAG} ${MANIFESTIMAGE}:amd64-latest
801
- docker tag ${MANIFESTIMAGE}:amd64-${META_TAG} ${MANIFESTIMAGE}:amd64-${EXT_RELEASE_TAG}
802
- docker tag ${IMAGE}:arm64v8-${META_TAG} ${MANIFESTIMAGE}:arm64v8-${META_TAG}
803
- docker tag ${MANIFESTIMAGE}:arm64v8-${META_TAG} ${MANIFESTIMAGE}:arm64v8-latest
804
- docker tag ${MANIFESTIMAGE}:arm64v8-${META_TAG} ${MANIFESTIMAGE}:arm64v8-${EXT_RELEASE_TAG}
805
- if [ -n "${SEMVER}" ]; then
806
- docker tag ${MANIFESTIMAGE}:amd64-${META_TAG} ${MANIFESTIMAGE}:amd64-${SEMVER}
807
- docker tag ${MANIFESTIMAGE}:arm64v8-${META_TAG} ${MANIFESTIMAGE}:arm64v8-${SEMVER}
808
- fi
809
- docker push ${MANIFESTIMAGE}:amd64-${META_TAG}
810
- docker push ${MANIFESTIMAGE}:amd64-${EXT_RELEASE_TAG}
811
- docker push ${MANIFESTIMAGE}:amd64-latest
812
- docker push ${MANIFESTIMAGE}:arm64v8-${META_TAG}
813
- docker push ${MANIFESTIMAGE}:arm64v8-latest
814
- docker push ${MANIFESTIMAGE}:arm64v8-${EXT_RELEASE_TAG}
815
- if [ -n "${SEMVER}" ]; then
816
- docker push ${MANIFESTIMAGE}:amd64-${SEMVER}
817
- docker push ${MANIFESTIMAGE}:arm64v8-${SEMVER}
818
- fi
819
- done
820
- for MANIFESTIMAGE in "${IMAGE}" "${GITLABIMAGE}" "${GITHUBIMAGE}" "${QUAYIMAGE}"; do
821
- docker buildx imagetools create -t ${MANIFESTIMAGE}:latest ${MANIFESTIMAGE}:amd64-latest ${MANIFESTIMAGE}:arm64v8-latest
822
- docker buildx imagetools create -t ${MANIFESTIMAGE}:${META_TAG} ${MANIFESTIMAGE}:amd64-${META_TAG} ${MANIFESTIMAGE}:arm64v8-${META_TAG}
823
- docker buildx imagetools create -t ${MANIFESTIMAGE}:${EXT_RELEASE_TAG} ${MANIFESTIMAGE}:amd64-${EXT_RELEASE_TAG} ${MANIFESTIMAGE}:arm64v8-${EXT_RELEASE_TAG}
824
- if [ -n "${SEMVER}" ]; then
825
- docker buildx imagetools create -t ${MANIFESTIMAGE}:${SEMVER} ${MANIFESTIMAGE}:amd64-${SEMVER} ${MANIFESTIMAGE}:arm64v8-${SEMVER}
826
- fi
857
+ retry_backoff(5 ,5 ) {
858
+ sh ''' #! /bin/bash
859
+ set -e
860
+ for MANIFESTIMAGE in "${IMAGE}" "${GITLABIMAGE}" "${GITHUBIMAGE}" "${QUAYIMAGE}"; do
861
+ [[ ${MANIFESTIMAGE%%/*} =~ \\ . ]] && MANIFESTIMAGEPLUS="${MANIFESTIMAGE}" || MANIFESTIMAGEPLUS="docker.io/${MANIFESTIMAGE}"
862
+ IFS=',' read -ra CACHE <<< "$BUILDCACHE"
863
+ for i in "${CACHE[@]}"; do
864
+ if [[ "${MANIFESTIMAGEPLUS}" == "$(cut -d "/" -f1 <<< ${i})"* ]]; then
865
+ CACHEIMAGE=${i}
866
+ fi
827
867
done
828
- '''
829
- }
868
+ 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}
869
+ 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}
870
+ if [ -n "${SEMVER}" ]; then
871
+ docker buildx imagetools create --prefer-index=false -t ${MANIFESTIMAGE}:amd64-${SEMVER} ${CACHEIMAGE}:amd64-${COMMIT_SHA}-${BUILD_NUMBER}
872
+ docker buildx imagetools create --prefer-index=false -t ${MANIFESTIMAGE}:arm64v8-${SEMVER} ${CACHEIMAGE}:arm64v8-${COMMIT_SHA}-${BUILD_NUMBER}
873
+ fi
874
+ done
875
+ for MANIFESTIMAGE in "${IMAGE}" "${GITLABIMAGE}" "${GITHUBIMAGE}" "${QUAYIMAGE}"; do
876
+ docker buildx imagetools create -t ${MANIFESTIMAGE}:latest ${MANIFESTIMAGE}:amd64-latest ${MANIFESTIMAGE}:arm64v8-latest
877
+ docker buildx imagetools create -t ${MANIFESTIMAGE}:${META_TAG} ${MANIFESTIMAGE}:amd64-${META_TAG} ${MANIFESTIMAGE}:arm64v8-${META_TAG}
878
+
879
+ docker buildx imagetools create -t ${MANIFESTIMAGE}:${EXT_RELEASE_TAG} ${MANIFESTIMAGE}:amd64-${EXT_RELEASE_TAG} ${MANIFESTIMAGE}:arm64v8-${EXT_RELEASE_TAG}
880
+ if [ -n "${SEMVER}" ]; then
881
+ docker buildx imagetools create -t ${MANIFESTIMAGE}:${SEMVER} ${MANIFESTIMAGE}:amd64-${SEMVER} ${MANIFESTIMAGE}:arm64v8-${SEMVER}
882
+ fi
883
+ done
884
+ '''
830
885
}
831
886
}
832
887
}
0 commit comments