#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 ...