我在两台不同的计算机上有2个Jenkins实例。
其中一个涉及Windows和Linux版本,另一个涉及OS X版本。
我们正在使用Github(更准确地说是Github拉取请求),因此我们设置Github Pull Request Plugin for Jenkins以在发出拉取请求时自动启动构建。
它工作得相当好(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将被错误地标记为有效,而构建失败。不太棒。完全没有。
你们中的任何一个人都会有类似的设置(或者足够接近的东西)以及使这项工作可靠的方法吗?任何工作解决方案都很好,包括使用(一个)其他插件,改变物理配置。无论什么能让事情变得更好,因为这对开发者来说是一场噩梦。
答案 0 :(得分: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
这样,构建流作业将保持“运行”,直到所有构建完成,并且如果任何子构建失败,则整个构建失败。