簡體   English   中英

Jenkins:從 maven 中提取 docker 圖像名稱/標簽的版本和 artifactid

[英]Jenkins: extract version and artifactid from maven for docker image name/tag

我正在使用 spring 啟動 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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM