mirror of
				https://github.com/linuxserver/docker-heimdall.git
				synced 2025-10-31 21:17:39 +09:00 
			
		
		
		
	Bot Updating Templated Files
This commit is contained in:
		
							
								
								
									
										268
									
								
								Jenkinsfile
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										268
									
								
								Jenkinsfile
									
									
									
									
										vendored
									
									
								
							| @@ -8,7 +8,7 @@ pipeline { | |||||||
|   } |   } | ||||||
|   // Input to determine if this is a package check |   // Input to determine if this is a package check | ||||||
|   parameters { |   parameters { | ||||||
|      string(defaultValue: 'false', description: 'package check run', name: 'PACKAGE_CHECK') |     string(defaultValue: 'false', description: 'package check run', name: 'PACKAGE_CHECK') | ||||||
|   } |   } | ||||||
|   // Configuration for the variables used for this specific repo |   // Configuration for the variables used for this specific repo | ||||||
|   environment { |   environment { | ||||||
| @@ -201,6 +201,7 @@ pipeline { | |||||||
|           env.VERSION_TAG = env.EXT_RELEASE_CLEAN + '-ls' + env.LS_TAG_NUMBER |           env.VERSION_TAG = env.EXT_RELEASE_CLEAN + '-ls' + env.LS_TAG_NUMBER | ||||||
|           env.META_TAG = 'development-' + env.EXT_RELEASE_CLEAN + '-ls' + env.LS_TAG_NUMBER |           env.META_TAG = 'development-' + env.EXT_RELEASE_CLEAN + '-ls' + env.LS_TAG_NUMBER | ||||||
|           env.EXT_RELEASE_TAG = 'development-version-' + env.EXT_RELEASE_CLEAN |           env.EXT_RELEASE_TAG = 'development-version-' + env.EXT_RELEASE_CLEAN | ||||||
|  |           env.BUILDCACHE = 'docker.io/lsiodev/buildcache,registry.gitlab.com/linuxserver.io/docker-jenkins-builder/lsiodev-buildcache,ghcr.io/linuxserver/lsiodev-buildcache,quay.io/linuxserver.io/lsiodev-buildcache' | ||||||
|         } |         } | ||||||
|       } |       } | ||||||
|     } |     } | ||||||
| @@ -225,6 +226,7 @@ pipeline { | |||||||
|           env.META_TAG = 'development-' + env.EXT_RELEASE_CLEAN + '-pkg-' + env.PACKAGE_TAG + '-dev-' + env.COMMIT_SHA |           env.META_TAG = 'development-' + env.EXT_RELEASE_CLEAN + '-pkg-' + env.PACKAGE_TAG + '-dev-' + env.COMMIT_SHA | ||||||
|           env.EXT_RELEASE_TAG = 'development-version-' + env.EXT_RELEASE_CLEAN |           env.EXT_RELEASE_TAG = 'development-version-' + env.EXT_RELEASE_CLEAN | ||||||
|           env.DOCKERHUB_LINK = 'https://hub.docker.com/r/' + env.DEV_DOCKERHUB_IMAGE + '/tags/' |           env.DOCKERHUB_LINK = 'https://hub.docker.com/r/' + env.DEV_DOCKERHUB_IMAGE + '/tags/' | ||||||
|  |           env.BUILDCACHE = 'docker.io/lsiodev/buildcache,registry.gitlab.com/linuxserver.io/docker-jenkins-builder/lsiodev-buildcache,ghcr.io/linuxserver/lsiodev-buildcache,quay.io/linuxserver.io/lsiodev-buildcache' | ||||||
|         } |         } | ||||||
|       } |       } | ||||||
|     } |     } | ||||||
| @@ -249,6 +251,7 @@ pipeline { | |||||||
|           env.EXT_RELEASE_TAG = 'development-version-' + env.EXT_RELEASE_CLEAN |           env.EXT_RELEASE_TAG = 'development-version-' + env.EXT_RELEASE_CLEAN | ||||||
|           env.CODE_URL = 'https://github.com/' + env.LS_USER + '/' + env.LS_REPO + '/pull/' + env.PULL_REQUEST |           env.CODE_URL = 'https://github.com/' + env.LS_USER + '/' + env.LS_REPO + '/pull/' + env.PULL_REQUEST | ||||||
|           env.DOCKERHUB_LINK = 'https://hub.docker.com/r/' + env.PR_DOCKERHUB_IMAGE + '/tags/' |           env.DOCKERHUB_LINK = 'https://hub.docker.com/r/' + env.PR_DOCKERHUB_IMAGE + '/tags/' | ||||||
|  |           env.BUILDCACHE = 'docker.io/lsiodev/buildcache,registry.gitlab.com/linuxserver.io/docker-jenkins-builder/lsiodev-buildcache,ghcr.io/linuxserver/lsiodev-buildcache,quay.io/linuxserver.io/lsiodev-buildcache' | ||||||
|         } |         } | ||||||
|       } |       } | ||||||
|     } |     } | ||||||
| @@ -345,6 +348,35 @@ pipeline { | |||||||
|               else |               else | ||||||
|                 echo "No templates to delete" |                 echo "No templates to delete" | ||||||
|               fi |               fi | ||||||
|  |               echo "Starting Stage 2.5 - Update init diagram" | ||||||
|  |               if ! grep -q 'init_diagram:' readme-vars.yml; then | ||||||
|  |                 echo "Adding the key 'init_diagram' to readme-vars.yml" | ||||||
|  |                 sed -i '\\|^#.*changelog.*$|d' readme-vars.yml | ||||||
|  |                 sed -i 's|^changelogs:|# init diagram\\ninit_diagram:\\n\\n# changelog\\nchangelogs:|' readme-vars.yml | ||||||
|  |               fi | ||||||
|  |               mkdir -p ${TEMPDIR}/d2 | ||||||
|  |               docker run --rm -v ${TEMPDIR}/d2:/output -e PUID=$(id -u) -e PGID=$(id -g) -e RAW="true" ghcr.io/linuxserver/d2-builder:latest ${CONTAINER_NAME}:development | ||||||
|  |               ls -al ${TEMPDIR}/d2 | ||||||
|  |               yq -ei ".init_diagram |= load_str(\\"${TEMPDIR}/d2/${CONTAINER_NAME}-development.d2\\")" readme-vars.yml | ||||||
|  |               if [[ $(md5sum readme-vars.yml | cut -c1-8) != $(md5sum ${TEMPDIR}/docker-${CONTAINER_NAME}/readme-vars.yml | cut -c1-8) ]]; then | ||||||
|  |                 echo "'init_diagram' has been updated. Updating repo and exiting build, new one will trigger based on commit." | ||||||
|  |                 mkdir -p ${TEMPDIR}/repo | ||||||
|  |                 git clone https://github.com/${LS_USER}/${LS_REPO}.git ${TEMPDIR}/repo/${LS_REPO} | ||||||
|  |                 cd ${TEMPDIR}/repo/${LS_REPO} | ||||||
|  |                 git checkout -f development | ||||||
|  |                 cp ${WORKSPACE}/readme-vars.yml ${TEMPDIR}/repo/${LS_REPO}/readme-vars.yml | ||||||
|  |                 git add readme-vars.yml | ||||||
|  |                 git commit -m 'Bot Updating Templated Files' | ||||||
|  |                 git pull https://LinuxServer-CI:${GITHUB_TOKEN}@github.com/${LS_USER}/${LS_REPO}.git development | ||||||
|  |                 git push https://LinuxServer-CI:${GITHUB_TOKEN}@github.com/${LS_USER}/${LS_REPO}.git development | ||||||
|  |                 echo "true" > /tmp/${COMMIT_SHA}-${BUILD_NUMBER} | ||||||
|  |                 echo "Updating templates and exiting build, new one will trigger based on commit" | ||||||
|  |                 rm -Rf ${TEMPDIR} | ||||||
|  |                 exit 0 | ||||||
|  |               else | ||||||
|  |                 echo "false" > /tmp/${COMMIT_SHA}-${BUILD_NUMBER} | ||||||
|  |                 echo "Init diagram is unchanged" | ||||||
|  |               fi | ||||||
|               echo "Starting Stage 3 - Update templates" |               echo "Starting Stage 3 - Update templates" | ||||||
|               CURRENTHASH=$(grep -hs ^ ${TEMPLATED_FILES} | md5sum | cut -c1-8) |               CURRENTHASH=$(grep -hs ^ ${TEMPLATED_FILES} | md5sum | cut -c1-8) | ||||||
|               cd ${TEMPDIR}/docker-${CONTAINER_NAME} |               cd ${TEMPDIR}/docker-${CONTAINER_NAME} | ||||||
| @@ -553,8 +585,40 @@ pipeline { | |||||||
|           --label \"org.opencontainers.image.title=Heimdall\" \ |           --label \"org.opencontainers.image.title=Heimdall\" \ | ||||||
|           --label \"org.opencontainers.image.description=[Heimdall](https://heimdall.site) is a way to organise all those links to your most used web sites and web applications in a simple way.    Simplicity is the key to Heimdall.    Why not use it as your browser start page? It even has the ability to include a search bar using either Google, Bing or DuckDuckGo.  \" \ |           --label \"org.opencontainers.image.description=[Heimdall](https://heimdall.site) is a way to organise all those links to your most used web sites and web applications in a simple way.    Simplicity is the key to Heimdall.    Why not use it as your browser start page? It even has the ability to include a search bar using either Google, Bing or DuckDuckGo.  \" \ | ||||||
|           --no-cache --pull -t ${IMAGE}:${META_TAG} --platform=linux/amd64 \ |           --no-cache --pull -t ${IMAGE}:${META_TAG} --platform=linux/amd64 \ | ||||||
|           --provenance=false --sbom=false \ |           --provenance=false --sbom=false --builder=container --load \ | ||||||
|           --build-arg ${BUILD_VERSION_ARG}=${EXT_RELEASE} --build-arg VERSION=\"${VERSION_TAG}\" --build-arg BUILD_DATE=${GITHUB_DATE} ." |           --build-arg ${BUILD_VERSION_ARG}=${EXT_RELEASE} --build-arg VERSION=\"${VERSION_TAG}\" --build-arg BUILD_DATE=${GITHUB_DATE} ." | ||||||
|  |         sh '''#! /bin/bash | ||||||
|  |               set -e | ||||||
|  |               IFS=',' read -ra CACHE <<< "$BUILDCACHE" | ||||||
|  |               for i in "${CACHE[@]}"; do | ||||||
|  |                 docker tag ${IMAGE}:${META_TAG} ${i}:amd64-${COMMIT_SHA}-${BUILD_NUMBER} | ||||||
|  |               done | ||||||
|  |            ''' | ||||||
|  |         withCredentials([ | ||||||
|  |           [ | ||||||
|  |             $class: 'UsernamePasswordMultiBinding', | ||||||
|  |             credentialsId: 'Quay.io-Robot', | ||||||
|  |             usernameVariable: 'QUAYUSER', | ||||||
|  |             passwordVariable: 'QUAYPASS' | ||||||
|  |           ] | ||||||
|  |         ]) { | ||||||
|  |           retry_backoff(5,5) { | ||||||
|  |               sh '''#! /bin/bash | ||||||
|  |                     set -e | ||||||
|  |                     echo $DOCKERHUB_TOKEN | docker login -u linuxserverci --password-stdin | ||||||
|  |                     echo $GITHUB_TOKEN | docker login ghcr.io -u LinuxServer-CI --password-stdin | ||||||
|  |                     echo $GITLAB_TOKEN | docker login registry.gitlab.com -u LinuxServer.io --password-stdin | ||||||
|  |                     echo $QUAYPASS | docker login quay.io -u $QUAYUSER --password-stdin | ||||||
|  |                     if [[ "${PACKAGE_CHECK}" != "true" ]]; then | ||||||
|  |                       IFS=',' read -ra CACHE <<< "$BUILDCACHE" | ||||||
|  |                       for i in "${CACHE[@]}"; do | ||||||
|  |                         docker push ${i}:amd64-${COMMIT_SHA}-${BUILD_NUMBER} & | ||||||
|  |                       done | ||||||
|  |                       wait | ||||||
|  |                     fi | ||||||
|  |                 ''' | ||||||
|  |           } | ||||||
|  |         } | ||||||
|       } |       } | ||||||
|     } |     } | ||||||
|     // Build MultiArch Docker containers for push to LS Repo |     // Build MultiArch Docker containers for push to LS Repo | ||||||
| @@ -585,8 +649,40 @@ pipeline { | |||||||
|               --label \"org.opencontainers.image.title=Heimdall\" \ |               --label \"org.opencontainers.image.title=Heimdall\" \ | ||||||
|               --label \"org.opencontainers.image.description=[Heimdall](https://heimdall.site) is a way to organise all those links to your most used web sites and web applications in a simple way.    Simplicity is the key to Heimdall.    Why not use it as your browser start page? It even has the ability to include a search bar using either Google, Bing or DuckDuckGo.  \" \ |               --label \"org.opencontainers.image.description=[Heimdall](https://heimdall.site) is a way to organise all those links to your most used web sites and web applications in a simple way.    Simplicity is the key to Heimdall.    Why not use it as your browser start page? It even has the ability to include a search bar using either Google, Bing or DuckDuckGo.  \" \ | ||||||
|               --no-cache --pull -t ${IMAGE}:amd64-${META_TAG} --platform=linux/amd64 \ |               --no-cache --pull -t ${IMAGE}:amd64-${META_TAG} --platform=linux/amd64 \ | ||||||
|               --provenance=false --sbom=false \ |               --provenance=false --sbom=false --builder=container --load \ | ||||||
|               --build-arg ${BUILD_VERSION_ARG}=${EXT_RELEASE} --build-arg VERSION=\"${VERSION_TAG}\" --build-arg BUILD_DATE=${GITHUB_DATE} ." |               --build-arg ${BUILD_VERSION_ARG}=${EXT_RELEASE} --build-arg VERSION=\"${VERSION_TAG}\" --build-arg BUILD_DATE=${GITHUB_DATE} ." | ||||||
|  |             sh '''#! /bin/bash | ||||||
|  |                   set -e | ||||||
|  |                   IFS=',' read -ra CACHE <<< "$BUILDCACHE" | ||||||
|  |                   for i in "${CACHE[@]}"; do | ||||||
|  |                     docker tag ${IMAGE}:amd64-${META_TAG} ${i}:amd64-${COMMIT_SHA}-${BUILD_NUMBER} | ||||||
|  |                   done | ||||||
|  |                ''' | ||||||
|  |             withCredentials([ | ||||||
|  |               [ | ||||||
|  |                 $class: 'UsernamePasswordMultiBinding', | ||||||
|  |                 credentialsId: 'Quay.io-Robot', | ||||||
|  |                 usernameVariable: 'QUAYUSER', | ||||||
|  |                 passwordVariable: 'QUAYPASS' | ||||||
|  |               ] | ||||||
|  |             ]) { | ||||||
|  |               retry_backoff(5,5) { | ||||||
|  |                   sh '''#! /bin/bash | ||||||
|  |                         set -e | ||||||
|  |                         echo $DOCKERHUB_TOKEN | docker login -u linuxserverci --password-stdin | ||||||
|  |                         echo $GITHUB_TOKEN | docker login ghcr.io -u LinuxServer-CI --password-stdin | ||||||
|  |                         echo $GITLAB_TOKEN | docker login registry.gitlab.com -u LinuxServer.io --password-stdin | ||||||
|  |                         echo $QUAYPASS | docker login quay.io -u $QUAYUSER --password-stdin | ||||||
|  |                         if [[ "${PACKAGE_CHECK}" != "true" ]]; then | ||||||
|  |                           IFS=',' read -ra CACHE <<< "$BUILDCACHE" | ||||||
|  |                           for i in "${CACHE[@]}"; do | ||||||
|  |                             docker push ${i}:amd64-${COMMIT_SHA}-${BUILD_NUMBER} & | ||||||
|  |                           done | ||||||
|  |                           wait | ||||||
|  |                         fi | ||||||
|  |                     ''' | ||||||
|  |               } | ||||||
|  |             } | ||||||
|           } |           } | ||||||
|         } |         } | ||||||
|         stage('Build ARM64') { |         stage('Build ARM64') { | ||||||
| @@ -595,10 +691,6 @@ pipeline { | |||||||
|           } |           } | ||||||
|           steps { |           steps { | ||||||
|             echo "Running on node: ${NODE_NAME}" |             echo "Running on node: ${NODE_NAME}" | ||||||
|             echo 'Logging into Github' |  | ||||||
|             sh '''#! /bin/bash |  | ||||||
|                   echo $GITHUB_TOKEN | docker login ghcr.io -u LinuxServer-CI --password-stdin |  | ||||||
|                ''' |  | ||||||
|             sh "sed -r -i 's|(^FROM .*)|\\1\\n\\nENV LSIO_FIRST_PARTY=true|g' Dockerfile.aarch64" |             sh "sed -r -i 's|(^FROM .*)|\\1\\n\\nENV LSIO_FIRST_PARTY=true|g' Dockerfile.aarch64" | ||||||
|             sh "docker buildx build \ |             sh "docker buildx build \ | ||||||
|               --label \"org.opencontainers.image.created=${GITHUB_DATE}\" \ |               --label \"org.opencontainers.image.created=${GITHUB_DATE}\" \ | ||||||
| @@ -614,18 +706,47 @@ pipeline { | |||||||
|               --label \"org.opencontainers.image.title=Heimdall\" \ |               --label \"org.opencontainers.image.title=Heimdall\" \ | ||||||
|               --label \"org.opencontainers.image.description=[Heimdall](https://heimdall.site) is a way to organise all those links to your most used web sites and web applications in a simple way.    Simplicity is the key to Heimdall.    Why not use it as your browser start page? It even has the ability to include a search bar using either Google, Bing or DuckDuckGo.  \" \ |               --label \"org.opencontainers.image.description=[Heimdall](https://heimdall.site) is a way to organise all those links to your most used web sites and web applications in a simple way.    Simplicity is the key to Heimdall.    Why not use it as your browser start page? It even has the ability to include a search bar using either Google, Bing or DuckDuckGo.  \" \ | ||||||
|               --no-cache --pull -f Dockerfile.aarch64 -t ${IMAGE}:arm64v8-${META_TAG} --platform=linux/arm64 \ |               --no-cache --pull -f Dockerfile.aarch64 -t ${IMAGE}:arm64v8-${META_TAG} --platform=linux/arm64 \ | ||||||
|               --provenance=false --sbom=false \ |               --provenance=false --sbom=false --builder=container --load \ | ||||||
|               --build-arg ${BUILD_VERSION_ARG}=${EXT_RELEASE} --build-arg VERSION=\"${VERSION_TAG}\" --build-arg BUILD_DATE=${GITHUB_DATE} ." |               --build-arg ${BUILD_VERSION_ARG}=${EXT_RELEASE} --build-arg VERSION=\"${VERSION_TAG}\" --build-arg BUILD_DATE=${GITHUB_DATE} ." | ||||||
|             sh "docker tag ${IMAGE}:arm64v8-${META_TAG} ghcr.io/linuxserver/lsiodev-buildcache:arm64v8-${COMMIT_SHA}-${BUILD_NUMBER}" |             sh '''#! /bin/bash | ||||||
|             retry_backoff(5,5) { |                   set -e | ||||||
|               sh "docker push ghcr.io/linuxserver/lsiodev-buildcache:arm64v8-${COMMIT_SHA}-${BUILD_NUMBER}" |                   IFS=',' read -ra CACHE <<< "$BUILDCACHE" | ||||||
|  |                   for i in "${CACHE[@]}"; do | ||||||
|  |                     docker tag ${IMAGE}:arm64v8-${META_TAG} ${i}:arm64v8-${COMMIT_SHA}-${BUILD_NUMBER} | ||||||
|  |                   done | ||||||
|  |                ''' | ||||||
|  |             withCredentials([ | ||||||
|  |               [ | ||||||
|  |                 $class: 'UsernamePasswordMultiBinding', | ||||||
|  |                 credentialsId: 'Quay.io-Robot', | ||||||
|  |                 usernameVariable: 'QUAYUSER', | ||||||
|  |                 passwordVariable: 'QUAYPASS' | ||||||
|  |               ] | ||||||
|  |             ]) { | ||||||
|  |               retry_backoff(5,5) { | ||||||
|  |                   sh '''#! /bin/bash | ||||||
|  |                         set -e | ||||||
|  |                         echo $DOCKERHUB_TOKEN | docker login -u linuxserverci --password-stdin | ||||||
|  |                         echo $GITHUB_TOKEN | docker login ghcr.io -u LinuxServer-CI --password-stdin | ||||||
|  |                         echo $GITLAB_TOKEN | docker login registry.gitlab.com -u LinuxServer.io --password-stdin | ||||||
|  |                         echo $QUAYPASS | docker login quay.io -u $QUAYUSER --password-stdin | ||||||
|  |                         if [[ "${PACKAGE_CHECK}" != "true" ]]; then | ||||||
|  |                           IFS=',' read -ra CACHE <<< "$BUILDCACHE" | ||||||
|  |                           for i in "${CACHE[@]}"; do | ||||||
|  |                             docker push ${i}:arm64v8-${COMMIT_SHA}-${BUILD_NUMBER} & | ||||||
|  |                           done | ||||||
|  |                           wait | ||||||
|  |                         fi | ||||||
|  |                     ''' | ||||||
|  |               } | ||||||
|             } |             } | ||||||
|             sh '''#! /bin/bash |             sh '''#! /bin/bash | ||||||
|                   containers=$(docker ps -aq) |                   containers=$(docker ps -aq) | ||||||
|                   if [[ -n "${containers}" ]]; then |                   if [[ -n "${containers}" ]]; then | ||||||
|                     docker stop ${containers} |                     docker stop ${containers} | ||||||
|                   fi |                   fi | ||||||
|                   docker system prune -af --volumes || : ''' |                   docker system prune -af --volumes || : | ||||||
|  |                ''' | ||||||
|           } |           } | ||||||
|         } |         } | ||||||
|       } |       } | ||||||
| @@ -775,37 +896,23 @@ pipeline { | |||||||
|         environment name: 'EXIT_STATUS', value: '' |         environment name: 'EXIT_STATUS', value: '' | ||||||
|       } |       } | ||||||
|       steps { |       steps { | ||||||
|         withCredentials([ |         retry_backoff(5,5) { | ||||||
|           [ |           sh '''#! /bin/bash | ||||||
|             $class: 'UsernamePasswordMultiBinding', |                 set -e | ||||||
|             credentialsId: 'Quay.io-Robot', |                 for PUSHIMAGE in "${IMAGE}" "${GITLABIMAGE}" "${GITHUBIMAGE}" "${QUAYIMAGE}"; do | ||||||
|             usernameVariable: 'QUAYUSER', |                   [[ ${PUSHIMAGE%%/*} =~ \\. ]] && PUSHIMAGEPLUS="${PUSHIMAGE}" || PUSHIMAGEPLUS="docker.io/${PUSHIMAGE}" | ||||||
|             passwordVariable: 'QUAYPASS' |                   IFS=',' read -ra CACHE <<< "$BUILDCACHE" | ||||||
|           ] |                   for i in "${CACHE[@]}"; do | ||||||
|         ]) { |                       if [[ "${PUSHIMAGEPLUS}" == "$(cut -d "/" -f1 <<< ${i})"* ]]; then | ||||||
|           retry_backoff(5,5) { |                           CACHEIMAGE=${i} | ||||||
|             sh '''#! /bin/bash |                       fi | ||||||
|                   set -e |  | ||||||
|                   echo $DOCKERHUB_TOKEN | docker login -u linuxserverci --password-stdin |  | ||||||
|                   echo $GITHUB_TOKEN | docker login ghcr.io -u LinuxServer-CI --password-stdin |  | ||||||
|                   echo $GITLAB_TOKEN | docker login registry.gitlab.com -u LinuxServer.io --password-stdin |  | ||||||
|                   echo $QUAYPASS | docker login quay.io -u $QUAYUSER --password-stdin |  | ||||||
|                   for PUSHIMAGE in "${GITHUBIMAGE}" "${GITLABIMAGE}" "${QUAYIMAGE}" "${IMAGE}"; do |  | ||||||
|                     docker tag ${IMAGE}:${META_TAG} ${PUSHIMAGE}:${META_TAG} |  | ||||||
|                     docker tag ${PUSHIMAGE}:${META_TAG} ${PUSHIMAGE}:development |  | ||||||
|                     docker tag ${PUSHIMAGE}:${META_TAG} ${PUSHIMAGE}:${EXT_RELEASE_TAG} |  | ||||||
|                     if [ -n "${SEMVER}" ]; then |  | ||||||
|                       docker tag ${PUSHIMAGE}:${META_TAG} ${PUSHIMAGE}:${SEMVER} |  | ||||||
|                     fi |  | ||||||
|                     docker push ${PUSHIMAGE}:development |  | ||||||
|                     docker push ${PUSHIMAGE}:${META_TAG} |  | ||||||
|                     docker push ${PUSHIMAGE}:${EXT_RELEASE_TAG} |  | ||||||
|                     if [ -n "${SEMVER}" ]; then |  | ||||||
|                       docker push ${PUSHIMAGE}:${SEMVER} |  | ||||||
|                     fi |  | ||||||
|                   done |                   done | ||||||
|                ''' |                   docker buildx imagetools create --prefer-index=false -t ${PUSHIMAGE}:${META_TAG} -t ${PUSHIMAGE}:development -t ${PUSHIMAGE}:${EXT_RELEASE_TAG} ${CACHEIMAGE}:amd64-${COMMIT_SHA}-${BUILD_NUMBER} | ||||||
|           } |                   if [ -n "${SEMVER}" ]; then | ||||||
|  |                     docker buildx imagetools create --prefer-index=false -t ${PUSHIMAGE}:${SEMVER} ${CACHEIMAGE}:amd64-${COMMIT_SHA}-${BUILD_NUMBER} | ||||||
|  |                   fi | ||||||
|  |                 done | ||||||
|  |               ''' | ||||||
|         } |         } | ||||||
|       } |       } | ||||||
|     } |     } | ||||||
| @@ -816,57 +923,34 @@ pipeline { | |||||||
|         environment name: 'EXIT_STATUS', value: '' |         environment name: 'EXIT_STATUS', value: '' | ||||||
|       } |       } | ||||||
|       steps { |       steps { | ||||||
|         withCredentials([ |         retry_backoff(5,5) { | ||||||
|           [ |           sh '''#! /bin/bash | ||||||
|             $class: 'UsernamePasswordMultiBinding', |                 set -e | ||||||
|             credentialsId: 'Quay.io-Robot', |                 for MANIFESTIMAGE in "${IMAGE}" "${GITLABIMAGE}" "${GITHUBIMAGE}" "${QUAYIMAGE}"; do | ||||||
|             usernameVariable: 'QUAYUSER', |                   [[ ${MANIFESTIMAGE%%/*} =~ \\. ]] && MANIFESTIMAGEPLUS="${MANIFESTIMAGE}" || MANIFESTIMAGEPLUS="docker.io/${MANIFESTIMAGE}" | ||||||
|             passwordVariable: 'QUAYPASS' |                   IFS=',' read -ra CACHE <<< "$BUILDCACHE" | ||||||
|           ] |                   for i in "${CACHE[@]}"; do | ||||||
|         ]) { |                       if [[ "${MANIFESTIMAGEPLUS}" == "$(cut -d "/" -f1 <<< ${i})"* ]]; then | ||||||
|           retry_backoff(5,5) { |                           CACHEIMAGE=${i} | ||||||
|             sh '''#! /bin/bash |                       fi | ||||||
|                   set -e |                   done | ||||||
|                   echo $DOCKERHUB_TOKEN | docker login -u linuxserverci --password-stdin |                   docker buildx imagetools create --prefer-index=false -t ${MANIFESTIMAGE}:amd64-${META_TAG} -t ${MANIFESTIMAGE}:amd64-development -t ${MANIFESTIMAGE}:amd64-${EXT_RELEASE_TAG} ${CACHEIMAGE}:amd64-${COMMIT_SHA}-${BUILD_NUMBER} | ||||||
|                   echo $GITHUB_TOKEN | docker login ghcr.io -u LinuxServer-CI --password-stdin |                   docker buildx imagetools create --prefer-index=false -t ${MANIFESTIMAGE}:arm64v8-${META_TAG} -t ${MANIFESTIMAGE}:arm64v8-development -t ${MANIFESTIMAGE}:arm64v8-${EXT_RELEASE_TAG} ${CACHEIMAGE}:arm64v8-${COMMIT_SHA}-${BUILD_NUMBER} | ||||||
|                   echo $GITLAB_TOKEN | docker login registry.gitlab.com -u LinuxServer.io --password-stdin |                   if [ -n "${SEMVER}" ]; then | ||||||
|                   echo $QUAYPASS | docker login quay.io -u $QUAYUSER --password-stdin |                     docker buildx imagetools create --prefer-index=false -t ${MANIFESTIMAGE}:amd64-${SEMVER} ${CACHEIMAGE}:amd64-${COMMIT_SHA}-${BUILD_NUMBER} | ||||||
|                   if [ "${CI}" == "false" ]; then |                     docker buildx imagetools create --prefer-index=false -t ${MANIFESTIMAGE}:arm64v8-${SEMVER} ${CACHEIMAGE}:arm64v8-${COMMIT_SHA}-${BUILD_NUMBER} | ||||||
|                     docker pull ghcr.io/linuxserver/lsiodev-buildcache:arm64v8-${COMMIT_SHA}-${BUILD_NUMBER} --platform=arm64 |  | ||||||
|                     docker tag ghcr.io/linuxserver/lsiodev-buildcache:arm64v8-${COMMIT_SHA}-${BUILD_NUMBER} ${IMAGE}:arm64v8-${META_TAG} |  | ||||||
|                   fi |                   fi | ||||||
|                   for MANIFESTIMAGE in "${IMAGE}" "${GITLABIMAGE}" "${GITHUBIMAGE}" "${QUAYIMAGE}"; do |                 done | ||||||
|                     docker tag ${IMAGE}:amd64-${META_TAG} ${MANIFESTIMAGE}:amd64-${META_TAG} |                 for MANIFESTIMAGE in "${IMAGE}" "${GITLABIMAGE}" "${GITHUBIMAGE}" "${QUAYIMAGE}"; do | ||||||
|                     docker tag ${MANIFESTIMAGE}:amd64-${META_TAG} ${MANIFESTIMAGE}:amd64-development |                   docker buildx imagetools create -t ${MANIFESTIMAGE}:development ${MANIFESTIMAGE}:amd64-development ${MANIFESTIMAGE}:arm64v8-development | ||||||
|                     docker tag ${MANIFESTIMAGE}:amd64-${META_TAG} ${MANIFESTIMAGE}:amd64-${EXT_RELEASE_TAG} |                   docker buildx imagetools create -t ${MANIFESTIMAGE}:${META_TAG} ${MANIFESTIMAGE}:amd64-${META_TAG} ${MANIFESTIMAGE}:arm64v8-${META_TAG} | ||||||
|                     docker tag ${IMAGE}:arm64v8-${META_TAG} ${MANIFESTIMAGE}:arm64v8-${META_TAG} |  | ||||||
|                     docker tag ${MANIFESTIMAGE}:arm64v8-${META_TAG} ${MANIFESTIMAGE}:arm64v8-development |                   docker buildx imagetools create -t ${MANIFESTIMAGE}:${EXT_RELEASE_TAG} ${MANIFESTIMAGE}:amd64-${EXT_RELEASE_TAG} ${MANIFESTIMAGE}:arm64v8-${EXT_RELEASE_TAG} | ||||||
|                     docker tag ${MANIFESTIMAGE}:arm64v8-${META_TAG} ${MANIFESTIMAGE}:arm64v8-${EXT_RELEASE_TAG} |                   if [ -n "${SEMVER}" ]; then | ||||||
|                     if [ -n "${SEMVER}" ]; then |                     docker buildx imagetools create -t ${MANIFESTIMAGE}:${SEMVER} ${MANIFESTIMAGE}:amd64-${SEMVER} ${MANIFESTIMAGE}:arm64v8-${SEMVER} | ||||||
|                       docker tag ${MANIFESTIMAGE}:amd64-${META_TAG} ${MANIFESTIMAGE}:amd64-${SEMVER} |                   fi | ||||||
|                       docker tag ${MANIFESTIMAGE}:arm64v8-${META_TAG} ${MANIFESTIMAGE}:arm64v8-${SEMVER} |                 done | ||||||
|                     fi |               ''' | ||||||
|                     docker push ${MANIFESTIMAGE}:amd64-${META_TAG} |  | ||||||
|                     docker push ${MANIFESTIMAGE}:amd64-${EXT_RELEASE_TAG} |  | ||||||
|                     docker push ${MANIFESTIMAGE}:amd64-development |  | ||||||
|                     docker push ${MANIFESTIMAGE}:arm64v8-${META_TAG} |  | ||||||
|                     docker push ${MANIFESTIMAGE}:arm64v8-development |  | ||||||
|                     docker push ${MANIFESTIMAGE}:arm64v8-${EXT_RELEASE_TAG} |  | ||||||
|                     if [ -n "${SEMVER}" ]; then |  | ||||||
|                       docker push ${MANIFESTIMAGE}:amd64-${SEMVER} |  | ||||||
|                       docker push ${MANIFESTIMAGE}:arm64v8-${SEMVER} |  | ||||||
|                     fi |  | ||||||
|                   done |  | ||||||
|                   for MANIFESTIMAGE in "${IMAGE}" "${GITLABIMAGE}" "${GITHUBIMAGE}" "${QUAYIMAGE}"; do |  | ||||||
|                     docker buildx imagetools create -t ${MANIFESTIMAGE}:development ${MANIFESTIMAGE}:amd64-development ${MANIFESTIMAGE}:arm64v8-development |  | ||||||
|                     docker buildx imagetools create -t ${MANIFESTIMAGE}:${META_TAG} ${MANIFESTIMAGE}:amd64-${META_TAG} ${MANIFESTIMAGE}:arm64v8-${META_TAG} |  | ||||||
|                     docker buildx imagetools create -t ${MANIFESTIMAGE}:${EXT_RELEASE_TAG} ${MANIFESTIMAGE}:amd64-${EXT_RELEASE_TAG} ${MANIFESTIMAGE}:arm64v8-${EXT_RELEASE_TAG} |  | ||||||
|                     if [ -n "${SEMVER}" ]; then |  | ||||||
|                       docker buildx imagetools create -t ${MANIFESTIMAGE}:${SEMVER} ${MANIFESTIMAGE}:amd64-${SEMVER} ${MANIFESTIMAGE}:arm64v8-${SEMVER} |  | ||||||
|                     fi |  | ||||||
|                   done |  | ||||||
|                ''' |  | ||||||
|           } |  | ||||||
|         } |         } | ||||||
|       } |       } | ||||||
|     } |     } | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user