【问题标题】:How can I trigger a Jenkins job based on what is essentially a true / false state?如何根据本质上是真/假状态触发 Jenkins 作业?
【发布时间】:2016-06-19 21:13:39
【问题描述】:
我有两组 Jenkins 作业来运行端到端测试 - 一个用于两个数据库平台中的每一个。
我们只有一台 Web 应用服务器,所以我们希望每天切换一次或两次数据库平台。
目前,只有一个数据库平台到位,端到端测试作业会在成功签入时触发。但是,对于两组端到端测试作业,我们希望根据所在的数据库触发适当的作业集。有没有办法这样做?
【问题讨论】:
标签:
jenkins
continuous-integration
automated-tests
【解决方案1】:
当然。也有几种不同的方法。
如果您有一个可以运行任意一组测试的作业
最简单的 grok 是使用构建步骤来计算真/假状态的值并将其设置为环境变量,以便后续步骤可以使用。这是在转向更易于维护或更灵活的替代方案之前对其进行原型设计的好方法。
您可以使用构建参数将值传递给作业。 Jenkins Parameterized Build 插件为此提供了一些接口:您可以通过 GUI、rest API 或通过另一个作业中的构建后步骤来完成。
您可以结合使用 groovy 脚本和 Pipeline / Jenkins 2 来选择要运行的构建节点(或步骤)。此逻辑可以作为 Jenkins 文件进入您的源代码管理。
还有其他几种方法,但这些是最初可供选择的方法。我建议使用 #1 进行原型设计,然后根据您是否已经使用 Pipeline / Jenkins 2 在其他两个之间进行选择。
如果您有两份工作并且需要在它们之间进行选择
Pipeline / Jenkins 2 解决方案在这里运行良好。在 Jenkins 1 中,您可以使用 Parameterized Build 插件,该插件可以根据作业状态触发构建(因此,如果“是 mongoDb”作业失败,则运行 SQL 测试等),但 Pipeline 选项是我的推荐。