Skip to content
This repository was archived by the owner on Apr 25, 2023. It is now read-only.

Commit 4c005ab

Browse files
Bot Updating Templated Files
1 parent 65bdc39 commit 4c005ab

1 file changed

Lines changed: 100 additions & 7 deletions

File tree

Jenkinsfile

Lines changed: 100 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,7 @@ pipeline {
1616
GITHUB_TOKEN=credentials('498b4638-2d02-4ce5-832d-8a57d01d97ab')
1717
GITLAB_TOKEN=credentials('b6f0f1dd-6952-4cf6-95d1-9c06380283f0')
1818
GITLAB_NAMESPACE=credentials('gitlab-namespace-id')
19+
SCARF_TOKEN=credentials('scarf_api_key')
1920
EXT_GIT_BRANCH = 'master'
2021
EXT_USER = 'linuxserver'
2122
EXT_REPO = 'gclient'
@@ -126,6 +127,23 @@ pipeline {
126127
env.EXT_RELEASE_CLEAN = sh(
127128
script: '''echo ${EXT_RELEASE} | sed 's/[~,%@+;:/]//g' ''',
128129
returnStdout: true).trim()
130+
131+
env.SEMVER = (new Date()).format('YYYY.MM.dd')
132+
def semver = env.EXT_RELEASE_CLEAN =~ /(\d+)\.(\d+)\.(\d+)$/
133+
if (semver.find()) {
134+
env.SEMVER = "${semver[0][1]}.${semver[0][2]}.${semver[0][3]}"
135+
} else {
136+
semver = env.EXT_RELEASE_CLEAN =~ /(\d+)\.(\d+)(?:\.(\d+))?(.*)$/
137+
if (semver.find()) {
138+
if (semver[0][3]) {
139+
env.SEMVER = "${semver[0][1]}.${semver[0][2]}.${semver[0][3]}"
140+
} else if (!semver[0][3] && !semver[0][4]) {
141+
env.SEMVER = "${semver[0][1]}.${semver[0][2]}.${(new Date()).format('YYYYMMdd')}"
142+
}
143+
}
144+
}
145+
146+
println("SEMVER: ${env.SEMVER}")
129147
}
130148
}
131149
}
@@ -140,6 +158,7 @@ pipeline {
140158
env.IMAGE = env.DOCKERHUB_IMAGE
141159
env.GITHUBIMAGE = 'ghcr.io/' + env.LS_USER + '/' + env.CONTAINER_NAME
142160
env.GITLABIMAGE = 'registry.gitlab.com/linuxserver.io/' + env.LS_REPO + '/' + env.CONTAINER_NAME
161+
env.QUAYIMAGE = 'quay.io/linuxserver.io/' + env.CONTAINER_NAME
143162
if (env.MULTIARCH == 'true') {
144163
env.CI_TAGS = 'amd64-bionic-' + env.EXT_RELEASE_CLEAN + '-ls' + env.LS_TAG_NUMBER + '|arm32v7-bionic-' + env.EXT_RELEASE_CLEAN + '-ls' + env.LS_TAG_NUMBER + '|arm64v8-bionic-' + env.EXT_RELEASE_CLEAN + '-ls' + env.LS_TAG_NUMBER
145164
} else {
@@ -162,6 +181,7 @@ pipeline {
162181
env.IMAGE = env.DEV_DOCKERHUB_IMAGE
163182
env.GITHUBIMAGE = 'ghcr.io/' + env.LS_USER + '/lsiodev-' + env.CONTAINER_NAME
164183
env.GITLABIMAGE = 'registry.gitlab.com/linuxserver.io/' + env.LS_REPO + '/lsiodev-' + env.CONTAINER_NAME
184+
env.QUAYIMAGE = 'quay.io/linuxserver.io/lsiodev-' + env.CONTAINER_NAME
165185
if (env.MULTIARCH == 'true') {
166186
env.CI_TAGS = 'amd64-bionic-' + env.EXT_RELEASE_CLEAN + '-pkg-' + env.PACKAGE_TAG + '-dev-' + env.COMMIT_SHA + '|arm32v7-bionic-' + env.EXT_RELEASE_CLEAN + '-pkg-' + env.PACKAGE_TAG + '-dev-' + env.COMMIT_SHA + '|arm64v8-bionic-' + env.EXT_RELEASE_CLEAN + '-pkg-' + env.PACKAGE_TAG + '-dev-' + env.COMMIT_SHA
167187
} else {
@@ -184,6 +204,7 @@ pipeline {
184204
env.IMAGE = env.PR_DOCKERHUB_IMAGE
185205
env.GITHUBIMAGE = 'ghcr.io/' + env.LS_USER + '/lspipepr-' + env.CONTAINER_NAME
186206
env.GITLABIMAGE = 'registry.gitlab.com/linuxserver.io/' + env.LS_REPO + '/lspipepr-' + env.CONTAINER_NAME
207+
env.QUAYIMAGE = 'quay.io/linuxserver.io/lspipepr-' + env.CONTAINER_NAME
187208
if (env.MULTIARCH == 'true') {
188209
env.CI_TAGS = 'amd64-bionic-' + env.EXT_RELEASE_CLEAN + '-pkg-' + env.PACKAGE_TAG + '-pr-' + env.PULL_REQUEST + '|arm32v7-bionic-' + env.EXT_RELEASE_CLEAN + '-pkg-' + env.PACKAGE_TAG + '-pr-' + env.PULL_REQUEST + '|arm64v8-bionic-' + env.EXT_RELEASE_CLEAN + '-pkg-' + env.PACKAGE_TAG + '-pr-' + env.PULL_REQUEST
189210
} else {
@@ -360,14 +381,56 @@ pipeline {
360381
"visibility":"public"}' '''
361382
}
362383
}
384+
/* #######################
385+
Scarf.sh package registry
386+
####################### */
387+
// Add package to Scarf.sh and set permissions
388+
stage("Scarf.sh package registry"){
389+
when {
390+
branch "bionic"
391+
environment name: 'EXIT_STATUS', value: ''
392+
}
393+
steps{
394+
sh '''#! /bin/bash
395+
set -e
396+
PACKAGE_UUID=$(curl -X GET -H "Authorization: Bearer ${SCARF_TOKEN}" https://scarf.sh/api/v1/packages | jq -r '.[] | select(.name=="linuxserver/baseimage-rdesktop-web") | .uuid')
397+
if [ -z "${PACKAGE_UUID}" ]; then
398+
echo "Adding package to Scarf.sh"
399+
PACKAGE_UUID=$(curl -sX POST https://scarf.sh/api/v1/packages \
400+
-H "Authorization: Bearer ${SCARF_TOKEN}" \
401+
-H "Content-Type: application/json" \
402+
-d '{"name":"linuxserver/baseimage-rdesktop-web",\
403+
"shortDescription":"example description",\
404+
"libraryType":"docker",\
405+
"website":"https://github.com/linuxserver/docker-baseimage-rdesktop-web",\
406+
"backendUrl":"https://ghcr.io/linuxserver/baseimage-rdesktop-web",\
407+
"publicUrl":"https://lscr.io/linuxserver/baseimage-rdesktop-web"}' \
408+
| jq -r .uuid)
409+
else
410+
echo "Package already exists on Scarf.sh"
411+
fi
412+
echo "Setting permissions on Scarf.sh for package ${PACKAGE_UUID}"
413+
curl -X POST https://scarf.sh/api/v1/packages/${PACKAGE_UUID}/permissions \
414+
-H "Authorization: Bearer ${SCARF_TOKEN}" \
415+
-H "Content-Type: application/json" \
416+
-d '[{"userQuery":"Spad","permissionLevel":"admin"},\
417+
{"userQuery":"roxedus","permissionLevel":"admin"},\
418+
{"userQuery":"nemchik","permissionLevel":"admin"},\
419+
{"userQuery":"driz","permissionLevel":"admin"},\
420+
{"userQuery":"aptalca","permissionLevel":"admin"},\
421+
{"userQuery":"saarg","permissionLevel":"admin"},\
422+
{"userQuery":"Stark","permissionLevel":"admin"}]'
423+
'''
424+
}
425+
}
363426
/* ###############
364427
Build Container
365428
############### */
366429
// Build Docker container for push to LS Repo
367430
stage('Build-Single') {
368431
when {
369432
expression {
370-
env.MULTIARCH == 'false' || params.PACKAGE_CHECK == 'true'
433+
env.MULTIARCH == 'false' || params.PACKAGE_CHECK == 'true'
371434
}
372435
environment name: 'EXIT_STATUS', value: ''
373436
}
@@ -647,6 +710,12 @@ pipeline {
647710
credentialsId: '3f9ba4d5-100d-45b0-a3c4-633fd6061207',
648711
usernameVariable: 'DOCKERUSER',
649712
passwordVariable: 'DOCKERPASS'
713+
],
714+
[
715+
$class: 'UsernamePasswordMultiBinding',
716+
credentialsId: 'Quay.io-Robot',
717+
usernameVariable: 'QUAYUSER',
718+
passwordVariable: 'QUAYPASS'
650719
]
651720
]) {
652721
retry(5) {
@@ -655,22 +724,26 @@ pipeline {
655724
echo $DOCKERPASS | docker login -u $DOCKERUSER --password-stdin
656725
echo $GITHUB_TOKEN | docker login ghcr.io -u LinuxServer-CI --password-stdin
657726
echo $GITLAB_TOKEN | docker login registry.gitlab.com -u LinuxServer.io --password-stdin
658-
for PUSHIMAGE in "${GITHUBIMAGE}" "${GITLABIMAGE}" "${IMAGE}"; do
727+
echo $QUAYPASS | docker login quay.io -u $QUAYUSER --password-stdin
728+
for PUSHIMAGE in "${GITHUBIMAGE}" "${GITLABIMAGE}" "${QUAYIMAGE}" "${IMAGE}"; do
659729
docker tag ${IMAGE}:${META_TAG} ${PUSHIMAGE}:${META_TAG}
660730
docker tag ${PUSHIMAGE}:${META_TAG} ${PUSHIMAGE}:bionic
661731
docker tag ${PUSHIMAGE}:${META_TAG} ${PUSHIMAGE}:${EXT_RELEASE_TAG}
732+
docker tag ${PUSHIMAGE}:${META_TAG} ${PUSHIMAGE}:${SEMVER}
662733
docker push ${PUSHIMAGE}:bionic
663734
docker push ${PUSHIMAGE}:${META_TAG}
664735
docker push ${PUSHIMAGE}:${EXT_RELEASE_TAG}
736+
docker push ${PUSHIMAGE}:${SEMVER}
665737
done
666738
'''
667739
}
668740
sh '''#! /bin/bash
669-
for DELETEIMAGE in "${GITHUBIMAGE}" "${GITLABIMAGE}" "${IMAGE}"; do
741+
for DELETEIMAGE in "${GITHUBIMAGE}" "${GITLABIMAGE}" "${QUAYIMAGE}" "${IMAGE}"; do
670742
docker rmi \
671743
${DELETEIMAGE}:${META_TAG} \
672744
${DELETEIMAGE}:${EXT_RELEASE_TAG} \
673-
${DELETEIMAGE}:bionic || :
745+
${DELETEIMAGE}:bionic \
746+
${DELETEIMAGE}:${SEMVER} || :
674747
done
675748
'''
676749
}
@@ -689,6 +762,12 @@ pipeline {
689762
credentialsId: '3f9ba4d5-100d-45b0-a3c4-633fd6061207',
690763
usernameVariable: 'DOCKERUSER',
691764
passwordVariable: 'DOCKERPASS'
765+
],
766+
[
767+
$class: 'UsernamePasswordMultiBinding',
768+
credentialsId: 'Quay.io-Robot',
769+
usernameVariable: 'QUAYUSER',
770+
passwordVariable: 'QUAYPASS'
692771
]
693772
]) {
694773
retry(5) {
@@ -697,13 +776,14 @@ pipeline {
697776
echo $DOCKERPASS | docker login -u $DOCKERUSER --password-stdin
698777
echo $GITHUB_TOKEN | docker login ghcr.io -u LinuxServer-CI --password-stdin
699778
echo $GITLAB_TOKEN | docker login registry.gitlab.com -u LinuxServer.io --password-stdin
779+
echo $QUAYPASS | docker login quay.io -u $QUAYUSER --password-stdin
700780
if [ "${CI}" == "false" ]; then
701781
docker pull ghcr.io/linuxserver/lsiodev-buildcache:arm32v7-${COMMIT_SHA}-${BUILD_NUMBER}
702782
docker pull ghcr.io/linuxserver/lsiodev-buildcache:arm64v8-${COMMIT_SHA}-${BUILD_NUMBER}
703783
docker tag ghcr.io/linuxserver/lsiodev-buildcache:arm32v7-${COMMIT_SHA}-${BUILD_NUMBER} ${IMAGE}:arm32v7-${META_TAG}
704784
docker tag ghcr.io/linuxserver/lsiodev-buildcache:arm64v8-${COMMIT_SHA}-${BUILD_NUMBER} ${IMAGE}:arm64v8-${META_TAG}
705785
fi
706-
for MANIFESTIMAGE in "${IMAGE}" "${GITLABIMAGE}" "${GITHUBIMAGE}"; do
786+
for MANIFESTIMAGE in "${IMAGE}" "${GITLABIMAGE}" "${GITHUBIMAGE}" "${QUAYIMAGE}"; do
707787
docker tag ${IMAGE}:amd64-${META_TAG} ${MANIFESTIMAGE}:amd64-${META_TAG}
708788
docker tag ${IMAGE}:arm32v7-${META_TAG} ${MANIFESTIMAGE}:arm32v7-${META_TAG}
709789
docker tag ${IMAGE}:arm64v8-${META_TAG} ${MANIFESTIMAGE}:arm64v8-${META_TAG}
@@ -713,6 +793,9 @@ pipeline {
713793
docker tag ${MANIFESTIMAGE}:amd64-${META_TAG} ${MANIFESTIMAGE}:amd64-${EXT_RELEASE_TAG}
714794
docker tag ${MANIFESTIMAGE}:arm32v7-${META_TAG} ${MANIFESTIMAGE}:arm32v7-${EXT_RELEASE_TAG}
715795
docker tag ${MANIFESTIMAGE}:arm64v8-${META_TAG} ${MANIFESTIMAGE}:arm64v8-${EXT_RELEASE_TAG}
796+
docker tag ${MANIFESTIMAGE}:amd64-${META_TAG} ${MANIFESTIMAGE}:amd64-${SEMVER}
797+
docker tag ${MANIFESTIMAGE}:arm32v7-${META_TAG} ${MANIFESTIMAGE}:arm32v7-${SEMVER}
798+
docker tag ${MANIFESTIMAGE}:arm64v8-${META_TAG} ${MANIFESTIMAGE}:arm64v8-${SEMVER}
716799
docker push ${MANIFESTIMAGE}:amd64-${META_TAG}
717800
docker push ${MANIFESTIMAGE}:arm32v7-${META_TAG}
718801
docker push ${MANIFESTIMAGE}:arm64v8-${META_TAG}
@@ -722,6 +805,9 @@ pipeline {
722805
docker push ${MANIFESTIMAGE}:amd64-${EXT_RELEASE_TAG}
723806
docker push ${MANIFESTIMAGE}:arm32v7-${EXT_RELEASE_TAG}
724807
docker push ${MANIFESTIMAGE}:arm64v8-${EXT_RELEASE_TAG}
808+
docker push ${MANIFESTIMAGE}:amd64-${SEMVER}
809+
docker push ${MANIFESTIMAGE}:arm32v7-${SEMVER}
810+
docker push ${MANIFESTIMAGE}:arm64v8-${SEMVER}
725811
docker manifest push --purge ${MANIFESTIMAGE}:bionic || :
726812
docker manifest create ${MANIFESTIMAGE}:bionic ${MANIFESTIMAGE}:amd64-bionic ${MANIFESTIMAGE}:arm32v7-bionic ${MANIFESTIMAGE}:arm64v8-bionic
727813
docker manifest annotate ${MANIFESTIMAGE}:bionic ${MANIFESTIMAGE}:arm32v7-bionic --os linux --arch arm
@@ -734,21 +820,28 @@ pipeline {
734820
docker manifest create ${MANIFESTIMAGE}:${EXT_RELEASE_TAG} ${MANIFESTIMAGE}:amd64-${EXT_RELEASE_TAG} ${MANIFESTIMAGE}:arm32v7-${EXT_RELEASE_TAG} ${MANIFESTIMAGE}:arm64v8-${EXT_RELEASE_TAG}
735821
docker manifest annotate ${MANIFESTIMAGE}:${EXT_RELEASE_TAG} ${MANIFESTIMAGE}:arm32v7-${EXT_RELEASE_TAG} --os linux --arch arm
736822
docker manifest annotate ${MANIFESTIMAGE}:${EXT_RELEASE_TAG} ${MANIFESTIMAGE}:arm64v8-${EXT_RELEASE_TAG} --os linux --arch arm64 --variant v8
823+
docker manifest push --purge ${MANIFESTIMAGE}:${SEMVER} || :
824+
docker manifest create ${MANIFESTIMAGE}:${SEMVER} ${MANIFESTIMAGE}:amd64-${SEMVER} ${MANIFESTIMAGE}:arm32v7-${SEMVER} ${MANIFESTIMAGE}:arm64v8-${SEMVER}
825+
docker manifest annotate ${MANIFESTIMAGE}:${SEMVER} ${MANIFESTIMAGE}:arm32v7-${SEMVER} --os linux --arch arm
826+
docker manifest annotate ${MANIFESTIMAGE}:${SEMVER} ${MANIFESTIMAGE}:arm64v8-${SEMVER} --os linux --arch arm64 --variant v8
737827
docker manifest push --purge ${MANIFESTIMAGE}:bionic
738828
docker manifest push --purge ${MANIFESTIMAGE}:${META_TAG}
739829
docker manifest push --purge ${MANIFESTIMAGE}:${EXT_RELEASE_TAG}
830+
docker manifest push --purge ${MANIFESTIMAGE}:${SEMVER}
740831
done
741832
'''
742833
}
743834
sh '''#! /bin/bash
744-
for DELETEIMAGE in "${GITHUBIMAGE}" "${GITLABIMAGE}" "${IMAGE}"; do
835+
for DELETEIMAGE in "${GITHUBIMAGE}" "${GITLABIMAGE}" "${QUAYIMAGE}" "${IMAGE}"; do
745836
docker rmi \
746837
${DELETEIMAGE}:arm32v7-${META_TAG} \
747838
${DELETEIMAGE}:arm32v7-bionic \
748839
${DELETEIMAGE}:arm32v7-${EXT_RELEASE_TAG} \
840+
${DELETEIMAGE}:arm32v7-${SEMVER} \
749841
${DELETEIMAGE}:arm64v8-${META_TAG} \
750842
${DELETEIMAGE}:arm64v8-bionic \
751-
${DELETEIMAGE}:arm64v8-${EXT_RELEASE_TAG} || :
843+
${DELETEIMAGE}:arm64v8-${EXT_RELEASE_TAG} \
844+
${DELETEIMAGE}:arm64v8-${SEMVER} || :
752845
done
753846
docker rmi \
754847
ghcr.io/linuxserver/lsiodev-buildcache:arm32v7-${COMMIT_SHA}-${BUILD_NUMBER} \

0 commit comments

Comments
 (0)