@@ -14,6 +14,8 @@ pipeline {
1414 environment {
1515 BUILDS_DISCORD = credentials(' build_webhook_url' )
1616 GITHUB_TOKEN = credentials(' 498b4638-2d02-4ce5-832d-8a57d01d97ab' )
17+ GITLAB_TOKEN = credentials(' b6f0f1dd-6952-4cf6-95d1-9c06380283f0' )
18+ GITLAB_NAMESPACE = credentials(' gitlab-namespace-id' )
1719 BUILD_VERSION_ARG = ' OS'
1820 LS_USER = ' linuxserver'
1921 LS_REPO = ' docker-baseimage-alpine'
@@ -124,6 +126,9 @@ pipeline {
124126 steps {
125127 script{
126128 env. IMAGE = env. DOCKERHUB_IMAGE
129+ env. QUAYIMAGE = ' quay.io/linuxserver.io/' + env. CONTAINER_NAME
130+ env. GITHUBIMAGE = ' docker.pkg.github.com/' + env. LS_USER + ' /' + env. LS_REPO + ' /' + env. CONTAINER_NAME
131+ env. GITLABIMAGE = ' registry.gitlab.com/linuxserver.io/' + env. LS_REPO + ' /' + env. CONTAINER_NAME
127132 if (env. MULTIARCH == ' true' ) {
128133 env. CI_TAGS = ' amd64-' + env. EXT_RELEASE_CLEAN + ' -ls' + env. LS_TAG_NUMBER + ' |arm32v7-' + env. EXT_RELEASE_CLEAN + ' -ls' + env. LS_TAG_NUMBER + ' |arm64v8-' + env. EXT_RELEASE_CLEAN + ' -ls' + env. LS_TAG_NUMBER
129134 } else {
@@ -142,6 +147,9 @@ pipeline {
142147 steps {
143148 script{
144149 env. IMAGE = env. DEV_DOCKERHUB_IMAGE
150+ env. QUAYIMAGE = ' quay.io/linuxserver.io/lsiodev-' + env. CONTAINER_NAME
151+ env. GITHUBIMAGE = ' docker.pkg.github.com/' + env. LS_USER + ' /' + env. LS_REPO + ' /lsiodev-' + env. CONTAINER_NAME
152+ env. GITLABIMAGE = ' registry.gitlab.com/linuxserver.io/' + env. LS_REPO + ' /lsiodev-' + env. CONTAINER_NAME
145153 if (env. MULTIARCH == ' true' ) {
146154 env. CI_TAGS = ' amd64-' + env. EXT_RELEASE_CLEAN + ' -pkg-' + env. PACKAGE_TAG + ' -dev-' + env. COMMIT_SHA + ' |arm32v7-' + 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
147155 } else {
@@ -160,6 +168,9 @@ pipeline {
160168 steps {
161169 script{
162170 env. IMAGE = env. PR_DOCKERHUB_IMAGE
171+ env. QUAYIMAGE = ' quay.io/linuxserver.io/lspipepr-' + env. CONTAINER_NAME
172+ env. GITHUBIMAGE = ' docker.pkg.github.com/' + env. LS_USER + ' /' + env. LS_REPO + ' /lspipepr-' + env. CONTAINER_NAME
173+ env. GITLABIMAGE = ' registry.gitlab.com/linuxserver.io/' + env. LS_REPO + ' /lspipepr-' + env. CONTAINER_NAME
163174 if (env. MULTIARCH == ' true' ) {
164175 env. CI_TAGS = ' amd64-' + env. EXT_RELEASE_CLEAN + ' -pkg-' + env. PACKAGE_TAG + ' -pr-' + env. PULL_REQUEST + ' |arm32v7-' + 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
165176 } else {
@@ -267,6 +278,26 @@ pipeline {
267278 }
268279 }
269280 }
281+ /* #######################
282+ GitLab Mirroring
283+ ####################### */
284+ // Ping into Gitlab to mirror this repo and have a registry endpoint
285+ stage(" GitLab Mirror" ){
286+ when {
287+ environment name : ' EXIT_STATUS' , value : ' '
288+ }
289+ steps{
290+ sh ''' curl -H "Content-Type: application/json" -H "Private-Token: ${GITLAB_TOKEN}" -X POST https://gitlab.com/api/v4/projects \
291+ -d '{"namespace_id":'${GITLAB_NAMESPACE}',\
292+ "name":"'${LS_REPO}'",
293+ "mirror":true,\
294+ "import_url":"https://github.com/linuxserver/'${LS_REPO}'.git",\
295+ "issues_access_level":"disabled",\
296+ "merge_requests_access_level":"disabled",\
297+ "repository_access_level":"enabled",\
298+ "visibility":"public"}' '''
299+ }
300+ }
270301 /* ###############
271302 Build Container
272303 ############### */
@@ -498,19 +529,32 @@ pipeline {
498529 credentialsId : ' 3f9ba4d5-100d-45b0-a3c4-633fd6061207' ,
499530 usernameVariable : ' DOCKERUSER' ,
500531 passwordVariable : ' DOCKERPASS'
532+ ],
533+ [
534+ $class : ' UsernamePasswordMultiBinding' ,
535+ credentialsId : ' Quay.io-Robot' ,
536+ usernameVariable : ' QUAYUSER' ,
537+ passwordVariable : ' QUAYPASS'
501538 ]
502539 ]) {
503- echo ' Logging into DockerHub'
504540 sh ''' #! /bin/bash
505- echo $DOCKERPASS | docker login -u $DOCKERUSER --password-stdin
541+ set -e
542+ echo $QUAYPASS | docker login quay.io -u $QUAYUSER --password-stdin
543+ echo $DOCKERPASS | docker login -u $DOCKERUSER --password-stdin
544+ echo $GITHUB_TOKEN | docker login docker.pkg.github.com -u LinuxServer-CI --password-stdin
545+ echo $GITLAB_TOKEN | docker login registry.gitlab.com -u LinuxServer.io --password-stdin
546+ for PUSHIMAGE in "${QUAYIMAGE}" "${GITHUBIMAGE}" "${GITLABIMAGE}" "${IMAGE}"; do
547+ docker tag ${IMAGE}:${META_TAG} ${PUSHIMAGE}:${META_TAG}
548+ docker tag ${PUSHIMAGE}:${META_TAG} ${PUSHIMAGE}:3.10
549+ docker push ${PUSHIMAGE}:3.10
550+ docker push ${PUSHIMAGE}:${META_TAG}
551+ done
552+ for DELETEIMAGE in "${QUAYIMAGE}" "${GITHUBIMAGE}" "{GITLABIMAGE}" "${IMAGE}"; do
553+ docker rmi \
554+ ${DELETEIMAGE}:${META_TAG} \
555+ ${DELETEIMAGE}:3.10 || :
556+ done
506557 '''
507- sh " docker tag ${ IMAGE} :${ META_TAG} ${ IMAGE} :3.10"
508- sh " docker push ${ IMAGE} :3.10"
509- sh " docker push ${ IMAGE} :${ META_TAG} "
510- sh ''' docker rmi \
511- ${IMAGE}:${META_TAG} \
512- ${IMAGE}:3.10 || :'''
513-
514558 }
515559 }
516560 }
@@ -527,37 +571,67 @@ pipeline {
527571 credentialsId : ' 3f9ba4d5-100d-45b0-a3c4-633fd6061207' ,
528572 usernameVariable : ' DOCKERUSER' ,
529573 passwordVariable : ' DOCKERPASS'
574+ ],
575+ [
576+ $class : ' UsernamePasswordMultiBinding' ,
577+ credentialsId : ' Quay.io-Robot' ,
578+ usernameVariable : ' QUAYUSER' ,
579+ passwordVariable : ' QUAYPASS'
530580 ]
531581 ]) {
532582 sh ''' #! /bin/bash
533- echo $DOCKERPASS | docker login -u $DOCKERUSER --password-stdin
534- '''
535- sh ''' #! /bin/bash
583+ set -e
584+ echo $QUAYPASS | docker login quay.io -u $QUAYUSER --password-stdin
585+ echo $DOCKERPASS | docker login -u $DOCKERUSER --password-stdin
586+ echo $GITHUB_TOKEN | docker login docker.pkg.github.com -u LinuxServer-CI --password-stdin
587+ echo $GITLAB_TOKEN | docker login registry.gitlab.com -u LinuxServer.io --password-stdin
536588 if [ "${CI}" == "false" ]; then
537589 docker pull lsiodev/buildcache:arm32v7-${COMMIT_SHA}-${BUILD_NUMBER}
538590 docker pull lsiodev/buildcache:arm64v8-${COMMIT_SHA}-${BUILD_NUMBER}
539591 docker tag lsiodev/buildcache:arm32v7-${COMMIT_SHA}-${BUILD_NUMBER} ${IMAGE}:arm32v7-${META_TAG}
540592 docker tag lsiodev/buildcache:arm64v8-${COMMIT_SHA}-${BUILD_NUMBER} ${IMAGE}:arm64v8-${META_TAG}
541- fi'''
542- sh " docker tag ${ IMAGE} :amd64-${ META_TAG} ${ IMAGE} :amd64-3.10"
543- sh " docker tag ${ IMAGE} :arm32v7-${ META_TAG} ${ IMAGE} :arm32v7-3.10"
544- sh " docker tag ${ IMAGE} :arm64v8-${ META_TAG} ${ IMAGE} :arm64v8-3.10"
545- sh " docker push ${ IMAGE} :amd64-${ META_TAG} "
546- sh " docker push ${ IMAGE} :arm32v7-${ META_TAG} "
547- sh " docker push ${ IMAGE} :arm64v8-${ META_TAG} "
548- sh " docker push ${ IMAGE} :amd64-3.10"
549- sh " docker push ${ IMAGE} :arm32v7-3.10"
550- sh " docker push ${ IMAGE} :arm64v8-3.10"
551- sh " docker manifest push --purge ${ IMAGE} :3.10 || :"
552- sh " docker manifest create ${ IMAGE} :3.10 ${ IMAGE} :amd64-3.10 ${ IMAGE} :arm32v7-3.10 ${ IMAGE} :arm64v8-3.10"
553- sh " docker manifest annotate ${ IMAGE} :3.10 ${ IMAGE} :arm32v7-3.10 --os linux --arch arm"
554- sh " docker manifest annotate ${ IMAGE} :3.10 ${ IMAGE} :arm64v8-3.10 --os linux --arch arm64 --variant v8"
555- sh " docker manifest push --purge ${ IMAGE} :${ META_TAG} || :"
556- sh " docker manifest create ${ IMAGE} :${ META_TAG} ${ IMAGE} :amd64-${ META_TAG} ${ IMAGE} :arm32v7-${ META_TAG} ${ IMAGE} :arm64v8-${ META_TAG} "
557- sh " docker manifest annotate ${ IMAGE} :${ META_TAG} ${ IMAGE} :arm32v7-${ META_TAG} --os linux --arch arm"
558- sh " docker manifest annotate ${ IMAGE} :${ META_TAG} ${ IMAGE} :arm64v8-${ META_TAG} --os linux --arch arm64 --variant v8"
559- sh " docker manifest push --purge ${ IMAGE} :3.10"
560- sh " docker manifest push --purge ${ IMAGE} :${ META_TAG} "
593+ fi
594+ for MANIFESTIMAGE in "${IMAGE}" "${GITLABIMAGE}"; do
595+ docker tag ${IMAGE}:amd64-${META_TAG} ${MANIFESTIMAGE}:amd64-${META_TAG}
596+ docker tag ${IMAGE}:arm32v7-${META_TAG} ${MANIFESTIMAGE}:arm32v7-${META_TAG}
597+ docker tag ${IMAGE}:arm64v8-${META_TAG} ${MANIFESTIMAGE}:arm64v8-${META_TAG}
598+ docker tag ${MANIFESTIMAGE}:amd64-${META_TAG} ${MANIFESTIMAGE}:amd64-3.10
599+ docker tag ${MANIFESTIMAGE}:arm32v7-${META_TAG} ${MANIFESTIMAGE}:arm32v7-3.10
600+ docker tag ${MANIFESTIMAGE}:arm64v8-${META_TAG} ${MANIFESTIMAGE}:arm64v8-3.10
601+ docker push ${MANIFESTIMAGE}:amd64-${META_TAG}
602+ docker push ${MANIFESTIMAGE}:arm32v7-${META_TAG}
603+ docker push ${MANIFESTIMAGE}:arm64v8-${META_TAG}
604+ docker push ${MANIFESTIMAGE}:amd64-3.10
605+ docker push ${MANIFESTIMAGE}:arm32v7-3.10
606+ docker push ${MANIFESTIMAGE}:arm64v8-3.10
607+ docker manifest push --purge ${MANIFESTIMAGE}:3.10 || :
608+ docker manifest create ${MANIFESTIMAGE}:3.10 ${MANIFESTIMAGE}:amd64-3.10 ${MANIFESTIMAGE}:arm32v7-3.10 ${MANIFESTIMAGE}:arm64v8-3.10
609+ docker manifest annotate ${MANIFESTIMAGE}:3.10 ${MANIFESTIMAGE}:arm32v7-3.10 --os linux --arch arm
610+ docker manifest annotate ${MANIFESTIMAGE}:3.10 ${MANIFESTIMAGE}:arm64v8-3.10 --os linux --arch arm64 --variant v8
611+ docker manifest push --purge ${MANIFESTIMAGE}:${META_TAG} || :
612+ docker manifest create ${MANIFESTIMAGE}:${META_TAG} ${MANIFESTIMAGE}:amd64-${META_TAG} ${MANIFESTIMAGE}:arm32v7-${META_TAG} ${MANIFESTIMAGE}:arm64v8-${META_TAG}
613+ docker manifest annotate ${MANIFESTIMAGE}:${META_TAG} ${MANIFESTIMAGE}:arm32v7-${META_TAG} --os linux --arch arm
614+ docker manifest annotate ${MANIFESTIMAGE}:${META_TAG} ${MANIFESTIMAGE}:arm64v8-${META_TAG} --os linux --arch arm64 --variant v8
615+ docker manifest push --purge ${MANIFESTIMAGE}:3.10
616+ docker manifest push --purge ${MANIFESTIMAGE}:${META_TAG}
617+ done
618+ for LEGACYIMAGE in "${QUAYIMAGE}" "${GITHUBIMAGE}"; do
619+ docker tag ${IMAGE}:amd64-${META_TAG} ${LEGACYIMAGE}:amd64-${META_TAG}
620+ docker tag ${IMAGE}:arm32v7-${META_TAG} ${LEGACYIMAGE}:arm32v7-${META_TAG}
621+ docker tag ${IMAGE}:arm64v8-${META_TAG} ${LEGACYIMAGE}:arm64v8-${META_TAG}
622+ docker tag ${LEGACYIMAGE}:amd64-${META_TAG} ${LEGACYIMAGE}:3.10
623+ docker tag ${LEGACYIMAGE}:amd64-${META_TAG} ${LEGACYIMAGE}:${META_TAG}
624+ docker tag ${LEGACYIMAGE}:arm32v7-${META_TAG} ${LEGACYIMAGE}:arm32v7-3.10
625+ docker tag ${LEGACYIMAGE}:arm64v8-${META_TAG} ${LEGACYIMAGE}:arm64v8-3.10
626+ docker push ${LEGACYIMAGE}:amd64-${META_TAG}
627+ docker push ${LEGACYIMAGE}:arm32v7-${META_TAG}
628+ docker push ${LEGACYIMAGE}:arm64v8-${META_TAG}
629+ docker push ${LEGACYIMAGE}:3.10
630+ docker push ${LEGACYIMAGE}:${META_TAG}
631+ docker push ${LEGACYIMAGE}:arm32v7-3.10
632+ docker push ${LEGACYIMAGE}:arm64v8-3.10
633+ done
634+ '''
561635 }
562636 }
563637 }
@@ -652,5 +726,8 @@ pipeline {
652726 }
653727 }
654728 }
729+ cleanup {
730+ cleanWs()
731+ }
655732 }
656733}
0 commit comments