构建SNAPSHOT时不会触发从属作业

时间:2019-04-11 10:48:36

标签: maven jenkins jenkins-pipeline jenkins-plugins

我有一个依赖于Common-project(A)的项目(B,C,D)。 构建A时,应使用管道触发B,C,D。 所有构建都成功。

Project-A正在生成JAR,该JAR不会在本地(〜/ .m2 / ...)以外的其他任何地方发布

我通常使用Jenkinsfiles,但现在我还尝试直接在Jenkins中使用代码设置最小的管道作业,同时尝试使触发工作。

下面是我为测试而创建的最少管道作业。

对于所有项目,我都勾选了“每当构建SNAPSHOT依赖项时就构建”

在构建日志中,我可以看到这两个项目: [INFO] [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: '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>

我无法弄清楚在构建A时触发项目B的其他需求。

2 个答案:

答案 0 :(得分:1)

请参阅Pipeline Maven Plugin FAQ > My downstream pipelines don't get triggered even if I use "Build whenever a SNAPSHOT dependency is built"

要配置Jenkins Pipeline Maven集成以触发mvn install上的下游管道:

  • 更改全局配置:

    • 导航至“管理Jenkins /全局工具配置”
    • 点击“添加发布者”,然后选择“管道图发布者”
    • 在“下游管道触发器”部分中,将“ Maven生命周期阈值”从“部署”更改为“安装” Pipeline Maven Plugin > Global Configuration > Trigger Downstream Pipelines > Maven lifecycle threshold
  • 或在上游管道的脚本中,配置withMaven(options: [pipelineGraphPublisher(lifecycleThreshold: 'install')]) {...}

也请不要忘记在下游管道(项目B)上启用“每当构建SNAPSHOT依赖项时就进行构建”(properties([pipelineTriggers([snapshotDependencies()])])

答案 1 :(得分:0)

我认为问题在于方法recordGeneratedArtifact是使用时间戳版本(“版本:1.0-20191009.204621-22”)而不是“ -SNAPSHOT”调用的,因此listUpstream和listDownstream查询无法返回结果...