生成SNAPSHOT时不会触发Jenkins Multibranch项目

时间:2019-05-15 08:46:24

标签: java maven jenkins

我在Jenkins(v2.164.3)中有不同的Maven项目,它们位于我们的本地gitlab服务器中。

所有项目均定义以下Jenkinsfile

node {
    stage('git') {
        checkout scm
    }
    stage('compile') {
        withMaven(mavenSettingsConfig: 'e228f408-7768-4374-b8e1-259321e2fa99') {
            bat "mvn clean compile"
        }
    }
    stage('test') {
        withMaven(mavenSettingsConfig: 'e228f408-7768-4374-b8e1-259321e2fa99') {
            bat "mvn test"
        }
    }
    stage('install') {
        withMaven(mavenSettingsConfig: 'e228f408-7768-4374-b8e1-259321e2fa99') {
            bat "mvn install -DskipTests"
        }
    }
}

在多分支项目的配置中,选项Build whenever a SNAPSHOT dependency is built被选中。 (未选中多个分支的配置中的相同选项)

不幸的是,在我的情况下,此检查似乎被忽略了,因为在构建项目(projectX)(例如,创建SNAPSHOT jar的developer分支)时,所有下游项目(及其develop分支)都定义了依赖项在他们对projectX的pom中,不会被触发。

怎么了?还是我需要在多分支项目的所有分支中检查该选项?还是我需要更改Jenkinsfile中的某些内容?

谢谢

1 个答案:

答案 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')]) {...}

注意:关于声明mavenSettingsConfig: 'e228f408-...',请注意,您可以全局或在Jenkins Pipeline Maven Integration > Features > Maven Settings中记录的文件夹级别声明Maven设置