首页 > 解决方案 > 构建 SNAPSHOT 时不会触发 Jenkins Multibranch 项目

问题描述

我在 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 的开发分支),所有下游项目(带有他们的开发分支),在他们的 pom 中定义了一个依赖项到 projectX,不会被触发。

怎么了 ?还是我需要检查多分支项目的所有分支中的选项?或者我需要改变我的东西Jenkinsfile吗?

谢谢

标签: javamavenjenkins

解决方案


请参阅Pipeline Maven 插件常见问题解答 > 即使我使用“在构建 SNAPSHOT 依赖项时构建”,我的下游管道也不会被触发

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

  • 更改全局配置:

    • 导航到“管理 Jenkins / 全局工具配置”
    • 单击“添加发布者”并选择“管道图发布者”
    • 在“下游管道触发器”部分中,将“Maven 生命周期阈值”从“部署”更改为“安装” 管道 Maven 插件 > 全局配置 > 触发下游管道 > Maven 生命周期阈值
  • 或者在上游管道的脚本中,配置withMaven(options: [pipelineGraphPublisher(lifecycleThreshold: 'install')]) {...}

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


推荐阅读