Skip to content

Commit abaf591

Browse files
Bot Updating Templated Files
1 parent 64f3814 commit abaf591

1 file changed

Lines changed: 101 additions & 7 deletions

File tree

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 = 'phpmyadmin'
2122
EXT_REPO = 'phpmyadmin'
@@ -119,6 +120,23 @@ pipeline {
119120
env.EXT_RELEASE_CLEAN = sh(
120121
script: '''echo ${EXT_RELEASE} | sed 's/[~,%@+;:/]//g' ''',
121122
returnStdout: true).trim()
123+
124+
env.SEMVER = (new Date()).format('YYYY.MM.dd')
125+
def semver = env.EXT_RELEASE_CLEAN =~ /(\d+)\.(\d+)\.(\d+)$/
126+
if (semver.find()) {
127+
env.SEMVER = "${semver[0][1]}.${semver[0][2]}.${semver[0][3]}"
128+
} else {
129+
semver = env.EXT_RELEASE_CLEAN =~ /(\d+)\.(\d+)(?:\.(\d+))?(.*)$/
130+
if (semver.find()) {
131+
if (semver[0][3]) {
132+
env.SEMVER = "${semver[0][1]}.${semver[0][2]}.${semver[0][3]}"
133+
} else if (!semver[0][3] && !semver[0][4]) {
134+
env.SEMVER = "${semver[0][1]}.${semver[0][2]}.${(new Date()).format('YYYYMMdd')}"
135+
}
136+
}
137+
}
138+
139+
println("SEMVER: ${env.SEMVER}")
122140
}
123141
}
124142
}
@@ -133,6 +151,7 @@ pipeline {
133151
env.IMAGE = env.DOCKERHUB_IMAGE
134152
env.GITHUBIMAGE = 'ghcr.io/' + env.LS_USER + '/' + env.CONTAINER_NAME
135153
env.GITLABIMAGE = 'registry.gitlab.com/linuxserver.io/' + env.LS_REPO + '/' + env.CONTAINER_NAME
154+
env.QUAYIMAGE = 'quay.io/linuxserver.io/' + env.CONTAINER_NAME
136155
if (env.MULTIARCH == 'true') {
137156
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
138157
} else {
@@ -155,6 +174,7 @@ pipeline {
155174
env.IMAGE = env.DEV_DOCKERHUB_IMAGE
156175
env.GITHUBIMAGE = 'ghcr.io/' + env.LS_USER + '/lsiodev-' + env.CONTAINER_NAME
157176
env.GITLABIMAGE = 'registry.gitlab.com/linuxserver.io/' + env.LS_REPO + '/lsiodev-' + env.CONTAINER_NAME
177+
env.QUAYIMAGE = 'quay.io/linuxserver.io/lsiodev-' + env.CONTAINER_NAME
158178
if (env.MULTIARCH == 'true') {
159179
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
160180
} else {
@@ -177,6 +197,7 @@ pipeline {
177197
env.IMAGE = env.PR_DOCKERHUB_IMAGE
178198
env.GITHUBIMAGE = 'ghcr.io/' + env.LS_USER + '/lspipepr-' + env.CONTAINER_NAME
179199
env.GITLABIMAGE = 'registry.gitlab.com/linuxserver.io/' + env.LS_REPO + '/lspipepr-' + env.CONTAINER_NAME
200+
env.QUAYIMAGE = 'quay.io/linuxserver.io/lspipepr-' + env.CONTAINER_NAME
180201
if (env.MULTIARCH == 'true') {
181202
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
182203
} else {
@@ -372,14 +393,56 @@ pipeline {
372393
"visibility":"public"}' '''
373394
}
374395
}
396+
/* #######################
397+
Scarf.sh package registry
398+
####################### */
399+
// Add package to Scarf.sh and set permissions
400+
stage("Scarf.sh package registry"){
401+
when {
402+
branch "main"
403+
environment name: 'EXIT_STATUS', value: ''
404+
}
405+
steps{
406+
sh '''#! /bin/bash
407+
set -e
408+
PACKAGE_UUID=$(curl -X GET -H "Authorization: Bearer ${SCARF_TOKEN}" https://scarf.sh/api/v1/packages | jq -r '.[] | select(.name=="linuxserver/phpmyadmin") | .uuid')
409+
if [ -z "${PACKAGE_UUID}" ]; then
410+
echo "Adding package to Scarf.sh"
411+
PACKAGE_UUID=$(curl -sX POST https://scarf.sh/api/v1/packages \
412+
-H "Authorization: Bearer ${SCARF_TOKEN}" \
413+
-H "Content-Type: application/json" \
414+
-d '{"name":"linuxserver/phpmyadmin",\
415+
"shortDescription":"example description",\
416+
"libraryType":"docker",\
417+
"website":"https://github.com/linuxserver/docker-phpmyadmin",\
418+
"backendUrl":"https://ghcr.io/linuxserver/phpmyadmin",\
419+
"publicUrl":"https://lscr.io/linuxserver/phpmyadmin"}' \
420+
| jq -r .uuid)
421+
else
422+
echo "Package already exists on Scarf.sh"
423+
fi
424+
echo "Setting permissions on Scarf.sh for package ${PACKAGE_UUID}"
425+
curl -X POST https://scarf.sh/api/v1/packages/${PACKAGE_UUID}/permissions \
426+
-H "Authorization: Bearer ${SCARF_TOKEN}" \
427+
-H "Content-Type: application/json" \
428+
-d '[{"userQuery":"Spad","permissionLevel":"admin"},\
429+
{"userQuery":"roxedus","permissionLevel":"admin"},\
430+
{"userQuery":"nemchik","permissionLevel":"admin"},\
431+
{"userQuery":"driz","permissionLevel":"admin"},\
432+
{"userQuery":"aptalca","permissionLevel":"admin"},\
433+
{"userQuery":"saarg","permissionLevel":"admin"},\
434+
{"userQuery":"Stark","permissionLevel":"admin"}]'
435+
'''
436+
}
437+
}
375438
/* ###############
376439
Build Container
377440
############### */
378441
// Build Docker container for push to LS Repo
379442
stage('Build-Single') {
380443
when {
381444
expression {
382-
env.MULTIARCH == 'false' || params.PACKAGE_CHECK == 'true'
445+
env.MULTIARCH == 'false' || params.PACKAGE_CHECK == 'true'
383446
}
384447
environment name: 'EXIT_STATUS', value: ''
385448
}
@@ -673,6 +736,12 @@ pipeline {
673736
credentialsId: '3f9ba4d5-100d-45b0-a3c4-633fd6061207',
674737
usernameVariable: 'DOCKERUSER',
675738
passwordVariable: 'DOCKERPASS'
739+
],
740+
[
741+
$class: 'UsernamePasswordMultiBinding',
742+
credentialsId: 'Quay.io-Robot',
743+
usernameVariable: 'QUAYUSER',
744+
passwordVariable: 'QUAYPASS'
676745
]
677746
]) {
678747
retry(5) {
@@ -681,22 +750,26 @@ pipeline {
681750
echo $DOCKERPASS | docker login -u $DOCKERUSER --password-stdin
682751
echo $GITHUB_TOKEN | docker login ghcr.io -u LinuxServer-CI --password-stdin
683752
echo $GITLAB_TOKEN | docker login registry.gitlab.com -u LinuxServer.io --password-stdin
684-
for PUSHIMAGE in "${GITHUBIMAGE}" "${GITLABIMAGE}" "${IMAGE}"; do
753+
echo $QUAYPASS | docker login quay.io -u $QUAYUSER --password-stdin
754+
for PUSHIMAGE in "${GITHUBIMAGE}" "${GITLABIMAGE}" "${QUAYIMAGE}" "${IMAGE}"; do
685755
docker tag ${IMAGE}:${META_TAG} ${PUSHIMAGE}:${META_TAG}
686756
docker tag ${PUSHIMAGE}:${META_TAG} ${PUSHIMAGE}:latest
687757
docker tag ${PUSHIMAGE}:${META_TAG} ${PUSHIMAGE}:${EXT_RELEASE_TAG}
758+
docker tag ${PUSHIMAGE}:${META_TAG} ${PUSHIMAGE}:${SEMVER}
688759
docker push ${PUSHIMAGE}:latest
689760
docker push ${PUSHIMAGE}:${META_TAG}
690761
docker push ${PUSHIMAGE}:${EXT_RELEASE_TAG}
762+
docker push ${PUSHIMAGE}:${SEMVER}
691763
done
692764
'''
693765
}
694766
sh '''#! /bin/bash
695-
for DELETEIMAGE in "${GITHUBIMAGE}" "${GITLABIMAGE}" "${IMAGE}"; do
767+
for DELETEIMAGE in "${GITHUBIMAGE}" "${GITLABIMAGE}" "${QUAYIMAGE}" "${IMAGE}"; do
696768
docker rmi \
697769
${DELETEIMAGE}:${META_TAG} \
698770
${DELETEIMAGE}:${EXT_RELEASE_TAG} \
699-
${DELETEIMAGE}:latest || :
771+
${DELETEIMAGE}:latest \
772+
${DELETEIMAGE}:${SEMVER} || :
700773
done
701774
'''
702775
}
@@ -715,6 +788,12 @@ pipeline {
715788
credentialsId: '3f9ba4d5-100d-45b0-a3c4-633fd6061207',
716789
usernameVariable: 'DOCKERUSER',
717790
passwordVariable: 'DOCKERPASS'
791+
],
792+
[
793+
$class: 'UsernamePasswordMultiBinding',
794+
credentialsId: 'Quay.io-Robot',
795+
usernameVariable: 'QUAYUSER',
796+
passwordVariable: 'QUAYPASS'
718797
]
719798
]) {
720799
retry(5) {
@@ -723,13 +802,14 @@ pipeline {
723802
echo $DOCKERPASS | docker login -u $DOCKERUSER --password-stdin
724803
echo $GITHUB_TOKEN | docker login ghcr.io -u LinuxServer-CI --password-stdin
725804
echo $GITLAB_TOKEN | docker login registry.gitlab.com -u LinuxServer.io --password-stdin
805+
echo $QUAYPASS | docker login quay.io -u $QUAYUSER --password-stdin
726806
if [ "${CI}" == "false" ]; then
727807
docker pull ghcr.io/linuxserver/lsiodev-buildcache:arm32v7-${COMMIT_SHA}-${BUILD_NUMBER}
728808
docker pull ghcr.io/linuxserver/lsiodev-buildcache:arm64v8-${COMMIT_SHA}-${BUILD_NUMBER}
729809
docker tag ghcr.io/linuxserver/lsiodev-buildcache:arm32v7-${COMMIT_SHA}-${BUILD_NUMBER} ${IMAGE}:arm32v7-${META_TAG}
730810
docker tag ghcr.io/linuxserver/lsiodev-buildcache:arm64v8-${COMMIT_SHA}-${BUILD_NUMBER} ${IMAGE}:arm64v8-${META_TAG}
731811
fi
732-
for MANIFESTIMAGE in "${IMAGE}" "${GITLABIMAGE}" "${GITHUBIMAGE}"; do
812+
for MANIFESTIMAGE in "${IMAGE}" "${GITLABIMAGE}" "${GITHUBIMAGE}" "${QUAYIMAGE}"; do
733813
docker tag ${IMAGE}:amd64-${META_TAG} ${MANIFESTIMAGE}:amd64-${META_TAG}
734814
docker tag ${IMAGE}:arm32v7-${META_TAG} ${MANIFESTIMAGE}:arm32v7-${META_TAG}
735815
docker tag ${IMAGE}:arm64v8-${META_TAG} ${MANIFESTIMAGE}:arm64v8-${META_TAG}
@@ -739,6 +819,9 @@ pipeline {
739819
docker tag ${MANIFESTIMAGE}:amd64-${META_TAG} ${MANIFESTIMAGE}:amd64-${EXT_RELEASE_TAG}
740820
docker tag ${MANIFESTIMAGE}:arm32v7-${META_TAG} ${MANIFESTIMAGE}:arm32v7-${EXT_RELEASE_TAG}
741821
docker tag ${MANIFESTIMAGE}:arm64v8-${META_TAG} ${MANIFESTIMAGE}:arm64v8-${EXT_RELEASE_TAG}
822+
docker tag ${MANIFESTIMAGE}:amd64-${META_TAG} ${MANIFESTIMAGE}:amd64-${SEMVER}
823+
docker tag ${MANIFESTIMAGE}:arm32v7-${META_TAG} ${MANIFESTIMAGE}:arm32v7-${SEMVER}
824+
docker tag ${MANIFESTIMAGE}:arm64v8-${META_TAG} ${MANIFESTIMAGE}:arm64v8-${SEMVER}
742825
docker push ${MANIFESTIMAGE}:amd64-${META_TAG}
743826
docker push ${MANIFESTIMAGE}:arm32v7-${META_TAG}
744827
docker push ${MANIFESTIMAGE}:arm64v8-${META_TAG}
@@ -748,6 +831,9 @@ pipeline {
748831
docker push ${MANIFESTIMAGE}:amd64-${EXT_RELEASE_TAG}
749832
docker push ${MANIFESTIMAGE}:arm32v7-${EXT_RELEASE_TAG}
750833
docker push ${MANIFESTIMAGE}:arm64v8-${EXT_RELEASE_TAG}
834+
docker push ${MANIFESTIMAGE}:amd64-${SEMVER}
835+
docker push ${MANIFESTIMAGE}:arm32v7-${SEMVER}
836+
docker push ${MANIFESTIMAGE}:arm64v8-${SEMVER}
751837
docker manifest push --purge ${MANIFESTIMAGE}:latest || :
752838
docker manifest create ${MANIFESTIMAGE}:latest ${MANIFESTIMAGE}:amd64-latest ${MANIFESTIMAGE}:arm32v7-latest ${MANIFESTIMAGE}:arm64v8-latest
753839
docker manifest annotate ${MANIFESTIMAGE}:latest ${MANIFESTIMAGE}:arm32v7-latest --os linux --arch arm
@@ -760,24 +846,32 @@ pipeline {
760846
docker manifest create ${MANIFESTIMAGE}:${EXT_RELEASE_TAG} ${MANIFESTIMAGE}:amd64-${EXT_RELEASE_TAG} ${MANIFESTIMAGE}:arm32v7-${EXT_RELEASE_TAG} ${MANIFESTIMAGE}:arm64v8-${EXT_RELEASE_TAG}
761847
docker manifest annotate ${MANIFESTIMAGE}:${EXT_RELEASE_TAG} ${MANIFESTIMAGE}:arm32v7-${EXT_RELEASE_TAG} --os linux --arch arm
762848
docker manifest annotate ${MANIFESTIMAGE}:${EXT_RELEASE_TAG} ${MANIFESTIMAGE}:arm64v8-${EXT_RELEASE_TAG} --os linux --arch arm64 --variant v8
849+
docker manifest push --purge ${MANIFESTIMAGE}:${SEMVER} || :
850+
docker manifest create ${MANIFESTIMAGE}:${SEMVER} ${MANIFESTIMAGE}:amd64-${SEMVER} ${MANIFESTIMAGE}:arm32v7-${SEMVER} ${MANIFESTIMAGE}:arm64v8-${SEMVER}
851+
docker manifest annotate ${MANIFESTIMAGE}:${SEMVER} ${MANIFESTIMAGE}:arm32v7-${SEMVER} --os linux --arch arm
852+
docker manifest annotate ${MANIFESTIMAGE}:${SEMVER} ${MANIFESTIMAGE}:arm64v8-${SEMVER} --os linux --arch arm64 --variant v8
763853
docker manifest push --purge ${MANIFESTIMAGE}:latest
764854
docker manifest push --purge ${MANIFESTIMAGE}:${META_TAG}
765855
docker manifest push --purge ${MANIFESTIMAGE}:${EXT_RELEASE_TAG}
856+
docker manifest push --purge ${MANIFESTIMAGE}:${SEMVER}
766857
done
767858
'''
768859
}
769860
sh '''#! /bin/bash
770-
for DELETEIMAGE in "${GITHUBIMAGE}" "${GITLABIMAGE}" "${IMAGE}"; do
861+
for DELETEIMAGE in "${GITHUBIMAGE}" "${GITLABIMAGE}" "${QUAYIMAGE}" "${IMAGE}"; do
771862
docker rmi \
772863
${DELETEIMAGE}:amd64-${META_TAG} \
773864
${DELETEIMAGE}:amd64-latest \
774865
${DELETEIMAGE}:amd64-${EXT_RELEASE_TAG} \
866+
${DELETEIMAGE}:amd64-${SEMVER} \
775867
${DELETEIMAGE}:arm32v7-${META_TAG} \
776868
${DELETEIMAGE}:arm32v7-latest \
777869
${DELETEIMAGE}:arm32v7-${EXT_RELEASE_TAG} \
870+
${DELETEIMAGE}:arm32v7-${SEMVER} \
778871
${DELETEIMAGE}:arm64v8-${META_TAG} \
779872
${DELETEIMAGE}:arm64v8-latest \
780-
${DELETEIMAGE}:arm64v8-${EXT_RELEASE_TAG} || :
873+
${DELETEIMAGE}:arm64v8-${EXT_RELEASE_TAG} \
874+
${DELETEIMAGE}:arm64v8-${SEMVER} || :
781875
done
782876
docker rmi \
783877
ghcr.io/linuxserver/lsiodev-buildcache:arm32v7-${COMMIT_SHA}-${BUILD_NUMBER} \

0 commit comments

Comments
 (0)