我正在使用 spring boot maven 插件来生成我的 docker 镜像。
我在我的 pom 文件中将图像名称定义为动态的。格式:my-registry.com/prefix/${project.artifactId}:${project.version}
如何获取生成的图像的动态名称?我需要它进行进一步的构建步骤(部署)
我的构建管道如下所示:
pipeline {
agent {
docker {
image 'maven:3-jdk-11'
args '-v /root/.m2:/root/.m2'
}
}
stages {
stage('Clone sources') {
steps {
git branch: 'master',
credentialsId: 'xxxxx',
url: 'xxxxxx'
}
}
stage('Build') {
steps {
sh "mvn -Dmaven.test.failure.ignore=true clean install"
}
post {
success {
junit '**/target/surefire-reports/TEST-*.xml'
archiveArtifacts 'myproject-server/target/*.jar'
}
}
}
stage('Build and Push Docker Image') {
steps {
withCredentials([usernamePassword(credentialsId: 'xxxxx', passwordVariable: 'NEXUS_PASSWORD', usernameVariable: 'NEXUS_USER')]) {
sh "mvn -pl myproject-server -DskipTests=true spring-boot:build-image -DDOCKER_REGISTRY=xxxx -DDOCKER_REGISTRY_USER=$NEXUS_USER -DDOCKER_REGISTRY_PASSWORD=$NEXUS_PASSWORD"
}
}
}
stage('Deploy to DEV') {
steps {
sshagent(credentials : ['xxxx']) {
sh 'ssh -o StrictHostKeyChecking=no user@server DOCKER RUN LOGIC HERE WITH CORRECT IMAGE NAME'
}
}
}
}
}
答案 0 :(得分:0)
您可以使用 Jenkins Pipeline Utility Steps 插件 (https://www.jenkins.io/doc/pipeline/steps/pipeline-utility-steps/) 读取 POM 文件并提取值。
pom = readMavenPom file: 'pom.xml'
pom.version
但正如他们的文档中所述
<块引用>避免使用此步骤并编写MavenPom。最好使用 sh 步骤来运行 mvn 目标。例如
你可以改用这个命令:
def version = sh script: 'mvn help:evaluate -Dexpression=project.version -q -DforceStdout', returnStdout: true