@@ -104,6 +104,16 @@ pipeline {
104
104
}
105
105
}
106
106
}
107
+ // Sanitize the release tag and strip illegal docker or github characters
108
+ stage(" Sanitize tag" ){
109
+ steps{
110
+ script{
111
+ env. EXT_RELEASE_CLEAN = sh(
112
+ script : ''' echo ${EXT_RELEASE} | sed 's/[~,%@+;:]//g' ''' ,
113
+ returnStdout : true ). trim()
114
+ }
115
+ }
116
+ }
107
117
// If this is a master build use live docker endpoints
108
118
stage(" Set ENV live build" ){
109
119
when {
@@ -114,11 +124,11 @@ pipeline {
114
124
script{
115
125
env. IMAGE = env. DOCKERHUB_IMAGE
116
126
if (env. MULTIARCH == ' true' ) {
117
- env. CI_TAGS = ' amd64-' + env. EXT_RELEASE + ' -ls' + env. LS_TAG_NUMBER + ' |arm32v6-' + env. EXT_RELEASE + ' -ls' + env. LS_TAG_NUMBER + ' |arm64v8-' + env. EXT_RELEASE + ' -ls' + env. LS_TAG_NUMBER
127
+ env. CI_TAGS = ' amd64-' + env. EXT_RELEASE_CLEAN + ' -ls' + env. LS_TAG_NUMBER + ' |arm32v6-' + env. EXT_RELEASE_CLEAN + ' -ls' + env. LS_TAG_NUMBER + ' |arm64v8-' + env. EXT_RELEASE_CLEAN + ' -ls' + env. LS_TAG_NUMBER
118
128
} else {
119
- env. CI_TAGS = env. EXT_RELEASE + ' -ls' + env. LS_TAG_NUMBER
129
+ env. CI_TAGS = env. EXT_RELEASE_CLEAN + ' -ls' + env. LS_TAG_NUMBER
120
130
}
121
- env. META_TAG = env. EXT_RELEASE + ' -ls' + env. LS_TAG_NUMBER
131
+ env. META_TAG = env. EXT_RELEASE_CLEAN + ' -ls' + env. LS_TAG_NUMBER
122
132
}
123
133
}
124
134
}
@@ -132,11 +142,11 @@ pipeline {
132
142
script{
133
143
env. IMAGE = env. DEV_DOCKERHUB_IMAGE
134
144
if (env. MULTIARCH == ' true' ) {
135
- env. CI_TAGS = ' amd64-' + env. EXT_RELEASE + ' -pkg-' + env. PACKAGE_TAG + ' -dev-' + env. COMMIT_SHA + ' |arm32v6-' + env. EXT_RELEASE + ' -pkg-' + env. PACKAGE_TAG + ' -dev-' + env. COMMIT_SHA + ' |arm64v8-' + env. EXT_RELEASE + ' -pkg-' + env. PACKAGE_TAG + ' -dev-' + env. COMMIT_SHA
145
+ env. CI_TAGS = ' amd64-' + env. EXT_RELEASE_CLEAN + ' -pkg-' + env. PACKAGE_TAG + ' -dev-' + env. COMMIT_SHA + ' |arm32v6-' + 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
136
146
} else {
137
- env. CI_TAGS = env. EXT_RELEASE + ' -pkg-' + env. PACKAGE_TAG + ' -dev-' + env. COMMIT_SHA
147
+ env. CI_TAGS = env. EXT_RELEASE_CLEAN + ' -pkg-' + env. PACKAGE_TAG + ' -dev-' + env. COMMIT_SHA
138
148
}
139
- env. META_TAG = env. EXT_RELEASE + ' -pkg-' + env. PACKAGE_TAG + ' -dev-' + env. COMMIT_SHA
149
+ env. META_TAG = env. EXT_RELEASE_CLEAN + ' -pkg-' + env. PACKAGE_TAG + ' -dev-' + env. COMMIT_SHA
140
150
env. DOCKERHUB_LINK = ' https://hub.docker.com/r/' + env. DEV_DOCKERHUB_IMAGE + ' /tags/'
141
151
}
142
152
}
@@ -150,11 +160,11 @@ pipeline {
150
160
script{
151
161
env. IMAGE = env. PR_DOCKERHUB_IMAGE
152
162
if (env. MULTIARCH == ' true' ) {
153
- env. CI_TAGS = ' amd64-' + env. EXT_RELEASE + ' -pkg-' + env. PACKAGE_TAG + ' -pr-' + env. PULL_REQUEST + ' |arm32v6-' + env. EXT_RELEASE + ' -pkg-' + env. PACKAGE_TAG + ' -pr-' + env. PULL_REQUEST + ' |arm64v8-' + env. EXT_RELEASE + ' -pkg-' + env. PACKAGE_TAG + ' -pr-' + env. PULL_REQUEST
163
+ env. CI_TAGS = ' amd64-' + env. EXT_RELEASE_CLEAN + ' -pkg-' + env. PACKAGE_TAG + ' -pr-' + env. PULL_REQUEST + ' |arm32v6-' + 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
154
164
} else {
155
- env. CI_TAGS = env. EXT_RELEASE + ' -pkg-' + env. PACKAGE_TAG + ' -pr-' + env. PULL_REQUEST
165
+ env. CI_TAGS = env. EXT_RELEASE_CLEAN + ' -pkg-' + env. PACKAGE_TAG + ' -pr-' + env. PULL_REQUEST
156
166
}
157
- env. META_TAG = env. EXT_RELEASE + ' -pkg-' + env. PACKAGE_TAG + ' -pr-' + env. PULL_REQUEST
167
+ env. META_TAG = env. EXT_RELEASE_CLEAN + ' -pkg-' + env. PACKAGE_TAG + ' -pr-' + env. PULL_REQUEST
158
168
env. CODE_URL = ' https://github.com/' + env. LS_USER + ' /' + env. LS_REPO + ' /pull/' + env. PULL_REQUEST
159
169
env. DOCKERHUB_LINK = ' https://hub.docker.com/r/' + env. PR_DOCKERHUB_IMAGE + ' /tags/'
160
170
}
@@ -316,10 +326,12 @@ pipeline {
316
326
docker run --rm --entrypoint '/bin/sh' -v ${TEMPDIR}:/tmp ${LOCAL_CONTAINER} -c '\
317
327
apk info > packages && \
318
328
apk info -v > versions && \
319
- paste -d " " packages versions > /tmp/package_versions.txt'
329
+ paste -d " " packages versions > /tmp/package_versions.txt && \
330
+ chmod 777 /tmp/package_versions.txt'
320
331
elif [ "${DIST_IMAGE}" == "ubuntu" ]; then
321
332
docker run --rm --entrypoint '/bin/sh' -v ${TEMPDIR}:/tmp ${LOCAL_CONTAINER} -c '\
322
- apt -qq list --installed | awk "{print \$ 1,\$ 2}" > /tmp/package_versions.txt'
333
+ apt -qq list --installed | awk "{print \$ 1,\$ 2}" > /tmp/package_versions.txt && \
334
+ chmod 777 /tmp/package_versions.txt'
323
335
fi
324
336
if [ "$(md5sum ${TEMPDIR}/package_versions.txt | cut -c1-8 )" != "${PACKAGE_TAG}" ]; then
325
337
git clone https://github.com/${LS_USER}/${LS_REPO}.git ${TEMPDIR}/${LS_REPO}
@@ -486,7 +498,7 @@ pipeline {
486
498
sh " docker manifest create ${ IMAGE} :latest ${ IMAGE} :amd64-latest ${ IMAGE} :arm32v6-latest ${ IMAGE} :arm64v8-latest"
487
499
sh " docker manifest annotate ${ IMAGE} :latest ${ IMAGE} :arm32v6-latest --os linux --arch arm"
488
500
sh " docker manifest annotate ${ IMAGE} :latest ${ IMAGE} :arm64v8-latest --os linux --arch arm64 --variant v8"
489
- sh " docker manifest push --purge ${ IMAGE} :${ EXT_RELEASE } -ls ${ LS_TAG_NUMBER } || :"
501
+ sh " docker manifest push --purge ${ IMAGE} :${ META_TAG } || :"
490
502
sh " docker manifest create ${ IMAGE} :${ META_TAG} ${ IMAGE} :amd64-${ META_TAG} ${ IMAGE} :arm32v6-${ META_TAG} ${ IMAGE} :arm64v8-${ META_TAG} "
491
503
sh " docker manifest annotate ${ IMAGE} :${ META_TAG} ${ IMAGE} :arm32v6-${ META_TAG} --os linux --arch arm"
492
504
sh " docker manifest annotate ${ IMAGE} :${ META_TAG} ${ IMAGE} :arm64v8-${ META_TAG} --os linux --arch arm64 --variant v8"
@@ -500,25 +512,25 @@ pipeline {
500
512
when {
501
513
branch " master"
502
514
expression {
503
- env. LS_RELEASE != env. EXT_RELEASE + ' -pkg-' + env. PACKAGE_TAG + ' -ls' + env. LS_TAG_NUMBER
515
+ env. LS_RELEASE != env. EXT_RELEASE_CLEAN + ' -pkg-' + env. PACKAGE_TAG + ' -ls' + env. LS_TAG_NUMBER
504
516
}
505
517
environment name : ' CHANGE_ID' , value : ' '
506
518
environment name : ' EXIT_STATUS' , value : ' '
507
519
}
508
520
steps {
509
- echo " Pushing New tag for current commit ${ EXT_RELEASE } -pkg-${ PACKAGE_TAG} -ls${ LS_TAG_NUMBER} "
521
+ echo " Pushing New tag for current commit ${ EXT_RELEASE_CLEAN } -pkg-${ PACKAGE_TAG} -ls${ LS_TAG_NUMBER} "
510
522
sh ''' curl -H "Authorization: token ${GITHUB_TOKEN}" -X POST https://api.github.com/repos/${LS_USER}/${LS_REPO}/git/tags \
511
- -d '{"tag":"'${EXT_RELEASE }'-pkg-'${PACKAGE_TAG}'-ls'${LS_TAG_NUMBER}'",\
523
+ -d '{"tag":"'${EXT_RELEASE_CLEAN }'-pkg-'${PACKAGE_TAG}'-ls'${LS_TAG_NUMBER}'",\
512
524
"object": "'${COMMIT_SHA}'",\
513
- "message": "Tagging Release '${EXT_RELEASE }'-pkg-'${PACKAGE_TAG}'-ls'${LS_TAG_NUMBER}' to master",\
525
+ "message": "Tagging Release '${EXT_RELEASE_CLEAN }'-pkg-'${PACKAGE_TAG}'-ls'${LS_TAG_NUMBER}' to master",\
514
526
"type": "commit",\
515
527
"tagger": {"name": "LinuxServer Jenkins","email": "[email protected] ","date": "'${GITHUB_DATE}'"}}' '''
516
528
echo " Pushing New release for Tag"
517
529
sh ''' #! /bin/bash
518
530
echo "Updating base packages to ${PACKAGE_TAG}" > releasebody.json
519
- echo '{"tag_name":"'${EXT_RELEASE }'-pkg-'${PACKAGE_TAG}'-ls'${LS_TAG_NUMBER}'",\
531
+ echo '{"tag_name":"'${EXT_RELEASE_CLEAN }'-pkg-'${PACKAGE_TAG}'-ls'${LS_TAG_NUMBER}'",\
520
532
"target_commitish": "master",\
521
- "name": "'${EXT_RELEASE }'-pkg-'${PACKAGE_TAG}'-ls'${LS_TAG_NUMBER}'",\
533
+ "name": "'${EXT_RELEASE_CLEAN }'-pkg-'${PACKAGE_TAG}'-ls'${LS_TAG_NUMBER}'",\
522
534
"body": "**LinuxServer Changes:**\\ n\\ n'${LS_RELEASE_NOTES}'\\ n**OS Changes:**\\ n\\ n' > start
523
535
printf '","draft": false,"prerelease": false}' >> releasebody.json
524
536
paste -d'\\ 0' start releasebody.json > releasebody.json.done
0 commit comments