我有一个项目(B、C、D),它依赖于公共(public)项目(A)。 当 A 构建完成后,B、C、D 应该使用管道来触发。 所有构建均成功。
Project-A 正在生成一个 JAR,该 JAR 不会在本地 (~/.m2/...) 以外的任何地方发布
我通常使用 Jenkinsfiles,但现在我还直接在 Jenkins 中使用代码设置了最小的管道作业,同时尝试让触发工作。
下面是我为测试创建的最小管道作业。
对于所有项目,我都勾选了“每当构建 SNAPSHOT 依赖项时就构建”
在构建日志中我可以看到这两个项目的情况: [信息] [jenkins-event-spy] 生成/var/lib/jenkins/workspace/ProjectName@tmp/withMavend4286f3f/maven-spy-20190411-121907-5107444902202263660415.log
项目A管道
node{
stage ('Build'){
git branch: 'master', credentialsId: 'theID', url: '<a href="https://stackoverflow.com/cdn-cgi/l/email-protection" class="__cf_email__" data-cfemail="64030d1024030d100c11064a070b09" rel="noreferrer noopener nofollow">[email protected]</a>: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: '<a href="https://stackoverflow.com/cdn-cgi/l/email-protection" class="__cf_email__" data-cfemail="baddd3cefaddd3ced2cfd894d9d5d7" rel="noreferrer noopener nofollow">[email protected]</a>: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>
我不知道每当 A 构建时,还需要什么才能触发项目 B。
最佳答案
配置 Jenkins Pipeline Maven 集成以触发 mvn install
上的下游管道:
更改全局配置:
或者在上游管道的脚本中,配置
withMaven(options: [pipelineGraphPublisher(lifecycleThreshold: 'install')]) {...}
也请不要忘记在下游管道(项目 B)上启用“每当构建 SNAPSHOT 依赖项时进行构建”(properties([pipelineTriggers([snapshotDependency()])])
)
关于maven - 构建 SNAPSHOT 时不会触发依赖作业,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55630677/