@@ -10,9 +10,8 @@ pipeline {
10
10
environment {
11
11
BUILDS_DISCORD = credentials(' build_webhook_url' )
12
12
GITHUB_TOKEN = credentials(' 498b4638-2d02-4ce5-832d-8a57d01d97ab' )
13
- EXT_GIT_BRANCH = ' master'
14
- EXT_USER = ' cdr'
15
- EXT_REPO = ' code-server'
13
+ JSON_URL = ' https://api.github.com/repos/cdr/code-server/releases'
14
+ JSON_PATH = ' first(.[] | select(.prerelease == true)) | .tag_name'
16
15
CONTAINER_NAME = ' code-server'
17
16
BUILD_VERSION_ARG = ' CODE_RELEASE'
18
17
LS_USER = ' linuxserver'
@@ -38,7 +37,7 @@ pipeline {
38
37
script{
39
38
env. EXIT_STATUS = ' '
40
39
env. LS_RELEASE = sh(
41
- 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' || : ''' ,
40
+ script : ''' docker run --rm alexeiled/skopeo sh -c 'skopeo inspect docker://docker.io/'${DOCKERHUB_IMAGE}':development 2>/dev/null' | jq -r '.Labels.build_version' | awk '{print $3}' | grep '\\ -ls' || : ''' ,
42
41
returnStdout : true ). trim()
43
42
env. LS_RELEASE_NOTES = sh(
44
43
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' ''' ,
@@ -110,21 +109,14 @@ pipeline {
110
109
/* ########################
111
110
External Release Tagging
112
111
######################## */
113
- // If this is a stable github release use the latest endpoint from github to determine the ext tag
114
- stage(" Set ENV github_stable " ){
112
+ // If this is a custom json endpoint parse the return to get external tag
113
+ stage(" Set ENV custom_json " ){
115
114
steps{
116
115
script{
117
116
env. EXT_RELEASE = sh(
118
- script : ''' curl -s https://api.github.com/repos/${EXT_USER}/${EXT_REPO}/releases/latest | jq -r ' . | .tag_name' ''' ,
117
+ script : ''' curl -s ${JSON_URL} | jq -r " . | ${JSON_PATH}" ''' ,
119
118
returnStdout : true ). trim()
120
- }
121
- }
122
- }
123
- // If this is a stable or devel github release generate the link for the build message
124
- stage(" Set ENV github_link" ){
125
- steps{
126
- script{
127
- env. RELEASE_LINK = ' https://github.com/' + env. EXT_USER + ' /' + env. EXT_REPO + ' /releases/tag/' + env. EXT_RELEASE
119
+ env. RELEASE_LINK = env. JSON_URL
128
120
}
129
121
}
130
122
}
@@ -138,10 +130,10 @@ pipeline {
138
130
}
139
131
}
140
132
}
141
- // If this is a master build use live docker endpoints
133
+ // If this is a development build use live docker endpoints
142
134
stage(" Set ENV live build" ){
143
135
when {
144
- branch " master "
136
+ branch " development "
145
137
environment name : ' CHANGE_ID' , value : ' '
146
138
}
147
139
steps {
@@ -159,7 +151,7 @@ pipeline {
159
151
// If this is a dev build use dev docker endpoints
160
152
stage(" Set ENV dev build" ){
161
153
when {
162
- not {branch " master " }
154
+ not {branch " development " }
163
155
environment name : ' CHANGE_ID' , value : ' '
164
156
}
165
157
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 " development "
230
222
environment name : ' CHANGE_ID' , value : ' '
231
223
expression {
232
224
env. CONTAINER_NAME != null
@@ -237,16 +229,16 @@ 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=development -v ${TEMPDIR}:/ansible/jenkins linuxserver/jenkins-builder:latest
241
233
docker pull linuxserver/doc-builder:latest
242
- docker run --rm -e CONTAINER_NAME=${CONTAINER_NAME} -e GITHUB_BRANCH=master -v ${TEMPDIR}:/ansible/readme linuxserver/doc-builder:latest
234
+ docker run --rm -e CONTAINER_NAME=${CONTAINER_NAME} -e GITHUB_BRANCH=development -v ${TEMPDIR}:/ansible/readme linuxserver/doc-builder:latest
243
235
if [ "$(md5sum ${TEMPDIR}/${LS_REPO}/Jenkinsfile | awk '{ print $1 }')" != "$(md5sum Jenkinsfile | awk '{ print $1 }')" ] || \
244
236
[ "$(md5sum ${TEMPDIR}/${CONTAINER_NAME}/README.md | awk '{ print $1 }')" != "$(md5sum README.md | awk '{ print $1 }')" ] || \
245
237
[ "$(cat ${TEMPDIR}/${LS_REPO}/LICENSE | md5sum | cut -c1-8)" != "${LICENSE_TAG}" ] || \
246
238
[ "$(cat ${TEMPDIR}/${LS_REPO}/.github/FUNDING.yml | md5sum | cut -c1-8)" != "${FUNDING_TAG}" ]; then
247
239
mkdir -p ${TEMPDIR}/repo
248
240
git clone https://github.com/${LS_USER}/${LS_REPO}.git ${TEMPDIR}/repo/${LS_REPO}
249
- git --git-dir ${TEMPDIR}/repo/${LS_REPO}/.git checkout -f master
241
+ git --git-dir ${TEMPDIR}/repo/${LS_REPO}/.git checkout -f development
250
242
cp ${TEMPDIR}/${CONTAINER_NAME}/README.md ${TEMPDIR}/repo/${LS_REPO}/
251
243
cp ${TEMPDIR}/docker-${CONTAINER_NAME}/Jenkinsfile ${TEMPDIR}/repo/${LS_REPO}/
252
244
cp ${TEMPDIR}/docker-${CONTAINER_NAME}/LICENSE ${TEMPDIR}/repo/${LS_REPO}/
@@ -280,7 +272,7 @@ pipeline {
280
272
// Exit the build if the Templated files were just updated
281
273
stage(' Template-exit' ) {
282
274
when {
283
- branch " master "
275
+ branch " development "
284
276
environment name : ' CHANGE_ID' , value : ' '
285
277
environment name : ' FILES_UPDATED' , value : ' true'
286
278
expression {
@@ -379,7 +371,7 @@ pipeline {
379
371
// Take the image we just built and dump package versions for comparison
380
372
stage(' Update-packages' ) {
381
373
when {
382
- branch " master "
374
+ branch " development "
383
375
environment name : ' CHANGE_ID' , value : ' '
384
376
environment name : ' EXIT_STATUS' , value : ' '
385
377
}
@@ -407,7 +399,7 @@ pipeline {
407
399
echo "Package tag sha from current packages in buit container is ${NEW_PACKAGE_TAG} comparing to old ${PACKAGE_TAG} from github"
408
400
if [ "${NEW_PACKAGE_TAG}" != "${PACKAGE_TAG}" ]; then
409
401
git clone https://github.com/${LS_USER}/${LS_REPO}.git ${TEMPDIR}/${LS_REPO}
410
- git --git-dir ${TEMPDIR}/${LS_REPO}/.git checkout -f master
402
+ git --git-dir ${TEMPDIR}/${LS_REPO}/.git checkout -f development
411
403
cp ${TEMPDIR}/package_versions.txt ${TEMPDIR}/${LS_REPO}/
412
404
cd ${TEMPDIR}/${LS_REPO}/
413
405
wait
@@ -431,7 +423,7 @@ pipeline {
431
423
// Exit the build if the package file was just updated
432
424
stage(' PACKAGE-exit' ) {
433
425
when {
434
- branch " master "
426
+ branch " development "
435
427
environment name : ' CHANGE_ID' , value : ' '
436
428
environment name : ' PACKAGE_UPDATED' , value : ' true'
437
429
environment name : ' EXIT_STATUS' , value : ' '
@@ -445,7 +437,7 @@ pipeline {
445
437
// Exit the build if this is just a package check and there are no changes to push
446
438
stage(' PACKAGECHECK-exit' ) {
447
439
when {
448
- branch " master "
440
+ branch " development "
449
441
environment name : ' CHANGE_ID' , value : ' '
450
442
environment name : ' PACKAGE_UPDATED' , value : ' false'
451
443
environment name : ' EXIT_STATUS' , value : ' '
@@ -530,12 +522,12 @@ pipeline {
530
522
sh ''' #! /bin/bash
531
523
echo $DOCKERPASS | docker login -u $DOCKERUSER --password-stdin
532
524
'''
533
- sh " docker tag ${ IMAGE} :${ META_TAG} ${ IMAGE} :latest "
534
- sh " docker push ${ IMAGE} :latest "
525
+ sh " docker tag ${ IMAGE} :${ META_TAG} ${ IMAGE} :development "
526
+ sh " docker push ${ IMAGE} :development "
535
527
sh " docker push ${ IMAGE} :${ META_TAG} "
536
528
sh ''' docker rmi \
537
529
${IMAGE}:${META_TAG} \
538
- ${IMAGE}:latest || :'''
530
+ ${IMAGE}:development || :'''
539
531
540
532
}
541
533
}
@@ -565,32 +557,32 @@ pipeline {
565
557
docker tag lsiodev/buildcache:arm32v7-${COMMIT_SHA}-${BUILD_NUMBER} ${IMAGE}:arm32v7-${META_TAG}
566
558
docker tag lsiodev/buildcache:arm64v8-${COMMIT_SHA}-${BUILD_NUMBER} ${IMAGE}:arm64v8-${META_TAG}
567
559
fi'''
568
- sh " docker tag ${ IMAGE} :amd64-${ META_TAG} ${ IMAGE} :amd64-latest "
569
- sh " docker tag ${ IMAGE} :arm32v7-${ META_TAG} ${ IMAGE} :arm32v7-latest "
570
- sh " docker tag ${ IMAGE} :arm64v8-${ META_TAG} ${ IMAGE} :arm64v8-latest "
560
+ sh " docker tag ${ IMAGE} :amd64-${ META_TAG} ${ IMAGE} :amd64-development "
561
+ sh " docker tag ${ IMAGE} :arm32v7-${ META_TAG} ${ IMAGE} :arm32v7-development "
562
+ sh " docker tag ${ IMAGE} :arm64v8-${ META_TAG} ${ IMAGE} :arm64v8-development "
571
563
sh " docker push ${ IMAGE} :amd64-${ META_TAG} "
572
564
sh " docker push ${ IMAGE} :arm32v7-${ META_TAG} "
573
565
sh " docker push ${ IMAGE} :arm64v8-${ META_TAG} "
574
- sh " docker push ${ IMAGE} :amd64-latest "
575
- sh " docker push ${ IMAGE} :arm32v7-latest "
576
- sh " docker push ${ IMAGE} :arm64v8-latest "
577
- sh " docker manifest push --purge ${ IMAGE} :latest || :"
578
- sh " docker manifest create ${ IMAGE} :latest ${ IMAGE} :amd64-latest ${ IMAGE} :arm32v7-latest ${ IMAGE} :arm64v8-latest "
579
- sh " docker manifest annotate ${ IMAGE} :latest ${ IMAGE} :arm32v7-latest --os linux --arch arm"
580
- sh " docker manifest annotate ${ IMAGE} :latest ${ IMAGE} :arm64v8-latest --os linux --arch arm64 --variant v8"
566
+ sh " docker push ${ IMAGE} :amd64-development "
567
+ sh " docker push ${ IMAGE} :arm32v7-development "
568
+ sh " docker push ${ IMAGE} :arm64v8-development "
569
+ sh " docker manifest push --purge ${ IMAGE} :development || :"
570
+ sh " docker manifest create ${ IMAGE} :development ${ IMAGE} :amd64-development ${ IMAGE} :arm32v7-development ${ IMAGE} :arm64v8-development "
571
+ sh " docker manifest annotate ${ IMAGE} :development ${ IMAGE} :arm32v7-development --os linux --arch arm"
572
+ sh " docker manifest annotate ${ IMAGE} :development ${ IMAGE} :arm64v8-development --os linux --arch arm64 --variant v8"
581
573
sh " docker manifest push --purge ${ IMAGE} :${ META_TAG} || :"
582
574
sh " docker manifest create ${ IMAGE} :${ META_TAG} ${ IMAGE} :amd64-${ META_TAG} ${ IMAGE} :arm32v7-${ META_TAG} ${ IMAGE} :arm64v8-${ META_TAG} "
583
575
sh " docker manifest annotate ${ IMAGE} :${ META_TAG} ${ IMAGE} :arm32v7-${ META_TAG} --os linux --arch arm"
584
576
sh " docker manifest annotate ${ IMAGE} :${ META_TAG} ${ IMAGE} :arm64v8-${ META_TAG} --os linux --arch arm64 --variant v8"
585
- sh " docker manifest push --purge ${ IMAGE} :latest "
577
+ sh " docker manifest push --purge ${ IMAGE} :development "
586
578
sh " docker manifest push --purge ${ IMAGE} :${ META_TAG} "
587
579
sh ''' docker rmi \
588
580
${IMAGE}:amd64-${META_TAG} \
589
- ${IMAGE}:amd64-latest \
581
+ ${IMAGE}:amd64-development \
590
582
${IMAGE}:arm32v7-${META_TAG} \
591
- ${IMAGE}:arm32v7-latest \
583
+ ${IMAGE}:arm32v7-development \
592
584
${IMAGE}:arm64v8-${META_TAG} \
593
- ${IMAGE}:arm64v8-latest \
585
+ ${IMAGE}:arm64v8-development \
594
586
lsiodev/buildcache:arm32v7-${COMMIT_SHA}-${BUILD_NUMBER} \
595
587
lsiodev/buildcache:arm64v8-${COMMIT_SHA}-${BUILD_NUMBER} || :'''
596
588
}
@@ -599,7 +591,7 @@ pipeline {
599
591
// If this is a public release tag it in the LS Github
600
592
stage(' Github-Tag-Push-Release' ) {
601
593
when {
602
- branch " master "
594
+ branch " development "
603
595
expression {
604
596
env. LS_RELEASE != env. EXT_RELEASE_CLEAN + ' -ls' + env. LS_TAG_NUMBER
605
597
}
@@ -611,17 +603,17 @@ pipeline {
611
603
sh ''' curl -H "Authorization: token ${GITHUB_TOKEN}" -X POST https://api.github.com/repos/${LS_USER}/${LS_REPO}/git/tags \
612
604
-d '{"tag":"'${EXT_RELEASE_CLEAN}'-ls'${LS_TAG_NUMBER}'",\
613
605
"object": "'${COMMIT_SHA}'",\
614
- "message": "Tagging Release '${EXT_RELEASE_CLEAN}'-ls'${LS_TAG_NUMBER}' to master ",\
606
+ "message": "Tagging Release '${EXT_RELEASE_CLEAN}'-ls'${LS_TAG_NUMBER}' to development ",\
615
607
"type": "commit",\
616
608
"tagger": {"name": "LinuxServer Jenkins","email": "[email protected] ","date": "'${GITHUB_DATE}'"}}' '''
617
609
echo " Pushing New release for Tag"
618
610
sh ''' #! /bin/bash
619
- curl -s https://api.github.com/repos/${EXT_USER}/${EXT_REPO}/releases/latest | jq '. |.body' | sed 's:^. \\ (.* \\ ).$: \\ 1:' > releasebody.json
611
+ echo "Data change at JSON endpoint ${JSON_URL}" > releasebody.json
620
612
echo '{"tag_name":"'${EXT_RELEASE_CLEAN}'-ls'${LS_TAG_NUMBER}'",\
621
- "target_commitish": "master ",\
613
+ "target_commitish": "development ",\
622
614
"name": "'${EXT_RELEASE_CLEAN}'-ls'${LS_TAG_NUMBER}'",\
623
- "body": "**LinuxServer Changes:**\\ n\\ n'${LS_RELEASE_NOTES}'\\ n**'${EXT_REPO}' Changes:**\\ n\\ n' > start
624
- printf '","draft": false,"prerelease": false }' >> releasebody.json
615
+ "body": "**LinuxServer Changes:**\\ n\\ n'${LS_RELEASE_NOTES}'\\ n**Remote Changes:**\\ n\\ n' > start
616
+ printf '","draft": false,"prerelease": true }' >> releasebody.json
625
617
paste -d'\\ 0' start releasebody.json > releasebody.json.done
626
618
curl -H "Authorization: token ${GITHUB_TOKEN}" -X POST https://api.github.com/repos/${LS_USER}/${LS_REPO}/releases -d @releasebody.json.done'''
627
619
}
0 commit comments