【问题标题】:How to schedule a build in Jenkins?如何在 Jenkins 中安排构建?
【发布时间】:2011-10-23 10:28:08
【问题描述】:

如何安排 Jenkins 构建,使其只能在每天的特定时间构建?

例如下午 4 点开始

0 16 1-7 * *

我理解为“每个月的周一到周日下午 4 点钟的 0 分钟”,但是它每分钟都在构建 :(

如果有任何建议,我将不胜感激。谢谢!

【问题讨论】:

  • 实际在哪里输入这个来安排工作?
  • 在您的项目部分“构建触发器”的配置中选择“定期构建”

标签: jenkins build cron schedule timetable


【解决方案1】:

请阅读其他答案和 cmets,还有很多我在回答这个问题时不知道的信息和细微差别描述(哈希函数?)。

根据 Jenkins 自己对调度任务的帮助(“?”按钮),指定了 5 个字段:

此字段遵循 cron 的语法(略有不同)。具体来说,每一行由 5 个字段组成,由 TAB 或空格分隔: MINUTE HOUR DOM MONTH DOW

我刚刚尝试在下午 4 点 42 分(我的大致当地时间)找到一份工作,但它在以下情况下工作,尽管它花了大约 30 秒的额外时间:

42 16 * * *

如果你想多次,我认为以下应该工作:

0 16,18,20,22 * * *

每天下午 4 点、6 点、8 点和 10 点。

【讨论】:

  • 对,星星太多了。我的坏问题。我会修正我的话题。
  • 嗨,Michal,日程安排仍然有问题吗?你接受了我的回答,但你的评论只涉及解决问题,我看到你已经完成了。谢谢。
【解决方案2】:

在作业配置中可以定义各种构建触发器。通过定期构建,您可以通过定义日期或星期几以及执行构建的时间来安排构建。

格式如下:

分钟 (0-59)、小时 (0-23)、天 (1-31)、月 (1-12)、星期几 (0-6)

可以插入代表单词 Hash 的字母 H 代替任何值,它将根据您的项目名称的哈希码计算参数,这样如果您正在构建多个项目您的构建机器同时进行,比如说每天午夜,它们并非都同时开始构建执行,每个项目根据其哈希码在不同的分钟开始执行。您还可以将值指定为介于数字之间,即 H(0,30) 将返回项目的哈希码,其中可能的哈希值为 0-30

示例:

周一至周五每天早上 08:30 开始构建:

  • 30 08 * * 1-5

工作日每天构建两次,午餐时间 12:00 和午夜 00:00,周日至周四:

  • 00 0,12 * * 0-4

每天下午 4:00 之间开始构建。 - 下午 4 点 59 分或 16:00 -16:59,具体取决于项目哈希:

  • H 16 * * 1-5

午夜开始构建:

  • @midnight

或在每周六午夜开始构建:

  • 59 23 * * 6

每个月的第一天凌晨 2:00 - 02:30:

  • H(0-30) 02 01 * *

more on CRON expressions

【讨论】:

  • 我认为每天下午 4:00 之间开始构建。 - 下午 4 点 59 分或 16:00 -16:59 取决于项目哈希:应该是 H 16 * * * (Not H 16 * * 1-5)
  • 谢谢,但你确定1-6 是周一到周五吗?不是1-5 吗?等
  • 如果 1-6 是周一 - 周六,那么 0-5 应该是周日 - 周五。 +1 有很多有用的例子。
  • 更正:H(0,30) 02 01 * * 应该是 H(0-30) 02 01 * *
【解决方案3】:

这个例子是每天早上 9 点左右,下午 5 点左右一次。 (按 cmets 编辑)。

H 9,17 * * * 

【讨论】:

  • 不完全是。这将在上午 9:00 和上午 9:59 之间运行一次,以及在下午 5:00 和下午 5:59 之间运行一次。
  • 更准确地说:该作业将在上午 9:00 至上午 9:59 之间开始一次,并在下午 5:00 至下午 5:59 之间开始一次。如果需要更长的时间,该作业不会被终止。
  • 请注意“将在 0900 和 0959 之间运行一次”:H 代表“哈希” - 它是基于项目的哈希,因此该项目将始终在 9 日的同一分钟运行小时和第 17 小时。如果哈希算法为您的项目生成数字“16”,那么您的项目作业将始终从 0916 和 1716 开始。
【解决方案4】:

在 Jenkins 中安排作业的步骤:

  1. 点击职位要求的“配置”
  2. 向下滚动到“构建触发器” - 副标题
  3. 点击定期构建的复选框
  4. 在“计划”字段中添加时间计划,例如,@midnight

注意:在 schedule 字段下,可以看到上一次和下一次的日期时间运行。

Jenkins 还支持预定义的别名来安排构建:

@hourly@daily@weekly@monthly@midnight

@hourly --> 每小时开始时构建 --> 0 * * * *

@daily, @midnight --> 每天午夜构建 --> 0 0 * * *

@weekly --> 每周日凌晨的午夜构建 --> 0 0 * * 0

@monthly --> 每月第一天午夜构建 --> 0 0 1 * *

【讨论】:

    【解决方案5】:

    要在每天下午 4 点到 6 点之间构建一次,您可以使用

    H H(15-17) * * *

    【讨论】:

      【解决方案6】:
      H H(5-21)/2 * * 1-5
      

      周一至周五每 2 小时构建一次

      【讨论】:

        【解决方案7】:

        这似乎是cron expression。请注意,您的示例仅在每个月的第一天到第七天 16:00 构建。您可能有某种其他错误,或者 Jenkins 使用了非标准 CRON 表达式。

        【讨论】:

          【解决方案8】:

          在 Jenkins 中,我们的格式如下:

          分钟(0-59) 小时(0-23) 天(1-7) 月(1-12) 星期几

          【讨论】:

            【解决方案9】:

            Jenkins 使用Cron Expressions

            您只需键入@hourly 即可简单地安排每小时构建。

            【讨论】:

              【解决方案10】:

              从周一到周日下午 4 点试试这个

              0 16 * * *

              您可以在 Jenkins 下的“定期构建”中查看配置时显示的描述消息。(请参阅下面给出的屏幕截图)

              “上次运行时间为 IST 2019 年 11 月 17 日星期日下午 4:00:05; 下次运行时间为 IST 2019 年 11 月 18 日星期一下午 4:00:05。"

              截图

              2019 年 11 月 18 日星期一 4:00:05 PM IST 时间中的 " 指的是我们当前的系统秒数。

              【讨论】:

                猜你喜欢
                • 2015-08-23
                • 1970-01-01
                • 1970-01-01
                • 2018-09-30
                • 2012-09-10
                • 1970-01-01
                • 1970-01-01
                • 1970-01-01
                • 1970-01-01
                相关资源
                最近更新 更多