Skip to content

Commit 83d6c1a

Browse files
Bot Updating Templated Files
1 parent 9a0fa25 commit 83d6c1a

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_RELEASE_TYPE = 'pip_version'
2021
EXT_PIP = 'python-ldap'
2122
BUILD_VERSION_ARG = 'LDAP_VERSION'
@@ -117,6 +118,23 @@ pipeline {
117118
env.EXT_RELEASE_CLEAN = sh(
118119
script: '''echo ${EXT_RELEASE} | sed 's/[~,%@+;:/]//g' ''',
119120
returnStdout: true).trim()
121+
122+
env.SEMVER = (new Date()).format('YYYY.MM.dd')
123+
def semver = env.EXT_RELEASE_CLEAN =~ /(\d+)\.(\d+)\.(\d+)$/
124+
if (semver.find()) {
125+
env.SEMVER = "${semver[0][1]}.${semver[0][2]}.${semver[0][3]}"
126+
} else {
127+
semver = env.EXT_RELEASE_CLEAN =~ /(\d+)\.(\d+)(?:\.(\d+))?(.*)$/
128+
if (semver.find()) {
129+
if (semver[0][3]) {
130+
env.SEMVER = "${semver[0][1]}.${semver[0][2]}.${semver[0][3]}"
131+
} else if (!semver[0][3] && !semver[0][4]) {
132+
env.SEMVER = "${semver[0][1]}.${semver[0][2]}.${(new Date()).format('YYYYMMdd')}"
133+
}
134+
}
135+
}
136+
137+
println("SEMVER: ${env.SEMVER}")
120138
}
121139
}
122140
}
@@ -131,6 +149,7 @@ pipeline {
131149
env.IMAGE = env.DOCKERHUB_IMAGE
132150
env.GITHUBIMAGE = 'ghcr.io/' + env.LS_USER + '/' + env.CONTAINER_NAME
133151
env.GITLABIMAGE = 'registry.gitlab.com/linuxserver.io/' + env.LS_REPO + '/' + env.CONTAINER_NAME
152+
env.QUAYIMAGE = 'quay.io/linuxserver.io/' + env.CONTAINER_NAME
134153
if (env.MULTIARCH == 'true') {
135154
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
136155
} else {
@@ -153,6 +172,7 @@ pipeline {
153172
env.IMAGE = env.DEV_DOCKERHUB_IMAGE
154173
env.GITHUBIMAGE = 'ghcr.io/' + env.LS_USER + '/lsiodev-' + env.CONTAINER_NAME
155174
env.GITLABIMAGE = 'registry.gitlab.com/linuxserver.io/' + env.LS_REPO + '/lsiodev-' + env.CONTAINER_NAME
175+
env.QUAYIMAGE = 'quay.io/linuxserver.io/lsiodev-' + env.CONTAINER_NAME
156176
if (env.MULTIARCH == 'true') {
157177
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
158178
} else {
@@ -175,6 +195,7 @@ pipeline {
175195
env.IMAGE = env.PR_DOCKERHUB_IMAGE
176196
env.GITHUBIMAGE = 'ghcr.io/' + env.LS_USER + '/lspipepr-' + env.CONTAINER_NAME
177197
env.GITLABIMAGE = 'registry.gitlab.com/linuxserver.io/' + env.LS_REPO + '/lspipepr-' + env.CONTAINER_NAME
198+
env.QUAYIMAGE = 'quay.io/linuxserver.io/lspipepr-' + env.CONTAINER_NAME
178199
if (env.MULTIARCH == 'true') {
179200
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
180201
} else {
@@ -370,14 +391,56 @@ pipeline {
370391
"visibility":"public"}' '''
371392
}
372393
}
394+
/* #######################
395+
Scarf.sh package registry
396+
####################### */
397+
// Add package to Scarf.sh and set permissions
398+
stage("Scarf.sh package registry"){
399+
when {
400+
branch "master"
401+
environment name: 'EXIT_STATUS', value: ''
402+
}
403+
steps{
404+
sh '''#! /bin/bash
405+
set -e
406+
PACKAGE_UUID=$(curl -X GET -H "Authorization: Bearer ${SCARF_TOKEN}" https://scarf.sh/api/v1/packages | jq -r '.[] | select(.name=="linuxserver/ldap-auth") | .uuid')
407+
if [ -z "${PACKAGE_UUID}" ]; then
408+
echo "Adding package to Scarf.sh"
409+
PACKAGE_UUID=$(curl -sX POST https://scarf.sh/api/v1/packages \
410+
-H "Authorization: Bearer ${SCARF_TOKEN}" \
411+
-H "Content-Type: application/json" \
412+
-d '{"name":"linuxserver/ldap-auth",\
413+
"shortDescription":"example description",\
414+
"libraryType":"docker",\
415+
"website":"https://github.com/linuxserver/docker-ldap-auth",\
416+
"backendUrl":"https://ghcr.io/linuxserver/ldap-auth",\
417+
"publicUrl":"https://lscr.io/linuxserver/ldap-auth"}' \
418+
| jq -r .uuid)
419+
else
420+
echo "Package already exists on Scarf.sh"
421+
fi
422+
echo "Setting permissions on Scarf.sh for package ${PACKAGE_UUID}"
423+
curl -X POST https://scarf.sh/api/v1/packages/${PACKAGE_UUID}/permissions \
424+
-H "Authorization: Bearer ${SCARF_TOKEN}" \
425+
-H "Content-Type: application/json" \
426+
-d '[{"userQuery":"Spad","permissionLevel":"admin"},\
427+
{"userQuery":"roxedus","permissionLevel":"admin"},\
428+
{"userQuery":"nemchik","permissionLevel":"admin"},\
429+
{"userQuery":"driz","permissionLevel":"admin"},\
430+
{"userQuery":"aptalca","permissionLevel":"admin"},\
431+
{"userQuery":"saarg","permissionLevel":"admin"},\
432+
{"userQuery":"Stark","permissionLevel":"admin"}]'
433+
'''
434+
}
435+
}
373436
/* ###############
374437
Build Container
375438
############### */
376439
// Build Docker container for push to LS Repo
377440
stage('Build-Single') {
378441
when {
379442
expression {
380-
env.MULTIARCH == 'false' || params.PACKAGE_CHECK == 'true'
443+
env.MULTIARCH == 'false' || params.PACKAGE_CHECK == 'true'
381444
}
382445
environment name: 'EXIT_STATUS', value: ''
383446
}
@@ -671,6 +734,12 @@ pipeline {
671734
credentialsId: '3f9ba4d5-100d-45b0-a3c4-633fd6061207',
672735
usernameVariable: 'DOCKERUSER',
673736
passwordVariable: 'DOCKERPASS'
737+
],
738+
[
739+
$class: 'UsernamePasswordMultiBinding',
740+
credentialsId: 'Quay.io-Robot',
741+
usernameVariable: 'QUAYUSER',
742+
passwordVariable: 'QUAYPASS'
674743
]
675744
]) {
676745
retry(5) {
@@ -679,22 +748,26 @@ pipeline {
679748
echo $DOCKERPASS | docker login -u $DOCKERUSER --password-stdin
680749
echo $GITHUB_TOKEN | docker login ghcr.io -u LinuxServer-CI --password-stdin
681750
echo $GITLAB_TOKEN | docker login registry.gitlab.com -u LinuxServer.io --password-stdin
682-
for PUSHIMAGE in "${GITHUBIMAGE}" "${GITLABIMAGE}" "${IMAGE}"; do
751+
echo $QUAYPASS | docker login quay.io -u $QUAYUSER --password-stdin
752+
for PUSHIMAGE in "${GITHUBIMAGE}" "${GITLABIMAGE}" "${QUAYIMAGE}" "${IMAGE}"; do
683753
docker tag ${IMAGE}:${META_TAG} ${PUSHIMAGE}:${META_TAG}
684754
docker tag ${PUSHIMAGE}:${META_TAG} ${PUSHIMAGE}:latest
685755
docker tag ${PUSHIMAGE}:${META_TAG} ${PUSHIMAGE}:${EXT_RELEASE_TAG}
756+
docker tag ${PUSHIMAGE}:${META_TAG} ${PUSHIMAGE}:${SEMVER}
686757
docker push ${PUSHIMAGE}:latest
687758
docker push ${PUSHIMAGE}:${META_TAG}
688759
docker push ${PUSHIMAGE}:${EXT_RELEASE_TAG}
760+
docker push ${PUSHIMAGE}:${SEMVER}
689761
done
690762
'''
691763
}
692764
sh '''#! /bin/bash
693-
for DELETEIMAGE in "${GITHUBIMAGE}" "${GITLABIMAGE}" "${IMAGE}"; do
765+
for DELETEIMAGE in "${GITHUBIMAGE}" "${GITLABIMAGE}" "${QUAYIMAGE}" "${IMAGE}"; do
694766
docker rmi \
695767
${DELETEIMAGE}:${META_TAG} \
696768
${DELETEIMAGE}:${EXT_RELEASE_TAG} \
697-
${DELETEIMAGE}:latest || :
769+
${DELETEIMAGE}:latest \
770+
${DELETEIMAGE}:${SEMVER} || :
698771
done
699772
'''
700773
}
@@ -713,6 +786,12 @@ pipeline {
713786
credentialsId: '3f9ba4d5-100d-45b0-a3c4-633fd6061207',
714787
usernameVariable: 'DOCKERUSER',
715788
passwordVariable: 'DOCKERPASS'
789+
],
790+
[
791+
$class: 'UsernamePasswordMultiBinding',
792+
credentialsId: 'Quay.io-Robot',
793+
usernameVariable: 'QUAYUSER',
794+
passwordVariable: 'QUAYPASS'
716795
]
717796
]) {
718797
retry(5) {
@@ -721,13 +800,14 @@ pipeline {
721800
echo $DOCKERPASS | docker login -u $DOCKERUSER --password-stdin
722801
echo $GITHUB_TOKEN | docker login ghcr.io -u LinuxServer-CI --password-stdin
723802
echo $GITLAB_TOKEN | docker login registry.gitlab.com -u LinuxServer.io --password-stdin
803+
echo $QUAYPASS | docker login quay.io -u $QUAYUSER --password-stdin
724804
if [ "${CI}" == "false" ]; then
725805
docker pull ghcr.io/linuxserver/lsiodev-buildcache:arm32v7-${COMMIT_SHA}-${BUILD_NUMBER}
726806
docker pull ghcr.io/linuxserver/lsiodev-buildcache:arm64v8-${COMMIT_SHA}-${BUILD_NUMBER}
727807
docker tag ghcr.io/linuxserver/lsiodev-buildcache:arm32v7-${COMMIT_SHA}-${BUILD_NUMBER} ${IMAGE}:arm32v7-${META_TAG}
728808
docker tag ghcr.io/linuxserver/lsiodev-buildcache:arm64v8-${COMMIT_SHA}-${BUILD_NUMBER} ${IMAGE}:arm64v8-${META_TAG}
729809
fi
730-
for MANIFESTIMAGE in "${IMAGE}" "${GITLABIMAGE}" "${GITHUBIMAGE}"; do
810+
for MANIFESTIMAGE in "${IMAGE}" "${GITLABIMAGE}" "${GITHUBIMAGE}" "${QUAYIMAGE}"; do
731811
docker tag ${IMAGE}:amd64-${META_TAG} ${MANIFESTIMAGE}:amd64-${META_TAG}
732812
docker tag ${IMAGE}:arm32v7-${META_TAG} ${MANIFESTIMAGE}:arm32v7-${META_TAG}
733813
docker tag ${IMAGE}:arm64v8-${META_TAG} ${MANIFESTIMAGE}:arm64v8-${META_TAG}
@@ -737,6 +817,9 @@ pipeline {
737817
docker tag ${MANIFESTIMAGE}:amd64-${META_TAG} ${MANIFESTIMAGE}:amd64-${EXT_RELEASE_TAG}
738818
docker tag ${MANIFESTIMAGE}:arm32v7-${META_TAG} ${MANIFESTIMAGE}:arm32v7-${EXT_RELEASE_TAG}
739819
docker tag ${MANIFESTIMAGE}:arm64v8-${META_TAG} ${MANIFESTIMAGE}:arm64v8-${EXT_RELEASE_TAG}
820+
docker tag ${MANIFESTIMAGE}:amd64-${META_TAG} ${MANIFESTIMAGE}:amd64-${SEMVER}
821+
docker tag ${MANIFESTIMAGE}:arm32v7-${META_TAG} ${MANIFESTIMAGE}:arm32v7-${SEMVER}
822+
docker tag ${MANIFESTIMAGE}:arm64v8-${META_TAG} ${MANIFESTIMAGE}:arm64v8-${SEMVER}
740823
docker push ${MANIFESTIMAGE}:amd64-${META_TAG}
741824
docker push ${MANIFESTIMAGE}:arm32v7-${META_TAG}
742825
docker push ${MANIFESTIMAGE}:arm64v8-${META_TAG}
@@ -746,6 +829,9 @@ pipeline {
746829
docker push ${MANIFESTIMAGE}:amd64-${EXT_RELEASE_TAG}
747830
docker push ${MANIFESTIMAGE}:arm32v7-${EXT_RELEASE_TAG}
748831
docker push ${MANIFESTIMAGE}:arm64v8-${EXT_RELEASE_TAG}
832+
docker push ${MANIFESTIMAGE}:amd64-${SEMVER}
833+
docker push ${MANIFESTIMAGE}:arm32v7-${SEMVER}
834+
docker push ${MANIFESTIMAGE}:arm64v8-${SEMVER}
749835
docker manifest push --purge ${MANIFESTIMAGE}:latest || :
750836
docker manifest create ${MANIFESTIMAGE}:latest ${MANIFESTIMAGE}:amd64-latest ${MANIFESTIMAGE}:arm32v7-latest ${MANIFESTIMAGE}:arm64v8-latest
751837
docker manifest annotate ${MANIFESTIMAGE}:latest ${MANIFESTIMAGE}:arm32v7-latest --os linux --arch arm
@@ -758,24 +844,32 @@ pipeline {
758844
docker manifest create ${MANIFESTIMAGE}:${EXT_RELEASE_TAG} ${MANIFESTIMAGE}:amd64-${EXT_RELEASE_TAG} ${MANIFESTIMAGE}:arm32v7-${EXT_RELEASE_TAG} ${MANIFESTIMAGE}:arm64v8-${EXT_RELEASE_TAG}
759845
docker manifest annotate ${MANIFESTIMAGE}:${EXT_RELEASE_TAG} ${MANIFESTIMAGE}:arm32v7-${EXT_RELEASE_TAG} --os linux --arch arm
760846
docker manifest annotate ${MANIFESTIMAGE}:${EXT_RELEASE_TAG} ${MANIFESTIMAGE}:arm64v8-${EXT_RELEASE_TAG} --os linux --arch arm64 --variant v8
847+
docker manifest push --purge ${MANIFESTIMAGE}:${SEMVER} || :
848+
docker manifest create ${MANIFESTIMAGE}:${SEMVER} ${MANIFESTIMAGE}:amd64-${SEMVER} ${MANIFESTIMAGE}:arm32v7-${SEMVER} ${MANIFESTIMAGE}:arm64v8-${SEMVER}
849+
docker manifest annotate ${MANIFESTIMAGE}:${SEMVER} ${MANIFESTIMAGE}:arm32v7-${SEMVER} --os linux --arch arm
850+
docker manifest annotate ${MANIFESTIMAGE}:${SEMVER} ${MANIFESTIMAGE}:arm64v8-${SEMVER} --os linux --arch arm64 --variant v8
761851
docker manifest push --purge ${MANIFESTIMAGE}:latest
762852
docker manifest push --purge ${MANIFESTIMAGE}:${META_TAG}
763853
docker manifest push --purge ${MANIFESTIMAGE}:${EXT_RELEASE_TAG}
854+
docker manifest push --purge ${MANIFESTIMAGE}:${SEMVER}
764855
done
765856
'''
766857
}
767858
sh '''#! /bin/bash
768-
for DELETEIMAGE in "${GITHUBIMAGE}" "${GITLABIMAGE}" "${IMAGE}"; do
859+
for DELETEIMAGE in "${GITHUBIMAGE}" "${GITLABIMAGE}" "${QUAYIMAGE}" "${IMAGE}"; do
769860
docker rmi \
770861
${DELETEIMAGE}:amd64-${META_TAG} \
771862
${DELETEIMAGE}:amd64-latest \
772863
${DELETEIMAGE}:amd64-${EXT_RELEASE_TAG} \
864+
${DELETEIMAGE}:amd64-${SEMVER} \
773865
${DELETEIMAGE}:arm32v7-${META_TAG} \
774866
${DELETEIMAGE}:arm32v7-latest \
775867
${DELETEIMAGE}:arm32v7-${EXT_RELEASE_TAG} \
868+
${DELETEIMAGE}:arm32v7-${SEMVER} \
776869
${DELETEIMAGE}:arm64v8-${META_TAG} \
777870
${DELETEIMAGE}:arm64v8-latest \
778-
${DELETEIMAGE}:arm64v8-${EXT_RELEASE_TAG} || :
871+
${DELETEIMAGE}:arm64v8-${EXT_RELEASE_TAG} \
872+
${DELETEIMAGE}:arm64v8-${SEMVER} || :
779873
done
780874
docker rmi \
781875
ghcr.io/linuxserver/lsiodev-buildcache:arm32v7-${COMMIT_SHA}-${BUILD_NUMBER} \

0 commit comments

Comments
 (0)