Skip to content

Commit 5452051

Browse files
Bot Updating Templated Files
1 parent e0b72c4 commit 5452051

1 file changed

Lines changed: 147 additions & 92 deletions

File tree

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 {
@@ -184,6 +184,7 @@ pipeline {
184184
env.VERSION_TAG = env.EXT_RELEASE_CLEAN + '-ls' + env.LS_TAG_NUMBER
185185
env.META_TAG = env.EXT_RELEASE_CLEAN + '-ls' + env.LS_TAG_NUMBER
186186
env.EXT_RELEASE_TAG = 'version-' + env.EXT_RELEASE_CLEAN
187+
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'
187188
}
188189
}
189190
}
@@ -208,6 +209,7 @@ pipeline {
208209
env.META_TAG = env.EXT_RELEASE_CLEAN + '-pkg-' + env.PACKAGE_TAG + '-dev-' + env.COMMIT_SHA
209210
env.EXT_RELEASE_TAG = 'version-' + env.EXT_RELEASE_CLEAN
210211
env.DOCKERHUB_LINK = 'https://hub.docker.com/r/' + env.DEV_DOCKERHUB_IMAGE + '/tags/'
212+
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'
211213
}
212214
}
213215
}
@@ -232,6 +234,7 @@ pipeline {
232234
env.EXT_RELEASE_TAG = 'version-' + env.EXT_RELEASE_CLEAN
233235
env.CODE_URL = 'https://github.com/' + env.LS_USER + '/' + env.LS_REPO + '/pull/' + env.PULL_REQUEST
234236
env.DOCKERHUB_LINK = 'https://hub.docker.com/r/' + env.PR_DOCKERHUB_IMAGE + '/tags/'
237+
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'
235238
}
236239
}
237240
}
@@ -502,8 +505,40 @@ pipeline {
502505
--label \"org.opencontainers.image.title=Yq\" \
503506
--label \"org.opencontainers.image.description=yq image by linuxserver.io\" \
504507
--no-cache --pull -t ${IMAGE}:${META_TAG} --platform=linux/amd64 \
505-
--provenance=false --sbom=false \
508+
--provenance=false --sbom=false --builder=container --load \
506509
--build-arg ${BUILD_VERSION_ARG}=${EXT_RELEASE} --build-arg VERSION=\"${VERSION_TAG}\" --build-arg BUILD_DATE=${GITHUB_DATE} ."
510+
sh '''#! /bin/bash
511+
set -e
512+
IFS=',' read -ra CACHE <<< "$BUILDCACHE"
513+
for i in "${CACHE[@]}"; do
514+
docker tag ${IMAGE}:${META_TAG} ${i}:amd64-${COMMIT_SHA}-${BUILD_NUMBER}
515+
done
516+
'''
517+
withCredentials([
518+
[
519+
$class: 'UsernamePasswordMultiBinding',
520+
credentialsId: 'Quay.io-Robot',
521+
usernameVariable: 'QUAYUSER',
522+
passwordVariable: 'QUAYPASS'
523+
]
524+
]) {
525+
retry_backoff(5,5) {
526+
sh '''#! /bin/bash
527+
set -e
528+
echo $DOCKERHUB_TOKEN | docker login -u linuxserverci --password-stdin
529+
echo $GITHUB_TOKEN | docker login ghcr.io -u LinuxServer-CI --password-stdin
530+
echo $GITLAB_TOKEN | docker login registry.gitlab.com -u LinuxServer.io --password-stdin
531+
echo $QUAYPASS | docker login quay.io -u $QUAYUSER --password-stdin
532+
if [[ "${PACKAGE_CHECK}" != "true" ]]; then
533+
IFS=',' read -ra CACHE <<< "$BUILDCACHE"
534+
for i in "${CACHE[@]}"; do
535+
docker push ${i}:amd64-${COMMIT_SHA}-${BUILD_NUMBER} &
536+
done
537+
wait
538+
fi
539+
'''
540+
}
541+
}
507542
}
508543
}
509544
// Build MultiArch Docker containers for push to LS Repo
@@ -534,8 +569,40 @@ pipeline {
534569
--label \"org.opencontainers.image.title=Yq\" \
535570
--label \"org.opencontainers.image.description=yq image by linuxserver.io\" \
536571
--no-cache --pull -t ${IMAGE}:amd64-${META_TAG} --platform=linux/amd64 \
537-
--provenance=false --sbom=false \
572+
--provenance=false --sbom=false --builder=container --load \
538573
--build-arg ${BUILD_VERSION_ARG}=${EXT_RELEASE} --build-arg VERSION=\"${VERSION_TAG}\" --build-arg BUILD_DATE=${GITHUB_DATE} ."
574+
sh '''#! /bin/bash
575+
set -e
576+
IFS=',' read -ra CACHE <<< "$BUILDCACHE"
577+
for i in "${CACHE[@]}"; do
578+
docker tag ${IMAGE}:amd64-${META_TAG} ${i}:amd64-${COMMIT_SHA}-${BUILD_NUMBER}
579+
done
580+
'''
581+
withCredentials([
582+
[
583+
$class: 'UsernamePasswordMultiBinding',
584+
credentialsId: 'Quay.io-Robot',
585+
usernameVariable: 'QUAYUSER',
586+
passwordVariable: 'QUAYPASS'
587+
]
588+
]) {
589+
retry_backoff(5,5) {
590+
sh '''#! /bin/bash
591+
set -e
592+
echo $DOCKERHUB_TOKEN | docker login -u linuxserverci --password-stdin
593+
echo $GITHUB_TOKEN | docker login ghcr.io -u LinuxServer-CI --password-stdin
594+
echo $GITLAB_TOKEN | docker login registry.gitlab.com -u LinuxServer.io --password-stdin
595+
echo $QUAYPASS | docker login quay.io -u $QUAYUSER --password-stdin
596+
if [[ "${PACKAGE_CHECK}" != "true" ]]; then
597+
IFS=',' read -ra CACHE <<< "$BUILDCACHE"
598+
for i in "${CACHE[@]}"; do
599+
docker push ${i}:amd64-${COMMIT_SHA}-${BUILD_NUMBER} &
600+
done
601+
wait
602+
fi
603+
'''
604+
}
605+
}
539606
}
540607
}
541608
stage('Build ARM64') {
@@ -544,10 +611,6 @@ pipeline {
544611
}
545612
steps {
546613
echo "Running on node: ${NODE_NAME}"
547-
echo 'Logging into Github'
548-
sh '''#! /bin/bash
549-
echo $GITHUB_TOKEN | docker login ghcr.io -u LinuxServer-CI --password-stdin
550-
'''
551614
sh "sed -r -i 's|(^FROM .*)|\\1\\n\\nENV LSIO_FIRST_PARTY=true|g' Dockerfile.aarch64"
552615
sh "docker buildx build \
553616
--label \"org.opencontainers.image.created=${GITHUB_DATE}\" \
@@ -563,18 +626,47 @@ pipeline {
563626
--label \"org.opencontainers.image.title=Yq\" \
564627
--label \"org.opencontainers.image.description=yq image by linuxserver.io\" \
565628
--no-cache --pull -f Dockerfile.aarch64 -t ${IMAGE}:arm64v8-${META_TAG} --platform=linux/arm64 \
566-
--provenance=false --sbom=false \
629+
--provenance=false --sbom=false --builder=container --load \
567630
--build-arg ${BUILD_VERSION_ARG}=${EXT_RELEASE} --build-arg VERSION=\"${VERSION_TAG}\" --build-arg BUILD_DATE=${GITHUB_DATE} ."
568-
sh "docker tag ${IMAGE}:arm64v8-${META_TAG} ghcr.io/linuxserver/lsiodev-buildcache:arm64v8-${COMMIT_SHA}-${BUILD_NUMBER}"
569-
retry_backoff(5,5) {
570-
sh "docker push ghcr.io/linuxserver/lsiodev-buildcache:arm64v8-${COMMIT_SHA}-${BUILD_NUMBER}"
631+
sh '''#! /bin/bash
632+
set -e
633+
IFS=',' read -ra CACHE <<< "$BUILDCACHE"
634+
for i in "${CACHE[@]}"; do
635+
docker tag ${IMAGE}:arm64v8-${META_TAG} ${i}:arm64v8-${COMMIT_SHA}-${BUILD_NUMBER}
636+
done
637+
'''
638+
withCredentials([
639+
[
640+
$class: 'UsernamePasswordMultiBinding',
641+
credentialsId: 'Quay.io-Robot',
642+
usernameVariable: 'QUAYUSER',
643+
passwordVariable: 'QUAYPASS'
644+
]
645+
]) {
646+
retry_backoff(5,5) {
647+
sh '''#! /bin/bash
648+
set -e
649+
echo $DOCKERHUB_TOKEN | docker login -u linuxserverci --password-stdin
650+
echo $GITHUB_TOKEN | docker login ghcr.io -u LinuxServer-CI --password-stdin
651+
echo $GITLAB_TOKEN | docker login registry.gitlab.com -u LinuxServer.io --password-stdin
652+
echo $QUAYPASS | docker login quay.io -u $QUAYUSER --password-stdin
653+
if [[ "${PACKAGE_CHECK}" != "true" ]]; then
654+
IFS=',' read -ra CACHE <<< "$BUILDCACHE"
655+
for i in "${CACHE[@]}"; do
656+
docker push ${i}:arm64v8-${COMMIT_SHA}-${BUILD_NUMBER} &
657+
done
658+
wait
659+
fi
660+
'''
661+
}
571662
}
572663
sh '''#! /bin/bash
573664
containers=$(docker ps -aq)
574665
if [[ -n "${containers}" ]]; then
575666
docker stop ${containers}
576667
fi
577-
docker system prune -af --volumes || : '''
668+
docker system prune -af --volumes || :
669+
'''
578670
}
579671
}
580672
}
@@ -723,37 +815,23 @@ pipeline {
723815
environment name: 'EXIT_STATUS', value: ''
724816
}
725817
steps {
726-
withCredentials([
727-
[
728-
$class: 'UsernamePasswordMultiBinding',
729-
credentialsId: 'Quay.io-Robot',
730-
usernameVariable: 'QUAYUSER',
731-
passwordVariable: 'QUAYPASS'
732-
]
733-
]) {
734-
retry_backoff(5,5) {
735-
sh '''#! /bin/bash
736-
set -e
737-
echo $DOCKERHUB_TOKEN | docker login -u linuxserverci --password-stdin
738-
echo $GITHUB_TOKEN | docker login ghcr.io -u LinuxServer-CI --password-stdin
739-
echo $GITLAB_TOKEN | docker login registry.gitlab.com -u LinuxServer.io --password-stdin
740-
echo $QUAYPASS | docker login quay.io -u $QUAYUSER --password-stdin
741-
for PUSHIMAGE in "${GITHUBIMAGE}" "${GITLABIMAGE}" "${QUAYIMAGE}" "${IMAGE}"; do
742-
docker tag ${IMAGE}:${META_TAG} ${PUSHIMAGE}:${META_TAG}
743-
docker tag ${PUSHIMAGE}:${META_TAG} ${PUSHIMAGE}:latest
744-
docker tag ${PUSHIMAGE}:${META_TAG} ${PUSHIMAGE}:${EXT_RELEASE_TAG}
745-
if [ -n "${SEMVER}" ]; then
746-
docker tag ${PUSHIMAGE}:${META_TAG} ${PUSHIMAGE}:${SEMVER}
747-
fi
748-
docker push ${PUSHIMAGE}:latest
749-
docker push ${PUSHIMAGE}:${META_TAG}
750-
docker push ${PUSHIMAGE}:${EXT_RELEASE_TAG}
751-
if [ -n "${SEMVER}" ]; then
752-
docker push ${PUSHIMAGE}:${SEMVER}
753-
fi
818+
retry_backoff(5,5) {
819+
sh '''#! /bin/bash
820+
set -e
821+
for PUSHIMAGE in "${IMAGE}" "${GITLABIMAGE}" "${GITHUBIMAGE}" "${QUAYIMAGE}"; do
822+
[[ ${PUSHIMAGE%%/*} =~ \\. ]] && PUSHIMAGEPLUS="${PUSHIMAGE}" || PUSHIMAGEPLUS="docker.io/${PUSHIMAGE}"
823+
IFS=',' read -ra CACHE <<< "$BUILDCACHE"
824+
for i in "${CACHE[@]}"; do
825+
if [[ "${PUSHIMAGEPLUS}" == "$(cut -d "/" -f1 <<< ${i})"* ]]; then
826+
CACHEIMAGE=${i}
827+
fi
754828
done
755-
'''
756-
}
829+
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}
830+
if [ -n "${SEMVER}" ]; then
831+
docker buildx imagetools create --prefer-index=false -t ${PUSHIMAGE}:${SEMVER} ${CACHEIMAGE}:amd64-${COMMIT_SHA}-${BUILD_NUMBER}
832+
fi
833+
done
834+
'''
757835
}
758836
}
759837
}
@@ -764,57 +842,34 @@ pipeline {
764842
environment name: 'EXIT_STATUS', value: ''
765843
}
766844
steps {
767-
withCredentials([
768-
[
769-
$class: 'UsernamePasswordMultiBinding',
770-
credentialsId: 'Quay.io-Robot',
771-
usernameVariable: 'QUAYUSER',
772-
passwordVariable: 'QUAYPASS'
773-
]
774-
]) {
775-
retry_backoff(5,5) {
776-
sh '''#! /bin/bash
777-
set -e
778-
echo $DOCKERHUB_TOKEN | docker login -u linuxserverci --password-stdin
779-
echo $GITHUB_TOKEN | docker login ghcr.io -u LinuxServer-CI --password-stdin
780-
echo $GITLAB_TOKEN | docker login registry.gitlab.com -u LinuxServer.io --password-stdin
781-
echo $QUAYPASS | docker login quay.io -u $QUAYUSER --password-stdin
782-
if [ "${CI}" == "false" ]; then
783-
docker pull ghcr.io/linuxserver/lsiodev-buildcache:arm64v8-${COMMIT_SHA}-${BUILD_NUMBER} --platform=arm64
784-
docker tag ghcr.io/linuxserver/lsiodev-buildcache:arm64v8-${COMMIT_SHA}-${BUILD_NUMBER} ${IMAGE}:arm64v8-${META_TAG}
785-
fi
786-
for MANIFESTIMAGE in "${IMAGE}" "${GITLABIMAGE}" "${GITHUBIMAGE}" "${QUAYIMAGE}"; do
787-
docker tag ${IMAGE}:amd64-${META_TAG} ${MANIFESTIMAGE}:amd64-${META_TAG}
788-
docker tag ${MANIFESTIMAGE}:amd64-${META_TAG} ${MANIFESTIMAGE}:amd64-latest
789-
docker tag ${MANIFESTIMAGE}:amd64-${META_TAG} ${MANIFESTIMAGE}:amd64-${EXT_RELEASE_TAG}
790-
docker tag ${IMAGE}:arm64v8-${META_TAG} ${MANIFESTIMAGE}:arm64v8-${META_TAG}
791-
docker tag ${MANIFESTIMAGE}:arm64v8-${META_TAG} ${MANIFESTIMAGE}:arm64v8-latest
792-
docker tag ${MANIFESTIMAGE}:arm64v8-${META_TAG} ${MANIFESTIMAGE}:arm64v8-${EXT_RELEASE_TAG}
793-
if [ -n "${SEMVER}" ]; then
794-
docker tag ${MANIFESTIMAGE}:amd64-${META_TAG} ${MANIFESTIMAGE}:amd64-${SEMVER}
795-
docker tag ${MANIFESTIMAGE}:arm64v8-${META_TAG} ${MANIFESTIMAGE}:arm64v8-${SEMVER}
796-
fi
797-
docker push ${MANIFESTIMAGE}:amd64-${META_TAG}
798-
docker push ${MANIFESTIMAGE}:amd64-${EXT_RELEASE_TAG}
799-
docker push ${MANIFESTIMAGE}:amd64-latest
800-
docker push ${MANIFESTIMAGE}:arm64v8-${META_TAG}
801-
docker push ${MANIFESTIMAGE}:arm64v8-latest
802-
docker push ${MANIFESTIMAGE}:arm64v8-${EXT_RELEASE_TAG}
803-
if [ -n "${SEMVER}" ]; then
804-
docker push ${MANIFESTIMAGE}:amd64-${SEMVER}
805-
docker push ${MANIFESTIMAGE}:arm64v8-${SEMVER}
806-
fi
807-
done
808-
for MANIFESTIMAGE in "${IMAGE}" "${GITLABIMAGE}" "${GITHUBIMAGE}" "${QUAYIMAGE}"; do
809-
docker buildx imagetools create -t ${MANIFESTIMAGE}:latest ${MANIFESTIMAGE}:amd64-latest ${MANIFESTIMAGE}:arm64v8-latest
810-
docker buildx imagetools create -t ${MANIFESTIMAGE}:${META_TAG} ${MANIFESTIMAGE}:amd64-${META_TAG} ${MANIFESTIMAGE}:arm64v8-${META_TAG}
811-
docker buildx imagetools create -t ${MANIFESTIMAGE}:${EXT_RELEASE_TAG} ${MANIFESTIMAGE}:amd64-${EXT_RELEASE_TAG} ${MANIFESTIMAGE}:arm64v8-${EXT_RELEASE_TAG}
812-
if [ -n "${SEMVER}" ]; then
813-
docker buildx imagetools create -t ${MANIFESTIMAGE}:${SEMVER} ${MANIFESTIMAGE}:amd64-${SEMVER} ${MANIFESTIMAGE}:arm64v8-${SEMVER}
814-
fi
845+
retry_backoff(5,5) {
846+
sh '''#! /bin/bash
847+
set -e
848+
for MANIFESTIMAGE in "${IMAGE}" "${GITLABIMAGE}" "${GITHUBIMAGE}" "${QUAYIMAGE}"; do
849+
[[ ${MANIFESTIMAGE%%/*} =~ \\. ]] && MANIFESTIMAGEPLUS="${MANIFESTIMAGE}" || MANIFESTIMAGEPLUS="docker.io/${MANIFESTIMAGE}"
850+
IFS=',' read -ra CACHE <<< "$BUILDCACHE"
851+
for i in "${CACHE[@]}"; do
852+
if [[ "${MANIFESTIMAGEPLUS}" == "$(cut -d "/" -f1 <<< ${i})"* ]]; then
853+
CACHEIMAGE=${i}
854+
fi
815855
done
816-
'''
817-
}
856+
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}
857+
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}
858+
if [ -n "${SEMVER}" ]; then
859+
docker buildx imagetools create --prefer-index=false -t ${MANIFESTIMAGE}:amd64-${SEMVER} ${CACHEIMAGE}:amd64-${COMMIT_SHA}-${BUILD_NUMBER}
860+
docker buildx imagetools create --prefer-index=false -t ${MANIFESTIMAGE}:arm64v8-${SEMVER} ${CACHEIMAGE}:arm64v8-${COMMIT_SHA}-${BUILD_NUMBER}
861+
fi
862+
done
863+
for MANIFESTIMAGE in "${IMAGE}" "${GITLABIMAGE}" "${GITHUBIMAGE}" "${QUAYIMAGE}"; do
864+
docker buildx imagetools create -t ${MANIFESTIMAGE}:latest ${MANIFESTIMAGE}:amd64-latest ${MANIFESTIMAGE}:arm64v8-latest
865+
docker buildx imagetools create -t ${MANIFESTIMAGE}:${META_TAG} ${MANIFESTIMAGE}:amd64-${META_TAG} ${MANIFESTIMAGE}:arm64v8-${META_TAG}
866+
867+
docker buildx imagetools create -t ${MANIFESTIMAGE}:${EXT_RELEASE_TAG} ${MANIFESTIMAGE}:amd64-${EXT_RELEASE_TAG} ${MANIFESTIMAGE}:arm64v8-${EXT_RELEASE_TAG}
868+
if [ -n "${SEMVER}" ]; then
869+
docker buildx imagetools create -t ${MANIFESTIMAGE}:${SEMVER} ${MANIFESTIMAGE}:amd64-${SEMVER} ${MANIFESTIMAGE}:arm64v8-${SEMVER}
870+
fi
871+
done
872+
'''
818873
}
819874
}
820875
}

0 commit comments

Comments
 (0)