@@ -16,9 +16,8 @@ pipeline {
16
16
GITHUB_TOKEN = credentials(' 498b4638-2d02-4ce5-832d-8a57d01d97ab' )
17
17
GITLAB_TOKEN = credentials(' b6f0f1dd-6952-4cf6-95d1-9c06380283f0' )
18
18
GITLAB_NAMESPACE = credentials(' gitlab-namespace-id' )
19
- EXT_GIT_BRANCH = ' master'
20
- EXT_USER = ' popeen'
21
- EXT_REPO = ' Popeens-Subsonic'
19
+ JSON_URL = ' https://api.github.com/repos/popeen/Popeens-Subsonic/releases'
20
+ JSON_PATH = ' first(.[] | select(.prerelease==true)) | .tag_name'
22
21
BUILD_VERSION_ARG = ' BOOKSONIC_RELEASE'
23
22
LS_USER = ' linuxserver'
24
23
LS_REPO = ' docker-booksonic'
@@ -44,7 +43,7 @@ pipeline {
44
43
script{
45
44
env. EXIT_STATUS = ' '
46
45
env. LS_RELEASE = sh(
47
- script : ''' docker run --rm alexeiled/skopeo sh -c 'skopeo inspect docker://docker.io/'${DOCKERHUB_IMAGE}':latest 2>/dev/null' | jq -r '.Labels.build_version' | awk '{print $3}' | grep '\\ -ls' || : ''' ,
46
+ script : ''' docker run --rm alexeiled/skopeo sh -c 'skopeo inspect docker://docker.io/'${DOCKERHUB_IMAGE}':prerelease 2>/dev/null' | jq -r '.Labels.build_version' | awk '{print $3}' | grep '\\ -ls' || : ''' ,
48
47
returnStdout : true ). trim()
49
48
env. LS_RELEASE_NOTES = sh(
50
49
script : ''' cat readme-vars.yml | awk -F \\ " '/date: "[0-9][0-9].[0-9][0-9].[0-9][0-9]:/ {print $4;exit;}' | sed -E ':a;N;$!ba;s/\\ r{0,1}\\ n/\\\\ n/g' ''' ,
@@ -101,21 +100,14 @@ pipeline {
101
100
/* ########################
102
101
External Release Tagging
103
102
######################## */
104
- // If this is a stable github release use the latest endpoint from github to determine the ext tag
105
- stage(" Set ENV github_stable " ){
103
+ // If this is a custom json endpoint parse the return to get external tag
104
+ stage(" Set ENV custom_json " ){
106
105
steps{
107
106
script{
108
107
env. EXT_RELEASE = sh(
109
- script : ''' curl -s https://api.github.com/repos/${EXT_USER}/${EXT_REPO}/releases/latest | jq -r ' . | .tag_name' ''' ,
108
+ script : ''' curl -s ${JSON_URL} | jq -r " . | ${JSON_PATH}" ''' ,
110
109
returnStdout : true ). trim()
111
- }
112
- }
113
- }
114
- // If this is a stable or devel github release generate the link for the build message
115
- stage(" Set ENV github_link" ){
116
- steps{
117
- script{
118
- env. RELEASE_LINK = ' https://github.com/' + env. EXT_USER + ' /' + env. EXT_REPO + ' /releases/tag/' + env. EXT_RELEASE
110
+ env. RELEASE_LINK = env. JSON_URL
119
111
}
120
112
}
121
113
}
@@ -129,10 +121,10 @@ pipeline {
129
121
}
130
122
}
131
123
}
132
- // If this is a master build use live docker endpoints
124
+ // If this is a prerelease build use live docker endpoints
133
125
stage(" Set ENV live build" ){
134
126
when {
135
- branch " master "
127
+ branch " prerelease "
136
128
environment name : ' CHANGE_ID' , value : ' '
137
129
}
138
130
steps {
@@ -153,7 +145,7 @@ pipeline {
153
145
// If this is a dev build use dev docker endpoints
154
146
stage(" Set ENV dev build" ){
155
147
when {
156
- not {branch " master " }
148
+ not {branch " prerelease " }
157
149
environment name : ' CHANGE_ID' , value : ' '
158
150
}
159
151
steps {
@@ -226,7 +218,7 @@ pipeline {
226
218
// Use helper containers to render templated files
227
219
stage(' Update-Templates' ) {
228
220
when {
229
- branch " master "
221
+ branch " prerelease "
230
222
environment name : ' CHANGE_ID' , value : ' '
231
223
expression {
232
224
env. CONTAINER_NAME != null
@@ -237,15 +229,15 @@ pipeline {
237
229
set -e
238
230
TEMPDIR=$(mktemp -d)
239
231
docker pull linuxserver/jenkins-builder:latest
240
- docker run --rm -e CONTAINER_NAME=${CONTAINER_NAME} -e GITHUB_BRANCH=master -v ${TEMPDIR}:/ansible/jenkins linuxserver/jenkins-builder:latest
232
+ docker run --rm -e CONTAINER_NAME=${CONTAINER_NAME} -e GITHUB_BRANCH=prerelease -v ${TEMPDIR}:/ansible/jenkins linuxserver/jenkins-builder:latest
241
233
CURRENTHASH=$(grep -hs ^ ${TEMPLATED_FILES} | md5sum | cut -c1-8)
242
234
cd ${TEMPDIR}/docker-${CONTAINER_NAME}
243
235
NEWHASH=$(grep -hs ^ ${TEMPLATED_FILES} | md5sum | cut -c1-8)
244
236
if [[ "${CURRENTHASH}" != "${NEWHASH}" ]]; then
245
237
mkdir -p ${TEMPDIR}/repo
246
238
git clone https://github.com/${LS_USER}/${LS_REPO}.git ${TEMPDIR}/repo/${LS_REPO}
247
239
cd ${TEMPDIR}/repo/${LS_REPO}
248
- git checkout -f master
240
+ git checkout -f prerelease
249
241
cd ${TEMPDIR}/docker-${CONTAINER_NAME}
250
242
mkdir -p ${TEMPDIR}/repo/${LS_REPO}/.github
251
243
cp --parents ${TEMPLATED_FILES} ${TEMPDIR}/repo/${LS_REPO}/
@@ -277,7 +269,7 @@ pipeline {
277
269
// Exit the build if the Templated files were just updated
278
270
stage(' Template-exit' ) {
279
271
when {
280
- branch " master "
272
+ branch " prerelease "
281
273
environment name : ' CHANGE_ID' , value : ' '
282
274
environment name : ' FILES_UPDATED' , value : ' true'
283
275
expression {
@@ -396,7 +388,7 @@ pipeline {
396
388
// Take the image we just built and dump package versions for comparison
397
389
stage(' Update-packages' ) {
398
390
when {
399
- branch " master "
391
+ branch " prerelease "
400
392
environment name : ' CHANGE_ID' , value : ' '
401
393
environment name : ' EXIT_STATUS' , value : ' '
402
394
}
@@ -424,7 +416,7 @@ pipeline {
424
416
echo "Package tag sha from current packages in buit container is ${NEW_PACKAGE_TAG} comparing to old ${PACKAGE_TAG} from github"
425
417
if [ "${NEW_PACKAGE_TAG}" != "${PACKAGE_TAG}" ]; then
426
418
git clone https://github.com/${LS_USER}/${LS_REPO}.git ${TEMPDIR}/${LS_REPO}
427
- git --git-dir ${TEMPDIR}/${LS_REPO}/.git checkout -f master
419
+ git --git-dir ${TEMPDIR}/${LS_REPO}/.git checkout -f prerelease
428
420
cp ${TEMPDIR}/package_versions.txt ${TEMPDIR}/${LS_REPO}/
429
421
cd ${TEMPDIR}/${LS_REPO}/
430
422
wait
@@ -448,7 +440,7 @@ pipeline {
448
440
// Exit the build if the package file was just updated
449
441
stage(' PACKAGE-exit' ) {
450
442
when {
451
- branch " master "
443
+ branch " prerelease "
452
444
environment name : ' CHANGE_ID' , value : ' '
453
445
environment name : ' PACKAGE_UPDATED' , value : ' true'
454
446
environment name : ' EXIT_STATUS' , value : ' '
@@ -462,7 +454,7 @@ pipeline {
462
454
// Exit the build if this is just a package check and there are no changes to push
463
455
stage(' PACKAGECHECK-exit' ) {
464
456
when {
465
- branch " master "
457
+ branch " prerelease "
466
458
environment name : ' CHANGE_ID' , value : ' '
467
459
environment name : ' PACKAGE_UPDATED' , value : ' false'
468
460
environment name : ' EXIT_STATUS' , value : ' '
@@ -557,14 +549,14 @@ pipeline {
557
549
echo $GITLAB_TOKEN | docker login registry.gitlab.com -u LinuxServer.io --password-stdin
558
550
for PUSHIMAGE in "${QUAYIMAGE}" "${GITHUBIMAGE}" "${GITLABIMAGE}" "${IMAGE}"; do
559
551
docker tag ${IMAGE}:${META_TAG} ${PUSHIMAGE}:${META_TAG}
560
- docker tag ${PUSHIMAGE}:${META_TAG} ${PUSHIMAGE}:latest
561
- docker push ${PUSHIMAGE}:latest
552
+ docker tag ${PUSHIMAGE}:${META_TAG} ${PUSHIMAGE}:prerelease
553
+ docker push ${PUSHIMAGE}:prerelease
562
554
docker push ${PUSHIMAGE}:${META_TAG}
563
555
done
564
556
for DELETEIMAGE in "${QUAYIMAGE}" "${GITHUBIMAGE}" "{GITLABIMAGE}" "${IMAGE}"; do
565
557
docker rmi \
566
558
${DELETEIMAGE}:${META_TAG} \
567
- ${DELETEIMAGE}:latest || :
559
+ ${DELETEIMAGE}:prerelease || :
568
560
done
569
561
'''
570
562
}
@@ -607,52 +599,52 @@ pipeline {
607
599
docker tag ${IMAGE}:amd64-${META_TAG} ${MANIFESTIMAGE}:amd64-${META_TAG}
608
600
docker tag ${IMAGE}:arm32v7-${META_TAG} ${MANIFESTIMAGE}:arm32v7-${META_TAG}
609
601
docker tag ${IMAGE}:arm64v8-${META_TAG} ${MANIFESTIMAGE}:arm64v8-${META_TAG}
610
- docker tag ${MANIFESTIMAGE}:amd64-${META_TAG} ${MANIFESTIMAGE}:amd64-latest
611
- docker tag ${MANIFESTIMAGE}:arm32v7-${META_TAG} ${MANIFESTIMAGE}:arm32v7-latest
612
- docker tag ${MANIFESTIMAGE}:arm64v8-${META_TAG} ${MANIFESTIMAGE}:arm64v8-latest
602
+ docker tag ${MANIFESTIMAGE}:amd64-${META_TAG} ${MANIFESTIMAGE}:amd64-prerelease
603
+ docker tag ${MANIFESTIMAGE}:arm32v7-${META_TAG} ${MANIFESTIMAGE}:arm32v7-prerelease
604
+ docker tag ${MANIFESTIMAGE}:arm64v8-${META_TAG} ${MANIFESTIMAGE}:arm64v8-prerelease
613
605
docker push ${MANIFESTIMAGE}:amd64-${META_TAG}
614
606
docker push ${MANIFESTIMAGE}:arm32v7-${META_TAG}
615
607
docker push ${MANIFESTIMAGE}:arm64v8-${META_TAG}
616
- docker push ${MANIFESTIMAGE}:amd64-latest
617
- docker push ${MANIFESTIMAGE}:arm32v7-latest
618
- docker push ${MANIFESTIMAGE}:arm64v8-latest
619
- docker manifest push --purge ${MANIFESTIMAGE}:latest || :
620
- docker manifest create ${MANIFESTIMAGE}:latest ${MANIFESTIMAGE}:amd64-latest ${MANIFESTIMAGE}:arm32v7-latest ${MANIFESTIMAGE}:arm64v8-latest
621
- docker manifest annotate ${MANIFESTIMAGE}:latest ${MANIFESTIMAGE}:arm32v7-latest --os linux --arch arm
622
- docker manifest annotate ${MANIFESTIMAGE}:latest ${MANIFESTIMAGE}:arm64v8-latest --os linux --arch arm64 --variant v8
608
+ docker push ${MANIFESTIMAGE}:amd64-prerelease
609
+ docker push ${MANIFESTIMAGE}:arm32v7-prerelease
610
+ docker push ${MANIFESTIMAGE}:arm64v8-prerelease
611
+ docker manifest push --purge ${MANIFESTIMAGE}:prerelease || :
612
+ docker manifest create ${MANIFESTIMAGE}:prerelease ${MANIFESTIMAGE}:amd64-prerelease ${MANIFESTIMAGE}:arm32v7-prerelease ${MANIFESTIMAGE}:arm64v8-prerelease
613
+ docker manifest annotate ${MANIFESTIMAGE}:prerelease ${MANIFESTIMAGE}:arm32v7-prerelease --os linux --arch arm
614
+ docker manifest annotate ${MANIFESTIMAGE}:prerelease ${MANIFESTIMAGE}:arm64v8-prerelease --os linux --arch arm64 --variant v8
623
615
docker manifest push --purge ${MANIFESTIMAGE}:${META_TAG} || :
624
616
docker manifest create ${MANIFESTIMAGE}:${META_TAG} ${MANIFESTIMAGE}:amd64-${META_TAG} ${MANIFESTIMAGE}:arm32v7-${META_TAG} ${MANIFESTIMAGE}:arm64v8-${META_TAG}
625
617
docker manifest annotate ${MANIFESTIMAGE}:${META_TAG} ${MANIFESTIMAGE}:arm32v7-${META_TAG} --os linux --arch arm
626
618
docker manifest annotate ${MANIFESTIMAGE}:${META_TAG} ${MANIFESTIMAGE}:arm64v8-${META_TAG} --os linux --arch arm64 --variant v8
627
- docker manifest push --purge ${MANIFESTIMAGE}:latest
619
+ docker manifest push --purge ${MANIFESTIMAGE}:prerelease
628
620
docker manifest push --purge ${MANIFESTIMAGE}:${META_TAG}
629
621
done
630
622
for LEGACYIMAGE in "${GITHUBIMAGE}" "${QUAYIMAGE}"; do
631
623
docker tag ${IMAGE}:amd64-${META_TAG} ${LEGACYIMAGE}:amd64-${META_TAG}
632
624
docker tag ${IMAGE}:arm32v7-${META_TAG} ${LEGACYIMAGE}:arm32v7-${META_TAG}
633
625
docker tag ${IMAGE}:arm64v8-${META_TAG} ${LEGACYIMAGE}:arm64v8-${META_TAG}
634
- docker tag ${LEGACYIMAGE}:amd64-${META_TAG} ${LEGACYIMAGE}:latest
626
+ docker tag ${LEGACYIMAGE}:amd64-${META_TAG} ${LEGACYIMAGE}:prerelease
635
627
docker tag ${LEGACYIMAGE}:amd64-${META_TAG} ${LEGACYIMAGE}:${META_TAG}
636
- docker tag ${LEGACYIMAGE}:arm32v7-${META_TAG} ${LEGACYIMAGE}:arm32v7-latest
637
- docker tag ${LEGACYIMAGE}:arm64v8-${META_TAG} ${LEGACYIMAGE}:arm64v8-latest
628
+ docker tag ${LEGACYIMAGE}:arm32v7-${META_TAG} ${LEGACYIMAGE}:arm32v7-prerelease
629
+ docker tag ${LEGACYIMAGE}:arm64v8-${META_TAG} ${LEGACYIMAGE}:arm64v8-prerelease
638
630
docker push ${LEGACYIMAGE}:amd64-${META_TAG}
639
631
docker push ${LEGACYIMAGE}:arm32v7-${META_TAG}
640
632
docker push ${LEGACYIMAGE}:arm64v8-${META_TAG}
641
- docker push ${LEGACYIMAGE}:latest
633
+ docker push ${LEGACYIMAGE}:prerelease
642
634
docker push ${LEGACYIMAGE}:${META_TAG}
643
- docker push ${LEGACYIMAGE}:arm32v7-latest
644
- docker push ${LEGACYIMAGE}:arm64v8-latest
635
+ docker push ${LEGACYIMAGE}:arm32v7-prerelease
636
+ docker push ${LEGACYIMAGE}:arm64v8-prerelease
645
637
done
646
638
'''
647
639
sh ''' #! /bin/bash
648
640
for DELETEIMAGE in "${QUAYIMAGE}" "${GITHUBIMAGE}" "${GITLABIMAGE}" "${IMAGE}"; do
649
641
docker rmi \
650
642
${DELETEIMAGE}:amd64-${META_TAG} \
651
- ${DELETEIMAGE}:amd64-latest \
643
+ ${DELETEIMAGE}:amd64-prerelease \
652
644
${DELETEIMAGE}:arm32v7-${META_TAG} \
653
- ${DELETEIMAGE}:arm32v7-latest \
645
+ ${DELETEIMAGE}:arm32v7-prerelease \
654
646
${DELETEIMAGE}:arm64v8-${META_TAG} \
655
- ${DELETEIMAGE}:arm64v8-latest || :
647
+ ${DELETEIMAGE}:arm64v8-prerelease || :
656
648
done
657
649
docker rmi \
658
650
lsiodev/buildcache:arm32v7-${COMMIT_SHA}-${BUILD_NUMBER} \
@@ -664,7 +656,7 @@ pipeline {
664
656
// If this is a public release tag it in the LS Github
665
657
stage(' Github-Tag-Push-Release' ) {
666
658
when {
667
- branch " master "
659
+ branch " prerelease "
668
660
expression {
669
661
env. LS_RELEASE != env. EXT_RELEASE_CLEAN + ' -ls' + env. LS_TAG_NUMBER
670
662
}
@@ -676,17 +668,17 @@ pipeline {
676
668
sh ''' curl -H "Authorization: token ${GITHUB_TOKEN}" -X POST https://api.github.com/repos/${LS_USER}/${LS_REPO}/git/tags \
677
669
-d '{"tag":"'${EXT_RELEASE_CLEAN}'-ls'${LS_TAG_NUMBER}'",\
678
670
"object": "'${COMMIT_SHA}'",\
679
- "message": "Tagging Release '${EXT_RELEASE_CLEAN}'-ls'${LS_TAG_NUMBER}' to master ",\
671
+ "message": "Tagging Release '${EXT_RELEASE_CLEAN}'-ls'${LS_TAG_NUMBER}' to prerelease ",\
680
672
"type": "commit",\
681
673
"tagger": {"name": "LinuxServer Jenkins","email": "[email protected] ","date": "'${GITHUB_DATE}'"}}' '''
682
674
echo " Pushing New release for Tag"
683
675
sh ''' #! /bin/bash
684
- curl -s https://api.github.com/repos/${EXT_USER}/${EXT_REPO}/releases/latest | jq '. |.body' | sed 's:^. \\ (.* \\ ).$: \\ 1:' > releasebody.json
676
+ echo "Data change at JSON endpoint ${JSON_URL}" > releasebody.json
685
677
echo '{"tag_name":"'${EXT_RELEASE_CLEAN}'-ls'${LS_TAG_NUMBER}'",\
686
- "target_commitish": "master ",\
678
+ "target_commitish": "prerelease ",\
687
679
"name": "'${EXT_RELEASE_CLEAN}'-ls'${LS_TAG_NUMBER}'",\
688
- "body": "**LinuxServer Changes:**\\ n\\ n'${LS_RELEASE_NOTES}'\\ n**'${EXT_REPO}' Changes:**\\ n\\ n' > start
689
- printf '","draft": false,"prerelease": false }' >> releasebody.json
680
+ "body": "**LinuxServer Changes:**\\ n\\ n'${LS_RELEASE_NOTES}'\\ n**Remote Changes:**\\ n\\ n' > start
681
+ printf '","draft": false,"prerelease": true }' >> releasebody.json
690
682
paste -d'\\ 0' start releasebody.json > releasebody.json.done
691
683
curl -H "Authorization: token ${GITHUB_TOKEN}" -X POST https://api.github.com/repos/${LS_USER}/${LS_REPO}/releases -d @releasebody.json.done'''
692
684
}
0 commit comments