This commit is contained in:
2026-05-09 19:14:32 +08:00
7 changed files with 116 additions and 59 deletions
+26 -40
View File
@@ -1,15 +1,19 @@
pipeline {
agent { label '构建机1' }
agent any
parameters {
booleanParam(
name: 'FORCE_BUILD_ALL',
defaultValue: false,
description: '强制构建所有镜像'
)
}
environment {
IMAGE_PREFIX = "im"
IMAGE_TAG = "${BUILD_NUMBER}"
DOCKER_BUILDKIT = "1"
// 如果你有 Harbor,可以改成:
// REGISTRY = "harbor.xxx.com/im"
REGISTRY = "reg.nxsir.cn/im"
REGISTRY = ""
}
stages {
@@ -22,21 +26,23 @@ pipeline {
stage('检测变更') {
steps {
script {
def diffCmd = '''
if git rev-parse HEAD~1 >/dev/null 2>&1; then
git diff --name-only HEAD~1 HEAD
else
git ls-files
fi
'''
if (params.FORCE_BUILD_ALL || env.BUILD_NUMBER == '1') {
env.BUILD_ALL = "true"
env.CHANGED_FILES = "FIRST_BUILD"
echo "首次构建或手动强制构建,构建全部镜像"
} else {
env.BUILD_ALL = "false"
env.CHANGED_FILES = sh(
script: diffCmd,
returnStdout: true
).trim()
env.CHANGED_FILES = sh(
script: '''
git diff --name-only HEAD~1 HEAD
''',
returnStdout: true
).trim()
echo "变更文件:"
echo env.CHANGED_FILES
echo "变更文件:"
echo env.CHANGED_FILES
}
}
}
}
@@ -129,7 +135,7 @@ pipeline {
def changedFiles = env.CHANGED_FILES.split("\\n") as List
services.each { svc ->
def needBuild = changedFiles.any { file ->
def needBuild = env.BUILD_ALL == "true" || changedFiles.any { file ->
svc.paths.any { path ->
file.startsWith(path)
}
@@ -147,16 +153,6 @@ pipeline {
-t ${latestName} \
-f ${svc.dockerfile} .
"""
if (env.REGISTRY?.trim()) {
sh """
docker tag ${imageName} ${REGISTRY}/${svc.image}:${IMAGE_TAG}
docker tag ${latestName} ${REGISTRY}/${svc.image}:latest
docker push ${REGISTRY}/${svc.image}:${IMAGE_TAG}
docker push ${REGISTRY}/${svc.image}:latest
"""
}
} else {
echo "跳过构建:${svc.name},没有相关代码变更"
}
@@ -165,14 +161,4 @@ pipeline {
}
}
}
post {
success {
echo "流水线执行成功"
}
failure {
echo "流水线执行失败"
}
}
}