Skip to content

Commit 680ec47

Browse files
Bot Updating Templated Files
1 parent 9dc6398 commit 680ec47

File tree

1 file changed

+101
-7
lines changed

1 file changed

+101
-7
lines changed

Jenkinsfile

Lines changed: 101 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 = 'bookstackapp'
2122
EXT_REPO = 'bookstack'
@@ -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-' + env.EXT_RELEASE_CLEAN + '-ls' + env.LS_TAG_NUMBER + '|arm32v7-' + env.EXT_RELEASE_CLEAN + '-ls' + env.LS_TAG_NUMBER + '|arm64v8-' + 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-' + env.EXT_RELEASE_CLEAN + '-pkg-' + env.PACKAGE_TAG + '-dev-' + env.COMMIT_SHA + '|arm32v7-' + env.EXT_RELEASE_CLEAN + '-pkg-' + env.PACKAGE_TAG + '-dev-' + env.COMMIT_SHA + '|arm64v8-' + 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-' + env.EXT_RELEASE_CLEAN + '-pkg-' + env.PACKAGE_TAG + '-pr-' + env.PULL_REQUEST + '|arm32v7-' + env.EXT_RELEASE_CLEAN + '-pkg-' + env.PACKAGE_TAG + '-pr-' + env.PULL_REQUEST + '|arm64v8-' + env.EXT_RELEASE_CLEAN + '-pkg-' + env.PACKAGE_TAG + '-pr-' + env.PULL_REQUEST
189210
} else {
@@ -379,14 +400,56 @@ pipeline {
379400
"visibility":"public"}' '''
380401
}
381402
}
403+
/* #######################
404+
Scarf.sh package registry
405+
####################### */
406+
// Add package to Scarf.sh and set permissions
407+
stage("Scarf.sh package registry"){
408+
when {
409+
branch "master"
410+
environment name: 'EXIT_STATUS', value: ''
411+
}
412+
steps{
413+
sh '''#! /bin/bash
414+
set -e
415+
PACKAGE_UUID=$(curl -X GET -H "Authorization: Bearer ${SCARF_TOKEN}" https://scarf.sh/api/v1/packages | jq -r '.[] | select(.name=="linuxserver/bookstack") | .uuid')
416+
if [ -z "${PACKAGE_UUID}" ]; then
417+
echo "Adding package to Scarf.sh"
418+
PACKAGE_UUID=$(curl -sX POST https://scarf.sh/api/v1/packages \
419+
-H "Authorization: Bearer ${SCARF_TOKEN}" \
420+
-H "Content-Type: application/json" \
421+
-d '{"name":"linuxserver/bookstack",\
422+
"shortDescription":"example description",\
423+
"libraryType":"docker",\
424+
"website":"https://github.com/linuxserver/docker-bookstack",\
425+
"backendUrl":"https://ghcr.io/linuxserver/bookstack",\
426+
"publicUrl":"https://lscr.io/linuxserver/bookstack"}' \
427+
| jq -r .uuid)
428+
else
429+
echo "Package already exists on Scarf.sh"
430+
fi
431+
echo "Setting permissions on Scarf.sh for package ${PACKAGE_UUID}"
432+
curl -X POST https://scarf.sh/api/v1/packages/${PACKAGE_UUID}/permissions \
433+
-H "Authorization: Bearer ${SCARF_TOKEN}" \
434+
-H "Content-Type: application/json" \
435+
-d '[{"userQuery":"Spad","permissionLevel":"admin"},\
436+
{"userQuery":"roxedus","permissionLevel":"admin"},\
437+
{"userQuery":"nemchik","permissionLevel":"admin"},\
438+
{"userQuery":"driz","permissionLevel":"admin"},\
439+
{"userQuery":"aptalca","permissionLevel":"admin"},\
440+
{"userQuery":"saarg","permissionLevel":"admin"},\
441+
{"userQuery":"Stark","permissionLevel":"admin"}]'
442+
'''
443+
}
444+
}
382445
/* ###############
383446
Build Container
384447
############### */
385448
// Build Docker container for push to LS Repo
386449
stage('Build-Single') {
387450
when {
388451
expression {
389-
env.MULTIARCH == 'false' || params.PACKAGE_CHECK == 'true'
452+
env.MULTIARCH == 'false' || params.PACKAGE_CHECK == 'true'
390453
}
391454
environment name: 'EXIT_STATUS', value: ''
392455
}
@@ -680,6 +743,12 @@ pipeline {
680743
credentialsId: '3f9ba4d5-100d-45b0-a3c4-633fd6061207',
681744
usernameVariable: 'DOCKERUSER',
682745
passwordVariable: 'DOCKERPASS'
746+
],
747+
[
748+
$class: 'UsernamePasswordMultiBinding',
749+
credentialsId: 'Quay.io-Robot',
750+
usernameVariable: 'QUAYUSER',
751+
passwordVariable: 'QUAYPASS'
683752
]
684753
]) {
685754
retry(5) {
@@ -688,22 +757,26 @@ pipeline {
688757
echo $DOCKERPASS | docker login -u $DOCKERUSER --password-stdin
689758
echo $GITHUB_TOKEN | docker login ghcr.io -u LinuxServer-CI --password-stdin
690759
echo $GITLAB_TOKEN | docker login registry.gitlab.com -u LinuxServer.io --password-stdin
691-
for PUSHIMAGE in "${GITHUBIMAGE}" "${GITLABIMAGE}" "${IMAGE}"; do
760+
echo $QUAYPASS | docker login quay.io -u $QUAYUSER --password-stdin
761+
for PUSHIMAGE in "${GITHUBIMAGE}" "${GITLABIMAGE}" "${QUAYIMAGE}" "${IMAGE}"; do
692762
docker tag ${IMAGE}:${META_TAG} ${PUSHIMAGE}:${META_TAG}
693763
docker tag ${PUSHIMAGE}:${META_TAG} ${PUSHIMAGE}:latest
694764
docker tag ${PUSHIMAGE}:${META_TAG} ${PUSHIMAGE}:${EXT_RELEASE_TAG}
765+
docker tag ${PUSHIMAGE}:${META_TAG} ${PUSHIMAGE}:${SEMVER}
695766
docker push ${PUSHIMAGE}:latest
696767
docker push ${PUSHIMAGE}:${META_TAG}
697768
docker push ${PUSHIMAGE}:${EXT_RELEASE_TAG}
769+
docker push ${PUSHIMAGE}:${SEMVER}
698770
done
699771
'''
700772
}
701773
sh '''#! /bin/bash
702-
for DELETEIMAGE in "${GITHUBIMAGE}" "${GITLABIMAGE}" "${IMAGE}"; do
774+
for DELETEIMAGE in "${GITHUBIMAGE}" "${GITLABIMAGE}" "${QUAYIMAGE}" "${IMAGE}"; do
703775
docker rmi \
704776
${DELETEIMAGE}:${META_TAG} \
705777
${DELETEIMAGE}:${EXT_RELEASE_TAG} \
706-
${DELETEIMAGE}:latest || :
778+
${DELETEIMAGE}:latest \
779+
${DELETEIMAGE}:${SEMVER} || :
707780
done
708781
'''
709782
}
@@ -722,6 +795,12 @@ pipeline {
722795
credentialsId: '3f9ba4d5-100d-45b0-a3c4-633fd6061207',
723796
usernameVariable: 'DOCKERUSER',
724797
passwordVariable: 'DOCKERPASS'
798+
],
799+
[
800+
$class: 'UsernamePasswordMultiBinding',
801+
credentialsId: 'Quay.io-Robot',
802+
usernameVariable: 'QUAYUSER',
803+
passwordVariable: 'QUAYPASS'
725804
]
726805
]) {
727806
retry(5) {
@@ -730,13 +809,14 @@ pipeline {
730809
echo $DOCKERPASS | docker login -u $DOCKERUSER --password-stdin
731810
echo $GITHUB_TOKEN | docker login ghcr.io -u LinuxServer-CI --password-stdin
732811
echo $GITLAB_TOKEN | docker login registry.gitlab.com -u LinuxServer.io --password-stdin
812+
echo $QUAYPASS | docker login quay.io -u $QUAYUSER --password-stdin
733813
if [ "${CI}" == "false" ]; then
734814
docker pull ghcr.io/linuxserver/lsiodev-buildcache:arm32v7-${COMMIT_SHA}-${BUILD_NUMBER}
735815
docker pull ghcr.io/linuxserver/lsiodev-buildcache:arm64v8-${COMMIT_SHA}-${BUILD_NUMBER}
736816
docker tag ghcr.io/linuxserver/lsiodev-buildcache:arm32v7-${COMMIT_SHA}-${BUILD_NUMBER} ${IMAGE}:arm32v7-${META_TAG}
737817
docker tag ghcr.io/linuxserver/lsiodev-buildcache:arm64v8-${COMMIT_SHA}-${BUILD_NUMBER} ${IMAGE}:arm64v8-${META_TAG}
738818
fi
739-
for MANIFESTIMAGE in "${IMAGE}" "${GITLABIMAGE}" "${GITHUBIMAGE}"; do
819+
for MANIFESTIMAGE in "${IMAGE}" "${GITLABIMAGE}" "${GITHUBIMAGE}" "${QUAYIMAGE}"; do
740820
docker tag ${IMAGE}:amd64-${META_TAG} ${MANIFESTIMAGE}:amd64-${META_TAG}
741821
docker tag ${IMAGE}:arm32v7-${META_TAG} ${MANIFESTIMAGE}:arm32v7-${META_TAG}
742822
docker tag ${IMAGE}:arm64v8-${META_TAG} ${MANIFESTIMAGE}:arm64v8-${META_TAG}
@@ -746,6 +826,9 @@ pipeline {
746826
docker tag ${MANIFESTIMAGE}:amd64-${META_TAG} ${MANIFESTIMAGE}:amd64-${EXT_RELEASE_TAG}
747827
docker tag ${MANIFESTIMAGE}:arm32v7-${META_TAG} ${MANIFESTIMAGE}:arm32v7-${EXT_RELEASE_TAG}
748828
docker tag ${MANIFESTIMAGE}:arm64v8-${META_TAG} ${MANIFESTIMAGE}:arm64v8-${EXT_RELEASE_TAG}
829+
docker tag ${MANIFESTIMAGE}:amd64-${META_TAG} ${MANIFESTIMAGE}:amd64-${SEMVER}
830+
docker tag ${MANIFESTIMAGE}:arm32v7-${META_TAG} ${MANIFESTIMAGE}:arm32v7-${SEMVER}
831+
docker tag ${MANIFESTIMAGE}:arm64v8-${META_TAG} ${MANIFESTIMAGE}:arm64v8-${SEMVER}
749832
docker push ${MANIFESTIMAGE}:amd64-${META_TAG}
750833
docker push ${MANIFESTIMAGE}:arm32v7-${META_TAG}
751834
docker push ${MANIFESTIMAGE}:arm64v8-${META_TAG}
@@ -755,6 +838,9 @@ pipeline {
755838
docker push ${MANIFESTIMAGE}:amd64-${EXT_RELEASE_TAG}
756839
docker push ${MANIFESTIMAGE}:arm32v7-${EXT_RELEASE_TAG}
757840
docker push ${MANIFESTIMAGE}:arm64v8-${EXT_RELEASE_TAG}
841+
docker push ${MANIFESTIMAGE}:amd64-${SEMVER}
842+
docker push ${MANIFESTIMAGE}:arm32v7-${SEMVER}
843+
docker push ${MANIFESTIMAGE}:arm64v8-${SEMVER}
758844
docker manifest push --purge ${MANIFESTIMAGE}:latest || :
759845
docker manifest create ${MANIFESTIMAGE}:latest ${MANIFESTIMAGE}:amd64-latest ${MANIFESTIMAGE}:arm32v7-latest ${MANIFESTIMAGE}:arm64v8-latest
760846
docker manifest annotate ${MANIFESTIMAGE}:latest ${MANIFESTIMAGE}:arm32v7-latest --os linux --arch arm
@@ -767,24 +853,32 @@ pipeline {
767853
docker manifest create ${MANIFESTIMAGE}:${EXT_RELEASE_TAG} ${MANIFESTIMAGE}:amd64-${EXT_RELEASE_TAG} ${MANIFESTIMAGE}:arm32v7-${EXT_RELEASE_TAG} ${MANIFESTIMAGE}:arm64v8-${EXT_RELEASE_TAG}
768854
docker manifest annotate ${MANIFESTIMAGE}:${EXT_RELEASE_TAG} ${MANIFESTIMAGE}:arm32v7-${EXT_RELEASE_TAG} --os linux --arch arm
769855
docker manifest annotate ${MANIFESTIMAGE}:${EXT_RELEASE_TAG} ${MANIFESTIMAGE}:arm64v8-${EXT_RELEASE_TAG} --os linux --arch arm64 --variant v8
856+
docker manifest push --purge ${MANIFESTIMAGE}:${SEMVER} || :
857+
docker manifest create ${MANIFESTIMAGE}:${SEMVER} ${MANIFESTIMAGE}:amd64-${SEMVER} ${MANIFESTIMAGE}:arm32v7-${SEMVER} ${MANIFESTIMAGE}:arm64v8-${SEMVER}
858+
docker manifest annotate ${MANIFESTIMAGE}:${SEMVER} ${MANIFESTIMAGE}:arm32v7-${SEMVER} --os linux --arch arm
859+
docker manifest annotate ${MANIFESTIMAGE}:${SEMVER} ${MANIFESTIMAGE}:arm64v8-${SEMVER} --os linux --arch arm64 --variant v8
770860
docker manifest push --purge ${MANIFESTIMAGE}:latest
771861
docker manifest push --purge ${MANIFESTIMAGE}:${META_TAG}
772862
docker manifest push --purge ${MANIFESTIMAGE}:${EXT_RELEASE_TAG}
863+
docker manifest push --purge ${MANIFESTIMAGE}:${SEMVER}
773864
done
774865
'''
775866
}
776867
sh '''#! /bin/bash
777-
for DELETEIMAGE in "${GITHUBIMAGE}" "${GITLABIMAGE}" "${IMAGE}"; do
868+
for DELETEIMAGE in "${GITHUBIMAGE}" "${GITLABIMAGE}" "${QUAYIMAGE}" "${IMAGE}"; do
778869
docker rmi \
779870
${DELETEIMAGE}:amd64-${META_TAG} \
780871
${DELETEIMAGE}:amd64-latest \
781872
${DELETEIMAGE}:amd64-${EXT_RELEASE_TAG} \
873+
${DELETEIMAGE}:amd64-${SEMVER} \
782874
${DELETEIMAGE}:arm32v7-${META_TAG} \
783875
${DELETEIMAGE}:arm32v7-latest \
784876
${DELETEIMAGE}:arm32v7-${EXT_RELEASE_TAG} \
877+
${DELETEIMAGE}:arm32v7-${SEMVER} \
785878
${DELETEIMAGE}:arm64v8-${META_TAG} \
786879
${DELETEIMAGE}:arm64v8-latest \
787-
${DELETEIMAGE}:arm64v8-${EXT_RELEASE_TAG} || :
880+
${DELETEIMAGE}:arm64v8-${EXT_RELEASE_TAG} \
881+
${DELETEIMAGE}:arm64v8-${SEMVER} || :
788882
done
789883
docker rmi \
790884
ghcr.io/linuxserver/lsiodev-buildcache:arm32v7-${COMMIT_SHA}-${BUILD_NUMBER} \

0 commit comments

Comments
 (0)