Files
IM_NEW/Jenkinsfile
T

114 lines
2.6 KiB
Groovy

pipeline {
agent { label '构建机1' }
environment {
IMAGE_PREFIX = "im"
IMAGE_TAG = "${BUILD_NUMBER}"
DOCKER_BUILDKIT = "1"
// Harbor 示例:
// REGISTRY = "harbor.xxx.com/im"
REGISTRY = ""
}
stages {
stage('拉取代码') {
steps {
checkout scm
}
}
stage('构建 UserService') {
steps {
script {
buildImage(
"user-service",
"User.WebApi/Dockerfile"
)
}
}
}
stage('构建 ContactService') {
steps {
script {
buildImage(
"contact-service",
"ContactService.WebApi/Dockerfile"
)
}
}
}
stage('构建 GroupService') {
steps {
script {
buildImage(
"group-service",
"GroupService.WebApi/Dockerfile"
)
}
}
}
stage('构建 MessageService') {
steps {
script {
buildImage(
"message-service",
"MessageService.WebApi/Dockerfile"
)
}
}
}
stage('构建 ConnectorService') {
steps {
script {
buildImage(
"connector-service",
"ConnectorService/Dockerfile"
)
}
}
}
}
post {
success {
echo "全部镜像构建完成"
}
failure {
echo "镜像构建失败"
}
}
}
def buildImage(serviceName, dockerfilePath) {
def imageName = "${IMAGE_PREFIX}-${serviceName}:${IMAGE_TAG}"
def latestName = "${IMAGE_PREFIX}-${serviceName}:latest"
sh """
docker build \
--pull \
-t ${imageName} \
-t ${latestName} \
-f ${dockerfilePath} .
"""
if (env.REGISTRY?.trim()) {
sh """
docker tag ${imageName} ${REGISTRY}/${serviceName}:${IMAGE_TAG}
docker tag ${latestName} ${REGISTRY}/${serviceName}:latest
docker push ${REGISTRY}/${serviceName}:${IMAGE_TAG}
docker push ${REGISTRY}/${serviceName}:latest
"""
}
}