ci: use Docker agent for Maven build stage on Windows Jenkins

Run mvn inside maven:3.9-eclipse-temurin-21 Linux container via Docker
Pipeline plugin; Docker/SSH deploy stages remain on native agent so
Docker Desktop socket is available for image push and SSH for deploy.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
这个提交包含在:
XuqmGroup 2026-04-24 21:42:52 +08:00
父节点 1d49d97b01
当前提交 8d97ebf8d8

19
Jenkinsfile vendored
查看文件

@ -1,5 +1,5 @@
pipeline { pipeline {
agent any agent none
parameters { parameters {
choice(name: 'SERVICE', choices: ['tenant-service', 'im-service', 'push-service', 'update-service'], description: '要构建的服务模块') choice(name: 'SERVICE', choices: ['tenant-service', 'im-service', 'push-service', 'update-service'], description: '要构建的服务模块')
@ -18,21 +18,31 @@ pipeline {
stages { stages {
stage('Checkout') { stage('Checkout') {
agent any
steps { steps {
checkout scm checkout scm
stash name: 'source', includes: '**/*'
} }
} }
stage('Build JAR') { stage('Build JAR') {
agent {
docker {
image 'maven:3.9-eclipse-temurin-21'
args '-v maven-repo:/root/.m2'
}
}
steps { steps {
sh """ unstash 'source'
mvn -pl ${params.SERVICE} -am -DskipTests -q clean package sh "mvn -pl ${params.SERVICE} -am -DskipTests -q clean package"
""" stash name: 'jar', includes: "${params.SERVICE}/target/*.jar,${params.SERVICE}/Dockerfile,Dockerfile"
} }
} }
stage('Docker Build & Push') { stage('Docker Build & Push') {
agent any
steps { steps {
unstash 'jar'
withCredentials([string(credentialsId: 'ACR_PASSWORD', variable: 'ACR_PASS')]) { withCredentials([string(credentialsId: 'ACR_PASSWORD', variable: 'ACR_PASS')]) {
script { script {
def imageName = "${ACR_REGISTRY}/${ACR_NAMESPACE}/${params.SERVICE}:${params.IMAGE_TAG}" def imageName = "${ACR_REGISTRY}/${ACR_NAMESPACE}/${params.SERVICE}:${params.IMAGE_TAG}"
@ -48,6 +58,7 @@ pipeline {
} }
stage('Deploy to Production') { stage('Deploy to Production') {
agent any
when { expression { return params.DEPLOY } } when { expression { return params.DEPLOY } }
steps { steps {
withCredentials([sshUserPrivateKey(credentialsId: 'PROD_SSH_KEY', keyFileVariable: 'SSH_KEY')]) { withCredentials([sshUserPrivateKey(credentialsId: 'PROD_SSH_KEY', keyFileVariable: 'SSH_KEY')]) {