Skip to content

Commit 3a2dd9f

Browse files
Bot Updating Templated Files
1 parent 16d6938 commit 3a2dd9f

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
BUILD_VERSION_ARG = 'FILEZILLA_VERSION'
2021
LS_USER = 'linuxserver'
2122
LS_REPO = 'docker-filezilla'
@@ -120,6 +121,23 @@ pipeline {
120121
env.EXT_RELEASE_CLEAN = sh(
121122
script: '''echo ${EXT_RELEASE} | sed 's/[~,%@+;:/]//g' ''',
122123
returnStdout: true).trim()
124+
125+
env.SEMVER = (new Date()).format('YYYY.MM.dd')
126+
def semver = env.EXT_RELEASE_CLEAN =~ /(\d+)\.(\d+)\.(\d+)$/
127+
if (semver.find()) {
128+
env.SEMVER = "${semver[0][1]}.${semver[0][2]}.${semver[0][3]}"
129+
} else {
130+
semver = env.EXT_RELEASE_CLEAN =~ /(\d+)\.(\d+)(?:\.(\d+))?(.*)$/
131+
if (semver.find()) {
132+
if (semver[0][3]) {
133+
env.SEMVER = "${semver[0][1]}.${semver[0][2]}.${semver[0][3]}"
134+
} else if (!semver[0][3] && !semver[0][4]) {
135+
env.SEMVER = "${semver[0][1]}.${semver[0][2]}.${(new Date()).format('YYYYMMdd')}"
136+
}
137+
}
138+
}
139+
140+
println("SEMVER: ${env.SEMVER}")
123141
}
124142
}
125143
}
@@ -134,6 +152,7 @@ pipeline {
134152
env.IMAGE = env.DOCKERHUB_IMAGE
135153
env.GITHUBIMAGE = 'ghcr.io/' + env.LS_USER + '/' + env.CONTAINER_NAME
136154
env.GITLABIMAGE = 'registry.gitlab.com/linuxserver.io/' + env.LS_REPO + '/' + env.CONTAINER_NAME
155+
env.QUAYIMAGE = 'quay.io/linuxserver.io/' + env.CONTAINER_NAME
137156
if (env.MULTIARCH == 'true') {
138157
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
139158
} else {
@@ -156,6 +175,7 @@ pipeline {
156175
env.IMAGE = env.DEV_DOCKERHUB_IMAGE
157176
env.GITHUBIMAGE = 'ghcr.io/' + env.LS_USER + '/lsiodev-' + env.CONTAINER_NAME
158177
env.GITLABIMAGE = 'registry.gitlab.com/linuxserver.io/' + env.LS_REPO + '/lsiodev-' + env.CONTAINER_NAME
178+
env.QUAYIMAGE = 'quay.io/linuxserver.io/lsiodev-' + env.CONTAINER_NAME
159179
if (env.MULTIARCH == 'true') {
160180
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
161181
} else {
@@ -178,6 +198,7 @@ pipeline {
178198
env.IMAGE = env.PR_DOCKERHUB_IMAGE
179199
env.GITHUBIMAGE = 'ghcr.io/' + env.LS_USER + '/lspipepr-' + env.CONTAINER_NAME
180200
env.GITLABIMAGE = 'registry.gitlab.com/linuxserver.io/' + env.LS_REPO + '/lspipepr-' + env.CONTAINER_NAME
201+
env.QUAYIMAGE = 'quay.io/linuxserver.io/lspipepr-' + env.CONTAINER_NAME
181202
if (env.MULTIARCH == 'true') {
182203
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
183204
} else {
@@ -373,14 +394,56 @@ pipeline {
373394
"visibility":"public"}' '''
374395
}
375396
}
397+
/* #######################
398+
Scarf.sh package registry
399+
####################### */
400+
// Add package to Scarf.sh and set permissions
401+
stage("Scarf.sh package registry"){
402+
when {
403+
branch "master"
404+
environment name: 'EXIT_STATUS', value: ''
405+
}
406+
steps{
407+
sh '''#! /bin/bash
408+
set -e
409+
PACKAGE_UUID=$(curl -X GET -H "Authorization: Bearer ${SCARF_TOKEN}" https://scarf.sh/api/v1/packages | jq -r '.[] | select(.name=="linuxserver/filezilla") | .uuid')
410+
if [ -z "${PACKAGE_UUID}" ]; then
411+
echo "Adding package to Scarf.sh"
412+
PACKAGE_UUID=$(curl -sX POST https://scarf.sh/api/v1/packages \
413+
-H "Authorization: Bearer ${SCARF_TOKEN}" \
414+
-H "Content-Type: application/json" \
415+
-d '{"name":"linuxserver/filezilla",\
416+
"shortDescription":"example description",\
417+
"libraryType":"docker",\
418+
"website":"https://github.com/linuxserver/docker-filezilla",\
419+
"backendUrl":"https://ghcr.io/linuxserver/filezilla",\
420+
"publicUrl":"https://lscr.io/linuxserver/filezilla"}' \
421+
| jq -r .uuid)
422+
else
423+
echo "Package already exists on Scarf.sh"
424+
fi
425+
echo "Setting permissions on Scarf.sh for package ${PACKAGE_UUID}"
426+
curl -X POST https://scarf.sh/api/v1/packages/${PACKAGE_UUID}/permissions \
427+
-H "Authorization: Bearer ${SCARF_TOKEN}" \
428+
-H "Content-Type: application/json" \
429+
-d '[{"userQuery":"Spad","permissionLevel":"admin"},\
430+
{"userQuery":"roxedus","permissionLevel":"admin"},\
431+
{"userQuery":"nemchik","permissionLevel":"admin"},\
432+
{"userQuery":"driz","permissionLevel":"admin"},\
433+
{"userQuery":"aptalca","permissionLevel":"admin"},\
434+
{"userQuery":"saarg","permissionLevel":"admin"},\
435+
{"userQuery":"Stark","permissionLevel":"admin"}]'
436+
'''
437+
}
438+
}
376439
/* ###############
377440
Build Container
378441
############### */
379442
// Build Docker container for push to LS Repo
380443
stage('Build-Single') {
381444
when {
382445
expression {
383-
env.MULTIARCH == 'false' || params.PACKAGE_CHECK == 'true'
446+
env.MULTIARCH == 'false' || params.PACKAGE_CHECK == 'true'
384447
}
385448
environment name: 'EXIT_STATUS', value: ''
386449
}
@@ -674,6 +737,12 @@ pipeline {
674737
credentialsId: '3f9ba4d5-100d-45b0-a3c4-633fd6061207',
675738
usernameVariable: 'DOCKERUSER',
676739
passwordVariable: 'DOCKERPASS'
740+
],
741+
[
742+
$class: 'UsernamePasswordMultiBinding',
743+
credentialsId: 'Quay.io-Robot',
744+
usernameVariable: 'QUAYUSER',
745+
passwordVariable: 'QUAYPASS'
677746
]
678747
]) {
679748
retry(5) {
@@ -682,22 +751,26 @@ pipeline {
682751
echo $DOCKERPASS | docker login -u $DOCKERUSER --password-stdin
683752
echo $GITHUB_TOKEN | docker login ghcr.io -u LinuxServer-CI --password-stdin
684753
echo $GITLAB_TOKEN | docker login registry.gitlab.com -u LinuxServer.io --password-stdin
685-
for PUSHIMAGE in "${GITHUBIMAGE}" "${GITLABIMAGE}" "${IMAGE}"; do
754+
echo $QUAYPASS | docker login quay.io -u $QUAYUSER --password-stdin
755+
for PUSHIMAGE in "${GITHUBIMAGE}" "${GITLABIMAGE}" "${QUAYIMAGE}" "${IMAGE}"; do
686756
docker tag ${IMAGE}:${META_TAG} ${PUSHIMAGE}:${META_TAG}
687757
docker tag ${PUSHIMAGE}:${META_TAG} ${PUSHIMAGE}:latest
688758
docker tag ${PUSHIMAGE}:${META_TAG} ${PUSHIMAGE}:${EXT_RELEASE_TAG}
759+
docker tag ${PUSHIMAGE}:${META_TAG} ${PUSHIMAGE}:${SEMVER}
689760
docker push ${PUSHIMAGE}:latest
690761
docker push ${PUSHIMAGE}:${META_TAG}
691762
docker push ${PUSHIMAGE}:${EXT_RELEASE_TAG}
763+
docker push ${PUSHIMAGE}:${SEMVER}
692764
done
693765
'''
694766
}
695767
sh '''#! /bin/bash
696-
for DELETEIMAGE in "${GITHUBIMAGE}" "${GITLABIMAGE}" "${IMAGE}"; do
768+
for DELETEIMAGE in "${GITHUBIMAGE}" "${GITLABIMAGE}" "${QUAYIMAGE}" "${IMAGE}"; do
697769
docker rmi \
698770
${DELETEIMAGE}:${META_TAG} \
699771
${DELETEIMAGE}:${EXT_RELEASE_TAG} \
700-
${DELETEIMAGE}:latest || :
772+
${DELETEIMAGE}:latest \
773+
${DELETEIMAGE}:${SEMVER} || :
701774
done
702775
'''
703776
}
@@ -716,6 +789,12 @@ pipeline {
716789
credentialsId: '3f9ba4d5-100d-45b0-a3c4-633fd6061207',
717790
usernameVariable: 'DOCKERUSER',
718791
passwordVariable: 'DOCKERPASS'
792+
],
793+
[
794+
$class: 'UsernamePasswordMultiBinding',
795+
credentialsId: 'Quay.io-Robot',
796+
usernameVariable: 'QUAYUSER',
797+
passwordVariable: 'QUAYPASS'
719798
]
720799
]) {
721800
retry(5) {
@@ -724,13 +803,14 @@ pipeline {
724803
echo $DOCKERPASS | docker login -u $DOCKERUSER --password-stdin
725804
echo $GITHUB_TOKEN | docker login ghcr.io -u LinuxServer-CI --password-stdin
726805
echo $GITLAB_TOKEN | docker login registry.gitlab.com -u LinuxServer.io --password-stdin
806+
echo $QUAYPASS | docker login quay.io -u $QUAYUSER --password-stdin
727807
if [ "${CI}" == "false" ]; then
728808
docker pull ghcr.io/linuxserver/lsiodev-buildcache:arm32v7-${COMMIT_SHA}-${BUILD_NUMBER}
729809
docker pull ghcr.io/linuxserver/lsiodev-buildcache:arm64v8-${COMMIT_SHA}-${BUILD_NUMBER}
730810
docker tag ghcr.io/linuxserver/lsiodev-buildcache:arm32v7-${COMMIT_SHA}-${BUILD_NUMBER} ${IMAGE}:arm32v7-${META_TAG}
731811
docker tag ghcr.io/linuxserver/lsiodev-buildcache:arm64v8-${COMMIT_SHA}-${BUILD_NUMBER} ${IMAGE}:arm64v8-${META_TAG}
732812
fi
733-
for MANIFESTIMAGE in "${IMAGE}" "${GITLABIMAGE}" "${GITHUBIMAGE}"; do
813+
for MANIFESTIMAGE in "${IMAGE}" "${GITLABIMAGE}" "${GITHUBIMAGE}" "${QUAYIMAGE}"; do
734814
docker tag ${IMAGE}:amd64-${META_TAG} ${MANIFESTIMAGE}:amd64-${META_TAG}
735815
docker tag ${IMAGE}:arm32v7-${META_TAG} ${MANIFESTIMAGE}:arm32v7-${META_TAG}
736816
docker tag ${IMAGE}:arm64v8-${META_TAG} ${MANIFESTIMAGE}:arm64v8-${META_TAG}
@@ -740,6 +820,9 @@ pipeline {
740820
docker tag ${MANIFESTIMAGE}:amd64-${META_TAG} ${MANIFESTIMAGE}:amd64-${EXT_RELEASE_TAG}
741821
docker tag ${MANIFESTIMAGE}:arm32v7-${META_TAG} ${MANIFESTIMAGE}:arm32v7-${EXT_RELEASE_TAG}
742822
docker tag ${MANIFESTIMAGE}:arm64v8-${META_TAG} ${MANIFESTIMAGE}:arm64v8-${EXT_RELEASE_TAG}
823+
docker tag ${MANIFESTIMAGE}:amd64-${META_TAG} ${MANIFESTIMAGE}:amd64-${SEMVER}
824+
docker tag ${MANIFESTIMAGE}:arm32v7-${META_TAG} ${MANIFESTIMAGE}:arm32v7-${SEMVER}
825+
docker tag ${MANIFESTIMAGE}:arm64v8-${META_TAG} ${MANIFESTIMAGE}:arm64v8-${SEMVER}
743826
docker push ${MANIFESTIMAGE}:amd64-${META_TAG}
744827
docker push ${MANIFESTIMAGE}:arm32v7-${META_TAG}
745828
docker push ${MANIFESTIMAGE}:arm64v8-${META_TAG}
@@ -749,6 +832,9 @@ pipeline {
749832
docker push ${MANIFESTIMAGE}:amd64-${EXT_RELEASE_TAG}
750833
docker push ${MANIFESTIMAGE}:arm32v7-${EXT_RELEASE_TAG}
751834
docker push ${MANIFESTIMAGE}:arm64v8-${EXT_RELEASE_TAG}
835+
docker push ${MANIFESTIMAGE}:amd64-${SEMVER}
836+
docker push ${MANIFESTIMAGE}:arm32v7-${SEMVER}
837+
docker push ${MANIFESTIMAGE}:arm64v8-${SEMVER}
752838
docker manifest push --purge ${MANIFESTIMAGE}:latest || :
753839
docker manifest create ${MANIFESTIMAGE}:latest ${MANIFESTIMAGE}:amd64-latest ${MANIFESTIMAGE}:arm32v7-latest ${MANIFESTIMAGE}:arm64v8-latest
754840
docker manifest annotate ${MANIFESTIMAGE}:latest ${MANIFESTIMAGE}:arm32v7-latest --os linux --arch arm
@@ -761,24 +847,32 @@ pipeline {
761847
docker manifest create ${MANIFESTIMAGE}:${EXT_RELEASE_TAG} ${MANIFESTIMAGE}:amd64-${EXT_RELEASE_TAG} ${MANIFESTIMAGE}:arm32v7-${EXT_RELEASE_TAG} ${MANIFESTIMAGE}:arm64v8-${EXT_RELEASE_TAG}
762848
docker manifest annotate ${MANIFESTIMAGE}:${EXT_RELEASE_TAG} ${MANIFESTIMAGE}:arm32v7-${EXT_RELEASE_TAG} --os linux --arch arm
763849
docker manifest annotate ${MANIFESTIMAGE}:${EXT_RELEASE_TAG} ${MANIFESTIMAGE}:arm64v8-${EXT_RELEASE_TAG} --os linux --arch arm64 --variant v8
850+
docker manifest push --purge ${MANIFESTIMAGE}:${SEMVER} || :
851+
docker manifest create ${MANIFESTIMAGE}:${SEMVER} ${MANIFESTIMAGE}:amd64-${SEMVER} ${MANIFESTIMAGE}:arm32v7-${SEMVER} ${MANIFESTIMAGE}:arm64v8-${SEMVER}
852+
docker manifest annotate ${MANIFESTIMAGE}:${SEMVER} ${MANIFESTIMAGE}:arm32v7-${SEMVER} --os linux --arch arm
853+
docker manifest annotate ${MANIFESTIMAGE}:${SEMVER} ${MANIFESTIMAGE}:arm64v8-${SEMVER} --os linux --arch arm64 --variant v8
764854
docker manifest push --purge ${MANIFESTIMAGE}:latest
765855
docker manifest push --purge ${MANIFESTIMAGE}:${META_TAG}
766856
docker manifest push --purge ${MANIFESTIMAGE}:${EXT_RELEASE_TAG}
857+
docker manifest push --purge ${MANIFESTIMAGE}:${SEMVER}
767858
done
768859
'''
769860
}
770861
sh '''#! /bin/bash
771-
for DELETEIMAGE in "${GITHUBIMAGE}" "${GITLABIMAGE}" "${IMAGE}"; do
862+
for DELETEIMAGE in "${GITHUBIMAGE}" "${GITLABIMAGE}" "${QUAYIMAGE}" "${IMAGE}"; do
772863
docker rmi \
773864
${DELETEIMAGE}:amd64-${META_TAG} \
774865
${DELETEIMAGE}:amd64-latest \
775866
${DELETEIMAGE}:amd64-${EXT_RELEASE_TAG} \
867+
${DELETEIMAGE}:amd64-${SEMVER} \
776868
${DELETEIMAGE}:arm32v7-${META_TAG} \
777869
${DELETEIMAGE}:arm32v7-latest \
778870
${DELETEIMAGE}:arm32v7-${EXT_RELEASE_TAG} \
871+
${DELETEIMAGE}:arm32v7-${SEMVER} \
779872
${DELETEIMAGE}:arm64v8-${META_TAG} \
780873
${DELETEIMAGE}:arm64v8-latest \
781-
${DELETEIMAGE}:arm64v8-${EXT_RELEASE_TAG} || :
874+
${DELETEIMAGE}:arm64v8-${EXT_RELEASE_TAG} \
875+
${DELETEIMAGE}:arm64v8-${SEMVER} || :
782876
done
783877
docker rmi \
784878
ghcr.io/linuxserver/lsiodev-buildcache:arm32v7-${COMMIT_SHA}-${BUILD_NUMBER} \

0 commit comments

Comments
 (0)