Skip to content

Commit 1ac68f4

Browse files
Bot Updating Templated Files
1 parent ddfdcfd commit 1ac68f4

File tree

1 file changed

+101
-7
lines changed

1 file changed

+101
-7
lines changed

Jenkinsfile

+101-7
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
CONTAINER_NAME = 'sqlitebrowser'
2021
BUILD_VERSION_ARG = 'SQLITEB_VERSION'
2122
LS_USER = 'linuxserver'
@@ -116,6 +117,23 @@ pipeline {
116117
env.EXT_RELEASE_CLEAN = sh(
117118
script: '''echo ${EXT_RELEASE} | sed 's/[~,%@+;:/]//g' ''',
118119
returnStdout: true).trim()
120+
121+
env.SEMVER = (new Date()).format('YYYY.MM.dd')
122+
def semver = env.EXT_RELEASE_CLEAN =~ /(\d+)\.(\d+)\.(\d+)$/
123+
if (semver.find()) {
124+
env.SEMVER = "${semver[0][1]}.${semver[0][2]}.${semver[0][3]}"
125+
} else {
126+
semver = env.EXT_RELEASE_CLEAN =~ /(\d+)\.(\d+)(?:\.(\d+))?(.*)$/
127+
if (semver.find()) {
128+
if (semver[0][3]) {
129+
env.SEMVER = "${semver[0][1]}.${semver[0][2]}.${semver[0][3]}"
130+
} else if (!semver[0][3] && !semver[0][4]) {
131+
env.SEMVER = "${semver[0][1]}.${semver[0][2]}.${(new Date()).format('YYYYMMdd')}"
132+
}
133+
}
134+
}
135+
136+
println("SEMVER: ${env.SEMVER}")
119137
}
120138
}
121139
}
@@ -130,6 +148,7 @@ pipeline {
130148
env.IMAGE = env.DOCKERHUB_IMAGE
131149
env.GITHUBIMAGE = 'ghcr.io/' + env.LS_USER + '/' + env.CONTAINER_NAME
132150
env.GITLABIMAGE = 'registry.gitlab.com/linuxserver.io/' + env.LS_REPO + '/' + env.CONTAINER_NAME
151+
env.QUAYIMAGE = 'quay.io/linuxserver.io/' + env.CONTAINER_NAME
133152
if (env.MULTIARCH == 'true') {
134153
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
135154
} else {
@@ -152,6 +171,7 @@ pipeline {
152171
env.IMAGE = env.DEV_DOCKERHUB_IMAGE
153172
env.GITHUBIMAGE = 'ghcr.io/' + env.LS_USER + '/lsiodev-' + env.CONTAINER_NAME
154173
env.GITLABIMAGE = 'registry.gitlab.com/linuxserver.io/' + env.LS_REPO + '/lsiodev-' + env.CONTAINER_NAME
174+
env.QUAYIMAGE = 'quay.io/linuxserver.io/lsiodev-' + env.CONTAINER_NAME
155175
if (env.MULTIARCH == 'true') {
156176
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
157177
} else {
@@ -174,6 +194,7 @@ pipeline {
174194
env.IMAGE = env.PR_DOCKERHUB_IMAGE
175195
env.GITHUBIMAGE = 'ghcr.io/' + env.LS_USER + '/lspipepr-' + env.CONTAINER_NAME
176196
env.GITLABIMAGE = 'registry.gitlab.com/linuxserver.io/' + env.LS_REPO + '/lspipepr-' + env.CONTAINER_NAME
197+
env.QUAYIMAGE = 'quay.io/linuxserver.io/lspipepr-' + env.CONTAINER_NAME
177198
if (env.MULTIARCH == 'true') {
178199
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
179200
} else {
@@ -369,14 +390,56 @@ pipeline {
369390
"visibility":"public"}' '''
370391
}
371392
}
393+
/* #######################
394+
Scarf.sh package registry
395+
####################### */
396+
// Add package to Scarf.sh and set permissions
397+
stage("Scarf.sh package registry"){
398+
when {
399+
branch "master"
400+
environment name: 'EXIT_STATUS', value: ''
401+
}
402+
steps{
403+
sh '''#! /bin/bash
404+
set -e
405+
PACKAGE_UUID=$(curl -X GET -H "Authorization: Bearer ${SCARF_TOKEN}" https://scarf.sh/api/v1/packages | jq -r '.[] | select(.name=="linuxserver/sqlitebrowser") | .uuid')
406+
if [ -z "${PACKAGE_UUID}" ]; then
407+
echo "Adding package to Scarf.sh"
408+
PACKAGE_UUID=$(curl -sX POST https://scarf.sh/api/v1/packages \
409+
-H "Authorization: Bearer ${SCARF_TOKEN}" \
410+
-H "Content-Type: application/json" \
411+
-d '{"name":"linuxserver/sqlitebrowser",\
412+
"shortDescription":"example description",\
413+
"libraryType":"docker",\
414+
"website":"https://github.com/linuxserver/docker-sqlitebrowser",\
415+
"backendUrl":"https://ghcr.io/linuxserver/sqlitebrowser",\
416+
"publicUrl":"https://lscr.io/linuxserver/sqlitebrowser"}' \
417+
| jq -r .uuid)
418+
else
419+
echo "Package already exists on Scarf.sh"
420+
fi
421+
echo "Setting permissions on Scarf.sh for package ${PACKAGE_UUID}"
422+
curl -X POST https://scarf.sh/api/v1/packages/${PACKAGE_UUID}/permissions \
423+
-H "Authorization: Bearer ${SCARF_TOKEN}" \
424+
-H "Content-Type: application/json" \
425+
-d '[{"userQuery":"Spad","permissionLevel":"admin"},\
426+
{"userQuery":"roxedus","permissionLevel":"admin"},\
427+
{"userQuery":"nemchik","permissionLevel":"admin"},\
428+
{"userQuery":"driz","permissionLevel":"admin"},\
429+
{"userQuery":"aptalca","permissionLevel":"admin"},\
430+
{"userQuery":"saarg","permissionLevel":"admin"},\
431+
{"userQuery":"Stark","permissionLevel":"admin"}]'
432+
'''
433+
}
434+
}
372435
/* ###############
373436
Build Container
374437
############### */
375438
// Build Docker container for push to LS Repo
376439
stage('Build-Single') {
377440
when {
378441
expression {
379-
env.MULTIARCH == 'false' || params.PACKAGE_CHECK == 'true'
442+
env.MULTIARCH == 'false' || params.PACKAGE_CHECK == 'true'
380443
}
381444
environment name: 'EXIT_STATUS', value: ''
382445
}
@@ -670,6 +733,12 @@ pipeline {
670733
credentialsId: '3f9ba4d5-100d-45b0-a3c4-633fd6061207',
671734
usernameVariable: 'DOCKERUSER',
672735
passwordVariable: 'DOCKERPASS'
736+
],
737+
[
738+
$class: 'UsernamePasswordMultiBinding',
739+
credentialsId: 'Quay.io-Robot',
740+
usernameVariable: 'QUAYUSER',
741+
passwordVariable: 'QUAYPASS'
673742
]
674743
]) {
675744
retry(5) {
@@ -678,22 +747,26 @@ pipeline {
678747
echo $DOCKERPASS | docker login -u $DOCKERUSER --password-stdin
679748
echo $GITHUB_TOKEN | docker login ghcr.io -u LinuxServer-CI --password-stdin
680749
echo $GITLAB_TOKEN | docker login registry.gitlab.com -u LinuxServer.io --password-stdin
681-
for PUSHIMAGE in "${GITHUBIMAGE}" "${GITLABIMAGE}" "${IMAGE}"; do
750+
echo $QUAYPASS | docker login quay.io -u $QUAYUSER --password-stdin
751+
for PUSHIMAGE in "${GITHUBIMAGE}" "${GITLABIMAGE}" "${QUAYIMAGE}" "${IMAGE}"; do
682752
docker tag ${IMAGE}:${META_TAG} ${PUSHIMAGE}:${META_TAG}
683753
docker tag ${PUSHIMAGE}:${META_TAG} ${PUSHIMAGE}:latest
684754
docker tag ${PUSHIMAGE}:${META_TAG} ${PUSHIMAGE}:${EXT_RELEASE_TAG}
755+
docker tag ${PUSHIMAGE}:${META_TAG} ${PUSHIMAGE}:${SEMVER}
685756
docker push ${PUSHIMAGE}:latest
686757
docker push ${PUSHIMAGE}:${META_TAG}
687758
docker push ${PUSHIMAGE}:${EXT_RELEASE_TAG}
759+
docker push ${PUSHIMAGE}:${SEMVER}
688760
done
689761
'''
690762
}
691763
sh '''#! /bin/bash
692-
for DELETEIMAGE in "${GITHUBIMAGE}" "${GITLABIMAGE}" "${IMAGE}"; do
764+
for DELETEIMAGE in "${GITHUBIMAGE}" "${GITLABIMAGE}" "${QUAYIMAGE}" "${IMAGE}"; do
693765
docker rmi \
694766
${DELETEIMAGE}:${META_TAG} \
695767
${DELETEIMAGE}:${EXT_RELEASE_TAG} \
696-
${DELETEIMAGE}:latest || :
768+
${DELETEIMAGE}:latest \
769+
${DELETEIMAGE}:${SEMVER} || :
697770
done
698771
'''
699772
}
@@ -712,6 +785,12 @@ pipeline {
712785
credentialsId: '3f9ba4d5-100d-45b0-a3c4-633fd6061207',
713786
usernameVariable: 'DOCKERUSER',
714787
passwordVariable: 'DOCKERPASS'
788+
],
789+
[
790+
$class: 'UsernamePasswordMultiBinding',
791+
credentialsId: 'Quay.io-Robot',
792+
usernameVariable: 'QUAYUSER',
793+
passwordVariable: 'QUAYPASS'
715794
]
716795
]) {
717796
retry(5) {
@@ -720,13 +799,14 @@ pipeline {
720799
echo $DOCKERPASS | docker login -u $DOCKERUSER --password-stdin
721800
echo $GITHUB_TOKEN | docker login ghcr.io -u LinuxServer-CI --password-stdin
722801
echo $GITLAB_TOKEN | docker login registry.gitlab.com -u LinuxServer.io --password-stdin
802+
echo $QUAYPASS | docker login quay.io -u $QUAYUSER --password-stdin
723803
if [ "${CI}" == "false" ]; then
724804
docker pull ghcr.io/linuxserver/lsiodev-buildcache:arm32v7-${COMMIT_SHA}-${BUILD_NUMBER}
725805
docker pull ghcr.io/linuxserver/lsiodev-buildcache:arm64v8-${COMMIT_SHA}-${BUILD_NUMBER}
726806
docker tag ghcr.io/linuxserver/lsiodev-buildcache:arm32v7-${COMMIT_SHA}-${BUILD_NUMBER} ${IMAGE}:arm32v7-${META_TAG}
727807
docker tag ghcr.io/linuxserver/lsiodev-buildcache:arm64v8-${COMMIT_SHA}-${BUILD_NUMBER} ${IMAGE}:arm64v8-${META_TAG}
728808
fi
729-
for MANIFESTIMAGE in "${IMAGE}" "${GITLABIMAGE}" "${GITHUBIMAGE}"; do
809+
for MANIFESTIMAGE in "${IMAGE}" "${GITLABIMAGE}" "${GITHUBIMAGE}" "${QUAYIMAGE}"; do
730810
docker tag ${IMAGE}:amd64-${META_TAG} ${MANIFESTIMAGE}:amd64-${META_TAG}
731811
docker tag ${IMAGE}:arm32v7-${META_TAG} ${MANIFESTIMAGE}:arm32v7-${META_TAG}
732812
docker tag ${IMAGE}:arm64v8-${META_TAG} ${MANIFESTIMAGE}:arm64v8-${META_TAG}
@@ -736,6 +816,9 @@ pipeline {
736816
docker tag ${MANIFESTIMAGE}:amd64-${META_TAG} ${MANIFESTIMAGE}:amd64-${EXT_RELEASE_TAG}
737817
docker tag ${MANIFESTIMAGE}:arm32v7-${META_TAG} ${MANIFESTIMAGE}:arm32v7-${EXT_RELEASE_TAG}
738818
docker tag ${MANIFESTIMAGE}:arm64v8-${META_TAG} ${MANIFESTIMAGE}:arm64v8-${EXT_RELEASE_TAG}
819+
docker tag ${MANIFESTIMAGE}:amd64-${META_TAG} ${MANIFESTIMAGE}:amd64-${SEMVER}
820+
docker tag ${MANIFESTIMAGE}:arm32v7-${META_TAG} ${MANIFESTIMAGE}:arm32v7-${SEMVER}
821+
docker tag ${MANIFESTIMAGE}:arm64v8-${META_TAG} ${MANIFESTIMAGE}:arm64v8-${SEMVER}
739822
docker push ${MANIFESTIMAGE}:amd64-${META_TAG}
740823
docker push ${MANIFESTIMAGE}:arm32v7-${META_TAG}
741824
docker push ${MANIFESTIMAGE}:arm64v8-${META_TAG}
@@ -745,6 +828,9 @@ pipeline {
745828
docker push ${MANIFESTIMAGE}:amd64-${EXT_RELEASE_TAG}
746829
docker push ${MANIFESTIMAGE}:arm32v7-${EXT_RELEASE_TAG}
747830
docker push ${MANIFESTIMAGE}:arm64v8-${EXT_RELEASE_TAG}
831+
docker push ${MANIFESTIMAGE}:amd64-${SEMVER}
832+
docker push ${MANIFESTIMAGE}:arm32v7-${SEMVER}
833+
docker push ${MANIFESTIMAGE}:arm64v8-${SEMVER}
748834
docker manifest push --purge ${MANIFESTIMAGE}:latest || :
749835
docker manifest create ${MANIFESTIMAGE}:latest ${MANIFESTIMAGE}:amd64-latest ${MANIFESTIMAGE}:arm32v7-latest ${MANIFESTIMAGE}:arm64v8-latest
750836
docker manifest annotate ${MANIFESTIMAGE}:latest ${MANIFESTIMAGE}:arm32v7-latest --os linux --arch arm
@@ -757,24 +843,32 @@ pipeline {
757843
docker manifest create ${MANIFESTIMAGE}:${EXT_RELEASE_TAG} ${MANIFESTIMAGE}:amd64-${EXT_RELEASE_TAG} ${MANIFESTIMAGE}:arm32v7-${EXT_RELEASE_TAG} ${MANIFESTIMAGE}:arm64v8-${EXT_RELEASE_TAG}
758844
docker manifest annotate ${MANIFESTIMAGE}:${EXT_RELEASE_TAG} ${MANIFESTIMAGE}:arm32v7-${EXT_RELEASE_TAG} --os linux --arch arm
759845
docker manifest annotate ${MANIFESTIMAGE}:${EXT_RELEASE_TAG} ${MANIFESTIMAGE}:arm64v8-${EXT_RELEASE_TAG} --os linux --arch arm64 --variant v8
846+
docker manifest push --purge ${MANIFESTIMAGE}:${SEMVER} || :
847+
docker manifest create ${MANIFESTIMAGE}:${SEMVER} ${MANIFESTIMAGE}:amd64-${SEMVER} ${MANIFESTIMAGE}:arm32v7-${SEMVER} ${MANIFESTIMAGE}:arm64v8-${SEMVER}
848+
docker manifest annotate ${MANIFESTIMAGE}:${SEMVER} ${MANIFESTIMAGE}:arm32v7-${SEMVER} --os linux --arch arm
849+
docker manifest annotate ${MANIFESTIMAGE}:${SEMVER} ${MANIFESTIMAGE}:arm64v8-${SEMVER} --os linux --arch arm64 --variant v8
760850
docker manifest push --purge ${MANIFESTIMAGE}:latest
761851
docker manifest push --purge ${MANIFESTIMAGE}:${META_TAG}
762852
docker manifest push --purge ${MANIFESTIMAGE}:${EXT_RELEASE_TAG}
853+
docker manifest push --purge ${MANIFESTIMAGE}:${SEMVER}
763854
done
764855
'''
765856
}
766857
sh '''#! /bin/bash
767-
for DELETEIMAGE in "${GITHUBIMAGE}" "${GITLABIMAGE}" "${IMAGE}"; do
858+
for DELETEIMAGE in "${GITHUBIMAGE}" "${GITLABIMAGE}" "${QUAYIMAGE}" "${IMAGE}"; do
768859
docker rmi \
769860
${DELETEIMAGE}:amd64-${META_TAG} \
770861
${DELETEIMAGE}:amd64-latest \
771862
${DELETEIMAGE}:amd64-${EXT_RELEASE_TAG} \
863+
${DELETEIMAGE}:amd64-${SEMVER} \
772864
${DELETEIMAGE}:arm32v7-${META_TAG} \
773865
${DELETEIMAGE}:arm32v7-latest \
774866
${DELETEIMAGE}:arm32v7-${EXT_RELEASE_TAG} \
867+
${DELETEIMAGE}:arm32v7-${SEMVER} \
775868
${DELETEIMAGE}:arm64v8-${META_TAG} \
776869
${DELETEIMAGE}:arm64v8-latest \
777-
${DELETEIMAGE}:arm64v8-${EXT_RELEASE_TAG} || :
870+
${DELETEIMAGE}:arm64v8-${EXT_RELEASE_TAG} \
871+
${DELETEIMAGE}:arm64v8-${SEMVER} || :
778872
done
779873
docker rmi \
780874
ghcr.io/linuxserver/lsiodev-buildcache:arm32v7-${COMMIT_SHA}-${BUILD_NUMBER} \

0 commit comments

Comments
 (0)