|
@@ -16,6 +16,7 @@ pipeline {
|
|
|
GITHUB_TOKEN=credentials('498b4638-2d02-4ce5-832d-8a57d01d97ab')
|
|
GITHUB_TOKEN=credentials('498b4638-2d02-4ce5-832d-8a57d01d97ab')
|
|
|
GITLAB_TOKEN=credentials('b6f0f1dd-6952-4cf6-95d1-9c06380283f0')
|
|
GITLAB_TOKEN=credentials('b6f0f1dd-6952-4cf6-95d1-9c06380283f0')
|
|
|
GITLAB_NAMESPACE=credentials('gitlab-namespace-id')
|
|
GITLAB_NAMESPACE=credentials('gitlab-namespace-id')
|
|
|
|
|
+ SCARF_TOKEN=credentials('scarf_api_key')
|
|
|
EXT_GIT_BRANCH = 'master'
|
|
EXT_GIT_BRANCH = 'master'
|
|
|
EXT_USER = 'tvheadend'
|
|
EXT_USER = 'tvheadend'
|
|
|
EXT_REPO = 'tvheadend'
|
|
EXT_REPO = 'tvheadend'
|
|
@@ -126,6 +127,23 @@ pipeline {
|
|
|
env.EXT_RELEASE_CLEAN = sh(
|
|
env.EXT_RELEASE_CLEAN = sh(
|
|
|
script: '''echo ${EXT_RELEASE} | sed 's/[~,%@+;:/]//g' ''',
|
|
script: '''echo ${EXT_RELEASE} | sed 's/[~,%@+;:/]//g' ''',
|
|
|
returnStdout: true).trim()
|
|
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}")
|
|
|
}
|
|
}
|
|
|
}
|
|
}
|
|
|
}
|
|
}
|
|
@@ -140,6 +158,7 @@ pipeline {
|
|
|
env.IMAGE = env.DOCKERHUB_IMAGE
|
|
env.IMAGE = env.DOCKERHUB_IMAGE
|
|
|
env.GITHUBIMAGE = 'ghcr.io/' + env.LS_USER + '/' + env.CONTAINER_NAME
|
|
env.GITHUBIMAGE = 'ghcr.io/' + env.LS_USER + '/' + env.CONTAINER_NAME
|
|
|
env.GITLABIMAGE = 'registry.gitlab.com/linuxserver.io/' + env.LS_REPO + '/' + 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') {
|
|
if (env.MULTIARCH == 'true') {
|
|
|
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
|
|
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
|
|
|
} else {
|
|
} else {
|
|
@@ -162,6 +181,7 @@ pipeline {
|
|
|
env.IMAGE = env.DEV_DOCKERHUB_IMAGE
|
|
env.IMAGE = env.DEV_DOCKERHUB_IMAGE
|
|
|
env.GITHUBIMAGE = 'ghcr.io/' + env.LS_USER + '/lsiodev-' + env.CONTAINER_NAME
|
|
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.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') {
|
|
if (env.MULTIARCH == 'true') {
|
|
|
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
|
|
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
|
|
|
} else {
|
|
} else {
|
|
@@ -184,6 +204,7 @@ pipeline {
|
|
|
env.IMAGE = env.PR_DOCKERHUB_IMAGE
|
|
env.IMAGE = env.PR_DOCKERHUB_IMAGE
|
|
|
env.GITHUBIMAGE = 'ghcr.io/' + env.LS_USER + '/lspipepr-' + env.CONTAINER_NAME
|
|
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.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') {
|
|
if (env.MULTIARCH == 'true') {
|
|
|
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
|
|
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
|
|
|
} else {
|
|
} else {
|
|
@@ -379,6 +400,48 @@ pipeline {
|
|
|
"visibility":"public"}' '''
|
|
"visibility":"public"}' '''
|
|
|
}
|
|
}
|
|
|
}
|
|
}
|
|
|
|
|
+ /* #######################
|
|
|
|
|
+ Scarf.sh package registry
|
|
|
|
|
+ ####################### */
|
|
|
|
|
+ // Add package to Scarf.sh and set permissions
|
|
|
|
|
+ stage("Scarf.sh package registry"){
|
|
|
|
|
+ when {
|
|
|
|
|
+ branch "master"
|
|
|
|
|
+ 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/tvheadend") | .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/tvheadend",\
|
|
|
|
|
+ "shortDescription":"example description",\
|
|
|
|
|
+ "libraryType":"docker",\
|
|
|
|
|
+ "website":"https://github.com/linuxserver/docker-tvheadend",\
|
|
|
|
|
+ "backendUrl":"https://ghcr.io/linuxserver/tvheadend",\
|
|
|
|
|
+ "publicUrl":"https://lscr.io/linuxserver/tvheadend"}' \
|
|
|
|
|
+ | 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
|
|
Build Container
|
|
|
############### */
|
|
############### */
|
|
@@ -386,7 +449,7 @@ pipeline {
|
|
|
stage('Build-Single') {
|
|
stage('Build-Single') {
|
|
|
when {
|
|
when {
|
|
|
expression {
|
|
expression {
|
|
|
- env.MULTIARCH == 'false' || params.PACKAGE_CHECK == 'true'
|
|
|
|
|
|
|
+ env.MULTIARCH == 'false' || params.PACKAGE_CHECK == 'true'
|
|
|
}
|
|
}
|
|
|
environment name: 'EXIT_STATUS', value: ''
|
|
environment name: 'EXIT_STATUS', value: ''
|
|
|
}
|
|
}
|
|
@@ -680,6 +743,12 @@ pipeline {
|
|
|
credentialsId: '3f9ba4d5-100d-45b0-a3c4-633fd6061207',
|
|
credentialsId: '3f9ba4d5-100d-45b0-a3c4-633fd6061207',
|
|
|
usernameVariable: 'DOCKERUSER',
|
|
usernameVariable: 'DOCKERUSER',
|
|
|
passwordVariable: 'DOCKERPASS'
|
|
passwordVariable: 'DOCKERPASS'
|
|
|
|
|
+ ],
|
|
|
|
|
+ [
|
|
|
|
|
+ $class: 'UsernamePasswordMultiBinding',
|
|
|
|
|
+ credentialsId: 'Quay.io-Robot',
|
|
|
|
|
+ usernameVariable: 'QUAYUSER',
|
|
|
|
|
+ passwordVariable: 'QUAYPASS'
|
|
|
]
|
|
]
|
|
|
]) {
|
|
]) {
|
|
|
retry(5) {
|
|
retry(5) {
|
|
@@ -688,22 +757,26 @@ pipeline {
|
|
|
echo $DOCKERPASS | docker login -u $DOCKERUSER --password-stdin
|
|
echo $DOCKERPASS | docker login -u $DOCKERUSER --password-stdin
|
|
|
echo $GITHUB_TOKEN | docker login ghcr.io -u LinuxServer-CI --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 $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 ${IMAGE}:${META_TAG} ${PUSHIMAGE}:${META_TAG}
|
|
|
docker tag ${PUSHIMAGE}:${META_TAG} ${PUSHIMAGE}:latest
|
|
docker tag ${PUSHIMAGE}:${META_TAG} ${PUSHIMAGE}:latest
|
|
|
docker tag ${PUSHIMAGE}:${META_TAG} ${PUSHIMAGE}:${EXT_RELEASE_TAG}
|
|
docker tag ${PUSHIMAGE}:${META_TAG} ${PUSHIMAGE}:${EXT_RELEASE_TAG}
|
|
|
|
|
+ docker tag ${PUSHIMAGE}:${META_TAG} ${PUSHIMAGE}:${SEMVER}
|
|
|
docker push ${PUSHIMAGE}:latest
|
|
docker push ${PUSHIMAGE}:latest
|
|
|
docker push ${PUSHIMAGE}:${META_TAG}
|
|
docker push ${PUSHIMAGE}:${META_TAG}
|
|
|
docker push ${PUSHIMAGE}:${EXT_RELEASE_TAG}
|
|
docker push ${PUSHIMAGE}:${EXT_RELEASE_TAG}
|
|
|
|
|
+ docker push ${PUSHIMAGE}:${SEMVER}
|
|
|
done
|
|
done
|
|
|
'''
|
|
'''
|
|
|
}
|
|
}
|
|
|
sh '''#! /bin/bash
|
|
sh '''#! /bin/bash
|
|
|
- for DELETEIMAGE in "${GITHUBIMAGE}" "${GITLABIMAGE}" "${IMAGE}"; do
|
|
|
|
|
|
|
+ for DELETEIMAGE in "${GITHUBIMAGE}" "${GITLABIMAGE}" "${QUAYIMAGE}" "${IMAGE}"; do
|
|
|
docker rmi \
|
|
docker rmi \
|
|
|
${DELETEIMAGE}:${META_TAG} \
|
|
${DELETEIMAGE}:${META_TAG} \
|
|
|
${DELETEIMAGE}:${EXT_RELEASE_TAG} \
|
|
${DELETEIMAGE}:${EXT_RELEASE_TAG} \
|
|
|
- ${DELETEIMAGE}:latest || :
|
|
|
|
|
|
|
+ ${DELETEIMAGE}:latest \
|
|
|
|
|
+ ${DELETEIMAGE}:${SEMVER} || :
|
|
|
done
|
|
done
|
|
|
'''
|
|
'''
|
|
|
}
|
|
}
|
|
@@ -722,6 +795,12 @@ pipeline {
|
|
|
credentialsId: '3f9ba4d5-100d-45b0-a3c4-633fd6061207',
|
|
credentialsId: '3f9ba4d5-100d-45b0-a3c4-633fd6061207',
|
|
|
usernameVariable: 'DOCKERUSER',
|
|
usernameVariable: 'DOCKERUSER',
|
|
|
passwordVariable: 'DOCKERPASS'
|
|
passwordVariable: 'DOCKERPASS'
|
|
|
|
|
+ ],
|
|
|
|
|
+ [
|
|
|
|
|
+ $class: 'UsernamePasswordMultiBinding',
|
|
|
|
|
+ credentialsId: 'Quay.io-Robot',
|
|
|
|
|
+ usernameVariable: 'QUAYUSER',
|
|
|
|
|
+ passwordVariable: 'QUAYPASS'
|
|
|
]
|
|
]
|
|
|
]) {
|
|
]) {
|
|
|
retry(5) {
|
|
retry(5) {
|
|
@@ -730,13 +809,14 @@ pipeline {
|
|
|
echo $DOCKERPASS | docker login -u $DOCKERUSER --password-stdin
|
|
echo $DOCKERPASS | docker login -u $DOCKERUSER --password-stdin
|
|
|
echo $GITHUB_TOKEN | docker login ghcr.io -u LinuxServer-CI --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 $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
|
|
if [ "${CI}" == "false" ]; then
|
|
|
docker pull ghcr.io/linuxserver/lsiodev-buildcache:arm32v7-${COMMIT_SHA}-${BUILD_NUMBER}
|
|
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 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: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}
|
|
docker tag ghcr.io/linuxserver/lsiodev-buildcache:arm64v8-${COMMIT_SHA}-${BUILD_NUMBER} ${IMAGE}:arm64v8-${META_TAG}
|
|
|
fi
|
|
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}:amd64-${META_TAG} ${MANIFESTIMAGE}:amd64-${META_TAG}
|
|
|
docker tag ${IMAGE}:arm32v7-${META_TAG} ${MANIFESTIMAGE}:arm32v7-${META_TAG}
|
|
docker tag ${IMAGE}:arm32v7-${META_TAG} ${MANIFESTIMAGE}:arm32v7-${META_TAG}
|
|
|
docker tag ${IMAGE}:arm64v8-${META_TAG} ${MANIFESTIMAGE}:arm64v8-${META_TAG}
|
|
docker tag ${IMAGE}:arm64v8-${META_TAG} ${MANIFESTIMAGE}:arm64v8-${META_TAG}
|
|
@@ -746,6 +826,9 @@ pipeline {
|
|
|
docker tag ${MANIFESTIMAGE}:amd64-${META_TAG} ${MANIFESTIMAGE}:amd64-${EXT_RELEASE_TAG}
|
|
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}:arm32v7-${META_TAG} ${MANIFESTIMAGE}:arm32v7-${EXT_RELEASE_TAG}
|
|
|
docker tag ${MANIFESTIMAGE}:arm64v8-${META_TAG} ${MANIFESTIMAGE}:arm64v8-${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}:amd64-${META_TAG}
|
|
|
docker push ${MANIFESTIMAGE}:arm32v7-${META_TAG}
|
|
docker push ${MANIFESTIMAGE}:arm32v7-${META_TAG}
|
|
|
docker push ${MANIFESTIMAGE}:arm64v8-${META_TAG}
|
|
docker push ${MANIFESTIMAGE}:arm64v8-${META_TAG}
|
|
@@ -755,6 +838,9 @@ pipeline {
|
|
|
docker push ${MANIFESTIMAGE}:amd64-${EXT_RELEASE_TAG}
|
|
docker push ${MANIFESTIMAGE}:amd64-${EXT_RELEASE_TAG}
|
|
|
docker push ${MANIFESTIMAGE}:arm32v7-${EXT_RELEASE_TAG}
|
|
docker push ${MANIFESTIMAGE}:arm32v7-${EXT_RELEASE_TAG}
|
|
|
docker push ${MANIFESTIMAGE}:arm64v8-${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}:latest || :
|
|
docker manifest push --purge ${MANIFESTIMAGE}:latest || :
|
|
|
docker manifest create ${MANIFESTIMAGE}:latest ${MANIFESTIMAGE}:amd64-latest ${MANIFESTIMAGE}:arm32v7-latest ${MANIFESTIMAGE}:arm64v8-latest
|
|
docker manifest create ${MANIFESTIMAGE}:latest ${MANIFESTIMAGE}:amd64-latest ${MANIFESTIMAGE}:arm32v7-latest ${MANIFESTIMAGE}:arm64v8-latest
|
|
|
docker manifest annotate ${MANIFESTIMAGE}:latest ${MANIFESTIMAGE}:arm32v7-latest --os linux --arch arm
|
|
docker manifest annotate ${MANIFESTIMAGE}:latest ${MANIFESTIMAGE}:arm32v7-latest --os linux --arch arm
|
|
@@ -767,24 +853,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 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}: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 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}:latest
|
|
docker manifest push --purge ${MANIFESTIMAGE}:latest
|
|
|
docker manifest push --purge ${MANIFESTIMAGE}:${META_TAG}
|
|
docker manifest push --purge ${MANIFESTIMAGE}:${META_TAG}
|
|
|
docker manifest push --purge ${MANIFESTIMAGE}:${EXT_RELEASE_TAG}
|
|
docker manifest push --purge ${MANIFESTIMAGE}:${EXT_RELEASE_TAG}
|
|
|
|
|
+ docker manifest push --purge ${MANIFESTIMAGE}:${SEMVER}
|
|
|
done
|
|
done
|
|
|
'''
|
|
'''
|
|
|
}
|
|
}
|
|
|
sh '''#! /bin/bash
|
|
sh '''#! /bin/bash
|
|
|
- for DELETEIMAGE in "${GITHUBIMAGE}" "${GITLABIMAGE}" "${IMAGE}"; do
|
|
|
|
|
|
|
+ for DELETEIMAGE in "${GITHUBIMAGE}" "${GITLABIMAGE}" "${QUAYIMAGE}" "${IMAGE}"; do
|
|
|
docker rmi \
|
|
docker rmi \
|
|
|
${DELETEIMAGE}:amd64-${META_TAG} \
|
|
${DELETEIMAGE}:amd64-${META_TAG} \
|
|
|
${DELETEIMAGE}:amd64-latest \
|
|
${DELETEIMAGE}:amd64-latest \
|
|
|
${DELETEIMAGE}:amd64-${EXT_RELEASE_TAG} \
|
|
${DELETEIMAGE}:amd64-${EXT_RELEASE_TAG} \
|
|
|
|
|
+ ${DELETEIMAGE}:amd64-${SEMVER} \
|
|
|
${DELETEIMAGE}:arm32v7-${META_TAG} \
|
|
${DELETEIMAGE}:arm32v7-${META_TAG} \
|
|
|
${DELETEIMAGE}:arm32v7-latest \
|
|
${DELETEIMAGE}:arm32v7-latest \
|
|
|
${DELETEIMAGE}:arm32v7-${EXT_RELEASE_TAG} \
|
|
${DELETEIMAGE}:arm32v7-${EXT_RELEASE_TAG} \
|
|
|
|
|
+ ${DELETEIMAGE}:arm32v7-${SEMVER} \
|
|
|
${DELETEIMAGE}:arm64v8-${META_TAG} \
|
|
${DELETEIMAGE}:arm64v8-${META_TAG} \
|
|
|
${DELETEIMAGE}:arm64v8-latest \
|
|
${DELETEIMAGE}:arm64v8-latest \
|
|
|
- ${DELETEIMAGE}:arm64v8-${EXT_RELEASE_TAG} || :
|
|
|
|
|
|
|
+ ${DELETEIMAGE}:arm64v8-${EXT_RELEASE_TAG} \
|
|
|
|
|
+ ${DELETEIMAGE}:arm64v8-${SEMVER} || :
|
|
|
done
|
|
done
|
|
|
docker rmi \
|
|
docker rmi \
|
|
|
ghcr.io/linuxserver/lsiodev-buildcache:arm32v7-${COMMIT_SHA}-${BUILD_NUMBER} \
|
|
ghcr.io/linuxserver/lsiodev-buildcache:arm32v7-${COMMIT_SHA}-${BUILD_NUMBER} \
|