Skip to content

Commit eb82c4c

Browse files
Bot Updating Templated Files
1 parent f3b3d16 commit eb82c4c

File tree

1 file changed

+147
-92
lines changed

1 file changed

+147
-92
lines changed

Jenkinsfile

Lines changed: 147 additions & 92 deletions
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@ pipeline {
88
}
99
// Input to determine if this is a package check
1010
parameters {
11-
string(defaultValue: 'false', description: 'package check run', name: 'PACKAGE_CHECK')
11+
string(defaultValue: 'false', description: 'package check run', name: 'PACKAGE_CHECK')
1212
}
1313
// Configuration for the variables used for this specific repo
1414
environment {
@@ -195,6 +195,7 @@ pipeline {
195195
env.VERSION_TAG = env.EXT_RELEASE_CLEAN + '-ls' + env.LS_TAG_NUMBER
196196
env.META_TAG = env.EXT_RELEASE_CLEAN + '-ls' + env.LS_TAG_NUMBER
197197
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'
198199
}
199200
}
200201
}
@@ -219,6 +220,7 @@ pipeline {
219220
env.META_TAG = env.EXT_RELEASE_CLEAN + '-pkg-' + env.PACKAGE_TAG + '-dev-' + env.COMMIT_SHA
220221
env.EXT_RELEASE_TAG = 'version-' + env.EXT_RELEASE_CLEAN
221222
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'
222224
}
223225
}
224226
}
@@ -243,6 +245,7 @@ pipeline {
243245
env.EXT_RELEASE_TAG = 'version-' + env.EXT_RELEASE_CLEAN
244246
env.CODE_URL = 'https://github.com/' + env.LS_USER + '/' + env.LS_REPO + '/pull/' + env.PULL_REQUEST
245247
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'
246249
}
247250
}
248251
}
@@ -513,8 +516,40 @@ pipeline {
513516
--label \"org.opencontainers.image.title=Socket-proxy\" \
514517
--label \"org.opencontainers.image.description=socket-proxy image by linuxserver.io\" \
515518
--no-cache --pull -t ${IMAGE}:${META_TAG} --platform=linux/amd64 \
516-
--provenance=false --sbom=false \
519+
--provenance=false --sbom=false --builder=container --load \
517520
--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+
}
518553
}
519554
}
520555
// Build MultiArch Docker containers for push to LS Repo
@@ -545,8 +580,40 @@ pipeline {
545580
--label \"org.opencontainers.image.title=Socket-proxy\" \
546581
--label \"org.opencontainers.image.description=socket-proxy image by linuxserver.io\" \
547582
--no-cache --pull -t ${IMAGE}:amd64-${META_TAG} --platform=linux/amd64 \
548-
--provenance=false --sbom=false \
583+
--provenance=false --sbom=false --builder=container --load \
549584
--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+
}
550617
}
551618
}
552619
stage('Build ARM64') {
@@ -555,10 +622,6 @@ pipeline {
555622
}
556623
steps {
557624
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-
'''
562625
sh "sed -r -i 's|(^FROM .*)|\\1\\n\\nENV LSIO_FIRST_PARTY=true|g' Dockerfile.aarch64"
563626
sh "docker buildx build \
564627
--label \"org.opencontainers.image.created=${GITHUB_DATE}\" \
@@ -574,18 +637,47 @@ pipeline {
574637
--label \"org.opencontainers.image.title=Socket-proxy\" \
575638
--label \"org.opencontainers.image.description=socket-proxy image by linuxserver.io\" \
576639
--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 \
578641
--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+
}
582673
}
583674
sh '''#! /bin/bash
584675
containers=$(docker ps -aq)
585676
if [[ -n "${containers}" ]]; then
586677
docker stop ${containers}
587678
fi
588-
docker system prune -af --volumes || : '''
679+
docker system prune -af --volumes || :
680+
'''
589681
}
590682
}
591683
}
@@ -735,37 +827,23 @@ pipeline {
735827
environment name: 'EXIT_STATUS', value: ''
736828
}
737829
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
766840
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+
'''
769847
}
770848
}
771849
}
@@ -776,57 +854,34 @@ pipeline {
776854
environment name: 'EXIT_STATUS', value: ''
777855
}
778856
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
827867
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+
'''
830885
}
831886
}
832887
}

0 commit comments

Comments
 (0)