【问题标题】:TeamCity Manual Build DelayTeamCity 手动构建延迟
【发布时间】:2017-05-18 04:30:47
【问题描述】:

我希望有人对此有解决方案,但我想在 5/10 分钟后开始构建 TeamCity,以便让我的 QA 团队有足够的时间退出系统。但是,如果出现问题,我也希望能够立即启动它。我有来自 Jenkins 的转换,这以前被包含在 Build Paramters build?delay=0secthis 中,这将允许我更新延迟的秒数。 TeamCity 有这样的东西吗?有人想出什么花哨的技巧吗?

我已经考虑过一个 shell 脚本,它只使用我想要触发的构建和延迟时间来调用其余 api。

我也想创建 lambda 函数以使用其余的 api。

但是,我希望能够从网站上执行此操作,并在单击该按钮后延迟构建,但不会让构建在所有这些分钟内占用代理,而只是延迟排队。

【问题讨论】:

    标签: teamcity


    【解决方案1】:

    我不确定 TeamCity 是否有直接处理此问题的设置。 VCS Quiet Period 设置不允许您立即手动启动构建,否则它们将非常适合。

    您可以使用精简构建配置来解决此问题,我们将其称为 CI-Trigger:

    CI-触发器配置:

    • 没有构建步骤
    • 已附加目标 VCS
    • 有一个具有适当静默期设置的 VCS 触发器

    构建系统配置:

    • 具有针对 CI-Trigger 的已完成构建触发器
    • 已附加目标 VCS
    • 构建/部署任何有问题的系统,执行您当前定义的任何其他步骤
    • 没有对 CI-Trigger 有正式依赖,只有完成的构建触发器

    提交后,CI-Trigger 将获取更改并等待指定的静默期。一旦该时间段结束,它将触发此配置,该配置没有构建步骤,并很快完成。因为 Build-System 设置为 CI-Trigger 完成时触发,所以它应该启动。

    有效的结果是 Build-System 被 CI-Trigger 的 Quiet Period 设置大致延迟了。

    如果您需要在没有静默期的情况下运行手动构建,请直接触发 Build-System。无需等待

    【讨论】:

      【解决方案2】:

      简单的方法:将user parameter 添加到构建中,这将指示超时,例如DELAY_TIMEOUT。根据需要设置默认值,例如 600 10 分钟。使用sleep %%DELAY_TIMEOUT%% 添加构建步骤。

      现在,默认情况下,单击Run 按钮将使用默认超时执行您的构建。但是您可以使用Run... 触发构建,这将允许您重新定义此参数并更改默认值。

      【讨论】:

      • 这是我计划的实施。虽然这会影响构建完整时间的预测。但是哦,好吧,我猜你不可能拥有一切......
      • 这有一个很大的缺点。如果您使用睡眠添加 5 分钟延迟。这意味着构建代理在等待睡眠结束时有 5 分钟不可用。