简化 Jenkins 推送:构建即推 + 固定 latest
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
Vendored
+9
-30
@@ -25,9 +25,6 @@ pipeline {
|
|||||||
booleanParam(name: 'SKIP_TEST',
|
booleanParam(name: 'SKIP_TEST',
|
||||||
defaultValue: false,
|
defaultValue: false,
|
||||||
description: '跳过单测(紧急发版用,正常构建不要勾)')
|
description: '跳过单测(紧急发版用,正常构建不要勾)')
|
||||||
booleanParam(name: 'PUSH_LATEST',
|
|
||||||
defaultValue: true,
|
|
||||||
description: '同时打 :latest 并推送')
|
|
||||||
}
|
}
|
||||||
|
|
||||||
environment {
|
environment {
|
||||||
@@ -87,32 +84,18 @@ pipeline {
|
|||||||
|
|
||||||
stage('Build image') {
|
stage('Build image') {
|
||||||
steps {
|
steps {
|
||||||
script {
|
sh """
|
||||||
// 同时打两个 tag:精确 tag + 可选 latest
|
docker build \
|
||||||
def tags = ["-t ${env.IMAGE_NAME}:${env.IMAGE_TAG}"]
|
-t ${env.IMAGE_NAME}:${env.IMAGE_TAG} \
|
||||||
if (params.PUSH_LATEST) {
|
-t ${env.IMAGE_NAME}:latest \
|
||||||
tags << "-t ${env.IMAGE_NAME}:latest"
|
--label org.opencontainers.image.revision=${env.GIT_SHA} \
|
||||||
}
|
--label org.opencontainers.image.version=${env.IMAGE_TAG} \
|
||||||
sh """
|
-f Dockerfile .
|
||||||
docker build ${tags.join(' ')} \
|
"""
|
||||||
--label org.opencontainers.image.revision=${env.GIT_SHA} \
|
|
||||||
--label org.opencontainers.image.version=${env.IMAGE_TAG} \
|
|
||||||
-f Dockerfile .
|
|
||||||
"""
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
stage('Push image') {
|
stage('Push image') {
|
||||||
// 只在 master / 手动构建时推送;PR 构建只产镜像不推
|
|
||||||
when {
|
|
||||||
anyOf {
|
|
||||||
branch 'master'
|
|
||||||
branch 'main'
|
|
||||||
buildingTag()
|
|
||||||
expression { return !params.IMAGE_TAG?.trim().isEmpty() && params.IMAGE_TAG != "${env.BUILD_NUMBER}-${env.GIT_SHA}" }
|
|
||||||
}
|
|
||||||
}
|
|
||||||
steps {
|
steps {
|
||||||
withCredentials([usernamePassword(
|
withCredentials([usernamePassword(
|
||||||
credentialsId: 'gitea-registry',
|
credentialsId: 'gitea-registry',
|
||||||
@@ -122,12 +105,8 @@ pipeline {
|
|||||||
sh """
|
sh """
|
||||||
echo "\$REGISTRY_PASS" | docker login git.jerryyan.net -u "\$REGISTRY_USER" --password-stdin
|
echo "\$REGISTRY_PASS" | docker login git.jerryyan.net -u "\$REGISTRY_USER" --password-stdin
|
||||||
docker push ${env.IMAGE_NAME}:${env.IMAGE_TAG}
|
docker push ${env.IMAGE_NAME}:${env.IMAGE_TAG}
|
||||||
|
docker push ${env.IMAGE_NAME}:latest
|
||||||
"""
|
"""
|
||||||
script {
|
|
||||||
if (params.PUSH_LATEST) {
|
|
||||||
sh "docker push ${env.IMAGE_NAME}:latest"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user