Jenkins:Ivy build 随机触发其他项目

Posted

技术标签:

【中文标题】Jenkins:Ivy build 随机触发其他项目【英文标题】:Jenkins: Ivy build randomly triggering other projects 【发布时间】:2016-09-25 01:22:29 【问题描述】:

我正在使用 Jenkins 在 GitHub 中构建一些 Ivy 项目(每个项目包含多个组件)。

比方说,我有 Ivy 项目 A(包含组件 a1、a2、a3)、B(包含组件 b1 和 b2)和 C(组件 c1、c2、c3、c4)。每个组件都有自己的ivy.xml 文件。

我在 Jenkins 中创建了一个 Ivy 作业,我有一个变量用于设置 GitHub 项目的名称,然后作业会克隆存储库。

例如,在我拥有的作业的“GitHub 项目”字段中:https://mygithub.com/myorg/$project,而 project 是作业参数,可以是 ABC

当我触发作业时,假设传递 $project = A,我希望构建组件 a1、a2 和 a3。这确实发生了。

但是,我还在控制台输出的末尾得到以下几行:

Warning: you have no plugins providing access control for builds, so falling back to legacy behavior of permitting any downstream builds to be triggered
Triggering a new build of Build_and_JUnit » Build-develop » myorg.projectB.b1
Triggering a new build of Build_and_JUnit » Build-develop » myorg.projectC.c1
Triggering a new build of Build_and_JUnit » Build-develop » myorg.projectC.c3
Triggering a new build of Build_and_JUnit » Build-develop » myorg.projectC.c4
Finished: SUCCESS

(ps.:这些只是例子)

... 组件 b1、c1、c3 和 c4 已构建!

我不知道 Jenkins 为什么要构建其他组件,因为我只要求构建 A。这些组件甚至不是 A 组件的依赖项。

顺便说一句,构建的组件集是随机的——甚至不一致。我认为这与第一行的警告有关。

有什么想法吗?

【问题讨论】:

【参考方案1】:

作业的问题在于参数化的 GitHub 项目名称。

我使用 Jenkinsfile(管道插件)将配置替换为 DSL 作业,现在每个项目都有一个作业,问题消失了。

【讨论】:

以上是关于Jenkins:Ivy build 随机触发其他项目的主要内容,如果未能解决你的问题,请参考以下文章

应该如何设置 Jenkins 中的 Ivy 构建项目?

Jenkins job DSL - 每当构建 Ivy 依赖项时构建

避免 Jenkins 不必要的 IVY 快照发布

Jenkins里自动构建任务之---日程表设置

Bitbucket 触发内网 Jenkins Build

Ivy 解决了 Oracle JDBC 依赖项,但不部署具有其他依赖项的 jar