spring-boot - Jenkins:从 maven 中提取版本和 artifactid 以获得 docker 图像名称/标签
问题描述
我正在使用 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'
}
}
}
}
}
解决方案
您可以使用 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
推荐阅读
- r - 更改 as.Date 的默认行为
- powershell - 如何在不显着增加其大小的情况下在 PowerShell 中保存文本文件?
- html - 通过单击内部 div 更改外部 div 的颜色(仅 css 和 html)
- python - 如何判断一组 M 条件中的 N 个条件在 Python 中是否为真?
- php - 如何将这些查询合并为一个?
- spring-boot - 命中/actuator/refresh端点后如何在运行时重新加载spring bean?
- c# - 需要时滚动 Telerik RadTextBox - 不是 RadTextBoxControl
- c# - 创建新表删除以前创建的表
- javascript - (index):44 Uncaught TypeError: Cannot read property 'type' of undefined ;at getanswer ((index):44) ;at HTMLButtonElement.onclick ((index):204)
- javascript - 如何处理表单 API 提交警报消息?