【问题标题】:Jenkins: how to block a job based on results of another job?詹金斯:如何根据另一份工作的结果阻止一份工作?
【发布时间】:2015-10-20 22:31:33
【问题描述】:

Job1 在代码交付时运行。 Job2 每天运行 3 次。

这些是独立的、无等级的工作。

我的要求是仅当 Job1 导致 SUCCESS 或 UNSTABLE 时才运行 Job2。


我检查了 BuildResultsTrigger。它不工作。 另外,我知道管道插件,但这将是一个长期目标。

目前,我需要一种快速的方法来允许 Job2 运行,前提是 Job1 的最后一次执行成功或不稳定。 Job2 可以启动,只要它没有完成它的构建步骤。如果我可以在 Job2 的开头插入一个构建步骤来检查 Job1 结果并以某种方式使 Job2 失败,那对我有用。

【问题讨论】:

    标签: jenkins jobs


    【解决方案1】:

    @user2984213 最简单​​、最快的方法是:

    在作业结束时 1 在某处创建一个文件,如果作业成功,则将其称为 green_light.txt。否则 - 强制删除文件。

    然后在作业 2 开始时检查文件是否存在。

    【讨论】:

    • 简,你的想法和我的想法一模一样。你有一个例子来加快我的速度吗?我了解在 Job1 构建后操作中,我需要检索构建状态,然后在状态条件下强制创建或强制删除文件。
    • 使用 Jenkins 中的作业逻辑,您可以将作业 1 中的文件创建定义为最后一个命令。除非之前一切正常,否则它不会被执行。如果您不能使用它,例如,您可以在构建开始时定义一个变量 ISSUES=0,然后如果有任何失败 - 将其设置为 1。最后检查变量状态,如果它是 1 - 创建文件,如果它是 0 - 尝试删除文件,防止 'rm' 由于文件不存在而失败。例如,在工作 2 中,您可以使用: set +e;统计 green_light.txt;如果 [ $? -ne 0 ];然后 echo "job1 was failed, 正在撤退..." exit 0 fi
    【解决方案2】:

    使用构建触发器来完成此任务..您有很多选择 1.触发器,2.Multijob 插件,3.构建流程插件

    【讨论】:

    • 嗨,Mahi,看起来你正在寻找有这些想法的连锁工作。我不能拥有那个。 Job2 有自己的时间表,必须严格遵守。所以没有来自 Job1 的触发器。
    猜你喜欢
    • 2011-11-26
    • 1970-01-01
    • 1970-01-01
    • 2011-02-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多