mirror of
				https://github.com/linuxserver/docker-jellyfin.git
				synced 2025-11-01 05:27:38 +09:00 
			
		
		
		
	Bot Updating Templated Files
This commit is contained in:
		
							
								
								
									
										108
									
								
								Jenkinsfile
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										108
									
								
								Jenkinsfile
									
									
									
									
										vendored
									
									
								
							| @@ -16,6 +16,7 @@ pipeline { | ||||
|     GITHUB_TOKEN=credentials('498b4638-2d02-4ce5-832d-8a57d01d97ab') | ||||
|     GITLAB_TOKEN=credentials('b6f0f1dd-6952-4cf6-95d1-9c06380283f0') | ||||
|     GITLAB_NAMESPACE=credentials('gitlab-namespace-id') | ||||
|     SCARF_TOKEN=credentials('scarf_api_key') | ||||
|     BUILD_VERSION_ARG = 'JELLYFIN_RELEASE' | ||||
|     LS_USER = 'linuxserver' | ||||
|     LS_REPO = 'docker-jellyfin' | ||||
| @@ -116,6 +117,23 @@ pipeline { | ||||
|           env.EXT_RELEASE_CLEAN = sh( | ||||
|             script: '''echo ${EXT_RELEASE} | sed 's/[~,%@+;:/]//g' ''', | ||||
|             returnStdout: true).trim() | ||||
|  | ||||
|           env.SEMVER = (new Date()).format('YYYY.MM.dd') | ||||
|           def semver = env.EXT_RELEASE_CLEAN =~ /(\d+)\.(\d+)\.(\d+)$/ | ||||
|           if (semver.find()) { | ||||
|             env.SEMVER = "${semver[0][1]}.${semver[0][2]}.${semver[0][3]}" | ||||
|           } else { | ||||
|             semver = env.EXT_RELEASE_CLEAN =~ /(\d+)\.(\d+)(?:\.(\d+))?(.*)$/ | ||||
|             if (semver.find()) { | ||||
|               if (semver[0][3]) { | ||||
|                 env.SEMVER = "${semver[0][1]}.${semver[0][2]}.${semver[0][3]}" | ||||
|               } else if (!semver[0][3] && !semver[0][4]) { | ||||
|                 env.SEMVER = "${semver[0][1]}.${semver[0][2]}.${(new Date()).format('YYYYMMdd')}" | ||||
|               } | ||||
|             } | ||||
|           } | ||||
|  | ||||
|           println("SEMVER: ${env.SEMVER}") | ||||
|         } | ||||
|       } | ||||
|     } | ||||
| @@ -130,6 +148,7 @@ pipeline { | ||||
|           env.IMAGE = env.DOCKERHUB_IMAGE | ||||
|           env.GITHUBIMAGE = 'ghcr.io/' + env.LS_USER + '/' + env.CONTAINER_NAME | ||||
|           env.GITLABIMAGE = 'registry.gitlab.com/linuxserver.io/' + env.LS_REPO + '/' + env.CONTAINER_NAME | ||||
|           env.QUAYIMAGE = 'quay.io/linuxserver.io/' + env.CONTAINER_NAME | ||||
|           if (env.MULTIARCH == 'true') { | ||||
|             env.CI_TAGS = 'amd64-nightly-' + env.EXT_RELEASE_CLEAN + '-ls' + env.LS_TAG_NUMBER + '|arm32v7-nightly-' + env.EXT_RELEASE_CLEAN + '-ls' + env.LS_TAG_NUMBER + '|arm64v8-nightly-' + env.EXT_RELEASE_CLEAN + '-ls' + env.LS_TAG_NUMBER | ||||
|           } else { | ||||
| @@ -152,6 +171,7 @@ pipeline { | ||||
|           env.IMAGE = env.DEV_DOCKERHUB_IMAGE | ||||
|           env.GITHUBIMAGE = 'ghcr.io/' + env.LS_USER + '/lsiodev-' + env.CONTAINER_NAME | ||||
|           env.GITLABIMAGE = 'registry.gitlab.com/linuxserver.io/' + env.LS_REPO + '/lsiodev-' + env.CONTAINER_NAME | ||||
|           env.QUAYIMAGE = 'quay.io/linuxserver.io/lsiodev-' + env.CONTAINER_NAME | ||||
|           if (env.MULTIARCH == 'true') { | ||||
|             env.CI_TAGS = 'amd64-nightly-' + env.EXT_RELEASE_CLEAN + '-pkg-' + env.PACKAGE_TAG + '-dev-' + env.COMMIT_SHA + '|arm32v7-nightly-' + env.EXT_RELEASE_CLEAN + '-pkg-' + env.PACKAGE_TAG + '-dev-' + env.COMMIT_SHA + '|arm64v8-nightly-' + env.EXT_RELEASE_CLEAN + '-pkg-' + env.PACKAGE_TAG + '-dev-' + env.COMMIT_SHA | ||||
|           } else { | ||||
| @@ -174,6 +194,7 @@ pipeline { | ||||
|           env.IMAGE = env.PR_DOCKERHUB_IMAGE | ||||
|           env.GITHUBIMAGE = 'ghcr.io/' + env.LS_USER + '/lspipepr-' + env.CONTAINER_NAME | ||||
|           env.GITLABIMAGE = 'registry.gitlab.com/linuxserver.io/' + env.LS_REPO + '/lspipepr-' + env.CONTAINER_NAME | ||||
|           env.QUAYIMAGE = 'quay.io/linuxserver.io/lspipepr-' + env.CONTAINER_NAME | ||||
|           if (env.MULTIARCH == 'true') { | ||||
|             env.CI_TAGS = 'amd64-nightly-' + env.EXT_RELEASE_CLEAN + '-pkg-' + env.PACKAGE_TAG + '-pr-' + env.PULL_REQUEST + '|arm32v7-nightly-' + env.EXT_RELEASE_CLEAN + '-pkg-' + env.PACKAGE_TAG + '-pr-' + env.PULL_REQUEST + '|arm64v8-nightly-' + env.EXT_RELEASE_CLEAN + '-pkg-' + env.PACKAGE_TAG + '-pr-' + env.PULL_REQUEST | ||||
|           } else { | ||||
| @@ -369,6 +390,48 @@ pipeline { | ||||
|              "visibility":"public"}' ''' | ||||
|       }  | ||||
|     } | ||||
|     /* ####################### | ||||
|            Scarf.sh package registry | ||||
|        ####################### */ | ||||
|     // Add package to Scarf.sh and set permissions | ||||
|     stage("Scarf.sh package registry"){ | ||||
|       when { | ||||
|         branch "nightly" | ||||
|         environment name: 'EXIT_STATUS', value: '' | ||||
|       } | ||||
|       steps{ | ||||
|         sh '''#! /bin/bash | ||||
|               set -e | ||||
|               PACKAGE_UUID=$(curl -X GET -H "Authorization: Bearer ${SCARF_TOKEN}" https://scarf.sh/api/v1/packages | jq -r '.[] | select(.name=="linuxserver/jellyfin") | .uuid') | ||||
|               if [ -z "${PACKAGE_UUID}" ]; then | ||||
|                 echo "Adding package to Scarf.sh" | ||||
|                 PACKAGE_UUID=$(curl -sX POST https://scarf.sh/api/v1/packages \ | ||||
|                   -H "Authorization: Bearer ${SCARF_TOKEN}" \ | ||||
|                   -H "Content-Type: application/json" \ | ||||
|                   -d '{"name":"linuxserver/jellyfin",\ | ||||
|                        "shortDescription":"example description",\ | ||||
|                        "libraryType":"docker",\ | ||||
|                        "website":"https://github.com/linuxserver/docker-jellyfin",\ | ||||
|                        "backendUrl":"https://ghcr.io/linuxserver/jellyfin",\ | ||||
|                        "publicUrl":"https://lscr.io/linuxserver/jellyfin"}' \ | ||||
|                   | jq -r .uuid) | ||||
|               else | ||||
|                 echo "Package already exists on Scarf.sh" | ||||
|               fi | ||||
|               echo "Setting permissions on Scarf.sh for package ${PACKAGE_UUID}" | ||||
|               curl -X POST https://scarf.sh/api/v1/packages/${PACKAGE_UUID}/permissions \ | ||||
|                 -H "Authorization: Bearer ${SCARF_TOKEN}" \ | ||||
|                 -H "Content-Type: application/json" \ | ||||
|                 -d '[{"userQuery":"Spad","permissionLevel":"admin"},\ | ||||
|                      {"userQuery":"roxedus","permissionLevel":"admin"},\ | ||||
|                      {"userQuery":"nemchik","permissionLevel":"admin"},\ | ||||
|                      {"userQuery":"driz","permissionLevel":"admin"},\ | ||||
|                      {"userQuery":"aptalca","permissionLevel":"admin"},\ | ||||
|                      {"userQuery":"saarg","permissionLevel":"admin"},\ | ||||
|                      {"userQuery":"Stark","permissionLevel":"admin"}]' | ||||
|            ''' | ||||
|       }  | ||||
|     } | ||||
|     /* ############### | ||||
|        Build Container | ||||
|        ############### */ | ||||
| @@ -376,7 +439,7 @@ pipeline { | ||||
|     stage('Build-Single') { | ||||
|       when { | ||||
|         expression { | ||||
|           env.MULTIARCH == 'false' || params.PACKAGE_CHECK == 'true'  | ||||
|           env.MULTIARCH == 'false' || params.PACKAGE_CHECK == 'true' | ||||
|         } | ||||
|         environment name: 'EXIT_STATUS', value: '' | ||||
|       } | ||||
| @@ -670,6 +733,12 @@ pipeline { | ||||
|             credentialsId: '3f9ba4d5-100d-45b0-a3c4-633fd6061207', | ||||
|             usernameVariable: 'DOCKERUSER', | ||||
|             passwordVariable: 'DOCKERPASS' | ||||
|           ], | ||||
|           [ | ||||
|             $class: 'UsernamePasswordMultiBinding', | ||||
|             credentialsId: 'Quay.io-Robot', | ||||
|             usernameVariable: 'QUAYUSER', | ||||
|             passwordVariable: 'QUAYPASS' | ||||
|           ] | ||||
|         ]) { | ||||
|           retry(5) { | ||||
| @@ -678,22 +747,26 @@ pipeline { | ||||
|                   echo $DOCKERPASS | docker login -u $DOCKERUSER --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 | ||||
|                   for PUSHIMAGE in "${GITHUBIMAGE}" "${GITLABIMAGE}" "${IMAGE}"; do | ||||
|                   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}:nightly | ||||
|                     docker tag ${PUSHIMAGE}:${META_TAG} ${PUSHIMAGE}:${EXT_RELEASE_TAG} | ||||
|                     docker tag ${PUSHIMAGE}:${META_TAG} ${PUSHIMAGE}:${SEMVER} | ||||
|                     docker push ${PUSHIMAGE}:nightly | ||||
|                     docker push ${PUSHIMAGE}:${META_TAG} | ||||
|                     docker push ${PUSHIMAGE}:${EXT_RELEASE_TAG} | ||||
|                     docker push ${PUSHIMAGE}:${SEMVER} | ||||
|                   done | ||||
|                ''' | ||||
|           } | ||||
|           sh '''#! /bin/bash | ||||
|                 for DELETEIMAGE in "${GITHUBIMAGE}" "${GITLABIMAGE}" "${IMAGE}"; do | ||||
|                 for DELETEIMAGE in "${GITHUBIMAGE}" "${GITLABIMAGE}" "${QUAYIMAGE}" "${IMAGE}"; do | ||||
|                   docker rmi \ | ||||
|                   ${DELETEIMAGE}:${META_TAG} \ | ||||
|                   ${DELETEIMAGE}:${EXT_RELEASE_TAG} \ | ||||
|                   ${DELETEIMAGE}:nightly || : | ||||
|                   ${DELETEIMAGE}:nightly \ | ||||
|                   ${DELETEIMAGE}:${SEMVER} || : | ||||
|                 done | ||||
|              ''' | ||||
|         } | ||||
| @@ -712,6 +785,12 @@ pipeline { | ||||
|             credentialsId: '3f9ba4d5-100d-45b0-a3c4-633fd6061207', | ||||
|             usernameVariable: 'DOCKERUSER', | ||||
|             passwordVariable: 'DOCKERPASS' | ||||
|           ], | ||||
|           [ | ||||
|             $class: 'UsernamePasswordMultiBinding', | ||||
|             credentialsId: 'Quay.io-Robot', | ||||
|             usernameVariable: 'QUAYUSER', | ||||
|             passwordVariable: 'QUAYPASS' | ||||
|           ] | ||||
|         ]) { | ||||
|           retry(5) { | ||||
| @@ -720,13 +799,14 @@ pipeline { | ||||
|                   echo $DOCKERPASS | docker login -u $DOCKERUSER --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 [ "${CI}" == "false" ]; then | ||||
|                     docker pull ghcr.io/linuxserver/lsiodev-buildcache:arm32v7-${COMMIT_SHA}-${BUILD_NUMBER} | ||||
|                     docker pull ghcr.io/linuxserver/lsiodev-buildcache:arm64v8-${COMMIT_SHA}-${BUILD_NUMBER} | ||||
|                     docker tag ghcr.io/linuxserver/lsiodev-buildcache:arm32v7-${COMMIT_SHA}-${BUILD_NUMBER} ${IMAGE}:arm32v7-${META_TAG} | ||||
|                     docker tag ghcr.io/linuxserver/lsiodev-buildcache:arm64v8-${COMMIT_SHA}-${BUILD_NUMBER} ${IMAGE}:arm64v8-${META_TAG} | ||||
|                   fi | ||||
|                   for MANIFESTIMAGE in "${IMAGE}" "${GITLABIMAGE}" "${GITHUBIMAGE}"; do | ||||
|                   for MANIFESTIMAGE in "${IMAGE}" "${GITLABIMAGE}" "${GITHUBIMAGE}" "${QUAYIMAGE}"; do | ||||
|                     docker tag ${IMAGE}:amd64-${META_TAG} ${MANIFESTIMAGE}:amd64-${META_TAG} | ||||
|                     docker tag ${IMAGE}:arm32v7-${META_TAG} ${MANIFESTIMAGE}:arm32v7-${META_TAG} | ||||
|                     docker tag ${IMAGE}:arm64v8-${META_TAG} ${MANIFESTIMAGE}:arm64v8-${META_TAG} | ||||
| @@ -736,6 +816,9 @@ pipeline { | ||||
|                     docker tag ${MANIFESTIMAGE}:amd64-${META_TAG} ${MANIFESTIMAGE}:amd64-${EXT_RELEASE_TAG} | ||||
|                     docker tag ${MANIFESTIMAGE}:arm32v7-${META_TAG} ${MANIFESTIMAGE}:arm32v7-${EXT_RELEASE_TAG} | ||||
|                     docker tag ${MANIFESTIMAGE}:arm64v8-${META_TAG} ${MANIFESTIMAGE}:arm64v8-${EXT_RELEASE_TAG} | ||||
|                     docker tag ${MANIFESTIMAGE}:amd64-${META_TAG} ${MANIFESTIMAGE}:amd64-${SEMVER} | ||||
|                     docker tag ${MANIFESTIMAGE}:arm32v7-${META_TAG} ${MANIFESTIMAGE}:arm32v7-${SEMVER} | ||||
|                     docker tag ${MANIFESTIMAGE}:arm64v8-${META_TAG} ${MANIFESTIMAGE}:arm64v8-${SEMVER} | ||||
|                     docker push ${MANIFESTIMAGE}:amd64-${META_TAG} | ||||
|                     docker push ${MANIFESTIMAGE}:arm32v7-${META_TAG} | ||||
|                     docker push ${MANIFESTIMAGE}:arm64v8-${META_TAG} | ||||
| @@ -745,6 +828,9 @@ pipeline { | ||||
|                     docker push ${MANIFESTIMAGE}:amd64-${EXT_RELEASE_TAG} | ||||
|                     docker push ${MANIFESTIMAGE}:arm32v7-${EXT_RELEASE_TAG} | ||||
|                     docker push ${MANIFESTIMAGE}:arm64v8-${EXT_RELEASE_TAG} | ||||
|                     docker push ${MANIFESTIMAGE}:amd64-${SEMVER} | ||||
|                     docker push ${MANIFESTIMAGE}:arm32v7-${SEMVER} | ||||
|                     docker push ${MANIFESTIMAGE}:arm64v8-${SEMVER} | ||||
|                     docker manifest push --purge ${MANIFESTIMAGE}:nightly || : | ||||
|                     docker manifest create ${MANIFESTIMAGE}:nightly ${MANIFESTIMAGE}:amd64-nightly ${MANIFESTIMAGE}:arm32v7-nightly ${MANIFESTIMAGE}:arm64v8-nightly | ||||
|                     docker manifest annotate ${MANIFESTIMAGE}:nightly ${MANIFESTIMAGE}:arm32v7-nightly --os linux --arch arm | ||||
| @@ -757,24 +843,32 @@ pipeline { | ||||
|                     docker manifest create ${MANIFESTIMAGE}:${EXT_RELEASE_TAG} ${MANIFESTIMAGE}:amd64-${EXT_RELEASE_TAG} ${MANIFESTIMAGE}:arm32v7-${EXT_RELEASE_TAG} ${MANIFESTIMAGE}:arm64v8-${EXT_RELEASE_TAG} | ||||
|                     docker manifest annotate ${MANIFESTIMAGE}:${EXT_RELEASE_TAG} ${MANIFESTIMAGE}:arm32v7-${EXT_RELEASE_TAG} --os linux --arch arm | ||||
|                     docker manifest annotate ${MANIFESTIMAGE}:${EXT_RELEASE_TAG} ${MANIFESTIMAGE}:arm64v8-${EXT_RELEASE_TAG} --os linux --arch arm64 --variant v8 | ||||
|                     docker manifest push --purge ${MANIFESTIMAGE}:${SEMVER} || : | ||||
|                     docker manifest create ${MANIFESTIMAGE}:${SEMVER} ${MANIFESTIMAGE}:amd64-${SEMVER} ${MANIFESTIMAGE}:arm32v7-${SEMVER} ${MANIFESTIMAGE}:arm64v8-${SEMVER} | ||||
|                     docker manifest annotate ${MANIFESTIMAGE}:${SEMVER} ${MANIFESTIMAGE}:arm32v7-${SEMVER} --os linux --arch arm | ||||
|                     docker manifest annotate ${MANIFESTIMAGE}:${SEMVER} ${MANIFESTIMAGE}:arm64v8-${SEMVER} --os linux --arch arm64 --variant v8 | ||||
|                     docker manifest push --purge ${MANIFESTIMAGE}:nightly | ||||
|                     docker manifest push --purge ${MANIFESTIMAGE}:${META_TAG}  | ||||
|                     docker manifest push --purge ${MANIFESTIMAGE}:${EXT_RELEASE_TAG}  | ||||
|                     docker manifest push --purge ${MANIFESTIMAGE}:${SEMVER}  | ||||
|                   done | ||||
|                ''' | ||||
|           } | ||||
|           sh '''#! /bin/bash | ||||
|                 for DELETEIMAGE in "${GITHUBIMAGE}" "${GITLABIMAGE}" "${IMAGE}"; do | ||||
|                 for DELETEIMAGE in "${GITHUBIMAGE}" "${GITLABIMAGE}" "${QUAYIMAGE}" "${IMAGE}"; do | ||||
|                   docker rmi \ | ||||
|                   ${DELETEIMAGE}:amd64-${META_TAG} \ | ||||
|                   ${DELETEIMAGE}:amd64-nightly \ | ||||
|                   ${DELETEIMAGE}:amd64-${EXT_RELEASE_TAG} \ | ||||
|                   ${DELETEIMAGE}:amd64-${SEMVER} \ | ||||
|                   ${DELETEIMAGE}:arm32v7-${META_TAG} \ | ||||
|                   ${DELETEIMAGE}:arm32v7-nightly \ | ||||
|                   ${DELETEIMAGE}:arm32v7-${EXT_RELEASE_TAG} \ | ||||
|                   ${DELETEIMAGE}:arm32v7-${SEMVER} \ | ||||
|                   ${DELETEIMAGE}:arm64v8-${META_TAG} \ | ||||
|                   ${DELETEIMAGE}:arm64v8-nightly \ | ||||
|                   ${DELETEIMAGE}:arm64v8-${EXT_RELEASE_TAG} || : | ||||
|                   ${DELETEIMAGE}:arm64v8-${EXT_RELEASE_TAG} \ | ||||
|                   ${DELETEIMAGE}:arm64v8-${SEMVER} || : | ||||
|                 done | ||||
|                 docker rmi \ | ||||
|                 ghcr.io/linuxserver/lsiodev-buildcache:arm32v7-${COMMIT_SHA}-${BUILD_NUMBER} \ | ||||
|   | ||||
		Reference in New Issue
	
	Block a user