Skip to content

Commit fdf4075

Browse files
Bot Updating Templated Files
1 parent 10963fa commit fdf4075

File tree

1 file changed

+153
-92
lines changed

1 file changed

+153
-92
lines changed

Jenkinsfile

Lines changed: 153 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 {
@@ -191,6 +191,7 @@ pipeline {
191191
env.VERSION_TAG = env.EXT_RELEASE_CLEAN + '-ls' + env.LS_TAG_NUMBER
192192
env.META_TAG = '3.19-' + env.EXT_RELEASE_CLEAN + '-ls' + env.LS_TAG_NUMBER
193193
env.EXT_RELEASE_TAG = '3.19-version-' + env.EXT_RELEASE_CLEAN
194+
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'
194195
}
195196
}
196197
}
@@ -215,6 +216,7 @@ pipeline {
215216
env.META_TAG = '3.19-' + env.EXT_RELEASE_CLEAN + '-pkg-' + env.PACKAGE_TAG + '-dev-' + env.COMMIT_SHA
216217
env.EXT_RELEASE_TAG = '3.19-version-' + env.EXT_RELEASE_CLEAN
217218
env.DOCKERHUB_LINK = 'https://hub.docker.com/r/' + env.DEV_DOCKERHUB_IMAGE + '/tags/'
219+
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'
218220
}
219221
}
220222
}
@@ -239,6 +241,7 @@ pipeline {
239241
env.EXT_RELEASE_TAG = '3.19-version-' + env.EXT_RELEASE_CLEAN
240242
env.CODE_URL = 'https://github.com/' + env.LS_USER + '/' + env.LS_REPO + '/pull/' + env.PULL_REQUEST
241243
env.DOCKERHUB_LINK = 'https://hub.docker.com/r/' + env.PR_DOCKERHUB_IMAGE + '/tags/'
244+
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'
242245
}
243246
}
244247
}
@@ -508,8 +511,42 @@ pipeline {
508511
--label \"org.opencontainers.image.title=Baseimage-alpine-nginx\" \
509512
--label \"org.opencontainers.image.description=baseimage-alpine-nginx image by linuxserver.io\" \
510513
--no-cache --pull -t ${IMAGE}:${META_TAG} --platform=linux/amd64 \
511-
--provenance=false --sbom=false \
514+
--provenance=true --sbom=true --builder=container --load \
512515
--build-arg ${BUILD_VERSION_ARG}=${EXT_RELEASE} --build-arg VERSION=\"${VERSION_TAG}\" --build-arg BUILD_DATE=${GITHUB_DATE} ."
516+
sh '''#! /bin/bash
517+
set -e
518+
IFS=',' read -ra CACHE <<< "$BUILDCACHE"
519+
for i in "${CACHE[@]}"; do
520+
docker tag ${IMAGE}:${META_TAG} ${i}:amd64-${COMMIT_SHA}-${BUILD_NUMBER}
521+
done
522+
'''
523+
withCredentials([
524+
[
525+
$class: 'UsernamePasswordMultiBinding',
526+
credentialsId: 'Quay.io-Robot',
527+
usernameVariable: 'QUAYUSER',
528+
passwordVariable: 'QUAYPASS'
529+
]
530+
]) {
531+
retry_backoff(5,5) {
532+
sh '''#! /bin/bash
533+
set -e
534+
echo $DOCKERHUB_TOKEN | docker login -u linuxserverci --password-stdin
535+
echo $GITHUB_TOKEN | docker login ghcr.io -u LinuxServer-CI --password-stdin
536+
echo $GITLAB_TOKEN | docker login registry.gitlab.com -u LinuxServer.io --password-stdin
537+
echo $QUAYPASS | docker login quay.io -u $QUAYUSER --password-stdin
538+
if [[ "${PACKAGE_CHECK}" != "true" ]]; then
539+
IFS=',' read -ra CACHE <<< "$BUILDCACHE"
540+
for i in "${CACHE[@]}"; do
541+
docker push ${i}:amd64-${COMMIT_SHA}-${BUILD_NUMBER} &
542+
done
543+
for p in $(jobs -p); do
544+
wait "$p" || { echo "job $p failed" >&2; exit 1; }
545+
done
546+
fi
547+
'''
548+
}
549+
}
513550
}
514551
}
515552
// Build MultiArch Docker containers for push to LS Repo
@@ -539,8 +576,42 @@ pipeline {
539576
--label \"org.opencontainers.image.title=Baseimage-alpine-nginx\" \
540577
--label \"org.opencontainers.image.description=baseimage-alpine-nginx image by linuxserver.io\" \
541578
--no-cache --pull -t ${IMAGE}:amd64-${META_TAG} --platform=linux/amd64 \
542-
--provenance=false --sbom=false \
579+
--provenance=true --sbom=true --builder=container --load \
543580
--build-arg ${BUILD_VERSION_ARG}=${EXT_RELEASE} --build-arg VERSION=\"${VERSION_TAG}\" --build-arg BUILD_DATE=${GITHUB_DATE} ."
581+
sh '''#! /bin/bash
582+
set -e
583+
IFS=',' read -ra CACHE <<< "$BUILDCACHE"
584+
for i in "${CACHE[@]}"; do
585+
docker tag ${IMAGE}:amd64-${META_TAG} ${i}:amd64-${COMMIT_SHA}-${BUILD_NUMBER}
586+
done
587+
'''
588+
withCredentials([
589+
[
590+
$class: 'UsernamePasswordMultiBinding',
591+
credentialsId: 'Quay.io-Robot',
592+
usernameVariable: 'QUAYUSER',
593+
passwordVariable: 'QUAYPASS'
594+
]
595+
]) {
596+
retry_backoff(5,5) {
597+
sh '''#! /bin/bash
598+
set -e
599+
echo $DOCKERHUB_TOKEN | docker login -u linuxserverci --password-stdin
600+
echo $GITHUB_TOKEN | docker login ghcr.io -u LinuxServer-CI --password-stdin
601+
echo $GITLAB_TOKEN | docker login registry.gitlab.com -u LinuxServer.io --password-stdin
602+
echo $QUAYPASS | docker login quay.io -u $QUAYUSER --password-stdin
603+
if [[ "${PACKAGE_CHECK}" != "true" ]]; then
604+
IFS=',' read -ra CACHE <<< "$BUILDCACHE"
605+
for i in "${CACHE[@]}"; do
606+
docker push ${i}:amd64-${COMMIT_SHA}-${BUILD_NUMBER} &
607+
done
608+
for p in $(jobs -p); do
609+
wait "$p" || { echo "job $p failed" >&2; exit 1; }
610+
done
611+
fi
612+
'''
613+
}
614+
}
544615
}
545616
}
546617
stage('Build ARM64') {
@@ -549,10 +620,6 @@ pipeline {
549620
}
550621
steps {
551622
echo "Running on node: ${NODE_NAME}"
552-
echo 'Logging into Github'
553-
sh '''#! /bin/bash
554-
echo $GITHUB_TOKEN | docker login ghcr.io -u LinuxServer-CI --password-stdin
555-
'''
556623
sh "docker buildx build \
557624
--label \"org.opencontainers.image.created=${GITHUB_DATE}\" \
558625
--label \"org.opencontainers.image.authors=linuxserver.io\" \
@@ -567,18 +634,49 @@ pipeline {
567634
--label \"org.opencontainers.image.title=Baseimage-alpine-nginx\" \
568635
--label \"org.opencontainers.image.description=baseimage-alpine-nginx image by linuxserver.io\" \
569636
--no-cache --pull -f Dockerfile.aarch64 -t ${IMAGE}:arm64v8-${META_TAG} --platform=linux/arm64 \
570-
--provenance=false --sbom=false \
637+
--provenance=true --sbom=true --builder=container --load \
571638
--build-arg ${BUILD_VERSION_ARG}=${EXT_RELEASE} --build-arg VERSION=\"${VERSION_TAG}\" --build-arg BUILD_DATE=${GITHUB_DATE} ."
572-
sh "docker tag ${IMAGE}:arm64v8-${META_TAG} ghcr.io/linuxserver/lsiodev-buildcache:arm64v8-${COMMIT_SHA}-${BUILD_NUMBER}"
573-
retry_backoff(5,5) {
574-
sh "docker push ghcr.io/linuxserver/lsiodev-buildcache:arm64v8-${COMMIT_SHA}-${BUILD_NUMBER}"
639+
sh '''#! /bin/bash
640+
set -e
641+
IFS=',' read -ra CACHE <<< "$BUILDCACHE"
642+
for i in "${CACHE[@]}"; do
643+
docker tag ${IMAGE}:arm64v8-${META_TAG} ${i}:arm64v8-${COMMIT_SHA}-${BUILD_NUMBER}
644+
done
645+
'''
646+
withCredentials([
647+
[
648+
$class: 'UsernamePasswordMultiBinding',
649+
credentialsId: 'Quay.io-Robot',
650+
usernameVariable: 'QUAYUSER',
651+
passwordVariable: 'QUAYPASS'
652+
]
653+
]) {
654+
retry_backoff(5,5) {
655+
sh '''#! /bin/bash
656+
set -e
657+
echo $DOCKERHUB_TOKEN | docker login -u linuxserverci --password-stdin
658+
echo $GITHUB_TOKEN | docker login ghcr.io -u LinuxServer-CI --password-stdin
659+
echo $GITLAB_TOKEN | docker login registry.gitlab.com -u LinuxServer.io --password-stdin
660+
echo $QUAYPASS | docker login quay.io -u $QUAYUSER --password-stdin
661+
if [[ "${PACKAGE_CHECK}" != "true" ]]; then
662+
IFS=',' read -ra CACHE <<< "$BUILDCACHE"
663+
for i in "${CACHE[@]}"; do
664+
docker push ${i}:arm64v8-${COMMIT_SHA}-${BUILD_NUMBER} &
665+
done
666+
for p in $(jobs -p); do
667+
wait "$p" || { echo "job $p failed" >&2; exit 1; }
668+
done
669+
fi
670+
'''
671+
}
575672
}
576673
sh '''#! /bin/bash
577674
containers=$(docker ps -aq)
578675
if [[ -n "${containers}" ]]; then
579676
docker stop ${containers}
580677
fi
581-
docker system prune -af --volumes || : '''
678+
docker system prune -af --volumes || :
679+
'''
582680
}
583681
}
584682
}
@@ -728,37 +826,23 @@ pipeline {
728826
environment name: 'EXIT_STATUS', value: ''
729827
}
730828
steps {
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-
for PUSHIMAGE in "${GITHUBIMAGE}" "${GITLABIMAGE}" "${QUAYIMAGE}" "${IMAGE}"; do
747-
docker tag ${IMAGE}:${META_TAG} ${PUSHIMAGE}:${META_TAG}
748-
docker tag ${PUSHIMAGE}:${META_TAG} ${PUSHIMAGE}:3.19
749-
docker tag ${PUSHIMAGE}:${META_TAG} ${PUSHIMAGE}:${EXT_RELEASE_TAG}
750-
if [ -n "${SEMVER}" ]; then
751-
docker tag ${PUSHIMAGE}:${META_TAG} ${PUSHIMAGE}:${SEMVER}
752-
fi
753-
docker push ${PUSHIMAGE}:3.19
754-
docker push ${PUSHIMAGE}:${META_TAG}
755-
docker push ${PUSHIMAGE}:${EXT_RELEASE_TAG}
756-
if [ -n "${SEMVER}" ]; then
757-
docker push ${PUSHIMAGE}:${SEMVER}
758-
fi
829+
retry_backoff(5,5) {
830+
sh '''#! /bin/bash
831+
set -e
832+
for PUSHIMAGE in "${IMAGE}" "${GITLABIMAGE}" "${GITHUBIMAGE}" "${QUAYIMAGE}"; do
833+
[[ ${PUSHIMAGE%%/*} =~ \\. ]] && PUSHIMAGEPLUS="${PUSHIMAGE}" || PUSHIMAGEPLUS="docker.io/${PUSHIMAGE}"
834+
IFS=',' read -ra CACHE <<< "$BUILDCACHE"
835+
for i in "${CACHE[@]}"; do
836+
if [[ "${PUSHIMAGEPLUS}" == "$(cut -d "/" -f1 <<< ${i})"* ]]; then
837+
CACHEIMAGE=${i}
838+
fi
759839
done
760-
'''
761-
}
840+
docker buildx imagetools create --prefer-index=false -t ${PUSHIMAGE}:${META_TAG} -t ${PUSHIMAGE}:3.19 -t ${PUSHIMAGE}:${EXT_RELEASE_TAG} ${CACHEIMAGE}:amd64-${COMMIT_SHA}-${BUILD_NUMBER}
841+
if [ -n "${SEMVER}" ]; then
842+
docker buildx imagetools create --prefer-index=false -t ${PUSHIMAGE}:${SEMVER} ${CACHEIMAGE}:amd64-${COMMIT_SHA}-${BUILD_NUMBER}
843+
fi
844+
done
845+
'''
762846
}
763847
}
764848
}
@@ -769,57 +853,34 @@ pipeline {
769853
environment name: 'EXIT_STATUS', value: ''
770854
}
771855
steps {
772-
withCredentials([
773-
[
774-
$class: 'UsernamePasswordMultiBinding',
775-
credentialsId: 'Quay.io-Robot',
776-
usernameVariable: 'QUAYUSER',
777-
passwordVariable: 'QUAYPASS'
778-
]
779-
]) {
780-
retry_backoff(5,5) {
781-
sh '''#! /bin/bash
782-
set -e
783-
echo $DOCKERHUB_TOKEN | docker login -u linuxserverci --password-stdin
784-
echo $GITHUB_TOKEN | docker login ghcr.io -u LinuxServer-CI --password-stdin
785-
echo $GITLAB_TOKEN | docker login registry.gitlab.com -u LinuxServer.io --password-stdin
786-
echo $QUAYPASS | docker login quay.io -u $QUAYUSER --password-stdin
787-
if [ "${CI}" == "false" ]; then
788-
docker pull ghcr.io/linuxserver/lsiodev-buildcache:arm64v8-${COMMIT_SHA}-${BUILD_NUMBER} --platform=arm64
789-
docker tag ghcr.io/linuxserver/lsiodev-buildcache:arm64v8-${COMMIT_SHA}-${BUILD_NUMBER} ${IMAGE}:arm64v8-${META_TAG}
790-
fi
791-
for MANIFESTIMAGE in "${IMAGE}" "${GITLABIMAGE}" "${GITHUBIMAGE}" "${QUAYIMAGE}"; do
792-
docker tag ${IMAGE}:amd64-${META_TAG} ${MANIFESTIMAGE}:amd64-${META_TAG}
793-
docker tag ${MANIFESTIMAGE}:amd64-${META_TAG} ${MANIFESTIMAGE}:amd64-3.19
794-
docker tag ${MANIFESTIMAGE}:amd64-${META_TAG} ${MANIFESTIMAGE}:amd64-${EXT_RELEASE_TAG}
795-
docker tag ${IMAGE}:arm64v8-${META_TAG} ${MANIFESTIMAGE}:arm64v8-${META_TAG}
796-
docker tag ${MANIFESTIMAGE}:arm64v8-${META_TAG} ${MANIFESTIMAGE}:arm64v8-3.19
797-
docker tag ${MANIFESTIMAGE}:arm64v8-${META_TAG} ${MANIFESTIMAGE}:arm64v8-${EXT_RELEASE_TAG}
798-
if [ -n "${SEMVER}" ]; then
799-
docker tag ${MANIFESTIMAGE}:amd64-${META_TAG} ${MANIFESTIMAGE}:amd64-${SEMVER}
800-
docker tag ${MANIFESTIMAGE}:arm64v8-${META_TAG} ${MANIFESTIMAGE}:arm64v8-${SEMVER}
801-
fi
802-
docker push ${MANIFESTIMAGE}:amd64-${META_TAG}
803-
docker push ${MANIFESTIMAGE}:amd64-${EXT_RELEASE_TAG}
804-
docker push ${MANIFESTIMAGE}:amd64-3.19
805-
docker push ${MANIFESTIMAGE}:arm64v8-${META_TAG}
806-
docker push ${MANIFESTIMAGE}:arm64v8-3.19
807-
docker push ${MANIFESTIMAGE}:arm64v8-${EXT_RELEASE_TAG}
808-
if [ -n "${SEMVER}" ]; then
809-
docker push ${MANIFESTIMAGE}:amd64-${SEMVER}
810-
docker push ${MANIFESTIMAGE}:arm64v8-${SEMVER}
811-
fi
812-
done
813-
for MANIFESTIMAGE in "${IMAGE}" "${GITLABIMAGE}" "${GITHUBIMAGE}" "${QUAYIMAGE}"; do
814-
docker buildx imagetools create -t ${MANIFESTIMAGE}:3.19 ${MANIFESTIMAGE}:amd64-3.19 ${MANIFESTIMAGE}:arm64v8-3.19
815-
docker buildx imagetools create -t ${MANIFESTIMAGE}:${META_TAG} ${MANIFESTIMAGE}:amd64-${META_TAG} ${MANIFESTIMAGE}:arm64v8-${META_TAG}
816-
docker buildx imagetools create -t ${MANIFESTIMAGE}:${EXT_RELEASE_TAG} ${MANIFESTIMAGE}:amd64-${EXT_RELEASE_TAG} ${MANIFESTIMAGE}:arm64v8-${EXT_RELEASE_TAG}
817-
if [ -n "${SEMVER}" ]; then
818-
docker buildx imagetools create -t ${MANIFESTIMAGE}:${SEMVER} ${MANIFESTIMAGE}:amd64-${SEMVER} ${MANIFESTIMAGE}:arm64v8-${SEMVER}
819-
fi
856+
retry_backoff(5,5) {
857+
sh '''#! /bin/bash
858+
set -e
859+
for MANIFESTIMAGE in "${IMAGE}" "${GITLABIMAGE}" "${GITHUBIMAGE}" "${QUAYIMAGE}"; do
860+
[[ ${MANIFESTIMAGE%%/*} =~ \\. ]] && MANIFESTIMAGEPLUS="${MANIFESTIMAGE}" || MANIFESTIMAGEPLUS="docker.io/${MANIFESTIMAGE}"
861+
IFS=',' read -ra CACHE <<< "$BUILDCACHE"
862+
for i in "${CACHE[@]}"; do
863+
if [[ "${MANIFESTIMAGEPLUS}" == "$(cut -d "/" -f1 <<< ${i})"* ]]; then
864+
CACHEIMAGE=${i}
865+
fi
820866
done
821-
'''
822-
}
867+
docker buildx imagetools create --prefer-index=false -t ${MANIFESTIMAGE}:amd64-${META_TAG} -t ${MANIFESTIMAGE}:amd64-3.19 -t ${MANIFESTIMAGE}:amd64-${EXT_RELEASE_TAG} ${CACHEIMAGE}:amd64-${COMMIT_SHA}-${BUILD_NUMBER}
868+
docker buildx imagetools create --prefer-index=false -t ${MANIFESTIMAGE}:arm64v8-${META_TAG} -t ${MANIFESTIMAGE}:arm64v8-3.19 -t ${MANIFESTIMAGE}:arm64v8-${EXT_RELEASE_TAG} ${CACHEIMAGE}:arm64v8-${COMMIT_SHA}-${BUILD_NUMBER}
869+
if [ -n "${SEMVER}" ]; then
870+
docker buildx imagetools create --prefer-index=false -t ${MANIFESTIMAGE}:amd64-${SEMVER} ${CACHEIMAGE}:amd64-${COMMIT_SHA}-${BUILD_NUMBER}
871+
docker buildx imagetools create --prefer-index=false -t ${MANIFESTIMAGE}:arm64v8-${SEMVER} ${CACHEIMAGE}:arm64v8-${COMMIT_SHA}-${BUILD_NUMBER}
872+
fi
873+
done
874+
for MANIFESTIMAGE in "${IMAGE}" "${GITLABIMAGE}" "${GITHUBIMAGE}" "${QUAYIMAGE}"; do
875+
docker buildx imagetools create -t ${MANIFESTIMAGE}:3.19 ${MANIFESTIMAGE}:amd64-3.19 ${MANIFESTIMAGE}:arm64v8-3.19
876+
docker buildx imagetools create -t ${MANIFESTIMAGE}:${META_TAG} ${MANIFESTIMAGE}:amd64-${META_TAG} ${MANIFESTIMAGE}:arm64v8-${META_TAG}
877+
878+
docker buildx imagetools create -t ${MANIFESTIMAGE}:${EXT_RELEASE_TAG} ${MANIFESTIMAGE}:amd64-${EXT_RELEASE_TAG} ${MANIFESTIMAGE}:arm64v8-${EXT_RELEASE_TAG}
879+
if [ -n "${SEMVER}" ]; then
880+
docker buildx imagetools create -t ${MANIFESTIMAGE}:${SEMVER} ${MANIFESTIMAGE}:amd64-${SEMVER} ${MANIFESTIMAGE}:arm64v8-${SEMVER}
881+
fi
882+
done
883+
'''
823884
}
824885
}
825886
}

0 commit comments

Comments
 (0)