Есть ли способ программно указать pom.xml путь в файле Дженкинса

#maven #jenkins #jenkins-pipeline #jenkins-groovy

Вопрос:

В декларативном конвейере я вручную указываю pom.xml путь в файле Дженкинса, и Дженкинс может найти его, как и ожидалось, во время сборки.

 pipeline {
    agent any

    options {
        timestamps()
    }

    stages {

        stage('Compile') {
            steps {
                withMaven(maven: 'MAVEN_HOME') {
                    sh 'mvn -f /Users/jo/.jenkins/workspace/DeclarativePipelineDemo/Demo/pom.xml clean install' //filepath
                }
            }
        }
}
 

Теперь, есть ли более элегантный способ сказать Дженкинсу, чтобы он динамически записывал путь к workspace/pom.xml классу непосредственно из моего проекта, чтобы мне не нужно было указывать его вручную?

Комментарии:

1. Если ваш файл Дженкинса в том же репо pom.xml, вы можете использовать относительный путь. Когда Дженкинс запустит ваш конвейер, он автоматически клонирует репозиторий, содержащий файл Дженкинса, в подчиненный файл Дженкинса. Если pom.xml в базовом каталоге проекта вы можете попробовать sh mvn -f pom.xml ...

2. @yong, вы абсолютно правы. Относительный путь работает нормально. Если вы поместите свой ответ в поле для ответов, я могу отметить его как правильный ответ.

3. Файл pom должен находиться в корневом каталоге репозитория git, который вы используете, поэтому по умолчанию нет необходимости явно определять файл pom с помощью -f опции.

4. @khmarbaise, помпона нет в корне, и я не хочу держать его в корне

5. @yong, каково точное значение флага -f ?

Ответ №1:

Если ваш файл Дженкинса в том же репо pom.xml, вы можете использовать относительный путь.

Когда Дженкинс запустит ваш конвейер, он автоматически клонирует репозиторий, содержащий файл Дженкинса, в подчиненный файл Дженкинса.

Если pom.xml в базовом каталоге проекта вы можете попробовать

 sh mvn -f pom.xml ...