Skip to content

Commit d691fe2

Browse files
Bot Updating Templated Files
1 parent 1d6ee43 commit d691fe2

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 {
@@ -189,6 +189,7 @@ pipeline {
189189
env.VERSION_TAG = env.EXT_RELEASE_CLEAN + '-ls' + env.LS_TAG_NUMBER
190190
env.META_TAG = 'bullseye-' + env.EXT_RELEASE_CLEAN + '-ls' + env.LS_TAG_NUMBER
191191
env.EXT_RELEASE_TAG = 'bullseye-version-' + env.EXT_RELEASE_CLEAN
192+
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'
192193
}
193194
}
194195
}
@@ -213,6 +214,7 @@ pipeline {
213214
env.META_TAG = 'bullseye-' + env.EXT_RELEASE_CLEAN + '-pkg-' + env.PACKAGE_TAG + '-dev-' + env.COMMIT_SHA
214215
env.EXT_RELEASE_TAG = 'bullseye-version-' + env.EXT_RELEASE_CLEAN
215216
env.DOCKERHUB_LINK = 'https://hub.docker.com/r/' + env.DEV_DOCKERHUB_IMAGE + '/tags/'
217+
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'
216218
}
217219
}
218220
}
@@ -237,6 +239,7 @@ pipeline {
237239
env.EXT_RELEASE_TAG = 'bullseye-version-' + env.EXT_RELEASE_CLEAN
238240
env.CODE_URL = 'https://github.com/' + env.LS_USER + '/' + env.LS_REPO + '/pull/' + env.PULL_REQUEST
239241
env.DOCKERHUB_LINK = 'https://hub.docker.com/r/' + env.PR_DOCKERHUB_IMAGE + '/tags/'
242+
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'
240243
}
241244
}
242245
}
@@ -506,8 +509,40 @@ pipeline {
506509
--label \"org.opencontainers.image.title=Baseimage-debian\" \
507510
--label \"org.opencontainers.image.description=baseimage-debian image by linuxserver.io\" \
508511
--no-cache --pull -t ${IMAGE}:${META_TAG} --platform=linux/amd64 \
509-
--provenance=false --sbom=false \
512+
--provenance=false --sbom=false --builder=container --load \
510513
--build-arg ${BUILD_VERSION_ARG}=${EXT_RELEASE} --build-arg VERSION=\"${VERSION_TAG}\" --build-arg BUILD_DATE=${GITHUB_DATE} ."
514+
sh '''#! /bin/bash
515+
set -e
516+
IFS=',' read -ra CACHE <<< "$BUILDCACHE"
517+
for i in "${CACHE[@]}"; do
518+
docker tag ${IMAGE}:${META_TAG} ${i}:amd64-${COMMIT_SHA}-${BUILD_NUMBER}
519+
done
520+
'''
521+
withCredentials([
522+
[
523+
$class: 'UsernamePasswordMultiBinding',
524+
credentialsId: 'Quay.io-Robot',
525+
usernameVariable: 'QUAYUSER',
526+
passwordVariable: 'QUAYPASS'
527+
]
528+
]) {
529+
retry_backoff(5,5) {
530+
sh '''#! /bin/bash
531+
set -e
532+
echo $DOCKERHUB_TOKEN | docker login -u linuxserverci --password-stdin
533+
echo $GITHUB_TOKEN | docker login ghcr.io -u LinuxServer-CI --password-stdin
534+
echo $GITLAB_TOKEN | docker login registry.gitlab.com -u LinuxServer.io --password-stdin
535+
echo $QUAYPASS | docker login quay.io -u $QUAYUSER --password-stdin
536+
if [[ "${PACKAGE_CHECK}" != "true" ]]; then
537+
IFS=',' read -ra CACHE <<< "$BUILDCACHE"
538+
for i in "${CACHE[@]}"; do
539+
docker push ${i}:amd64-${COMMIT_SHA}-${BUILD_NUMBER} &
540+
done
541+
wait
542+
fi
543+
'''
544+
}
545+
}
511546
}
512547
}
513548
// Build MultiArch Docker containers for push to LS Repo
@@ -537,8 +572,40 @@ pipeline {
537572
--label \"org.opencontainers.image.title=Baseimage-debian\" \
538573
--label \"org.opencontainers.image.description=baseimage-debian image by linuxserver.io\" \
539574
--no-cache --pull -t ${IMAGE}:amd64-${META_TAG} --platform=linux/amd64 \
540-
--provenance=false --sbom=false \
575+
--provenance=false --sbom=false --builder=container --load \
541576
--build-arg ${BUILD_VERSION_ARG}=${EXT_RELEASE} --build-arg VERSION=\"${VERSION_TAG}\" --build-arg BUILD_DATE=${GITHUB_DATE} ."
577+
sh '''#! /bin/bash
578+
set -e
579+
IFS=',' read -ra CACHE <<< "$BUILDCACHE"
580+
for i in "${CACHE[@]}"; do
581+
docker tag ${IMAGE}:amd64-${META_TAG} ${i}:amd64-${COMMIT_SHA}-${BUILD_NUMBER}
582+
done
583+
'''
584+
withCredentials([
585+
[
586+
$class: 'UsernamePasswordMultiBinding',
587+
credentialsId: 'Quay.io-Robot',
588+
usernameVariable: 'QUAYUSER',
589+
passwordVariable: 'QUAYPASS'
590+
]
591+
]) {
592+
retry_backoff(5,5) {
593+
sh '''#! /bin/bash
594+
set -e
595+
echo $DOCKERHUB_TOKEN | docker login -u linuxserverci --password-stdin
596+
echo $GITHUB_TOKEN | docker login ghcr.io -u LinuxServer-CI --password-stdin
597+
echo $GITLAB_TOKEN | docker login registry.gitlab.com -u LinuxServer.io --password-stdin
598+
echo $QUAYPASS | docker login quay.io -u $QUAYUSER --password-stdin
599+
if [[ "${PACKAGE_CHECK}" != "true" ]]; then
600+
IFS=',' read -ra CACHE <<< "$BUILDCACHE"
601+
for i in "${CACHE[@]}"; do
602+
docker push ${i}:amd64-${COMMIT_SHA}-${BUILD_NUMBER} &
603+
done
604+
wait
605+
fi
606+
'''
607+
}
608+
}
542609
}
543610
}
544611
stage('Build ARM64') {
@@ -547,10 +614,6 @@ pipeline {
547614
}
548615
steps {
549616
echo "Running on node: ${NODE_NAME}"
550-
echo 'Logging into Github'
551-
sh '''#! /bin/bash
552-
echo $GITHUB_TOKEN | docker login ghcr.io -u LinuxServer-CI --password-stdin
553-
'''
554617
sh "docker buildx build \
555618
--label \"org.opencontainers.image.created=${GITHUB_DATE}\" \
556619
--label \"org.opencontainers.image.authors=linuxserver.io\" \
@@ -565,18 +628,47 @@ pipeline {
565628
--label \"org.opencontainers.image.title=Baseimage-debian\" \
566629
--label \"org.opencontainers.image.description=baseimage-debian image by linuxserver.io\" \
567630
--no-cache --pull -f Dockerfile.aarch64 -t ${IMAGE}:arm64v8-${META_TAG} --platform=linux/arm64 \
568-
--provenance=false --sbom=false \
631+
--provenance=false --sbom=false --builder=container --load \
569632
--build-arg ${BUILD_VERSION_ARG}=${EXT_RELEASE} --build-arg VERSION=\"${VERSION_TAG}\" --build-arg BUILD_DATE=${GITHUB_DATE} ."
570-
sh "docker tag ${IMAGE}:arm64v8-${META_TAG} ghcr.io/linuxserver/lsiodev-buildcache:arm64v8-${COMMIT_SHA}-${BUILD_NUMBER}"
571-
retry_backoff(5,5) {
572-
sh "docker push ghcr.io/linuxserver/lsiodev-buildcache:arm64v8-${COMMIT_SHA}-${BUILD_NUMBER}"
633+
sh '''#! /bin/bash
634+
set -e
635+
IFS=',' read -ra CACHE <<< "$BUILDCACHE"
636+
for i in "${CACHE[@]}"; do
637+
docker tag ${IMAGE}:arm64v8-${META_TAG} ${i}:arm64v8-${COMMIT_SHA}-${BUILD_NUMBER}
638+
done
639+
'''
640+
withCredentials([
641+
[
642+
$class: 'UsernamePasswordMultiBinding',
643+
credentialsId: 'Quay.io-Robot',
644+
usernameVariable: 'QUAYUSER',
645+
passwordVariable: 'QUAYPASS'
646+
]
647+
]) {
648+
retry_backoff(5,5) {
649+
sh '''#! /bin/bash
650+
set -e
651+
echo $DOCKERHUB_TOKEN | docker login -u linuxserverci --password-stdin
652+
echo $GITHUB_TOKEN | docker login ghcr.io -u LinuxServer-CI --password-stdin
653+
echo $GITLAB_TOKEN | docker login registry.gitlab.com -u LinuxServer.io --password-stdin
654+
echo $QUAYPASS | docker login quay.io -u $QUAYUSER --password-stdin
655+
if [[ "${PACKAGE_CHECK}" != "true" ]]; then
656+
IFS=',' read -ra CACHE <<< "$BUILDCACHE"
657+
for i in "${CACHE[@]}"; do
658+
docker push ${i}:arm64v8-${COMMIT_SHA}-${BUILD_NUMBER} &
659+
done
660+
wait
661+
fi
662+
'''
663+
}
573664
}
574665
sh '''#! /bin/bash
575666
containers=$(docker ps -aq)
576667
if [[ -n "${containers}" ]]; then
577668
docker stop ${containers}
578669
fi
579-
docker system prune -af --volumes || : '''
670+
docker system prune -af --volumes || :
671+
'''
580672
}
581673
}
582674
}
@@ -726,37 +818,23 @@ pipeline {
726818
environment name: 'EXIT_STATUS', value: ''
727819
}
728820
steps {
729-
withCredentials([
730-
[
731-
$class: 'UsernamePasswordMultiBinding',
732-
credentialsId: 'Quay.io-Robot',
733-
usernameVariable: 'QUAYUSER',
734-
passwordVariable: 'QUAYPASS'
735-
]
736-
]) {
737-
retry_backoff(5,5) {
738-
sh '''#! /bin/bash
739-
set -e
740-
echo $DOCKERHUB_TOKEN | docker login -u linuxserverci --password-stdin
741-
echo $GITHUB_TOKEN | docker login ghcr.io -u LinuxServer-CI --password-stdin
742-
echo $GITLAB_TOKEN | docker login registry.gitlab.com -u LinuxServer.io --password-stdin
743-
echo $QUAYPASS | docker login quay.io -u $QUAYUSER --password-stdin
744-
for PUSHIMAGE in "${GITHUBIMAGE}" "${GITLABIMAGE}" "${QUAYIMAGE}" "${IMAGE}"; do
745-
docker tag ${IMAGE}:${META_TAG} ${PUSHIMAGE}:${META_TAG}
746-
docker tag ${PUSHIMAGE}:${META_TAG} ${PUSHIMAGE}:bullseye
747-
docker tag ${PUSHIMAGE}:${META_TAG} ${PUSHIMAGE}:${EXT_RELEASE_TAG}
748-
if [ -n "${SEMVER}" ]; then
749-
docker tag ${PUSHIMAGE}:${META_TAG} ${PUSHIMAGE}:${SEMVER}
750-
fi
751-
docker push ${PUSHIMAGE}:bullseye
752-
docker push ${PUSHIMAGE}:${META_TAG}
753-
docker push ${PUSHIMAGE}:${EXT_RELEASE_TAG}
754-
if [ -n "${SEMVER}" ]; then
755-
docker push ${PUSHIMAGE}:${SEMVER}
756-
fi
821+
retry_backoff(5,5) {
822+
sh '''#! /bin/bash
823+
set -e
824+
for PUSHIMAGE in "${IMAGE}" "${GITLABIMAGE}" "${GITHUBIMAGE}" "${QUAYIMAGE}"; do
825+
[[ ${PUSHIMAGE%%/*} =~ \\. ]] && PUSHIMAGEPLUS="${PUSHIMAGE}" || PUSHIMAGEPLUS="docker.io/${PUSHIMAGE}"
826+
IFS=',' read -ra CACHE <<< "$BUILDCACHE"
827+
for i in "${CACHE[@]}"; do
828+
if [[ "${PUSHIMAGEPLUS}" == "$(cut -d "/" -f1 <<< ${i})"* ]]; then
829+
CACHEIMAGE=${i}
830+
fi
757831
done
758-
'''
759-
}
832+
docker buildx imagetools create --prefer-index=false -t ${PUSHIMAGE}:${META_TAG} -t ${PUSHIMAGE}:bullseye -t ${PUSHIMAGE}:${EXT_RELEASE_TAG} ${CACHEIMAGE}:amd64-${COMMIT_SHA}-${BUILD_NUMBER}
833+
if [ -n "${SEMVER}" ]; then
834+
docker buildx imagetools create --prefer-index=false -t ${PUSHIMAGE}:${SEMVER} ${CACHEIMAGE}:amd64-${COMMIT_SHA}-${BUILD_NUMBER}
835+
fi
836+
done
837+
'''
760838
}
761839
}
762840
}
@@ -767,57 +845,34 @@ pipeline {
767845
environment name: 'EXIT_STATUS', value: ''
768846
}
769847
steps {
770-
withCredentials([
771-
[
772-
$class: 'UsernamePasswordMultiBinding',
773-
credentialsId: 'Quay.io-Robot',
774-
usernameVariable: 'QUAYUSER',
775-
passwordVariable: 'QUAYPASS'
776-
]
777-
]) {
778-
retry_backoff(5,5) {
779-
sh '''#! /bin/bash
780-
set -e
781-
echo $DOCKERHUB_TOKEN | docker login -u linuxserverci --password-stdin
782-
echo $GITHUB_TOKEN | docker login ghcr.io -u LinuxServer-CI --password-stdin
783-
echo $GITLAB_TOKEN | docker login registry.gitlab.com -u LinuxServer.io --password-stdin
784-
echo $QUAYPASS | docker login quay.io -u $QUAYUSER --password-stdin
785-
if [ "${CI}" == "false" ]; then
786-
docker pull ghcr.io/linuxserver/lsiodev-buildcache:arm64v8-${COMMIT_SHA}-${BUILD_NUMBER} --platform=arm64
787-
docker tag ghcr.io/linuxserver/lsiodev-buildcache:arm64v8-${COMMIT_SHA}-${BUILD_NUMBER} ${IMAGE}:arm64v8-${META_TAG}
788-
fi
789-
for MANIFESTIMAGE in "${IMAGE}" "${GITLABIMAGE}" "${GITHUBIMAGE}" "${QUAYIMAGE}"; do
790-
docker tag ${IMAGE}:amd64-${META_TAG} ${MANIFESTIMAGE}:amd64-${META_TAG}
791-
docker tag ${MANIFESTIMAGE}:amd64-${META_TAG} ${MANIFESTIMAGE}:amd64-bullseye
792-
docker tag ${MANIFESTIMAGE}:amd64-${META_TAG} ${MANIFESTIMAGE}:amd64-${EXT_RELEASE_TAG}
793-
docker tag ${IMAGE}:arm64v8-${META_TAG} ${MANIFESTIMAGE}:arm64v8-${META_TAG}
794-
docker tag ${MANIFESTIMAGE}:arm64v8-${META_TAG} ${MANIFESTIMAGE}:arm64v8-bullseye
795-
docker tag ${MANIFESTIMAGE}:arm64v8-${META_TAG} ${MANIFESTIMAGE}:arm64v8-${EXT_RELEASE_TAG}
796-
if [ -n "${SEMVER}" ]; then
797-
docker tag ${MANIFESTIMAGE}:amd64-${META_TAG} ${MANIFESTIMAGE}:amd64-${SEMVER}
798-
docker tag ${MANIFESTIMAGE}:arm64v8-${META_TAG} ${MANIFESTIMAGE}:arm64v8-${SEMVER}
799-
fi
800-
docker push ${MANIFESTIMAGE}:amd64-${META_TAG}
801-
docker push ${MANIFESTIMAGE}:amd64-${EXT_RELEASE_TAG}
802-
docker push ${MANIFESTIMAGE}:amd64-bullseye
803-
docker push ${MANIFESTIMAGE}:arm64v8-${META_TAG}
804-
docker push ${MANIFESTIMAGE}:arm64v8-bullseye
805-
docker push ${MANIFESTIMAGE}:arm64v8-${EXT_RELEASE_TAG}
806-
if [ -n "${SEMVER}" ]; then
807-
docker push ${MANIFESTIMAGE}:amd64-${SEMVER}
808-
docker push ${MANIFESTIMAGE}:arm64v8-${SEMVER}
809-
fi
810-
done
811-
for MANIFESTIMAGE in "${IMAGE}" "${GITLABIMAGE}" "${GITHUBIMAGE}" "${QUAYIMAGE}"; do
812-
docker buildx imagetools create -t ${MANIFESTIMAGE}:bullseye ${MANIFESTIMAGE}:amd64-bullseye ${MANIFESTIMAGE}:arm64v8-bullseye
813-
docker buildx imagetools create -t ${MANIFESTIMAGE}:${META_TAG} ${MANIFESTIMAGE}:amd64-${META_TAG} ${MANIFESTIMAGE}:arm64v8-${META_TAG}
814-
docker buildx imagetools create -t ${MANIFESTIMAGE}:${EXT_RELEASE_TAG} ${MANIFESTIMAGE}:amd64-${EXT_RELEASE_TAG} ${MANIFESTIMAGE}:arm64v8-${EXT_RELEASE_TAG}
815-
if [ -n "${SEMVER}" ]; then
816-
docker buildx imagetools create -t ${MANIFESTIMAGE}:${SEMVER} ${MANIFESTIMAGE}:amd64-${SEMVER} ${MANIFESTIMAGE}:arm64v8-${SEMVER}
817-
fi
848+
retry_backoff(5,5) {
849+
sh '''#! /bin/bash
850+
set -e
851+
for MANIFESTIMAGE in "${IMAGE}" "${GITLABIMAGE}" "${GITHUBIMAGE}" "${QUAYIMAGE}"; do
852+
[[ ${MANIFESTIMAGE%%/*} =~ \\. ]] && MANIFESTIMAGEPLUS="${MANIFESTIMAGE}" || MANIFESTIMAGEPLUS="docker.io/${MANIFESTIMAGE}"
853+
IFS=',' read -ra CACHE <<< "$BUILDCACHE"
854+
for i in "${CACHE[@]}"; do
855+
if [[ "${MANIFESTIMAGEPLUS}" == "$(cut -d "/" -f1 <<< ${i})"* ]]; then
856+
CACHEIMAGE=${i}
857+
fi
818858
done
819-
'''
820-
}
859+
docker buildx imagetools create --prefer-index=false -t ${MANIFESTIMAGE}:amd64-${META_TAG} -t ${MANIFESTIMAGE}:amd64-bullseye -t ${MANIFESTIMAGE}:amd64-${EXT_RELEASE_TAG} ${CACHEIMAGE}:amd64-${COMMIT_SHA}-${BUILD_NUMBER}
860+
docker buildx imagetools create --prefer-index=false -t ${MANIFESTIMAGE}:arm64v8-${META_TAG} -t ${MANIFESTIMAGE}:arm64v8-bullseye -t ${MANIFESTIMAGE}:arm64v8-${EXT_RELEASE_TAG} ${CACHEIMAGE}:arm64v8-${COMMIT_SHA}-${BUILD_NUMBER}
861+
if [ -n "${SEMVER}" ]; then
862+
docker buildx imagetools create --prefer-index=false -t ${MANIFESTIMAGE}:amd64-${SEMVER} ${CACHEIMAGE}:amd64-${COMMIT_SHA}-${BUILD_NUMBER}
863+
docker buildx imagetools create --prefer-index=false -t ${MANIFESTIMAGE}:arm64v8-${SEMVER} ${CACHEIMAGE}:arm64v8-${COMMIT_SHA}-${BUILD_NUMBER}
864+
fi
865+
done
866+
for MANIFESTIMAGE in "${IMAGE}" "${GITLABIMAGE}" "${GITHUBIMAGE}" "${QUAYIMAGE}"; do
867+
docker buildx imagetools create -t ${MANIFESTIMAGE}:bullseye ${MANIFESTIMAGE}:amd64-bullseye ${MANIFESTIMAGE}:arm64v8-bullseye
868+
docker buildx imagetools create -t ${MANIFESTIMAGE}:${META_TAG} ${MANIFESTIMAGE}:amd64-${META_TAG} ${MANIFESTIMAGE}:arm64v8-${META_TAG}
869+
870+
docker buildx imagetools create -t ${MANIFESTIMAGE}:${EXT_RELEASE_TAG} ${MANIFESTIMAGE}:amd64-${EXT_RELEASE_TAG} ${MANIFESTIMAGE}:arm64v8-${EXT_RELEASE_TAG}
871+
if [ -n "${SEMVER}" ]; then
872+
docker buildx imagetools create -t ${MANIFESTIMAGE}:${SEMVER} ${MANIFESTIMAGE}:amd64-${SEMVER} ${MANIFESTIMAGE}:arm64v8-${SEMVER}
873+
fi
874+
done
875+
'''
821876
}
822877
}
823878
}

0 commit comments

Comments
 (0)