如何有条件地触发 Jenkins 中的构建

How to conditionally trigger a build in Jenkins

我有几份工作都将在星期一触发,但第一个项目在第一个星期一和第二个项目在第二个星期一。我无法使用 Jenkins cron 根据条件触发项目 因为 cron 可用于在一天中的特定时间或一天中的一周单独触发项目(例如 0 6 ** 1 在星期一早上 6 点触发项目)而不是基于条件。

我正在寻找一种解决方案,我可以使用 cron 来触发项目,但它只有在通过时才会触发项目。

您可以触发构建、检查条件并在条件不成立时退出构建。在这种情况下,您可以选择使构建失败。

目前jenkins cron不支持根据条件触发项目。 您可以通过两种方式做到这一点

  1. i)最简单的方法是创建两个项目,一个用于 运行 双数周,另一个用于奇数周。

ii) 触发项目后,您可以使用 windows 批处理命令或 shell 脚本编写条件来检查当前周是否符合预期 (Odd/Even)满足继续下一步或失败的条件。

但是这个解决方案的问题是你会有一个不必要的项目。

  1. i)有点困难但稳定的方法是有一个父项目和两个依赖(子)项目——即一个用于偶数,另一个用于奇数

ii) 在父项目中执行一个 shell/windows 批处理命令来检查当前周是奇数还是偶数 - 基于它创建一个变量并将值设置为 true 或false 然后将值写入 属性 文件

iii)然后使用 Jenkins Environment Injector Plugin 将该值转换为环境变量(url - https://plugins.jenkins.io/envinject/) for details on how to convert refer - How to set environment variables in Jenkins?,现在您可以跨项目访问该值

iv) 创建一个新的条件构建步骤(插件 url - https://plugins.jenkins.io/conditional-buildstep/ ) 根据环境变量与预期条件的比较触发您的子项目(即如果“TRUE”则触发奇数周项目)