【问题标题】:queue job all day and execute it at a specified time全天排队作业并在指定时间执行
【发布时间】:2015-02-08 08:21:47
【问题描述】:

是否有一个插件或者我可以以某种方式配置它,一个作业(由其他 3 个作业触发)排队直到指定时间,然后才执行整个队列?

我们的情况是这样的:

  1. 我们为 3 个分支运行了测试
  2. 这些分支的 3 个构建作业中的每一个都会触发立即运行的相同冒烟测试作业
  3. 这些分支的 3 个构建作业中的每一个都会触发相同的完整测试作业

第 1 点和第 2 点工作得很好。

complete-test-job 应该整天排队测试,只在晚上或晚上执行它们(从定义的时间,如下午 6 点开始),以便测试在晚上和白天运行工作是沉默的。 使用最新版本无法在指定时间触发完整测试作业。我们绝对需要上游构建作业的触发器(因为升级插件,我们不想再次运行已经运行的版本)。

【问题讨论】:

    标签: testing jenkins queue delay jobs


    【解决方案1】:

    这似乎是一个相当奇怪的要求。如果您现在不想要构建,为什么要排队......如果您以后想要构建,那么您现在不应该触发它。

    您可以使用Jenkins Exclusion plugin。让您的测试作业使用某种资源。做另一份工作,其任务是在白天“持有”资源。在使用资源时,测试作业不会运行。

    这个问题:您将通过排队非执行作业来杀死您的执行者,并且不会有其他作业的免费执行者。

    【讨论】:

    • 我们只想每天运行一次作业(完整测试)。如果有 5 个构建触发该作业,我们只需要这 5 个构建中的最后一个。如果测试一直运行,则存在不应被阻止的许可证(测试软件)并且在某些情况下是最后一个的测试早上构建还没有完成。
    • 在这种情况下,您应该查看测试作业的“安静期”。将其设置为 4 小时。这样,第一次触发后,它会等待 4 小时,如果 4 小时内没有任何反应,它就会真正构建。如果另一个项目在 4 小时内触发构建,它将重置计数器并再次等待。这样,如果您在白天发生了多个触发器,最后一个触发器是在下午 5 点,那么作业将在下午 5+4 点 9 点执行。您可以将安静时间设置为 8 小时,因此白天不会进行任何测试,而是在 5+8 = 1AM
    【解决方案2】:

    我自己没有尝试过,但this 听起来像是解决您问题的方法。

    【讨论】:

      最近更新 更多