Skip to content

Commit 8c05b1f

Browse files
Bot Updating Templated Files
1 parent 6fd08a8 commit 8c05b1f

File tree

1 file changed

+148
-93
lines changed

1 file changed

+148
-93
lines changed

Jenkinsfile

Lines changed: 148 additions & 93 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 = '40-' + env.EXT_RELEASE_CLEAN + '-ls' + env.LS_TAG_NUMBER
193193
env.EXT_RELEASE_TAG = '40-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 = '40-' + env.EXT_RELEASE_CLEAN + '-pkg-' + env.PACKAGE_TAG + '-dev-' + env.COMMIT_SHA
216217
env.EXT_RELEASE_TAG = '40-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 = '40-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,40 @@ pipeline {
508511
--label \"org.opencontainers.image.title=Baseimage-fedora\" \
509512
--label \"org.opencontainers.image.description=baseimage-fedora 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+
wait
544+
fi
545+
'''
546+
}
547+
}
513548
}
514549
}
515550
// Build MultiArch Docker containers for push to LS Repo
@@ -539,8 +574,40 @@ pipeline {
539574
--label \"org.opencontainers.image.title=Baseimage-fedora\" \
540575
--label \"org.opencontainers.image.description=baseimage-fedora image by linuxserver.io\" \
541576
--no-cache --pull -t ${IMAGE}:amd64-${META_TAG} --platform=linux/amd64 \
542-
--provenance=false --sbom=false \
577+
--provenance=true --sbom=true --builder=container --load \
543578
--build-arg ${BUILD_VERSION_ARG}=${EXT_RELEASE} --build-arg VERSION=\"${VERSION_TAG}\" --build-arg BUILD_DATE=${GITHUB_DATE} ."
579+
sh '''#! /bin/bash
580+
set -e
581+
IFS=',' read -ra CACHE <<< "$BUILDCACHE"
582+
for i in "${CACHE[@]}"; do
583+
docker tag ${IMAGE}:amd64-${META_TAG} ${i}:amd64-${COMMIT_SHA}-${BUILD_NUMBER}
584+
done
585+
'''
586+
withCredentials([
587+
[
588+
$class: 'UsernamePasswordMultiBinding',
589+
credentialsId: 'Quay.io-Robot',
590+
usernameVariable: 'QUAYUSER',
591+
passwordVariable: 'QUAYPASS'
592+
]
593+
]) {
594+
retry_backoff(5,5) {
595+
sh '''#! /bin/bash
596+
set -e
597+
echo $DOCKERHUB_TOKEN | docker login -u linuxserverci --password-stdin
598+
echo $GITHUB_TOKEN | docker login ghcr.io -u LinuxServer-CI --password-stdin
599+
echo $GITLAB_TOKEN | docker login registry.gitlab.com -u LinuxServer.io --password-stdin
600+
echo $QUAYPASS | docker login quay.io -u $QUAYUSER --password-stdin
601+
if [[ "${PACKAGE_CHECK}" != "true" ]]; then
602+
IFS=',' read -ra CACHE <<< "$BUILDCACHE"
603+
for i in "${CACHE[@]}"; do
604+
docker push ${i}:amd64-${COMMIT_SHA}-${BUILD_NUMBER} &
605+
done
606+
wait
607+
fi
608+
'''
609+
}
610+
}
544611
}
545612
}
546613
stage('Build ARM64') {
@@ -549,10 +616,6 @@ pipeline {
549616
}
550617
steps {
551618
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-
'''
556619
sh "docker buildx build \
557620
--label \"org.opencontainers.image.created=${GITHUB_DATE}\" \
558621
--label \"org.opencontainers.image.authors=linuxserver.io\" \
@@ -567,18 +630,47 @@ pipeline {
567630
--label \"org.opencontainers.image.title=Baseimage-fedora\" \
568631
--label \"org.opencontainers.image.description=baseimage-fedora image by linuxserver.io\" \
569632
--no-cache --pull -f Dockerfile.aarch64 -t ${IMAGE}:arm64v8-${META_TAG} --platform=linux/arm64 \
570-
--provenance=false --sbom=false \
633+
--provenance=true --sbom=true --builder=container --load \
571634
--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}"
635+
sh '''#! /bin/bash
636+
set -e
637+
IFS=',' read -ra CACHE <<< "$BUILDCACHE"
638+
for i in "${CACHE[@]}"; do
639+
docker tag ${IMAGE}:arm64v8-${META_TAG} ${i}:arm64v8-${COMMIT_SHA}-${BUILD_NUMBER}
640+
done
641+
'''
642+
withCredentials([
643+
[
644+
$class: 'UsernamePasswordMultiBinding',
645+
credentialsId: 'Quay.io-Robot',
646+
usernameVariable: 'QUAYUSER',
647+
passwordVariable: 'QUAYPASS'
648+
]
649+
]) {
650+
retry_backoff(5,5) {
651+
sh '''#! /bin/bash
652+
set -e
653+
echo $DOCKERHUB_TOKEN | docker login -u linuxserverci --password-stdin
654+
echo $GITHUB_TOKEN | docker login ghcr.io -u LinuxServer-CI --password-stdin
655+
echo $GITLAB_TOKEN | docker login registry.gitlab.com -u LinuxServer.io --password-stdin
656+
echo $QUAYPASS | docker login quay.io -u $QUAYUSER --password-stdin
657+
if [[ "${PACKAGE_CHECK}" != "true" ]]; then
658+
IFS=',' read -ra CACHE <<< "$BUILDCACHE"
659+
for i in "${CACHE[@]}"; do
660+
docker push ${i}:arm64v8-${COMMIT_SHA}-${BUILD_NUMBER} &
661+
done
662+
wait
663+
fi
664+
'''
665+
}
575666
}
576667
sh '''#! /bin/bash
577668
containers=$(docker ps -aq)
578669
if [[ -n "${containers}" ]]; then
579670
docker stop ${containers}
580671
fi
581-
docker system prune -af --volumes || : '''
672+
docker system prune -af --volumes || :
673+
'''
582674
}
583675
}
584676
}
@@ -728,37 +820,23 @@ pipeline {
728820
environment name: 'EXIT_STATUS', value: ''
729821
}
730822
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}:40
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}:40
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
823+
retry_backoff(5,5) {
824+
sh '''#! /bin/bash
825+
set -e
826+
for PUSHIMAGE in "${IMAGE}" "${GITLABIMAGE}" "${GITHUBIMAGE}" "${QUAYIMAGE}"; do
827+
[[ ${PUSHIMAGE%%/*} =~ \\. ]] && PUSHIMAGEPLUS="${PUSHIMAGE}" || PUSHIMAGEPLUS="docker.io/${PUSHIMAGE}"
828+
IFS=',' read -ra CACHE <<< "$BUILDCACHE"
829+
for i in "${CACHE[@]}"; do
830+
if [[ "${PUSHIMAGEPLUS}" == "$(cut -d "/" -f1 <<< ${i})"* ]]; then
831+
CACHEIMAGE=${i}
832+
fi
759833
done
760-
'''
761-
}
834+
docker buildx imagetools create --prefer-index=false -t ${PUSHIMAGE}:${META_TAG} -t ${PUSHIMAGE}:40 -t ${PUSHIMAGE}:${EXT_RELEASE_TAG} ${CACHEIMAGE}:amd64-${COMMIT_SHA}-${BUILD_NUMBER}
835+
if [ -n "${SEMVER}" ]; then
836+
docker buildx imagetools create --prefer-index=false -t ${PUSHIMAGE}:${SEMVER} ${CACHEIMAGE}:amd64-${COMMIT_SHA}-${BUILD_NUMBER}
837+
fi
838+
done
839+
'''
762840
}
763841
}
764842
}
@@ -769,57 +847,34 @@ pipeline {
769847
environment name: 'EXIT_STATUS', value: ''
770848
}
771849
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-40
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-40
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-40
805-
docker push ${MANIFESTIMAGE}:arm64v8-${META_TAG}
806-
docker push ${MANIFESTIMAGE}:arm64v8-40
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}:40 ${MANIFESTIMAGE}:amd64-40 ${MANIFESTIMAGE}:arm64v8-40
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
850+
retry_backoff(5,5) {
851+
sh '''#! /bin/bash
852+
set -e
853+
for MANIFESTIMAGE in "${IMAGE}" "${GITLABIMAGE}" "${GITHUBIMAGE}" "${QUAYIMAGE}"; do
854+
[[ ${MANIFESTIMAGE%%/*} =~ \\. ]] && MANIFESTIMAGEPLUS="${MANIFESTIMAGE}" || MANIFESTIMAGEPLUS="docker.io/${MANIFESTIMAGE}"
855+
IFS=',' read -ra CACHE <<< "$BUILDCACHE"
856+
for i in "${CACHE[@]}"; do
857+
if [[ "${MANIFESTIMAGEPLUS}" == "$(cut -d "/" -f1 <<< ${i})"* ]]; then
858+
CACHEIMAGE=${i}
859+
fi
820860
done
821-
'''
822-
}
861+
docker buildx imagetools create --prefer-index=false -t ${MANIFESTIMAGE}:amd64-${META_TAG} -t ${MANIFESTIMAGE}:amd64-40 -t ${MANIFESTIMAGE}:amd64-${EXT_RELEASE_TAG} ${CACHEIMAGE}:amd64-${COMMIT_SHA}-${BUILD_NUMBER}
862+
docker buildx imagetools create --prefer-index=false -t ${MANIFESTIMAGE}:arm64v8-${META_TAG} -t ${MANIFESTIMAGE}:arm64v8-40 -t ${MANIFESTIMAGE}:arm64v8-${EXT_RELEASE_TAG} ${CACHEIMAGE}:arm64v8-${COMMIT_SHA}-${BUILD_NUMBER}
863+
if [ -n "${SEMVER}" ]; then
864+
docker buildx imagetools create --prefer-index=false -t ${MANIFESTIMAGE}:amd64-${SEMVER} ${CACHEIMAGE}:amd64-${COMMIT_SHA}-${BUILD_NUMBER}
865+
docker buildx imagetools create --prefer-index=false -t ${MANIFESTIMAGE}:arm64v8-${SEMVER} ${CACHEIMAGE}:arm64v8-${COMMIT_SHA}-${BUILD_NUMBER}
866+
fi
867+
done
868+
for MANIFESTIMAGE in "${IMAGE}" "${GITLABIMAGE}" "${GITHUBIMAGE}" "${QUAYIMAGE}"; do
869+
docker buildx imagetools create -t ${MANIFESTIMAGE}:40 ${MANIFESTIMAGE}:amd64-40 ${MANIFESTIMAGE}:arm64v8-40
870+
docker buildx imagetools create -t ${MANIFESTIMAGE}:${META_TAG} ${MANIFESTIMAGE}:amd64-${META_TAG} ${MANIFESTIMAGE}:arm64v8-${META_TAG}
871+
872+
docker buildx imagetools create -t ${MANIFESTIMAGE}:${EXT_RELEASE_TAG} ${MANIFESTIMAGE}:amd64-${EXT_RELEASE_TAG} ${MANIFESTIMAGE}:arm64v8-${EXT_RELEASE_TAG}
873+
if [ -n "${SEMVER}" ]; then
874+
docker buildx imagetools create -t ${MANIFESTIMAGE}:${SEMVER} ${MANIFESTIMAGE}:amd64-${SEMVER} ${MANIFESTIMAGE}:arm64v8-${SEMVER}
875+
fi
876+
done
877+
'''
823878
}
824879
}
825880
}
@@ -847,7 +902,7 @@ pipeline {
847902
echo '{"tag_name":"'${META_TAG}'",\
848903
"target_commitish": "master",\
849904
"name": "'${META_TAG}'",\
850-
"body": "**LinuxServer Changes:**\\n\\n'${LS_RELEASE_NOTES}'\\n\\n**Remote Changes:**\\n\\n' > start
905+
"body": "**CI Report:**\\n\\n'${CI_URL:-N/A}'\\n\\n**LinuxServer Changes:**\\n\\n'${LS_RELEASE_NOTES}'\\n\\n**Remote Changes:**\\n\\n' > start
851906
printf '","draft": false,"prerelease": false}' >> releasebody.json
852907
paste -d'\\0' start releasebody.json > releasebody.json.done
853908
curl -H "Authorization: token ${GITHUB_TOKEN}" -X POST https://api.github.com/repos/${LS_USER}/${LS_REPO}/releases -d @releasebody.json.done'''

0 commit comments

Comments
 (0)