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