Skip to content

Commit 53ee606

Browse files
Bot Updating Templated Files
1 parent 98fa57e commit 53ee606

File tree

1 file changed

+100
-7
lines changed

1 file changed

+100
-7
lines changed

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
BUILD_VERSION_ARG = 'OS'
2021
LS_USER = 'linuxserver'
2122
LS_REPO = 'docker-baseimage-alpine-nginx'
@@ -114,6 +115,23 @@ pipeline {
114115
env.EXT_RELEASE_CLEAN = sh(
115116
script: '''echo ${EXT_RELEASE} | sed 's/[~,%@+;:/]//g' ''',
116117
returnStdout: true).trim()
118+
119+
env.SEMVER = (new Date()).format('YYYY.MM.dd')
120+
def semver = env.EXT_RELEASE_CLEAN =~ /(\d+)\.(\d+)\.(\d+)$/
121+
if (semver.find()) {
122+
env.SEMVER = "${semver[0][1]}.${semver[0][2]}.${semver[0][3]}"
123+
} else {
124+
semver = env.EXT_RELEASE_CLEAN =~ /(\d+)\.(\d+)(?:\.(\d+))?(.*)$/
125+
if (semver.find()) {
126+
if (semver[0][3]) {
127+
env.SEMVER = "${semver[0][1]}.${semver[0][2]}.${semver[0][3]}"
128+
} else if (!semver[0][3] && !semver[0][4]) {
129+
env.SEMVER = "${semver[0][1]}.${semver[0][2]}.${(new Date()).format('YYYYMMdd')}"
130+
}
131+
}
132+
}
133+
134+
println("SEMVER: ${env.SEMVER}")
117135
}
118136
}
119137
}
@@ -128,6 +146,7 @@ pipeline {
128146
env.IMAGE = env.DOCKERHUB_IMAGE
129147
env.GITHUBIMAGE = 'ghcr.io/' + env.LS_USER + '/' + env.CONTAINER_NAME
130148
env.GITLABIMAGE = 'registry.gitlab.com/linuxserver.io/' + env.LS_REPO + '/' + env.CONTAINER_NAME
149+
env.QUAYIMAGE = 'quay.io/linuxserver.io/' + env.CONTAINER_NAME
131150
if (env.MULTIARCH == 'true') {
132151
env.CI_TAGS = 'amd64-3.9-' + env.EXT_RELEASE_CLEAN + '-ls' + env.LS_TAG_NUMBER + '|arm32v7-3.9-' + env.EXT_RELEASE_CLEAN + '-ls' + env.LS_TAG_NUMBER + '|arm64v8-3.9-' + env.EXT_RELEASE_CLEAN + '-ls' + env.LS_TAG_NUMBER
133152
} else {
@@ -150,6 +169,7 @@ pipeline {
150169
env.IMAGE = env.DEV_DOCKERHUB_IMAGE
151170
env.GITHUBIMAGE = 'ghcr.io/' + env.LS_USER + '/lsiodev-' + env.CONTAINER_NAME
152171
env.GITLABIMAGE = 'registry.gitlab.com/linuxserver.io/' + env.LS_REPO + '/lsiodev-' + env.CONTAINER_NAME
172+
env.QUAYIMAGE = 'quay.io/linuxserver.io/lsiodev-' + env.CONTAINER_NAME
153173
if (env.MULTIARCH == 'true') {
154174
env.CI_TAGS = 'amd64-3.9-' + env.EXT_RELEASE_CLEAN + '-pkg-' + env.PACKAGE_TAG + '-dev-' + env.COMMIT_SHA + '|arm32v7-3.9-' + env.EXT_RELEASE_CLEAN + '-pkg-' + env.PACKAGE_TAG + '-dev-' + env.COMMIT_SHA + '|arm64v8-3.9-' + env.EXT_RELEASE_CLEAN + '-pkg-' + env.PACKAGE_TAG + '-dev-' + env.COMMIT_SHA
155175
} else {
@@ -172,6 +192,7 @@ pipeline {
172192
env.IMAGE = env.PR_DOCKERHUB_IMAGE
173193
env.GITHUBIMAGE = 'ghcr.io/' + env.LS_USER + '/lspipepr-' + env.CONTAINER_NAME
174194
env.GITLABIMAGE = 'registry.gitlab.com/linuxserver.io/' + env.LS_REPO + '/lspipepr-' + env.CONTAINER_NAME
195+
env.QUAYIMAGE = 'quay.io/linuxserver.io/lspipepr-' + env.CONTAINER_NAME
175196
if (env.MULTIARCH == 'true') {
176197
env.CI_TAGS = 'amd64-3.9-' + env.EXT_RELEASE_CLEAN + '-pkg-' + env.PACKAGE_TAG + '-pr-' + env.PULL_REQUEST + '|arm32v7-3.9-' + env.EXT_RELEASE_CLEAN + '-pkg-' + env.PACKAGE_TAG + '-pr-' + env.PULL_REQUEST + '|arm64v8-3.9-' + env.EXT_RELEASE_CLEAN + '-pkg-' + env.PACKAGE_TAG + '-pr-' + env.PULL_REQUEST
177198
} else {
@@ -348,14 +369,56 @@ pipeline {
348369
"visibility":"public"}' '''
349370
}
350371
}
372+
/* #######################
373+
Scarf.sh package registry
374+
####################### */
375+
// Add package to Scarf.sh and set permissions
376+
stage("Scarf.sh package registry"){
377+
when {
378+
branch "3.9"
379+
environment name: 'EXIT_STATUS', value: ''
380+
}
381+
steps{
382+
sh '''#! /bin/bash
383+
set -e
384+
PACKAGE_UUID=$(curl -X GET -H "Authorization: Bearer ${SCARF_TOKEN}" https://scarf.sh/api/v1/packages | jq -r '.[] | select(.name=="linuxserver/baseimage-alpine-nginx") | .uuid')
385+
if [ -z "${PACKAGE_UUID}" ]; then
386+
echo "Adding package to Scarf.sh"
387+
PACKAGE_UUID=$(curl -sX POST https://scarf.sh/api/v1/packages \
388+
-H "Authorization: Bearer ${SCARF_TOKEN}" \
389+
-H "Content-Type: application/json" \
390+
-d '{"name":"linuxserver/baseimage-alpine-nginx",\
391+
"shortDescription":"example description",\
392+
"libraryType":"docker",\
393+
"website":"https://github.com/linuxserver/docker-baseimage-alpine-nginx",\
394+
"backendUrl":"https://ghcr.io/linuxserver/baseimage-alpine-nginx",\
395+
"publicUrl":"https://lscr.io/linuxserver/baseimage-alpine-nginx"}' \
396+
| jq -r .uuid)
397+
else
398+
echo "Package already exists on Scarf.sh"
399+
fi
400+
echo "Setting permissions on Scarf.sh for package ${PACKAGE_UUID}"
401+
curl -X POST https://scarf.sh/api/v1/packages/${PACKAGE_UUID}/permissions \
402+
-H "Authorization: Bearer ${SCARF_TOKEN}" \
403+
-H "Content-Type: application/json" \
404+
-d '[{"userQuery":"Spad","permissionLevel":"admin"},\
405+
{"userQuery":"roxedus","permissionLevel":"admin"},\
406+
{"userQuery":"nemchik","permissionLevel":"admin"},\
407+
{"userQuery":"driz","permissionLevel":"admin"},\
408+
{"userQuery":"aptalca","permissionLevel":"admin"},\
409+
{"userQuery":"saarg","permissionLevel":"admin"},\
410+
{"userQuery":"Stark","permissionLevel":"admin"}]'
411+
'''
412+
}
413+
}
351414
/* ###############
352415
Build Container
353416
############### */
354417
// Build Docker container for push to LS Repo
355418
stage('Build-Single') {
356419
when {
357420
expression {
358-
env.MULTIARCH == 'false' || params.PACKAGE_CHECK == 'true'
421+
env.MULTIARCH == 'false' || params.PACKAGE_CHECK == 'true'
359422
}
360423
environment name: 'EXIT_STATUS', value: ''
361424
}
@@ -635,6 +698,12 @@ pipeline {
635698
credentialsId: '3f9ba4d5-100d-45b0-a3c4-633fd6061207',
636699
usernameVariable: 'DOCKERUSER',
637700
passwordVariable: 'DOCKERPASS'
701+
],
702+
[
703+
$class: 'UsernamePasswordMultiBinding',
704+
credentialsId: 'Quay.io-Robot',
705+
usernameVariable: 'QUAYUSER',
706+
passwordVariable: 'QUAYPASS'
638707
]
639708
]) {
640709
retry(5) {
@@ -643,22 +712,26 @@ pipeline {
643712
echo $DOCKERPASS | docker login -u $DOCKERUSER --password-stdin
644713
echo $GITHUB_TOKEN | docker login ghcr.io -u LinuxServer-CI --password-stdin
645714
echo $GITLAB_TOKEN | docker login registry.gitlab.com -u LinuxServer.io --password-stdin
646-
for PUSHIMAGE in "${GITHUBIMAGE}" "${GITLABIMAGE}" "${IMAGE}"; do
715+
echo $QUAYPASS | docker login quay.io -u $QUAYUSER --password-stdin
716+
for PUSHIMAGE in "${GITHUBIMAGE}" "${GITLABIMAGE}" "${QUAYIMAGE}" "${IMAGE}"; do
647717
docker tag ${IMAGE}:${META_TAG} ${PUSHIMAGE}:${META_TAG}
648718
docker tag ${PUSHIMAGE}:${META_TAG} ${PUSHIMAGE}:3.9
649719
docker tag ${PUSHIMAGE}:${META_TAG} ${PUSHIMAGE}:${EXT_RELEASE_TAG}
720+
docker tag ${PUSHIMAGE}:${META_TAG} ${PUSHIMAGE}:${SEMVER}
650721
docker push ${PUSHIMAGE}:3.9
651722
docker push ${PUSHIMAGE}:${META_TAG}
652723
docker push ${PUSHIMAGE}:${EXT_RELEASE_TAG}
724+
docker push ${PUSHIMAGE}:${SEMVER}
653725
done
654726
'''
655727
}
656728
sh '''#! /bin/bash
657-
for DELETEIMAGE in "${GITHUBIMAGE}" "${GITLABIMAGE}" "${IMAGE}"; do
729+
for DELETEIMAGE in "${GITHUBIMAGE}" "${GITLABIMAGE}" "${QUAYIMAGE}" "${IMAGE}"; do
658730
docker rmi \
659731
${DELETEIMAGE}:${META_TAG} \
660732
${DELETEIMAGE}:${EXT_RELEASE_TAG} \
661-
${DELETEIMAGE}:3.9 || :
733+
${DELETEIMAGE}:3.9 \
734+
${DELETEIMAGE}:${SEMVER} || :
662735
done
663736
'''
664737
}
@@ -677,6 +750,12 @@ pipeline {
677750
credentialsId: '3f9ba4d5-100d-45b0-a3c4-633fd6061207',
678751
usernameVariable: 'DOCKERUSER',
679752
passwordVariable: 'DOCKERPASS'
753+
],
754+
[
755+
$class: 'UsernamePasswordMultiBinding',
756+
credentialsId: 'Quay.io-Robot',
757+
usernameVariable: 'QUAYUSER',
758+
passwordVariable: 'QUAYPASS'
680759
]
681760
]) {
682761
retry(5) {
@@ -685,13 +764,14 @@ pipeline {
685764
echo $DOCKERPASS | docker login -u $DOCKERUSER --password-stdin
686765
echo $GITHUB_TOKEN | docker login ghcr.io -u LinuxServer-CI --password-stdin
687766
echo $GITLAB_TOKEN | docker login registry.gitlab.com -u LinuxServer.io --password-stdin
767+
echo $QUAYPASS | docker login quay.io -u $QUAYUSER --password-stdin
688768
if [ "${CI}" == "false" ]; then
689769
docker pull ghcr.io/linuxserver/lsiodev-buildcache:arm32v7-${COMMIT_SHA}-${BUILD_NUMBER}
690770
docker pull ghcr.io/linuxserver/lsiodev-buildcache:arm64v8-${COMMIT_SHA}-${BUILD_NUMBER}
691771
docker tag ghcr.io/linuxserver/lsiodev-buildcache:arm32v7-${COMMIT_SHA}-${BUILD_NUMBER} ${IMAGE}:arm32v7-${META_TAG}
692772
docker tag ghcr.io/linuxserver/lsiodev-buildcache:arm64v8-${COMMIT_SHA}-${BUILD_NUMBER} ${IMAGE}:arm64v8-${META_TAG}
693773
fi
694-
for MANIFESTIMAGE in "${IMAGE}" "${GITLABIMAGE}" "${GITHUBIMAGE}"; do
774+
for MANIFESTIMAGE in "${IMAGE}" "${GITLABIMAGE}" "${GITHUBIMAGE}" "${QUAYIMAGE}"; do
695775
docker tag ${IMAGE}:amd64-${META_TAG} ${MANIFESTIMAGE}:amd64-${META_TAG}
696776
docker tag ${IMAGE}:arm32v7-${META_TAG} ${MANIFESTIMAGE}:arm32v7-${META_TAG}
697777
docker tag ${IMAGE}:arm64v8-${META_TAG} ${MANIFESTIMAGE}:arm64v8-${META_TAG}
@@ -701,6 +781,9 @@ pipeline {
701781
docker tag ${MANIFESTIMAGE}:amd64-${META_TAG} ${MANIFESTIMAGE}:amd64-${EXT_RELEASE_TAG}
702782
docker tag ${MANIFESTIMAGE}:arm32v7-${META_TAG} ${MANIFESTIMAGE}:arm32v7-${EXT_RELEASE_TAG}
703783
docker tag ${MANIFESTIMAGE}:arm64v8-${META_TAG} ${MANIFESTIMAGE}:arm64v8-${EXT_RELEASE_TAG}
784+
docker tag ${MANIFESTIMAGE}:amd64-${META_TAG} ${MANIFESTIMAGE}:amd64-${SEMVER}
785+
docker tag ${MANIFESTIMAGE}:arm32v7-${META_TAG} ${MANIFESTIMAGE}:arm32v7-${SEMVER}
786+
docker tag ${MANIFESTIMAGE}:arm64v8-${META_TAG} ${MANIFESTIMAGE}:arm64v8-${SEMVER}
704787
docker push ${MANIFESTIMAGE}:amd64-${META_TAG}
705788
docker push ${MANIFESTIMAGE}:arm32v7-${META_TAG}
706789
docker push ${MANIFESTIMAGE}:arm64v8-${META_TAG}
@@ -710,6 +793,9 @@ pipeline {
710793
docker push ${MANIFESTIMAGE}:amd64-${EXT_RELEASE_TAG}
711794
docker push ${MANIFESTIMAGE}:arm32v7-${EXT_RELEASE_TAG}
712795
docker push ${MANIFESTIMAGE}:arm64v8-${EXT_RELEASE_TAG}
796+
docker push ${MANIFESTIMAGE}:amd64-${SEMVER}
797+
docker push ${MANIFESTIMAGE}:arm32v7-${SEMVER}
798+
docker push ${MANIFESTIMAGE}:arm64v8-${SEMVER}
713799
docker manifest push --purge ${MANIFESTIMAGE}:3.9 || :
714800
docker manifest create ${MANIFESTIMAGE}:3.9 ${MANIFESTIMAGE}:amd64-3.9 ${MANIFESTIMAGE}:arm32v7-3.9 ${MANIFESTIMAGE}:arm64v8-3.9
715801
docker manifest annotate ${MANIFESTIMAGE}:3.9 ${MANIFESTIMAGE}:arm32v7-3.9 --os linux --arch arm
@@ -722,21 +808,28 @@ pipeline {
722808
docker manifest create ${MANIFESTIMAGE}:${EXT_RELEASE_TAG} ${MANIFESTIMAGE}:amd64-${EXT_RELEASE_TAG} ${MANIFESTIMAGE}:arm32v7-${EXT_RELEASE_TAG} ${MANIFESTIMAGE}:arm64v8-${EXT_RELEASE_TAG}
723809
docker manifest annotate ${MANIFESTIMAGE}:${EXT_RELEASE_TAG} ${MANIFESTIMAGE}:arm32v7-${EXT_RELEASE_TAG} --os linux --arch arm
724810
docker manifest annotate ${MANIFESTIMAGE}:${EXT_RELEASE_TAG} ${MANIFESTIMAGE}:arm64v8-${EXT_RELEASE_TAG} --os linux --arch arm64 --variant v8
811+
docker manifest push --purge ${MANIFESTIMAGE}:${SEMVER} || :
812+
docker manifest create ${MANIFESTIMAGE}:${SEMVER} ${MANIFESTIMAGE}:amd64-${SEMVER} ${MANIFESTIMAGE}:arm32v7-${SEMVER} ${MANIFESTIMAGE}:arm64v8-${SEMVER}
813+
docker manifest annotate ${MANIFESTIMAGE}:${SEMVER} ${MANIFESTIMAGE}:arm32v7-${SEMVER} --os linux --arch arm
814+
docker manifest annotate ${MANIFESTIMAGE}:${SEMVER} ${MANIFESTIMAGE}:arm64v8-${SEMVER} --os linux --arch arm64 --variant v8
725815
docker manifest push --purge ${MANIFESTIMAGE}:3.9
726816
docker manifest push --purge ${MANIFESTIMAGE}:${META_TAG}
727817
docker manifest push --purge ${MANIFESTIMAGE}:${EXT_RELEASE_TAG}
818+
docker manifest push --purge ${MANIFESTIMAGE}:${SEMVER}
728819
done
729820
'''
730821
}
731822
sh '''#! /bin/bash
732-
for DELETEIMAGE in "${GITHUBIMAGE}" "${GITLABIMAGE}" "${IMAGE}"; do
823+
for DELETEIMAGE in "${GITHUBIMAGE}" "${GITLABIMAGE}" "${QUAYIMAGE}" "${IMAGE}"; do
733824
docker rmi \
734825
${DELETEIMAGE}:arm32v7-${META_TAG} \
735826
${DELETEIMAGE}:arm32v7-3.9 \
736827
${DELETEIMAGE}:arm32v7-${EXT_RELEASE_TAG} \
828+
${DELETEIMAGE}:arm32v7-${SEMVER} \
737829
${DELETEIMAGE}:arm64v8-${META_TAG} \
738830
${DELETEIMAGE}:arm64v8-3.9 \
739-
${DELETEIMAGE}:arm64v8-${EXT_RELEASE_TAG} || :
831+
${DELETEIMAGE}:arm64v8-${EXT_RELEASE_TAG} \
832+
${DELETEIMAGE}:arm64v8-${SEMVER} || :
740833
done
741834
docker rmi \
742835
ghcr.io/linuxserver/lsiodev-buildcache:arm32v7-${COMMIT_SHA}-${BUILD_NUMBER} \

0 commit comments

Comments
 (0)