@@ -116,6 +116,16 @@ pipeline {
116116 }
117117 }
118118 }
119+ // Sanitize the release tag and strip illegal docker or github characters
120+ stage(" Sanitize tag" ){
121+ steps{
122+ script{
123+ env. EXT_RELEASE_CLEAN = sh(
124+ script : ''' echo ${EXT_RELEASE} | sed 's/[~,%@+;:]//g' ''' ,
125+ returnStdout : true ). trim()
126+ }
127+ }
128+ }
119129 // If this is a master build use live docker endpoints
120130 stage(" Set ENV live build" ){
121131 when {
@@ -126,11 +136,11 @@ pipeline {
126136 script{
127137 env. IMAGE = env. DOCKERHUB_IMAGE
128138 if (env. MULTIARCH == ' true' ) {
129- 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
139+ 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
130140 } else {
131- env. CI_TAGS = env. EXT_RELEASE + ' -ls' + env. LS_TAG_NUMBER
141+ env. CI_TAGS = env. EXT_RELEASE_CLEAN + ' -ls' + env. LS_TAG_NUMBER
132142 }
133- env. META_TAG = env. EXT_RELEASE + ' -ls' + env. LS_TAG_NUMBER
143+ env. META_TAG = env. EXT_RELEASE_CLEAN + ' -ls' + env. LS_TAG_NUMBER
134144 }
135145 }
136146 }
@@ -144,11 +154,11 @@ pipeline {
144154 script{
145155 env. IMAGE = env. DEV_DOCKERHUB_IMAGE
146156 if (env. MULTIARCH == ' true' ) {
147- 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
157+ 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
148158 } else {
149- env. CI_TAGS = env. EXT_RELEASE + ' -pkg-' + env. PACKAGE_TAG + ' -dev-' + env. COMMIT_SHA
159+ env. CI_TAGS = env. EXT_RELEASE_CLEAN + ' -pkg-' + env. PACKAGE_TAG + ' -dev-' + env. COMMIT_SHA
150160 }
151- env. META_TAG = env. EXT_RELEASE + ' -pkg-' + env. PACKAGE_TAG + ' -dev-' + env. COMMIT_SHA
161+ env. META_TAG = env. EXT_RELEASE_CLEAN + ' -pkg-' + env. PACKAGE_TAG + ' -dev-' + env. COMMIT_SHA
152162 env. DOCKERHUB_LINK = ' https://hub.docker.com/r/' + env. DEV_DOCKERHUB_IMAGE + ' /tags/'
153163 }
154164 }
@@ -162,11 +172,11 @@ pipeline {
162172 script{
163173 env. IMAGE = env. PR_DOCKERHUB_IMAGE
164174 if (env. MULTIARCH == ' true' ) {
165- 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
175+ 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
166176 } else {
167- env. CI_TAGS = env. EXT_RELEASE + ' -pkg-' + env. PACKAGE_TAG + ' -pr-' + env. PULL_REQUEST
177+ env. CI_TAGS = env. EXT_RELEASE_CLEAN + ' -pkg-' + env. PACKAGE_TAG + ' -pr-' + env. PULL_REQUEST
168178 }
169- env. META_TAG = env. EXT_RELEASE + ' -pkg-' + env. PACKAGE_TAG + ' -pr-' + env. PULL_REQUEST
179+ env. META_TAG = env. EXT_RELEASE_CLEAN + ' -pkg-' + env. PACKAGE_TAG + ' -pr-' + env. PULL_REQUEST
170180 env. CODE_URL = ' https://github.com/' + env. LS_USER + ' /' + env. LS_REPO + ' /pull/' + env. PULL_REQUEST
171181 env. DOCKERHUB_LINK = ' https://hub.docker.com/r/' + env. PR_DOCKERHUB_IMAGE + ' /tags/'
172182 }
@@ -500,7 +510,7 @@ pipeline {
500510 sh " docker manifest create ${ IMAGE} :latest ${ IMAGE} :amd64-latest ${ IMAGE} :arm32v6-latest ${ IMAGE} :arm64v8-latest"
501511 sh " docker manifest annotate ${ IMAGE} :latest ${ IMAGE} :arm32v6-latest --os linux --arch arm"
502512 sh " docker manifest annotate ${ IMAGE} :latest ${ IMAGE} :arm64v8-latest --os linux --arch arm64 --variant v8"
503- sh " docker manifest push --purge ${ IMAGE} :${ EXT_RELEASE } -ls ${ LS_TAG_NUMBER } || :"
513+ sh " docker manifest push --purge ${ IMAGE} :${ META_TAG } || :"
504514 sh " docker manifest create ${ IMAGE} :${ META_TAG} ${ IMAGE} :amd64-${ META_TAG} ${ IMAGE} :arm32v6-${ META_TAG} ${ IMAGE} :arm64v8-${ META_TAG} "
505515 sh " docker manifest annotate ${ IMAGE} :${ META_TAG} ${ IMAGE} :arm32v6-${ META_TAG} --os linux --arch arm"
506516 sh " docker manifest annotate ${ IMAGE} :${ META_TAG} ${ IMAGE} :arm64v8-${ META_TAG} --os linux --arch arm64 --variant v8"
@@ -514,25 +524,25 @@ pipeline {
514524 when {
515525 branch " master"
516526 expression {
517- env. LS_RELEASE != env. EXT_RELEASE + ' -pkg-' + env. PACKAGE_TAG + ' -ls' + env. LS_TAG_NUMBER
527+ env. LS_RELEASE != env. EXT_RELEASE_CLEAN + ' -pkg-' + env. PACKAGE_TAG + ' -ls' + env. LS_TAG_NUMBER
518528 }
519529 environment name : ' CHANGE_ID' , value : ' '
520530 environment name : ' EXIT_STATUS' , value : ' '
521531 }
522532 steps {
523- echo " Pushing New tag for current commit ${ EXT_RELEASE } -pkg-${ PACKAGE_TAG} -ls${ LS_TAG_NUMBER} "
533+ echo " Pushing New tag for current commit ${ EXT_RELEASE_CLEAN } -pkg-${ PACKAGE_TAG} -ls${ LS_TAG_NUMBER} "
524534 sh ''' curl -H "Authorization: token ${GITHUB_TOKEN}" -X POST https://api.github.com/repos/${LS_USER}/${LS_REPO}/git/tags \
525- -d '{"tag":"'${EXT_RELEASE }'-pkg-'${PACKAGE_TAG}'-ls'${LS_TAG_NUMBER}'",\
535+ -d '{"tag":"'${EXT_RELEASE_CLEAN }'-pkg-'${PACKAGE_TAG}'-ls'${LS_TAG_NUMBER}'",\
526536 "object": "'${COMMIT_SHA}'",\
527- "message": "Tagging Release '${EXT_RELEASE }'-pkg-'${PACKAGE_TAG}'-ls'${LS_TAG_NUMBER}' to master",\
537+ "message": "Tagging Release '${EXT_RELEASE_CLEAN }'-pkg-'${PACKAGE_TAG}'-ls'${LS_TAG_NUMBER}' to master",\
528538 "type": "commit",\
529539 "tagger": {"name": "LinuxServer Jenkins","email": "[email protected] ","date": "'${GITHUB_DATE}'"}}' ''' 530540 echo " Pushing New release for Tag"
531541 sh ''' #! /bin/bash
532542 curl -s https://api.github.com/repos/${EXT_USER}/${EXT_REPO}/commits/${EXT_GIT_BRANCH} | jq '. | .commit.message' | sed 's:^.\\ (.*\\ ).$:\\ 1:' > releasebody.json
533- echo '{"tag_name":"'${EXT_RELEASE }'-pkg-'${PACKAGE_TAG}'-ls'${LS_TAG_NUMBER}'",\
543+ echo '{"tag_name":"'${EXT_RELEASE_CLEAN }'-pkg-'${PACKAGE_TAG}'-ls'${LS_TAG_NUMBER}'",\
534544 "target_commitish": "master",\
535- "name": "'${EXT_RELEASE }'-pkg-'${PACKAGE_TAG}'-ls'${LS_TAG_NUMBER}'",\
545+ "name": "'${EXT_RELEASE_CLEAN }'-pkg-'${PACKAGE_TAG}'-ls'${LS_TAG_NUMBER}'",\
536546 "body": "**LinuxServer Changes:**\\ n\\ n'${LS_RELEASE_NOTES}'\\ n**'${EXT_REPO}' Changes:**\\ n\\ n' > start
537547 printf '","draft": false,"prerelease": false}' >> releasebody.json
538548 paste -d'\\ 0' start releasebody.json > releasebody.json.done
0 commit comments