141 lines
3.6 KiB
Groovy
141 lines
3.6 KiB
Groovy
pipeline {
|
|
agent { label '构建机1' }
|
|
|
|
environment {
|
|
IMAGE_PREFIX = "im"
|
|
IMAGE_TAG = "${BUILD_NUMBER}"
|
|
DOCKER_CREDS = 'im_harbor_key'
|
|
|
|
DOCKER_BUILDKIT = "1"
|
|
|
|
// Harbor 示例:
|
|
// REGISTRY = "harbor.xxx.com/im"
|
|
REGISTRY_HOST = "reg.nxsir.cn"
|
|
REGISTRY = "reg.nxsir.cn/im"
|
|
}
|
|
|
|
stages {
|
|
|
|
stage('拉取代码') {
|
|
steps {
|
|
checkout scm
|
|
}
|
|
}
|
|
|
|
stage('Login Registry') {
|
|
steps {
|
|
withCredentials([
|
|
usernamePassword(
|
|
credentialsId: "${DOCKER_CREDS}",
|
|
usernameVariable: 'DOCKER_USERNAME',
|
|
passwordVariable: 'DOCKER_PASSWORD'
|
|
)
|
|
]) {
|
|
sh """
|
|
set -e
|
|
echo "\$DOCKER_PASSWORD" | sudo docker login ${REGISTRY_HOST} -u "\$DOCKER_USERNAME" --password-stdin
|
|
"""
|
|
}
|
|
}
|
|
}
|
|
|
|
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 = "${env.IMAGE_PREFIX}-${serviceName}:${env.IMAGE_TAG}"
|
|
def latestName = "${env.IMAGE_PREFIX}-${serviceName}:latest"
|
|
|
|
sh """
|
|
sudo docker build \
|
|
--pull \
|
|
-t ${imageName} \
|
|
-t ${latestName} \
|
|
-f ${dockerfilePath} .
|
|
"""
|
|
|
|
if (env.REGISTRY?.trim()) {
|
|
|
|
sh """
|
|
sudo docker tag ${imageName} ${env.REGISTRY}/${serviceName}:${env.IMAGE_TAG}
|
|
sudo docker tag ${latestName} ${env.REGISTRY}/${serviceName}:latest
|
|
|
|
sudo docker push ${env.REGISTRY}/${serviceName}:${env.IMAGE_TAG}
|
|
sudo docker push ${env.REGISTRY}/${serviceName}:latest
|
|
|
|
sudo docker rmi ${env.REGISTRY}/${serviceName}:${env.IMAGE_TAG} || true
|
|
sudo docker rmi ${env.REGISTRY}/${serviceName}:latest || true
|
|
"""
|
|
}
|
|
|
|
sh """
|
|
sudo docker rmi ${imageName} || true
|
|
sudo docker rmi ${latestName} || true
|
|
|
|
sudo docker builder prune -f || true
|
|
"""
|
|
} |