3

我在两台不同的计算机上有 2 个 Jenkins 实例。

其中一个处理 Windows 和 Linux 构建,另一个处理 OS X 构建。

我们正在使用 Github(更准确地说是 Github 拉取请求),因此我们为 Jenkins 设置了 Github 拉取请求插件,以便在发出拉取请求时自动启动构建。

它工作得相当好(PR 状态随构建状态更新,即“待定”、“成功”或“失败”),但遗憾的是,每个平台上的 3 个构建似乎彼此不知道。因此,可能会发生以下情况:

1: OS X build starts and sets the status to "pending"
2: Windows build starts and sets the status to "pending"
3: OS X build fails and sets the status to "failed"
4: Windows build succeeds and sets the status to "success"

显然,在这种情况下,PR 将被错误地标记为有效,而构建失败。不是很棒。完全没有。

你们中的任何一个人是否会有类似的设置(或足够接近的设置)以及使这项工作可靠的方法?任何可行的解决方案都可以,包括使用(一个)其他插件,更改物理配置。任何可以让事情变得更好的东西,因为这对开发人员来说目前是一场噩梦。

4

1 回答 1

3

解决方案是将您的 GitHub PR 构建器构建配置为 jenkins 构建流作业:

build("unit-tests");
parallel (
    // osx and windows will be scheduled in parallel.
    { build("osx-integration") },
    { build("windows-integration") },
)

https://wiki.jenkins-ci.org/display/JENKINS/Build+Flow+Plugin

这样,构建流程作业将保持“运行”状态,直到所有构建完成,如果任何子构建失败,整个构建都会失败。

于 2014-02-14T12:01:04.250 回答