【问题标题】:Jenkins: build one job after another with some delay詹金斯:一个接一个地建立一个工作,有一些延迟
【发布时间】:2013-07-18 21:51:12
【问题描述】:

我在 Jenkins 有 2 个工作:QA 和 Dev。 在开发工作中,我选中了“构建其他项目后构建”选项并设置项目名称 = QA,以便在构建开发工作后构建 QA 工作。 但在我的特殊情况下,我需要在开发工作构建后 5 分钟内开始构建 QA 工作。我该怎么做?也许我可以添加一些带有一些数据的构建步骤来添加这个延迟?

TIA, 安娜

【问题讨论】:

  • 为什么要等 5 分钟?是否可以直接检查您正在等待的事情是否已经发生/完成?
  • 因为你的工作,如果依赖于多个上游触发器,最终可能会启动多个工作而不是一个。如果发生任何一个触发器,请等待 xx 分钟,然后运行该作业。这似乎正是我们现在所需要的。 A) 上游项目推出变更。 B) 触发 10 个下游模块以确保没有中断。 C)底部作业,连接到它们,也需要运行,但只运行一次。安静的时间,比如 10 分钟,似乎是需要的。

标签: jenkins


【解决方案1】:

“高级项目选项”中有一个"Quiet Period" 选项可用。您可以输入值 300(以秒为单位)以将作业的启动延迟 5 分钟。

【讨论】:

  • 更新:现在这个Quiet Period 选项是构建触发器选项中的一个复选框。
  • 也可以在 Jenkinsfile 中设置: options { quietPeriod(30) } 参见jenkins.io/doc/book/pipeline/syntax中的选项部分
  • 这看起来正是我们项目所需要的!有影响力的变化可能来自十几个父工作或祖父母工作,目前导致巨大的级联。将 quietPeriod 调整为 30 分钟左右,这可能是我们需要将事情减少到单个构建而不是 15 分钟的时间。
  • Fisher Coder:更新:“构建触发器”选项中不再有“静默期”选项。
  • 注意:Advanced Project Options 中的“Quiet Period”选项将是系统范围的默认值,对于像 CVS 这样一一提交文件更改而不是组合在一起的 SCM 工具很有用,不适用于 Subversion ,Git 或 Mercurial,提交是原子的。
【解决方案2】:

如果你使用的是 REST api,你可以像这样添加一个 url 获取值:

http://jenkins/job/jobname/build?delay=4

这将延迟 4 秒并开始作业。

【讨论】:

  • 如果您不使用 REST api,是否有办法通过此延迟? IE。如果您使用的是参数化构建插件?我尝试添加“延迟”作为附加参数,但没有效果
  • 我很确定您可以将其添加到作业的 URL 并像往常一样运行它。 your-jenkins.url/jobs/name-of-job/build?delay=5 试一试。我现在没有自己的 vpn 连接来测试它。
  • 但我不是通过 URL 运行作业,而是使用 Jenkins UI(参数化构建插件)从另一个作业触发它。那里好像没有加延迟的地方?
  • 请注意,delay 的行为与 Quiet Period 相同。它不会延迟添加到队列中,它会在前一个作业之后延迟作业的开始。
【解决方案3】:

我知道这个话题已经很老了,但万一其他人在这里寻找答案。 使用参数化构建时,请记住转义“&”。您可以将其替换为:“%26”或将整个 URL 放在引号中。它会起作用的。还请记住使用延迟作为第一个参数。

【讨论】:

  • 这看起来正是我需要的答案,但不幸的是,你没有提供足够的细节让我弄清楚。我可能会通过反复试验得到它,但如果你能澄清这个答案,我会支持它。
  • Karol Majewski:你能解释一下你的答案吗?
【解决方案4】:

为了让它更简单,而不必担心使用延迟从 URL 触发,有一个 Jenkins 插件,它可以帮助您以尽可能多的延迟即时调度作业(可在您运行构建时配置并支持参数化构建以及)。更多详情请查看Plugin Pags、GitHub

【讨论】:

    猜你喜欢
    • 2019-08-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-09-29
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多