#maven #jenkins #jenkins-pipeline #jenkins-plugins
#maven #дженкинс #дженкинс-конвейер #дженкинс-плагины
Вопрос:
У меня есть проект (B, C, D), который зависит от общего проекта (A). При сборке A B, C, D должны запускаться с использованием конвейеров. Все сборки выполнены успешно.
Project-A создает JAR, который не публикуется нигде, кроме как локально (~/.m2/…)
Обычно я использую Jenkinsfiles, но на данный момент я также настроил минимальные конвейерные задания с кодом непосредственно в Jenkins, пытаясь заставить запуск работать.
Ниже приведены минимальные задания конвейера, которые я создал для тестирования.
Для всех проектов я поставил галочку «Строить всякий раз, когда создается зависимость от моментального снимка»
В журналах сборки я вижу это для обоих проектов: [INFO] [jenkins-event-spy] Генерируется /var/lib/jenkins/workspace/ProjectName@tmp/withMavend4286f3f/maven-spy-20190411-121907-5107444902202263660415.log
Проект конвейера
node{
stage ('Build'){
git branch: 'master', credentialsId: 'theID', url: 'git@github.com:ORG/PROJECT-A.git'
withMaven(
maven: 'Maven_3_6_0',
jdk: 'Java1.8'
) {
sh "mvn clean install"
}
}
}
Конвейер проекта B
node{
stage ('Build'){
git branch: 'master', credentialsId: 'theID', url: 'git@github.com:ORG/PROJECT-B.git'
withMaven(
maven: 'Maven_3_6_0',
jdk: 'Java1.8'
) {
sh "mvn clean install"
}
}
}
Проект B pom.xml объявление зависимости
<dependency>
<groupId>com.myorg</groupId>
<artifactId>projecta</artifactId>
<version>1.0-SNAPSHOT</version>
</dependency>
Я не могу понять, что еще нужно для запуска проекта B при создании A.
Ответ №1:
Пожалуйста, ознакомьтесь с Часто задаваемыми вопросами о плагине Maven для конвейера> Мои нижестоящие конвейеры не запускаются, даже если я использую «Build всякий раз, когда создается зависимость от моментального снимка»
Чтобы настроить интеграцию Jenkins Pipeline Maven для запуска нижестоящих конвейеров на mvn install
:
-
Либо измените глобальную конфигурацию:
-
Или в сценарии восходящего конвейера настройте
withMaven(options: [pipelineGraphPublisher(lifecycleThreshold: 'install')]) {...}
Пожалуйста, также не забудьте в нижестоящих конвейерах (проект B) включить «Строить всякий раз, когда создается зависимость от моментального СНИМКА» ( properties([pipelineTriggers([snapshotDependencies()])])
)
Ответ №2:
Я думаю, проблема в том, что метод recordGeneratedArtifact вызывается с меткой времени («версия:1.0-20191009.204621-22 «) версия вместо «-SNAPSHOT», поэтому запросы listUpstream и listDownstream не могут возвращать результат…