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 """ sudo docker build \ --pull \ -t ${imageName} \ -t ${latestName} \ -f ${dockerfilePath} . """ if (env.REGISTRY?.trim()) { sh """ sudo docker tag ${imageName} ${REGISTRY}/${serviceName}:${IMAGE_TAG} sudo docker tag ${latestName} ${REGISTRY}/${serviceName}:latest sudo docker push ${REGISTRY}/${serviceName}:${IMAGE_TAG} sudo docker push ${REGISTRY}/${serviceName}:latest """ } }