简化 Jenkins 推送:构建即推 + 固定 latest

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
2026-07-27 15:53:56 +08:00
co-authored by Claude Opus 4.6
parent 2b7db521c4
commit 3ef3f0275b
Vendored
+9 -30
View File
@@ -25,9 +25,6 @@ pipeline {
booleanParam(name: 'SKIP_TEST',
defaultValue: false,
description: '跳过单测(紧急发版用,正常构建不要勾)')
booleanParam(name: 'PUSH_LATEST',
defaultValue: true,
description: '同时打 :latest 并推送')
}
environment {
@@ -87,32 +84,18 @@ pipeline {
stage('Build image') {
steps {
script {
// 同时打两个 tag:精确 tag + 可选 latest
def tags = ["-t ${env.IMAGE_NAME}:${env.IMAGE_TAG}"]
if (params.PUSH_LATEST) {
tags << "-t ${env.IMAGE_NAME}:latest"
}
sh """
docker build ${tags.join(' ')} \
--label org.opencontainers.image.revision=${env.GIT_SHA} \
--label org.opencontainers.image.version=${env.IMAGE_TAG} \
-f Dockerfile .
"""
}
sh """
docker build \
-t ${env.IMAGE_NAME}:${env.IMAGE_TAG} \
-t ${env.IMAGE_NAME}:latest \
--label org.opencontainers.image.revision=${env.GIT_SHA} \
--label org.opencontainers.image.version=${env.IMAGE_TAG} \
-f Dockerfile .
"""
}
}
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 {
withCredentials([usernamePassword(
credentialsId: 'gitea-registry',
@@ -122,12 +105,8 @@ pipeline {
sh """
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}:latest
"""
script {
if (params.PUSH_LATEST) {
sh "docker push ${env.IMAGE_NAME}:latest"
}
}
}
}
}