【问题标题】:How to trigger a build within a build chain after x days?x天后如何在构建链中触发构建?
【发布时间】:2016-08-10 06:50:53
【问题描述】:

我目前正在使用 Teamcity 将 Web 应用程序部署到 Azure 云服务。我们通常使用 powershell 脚本部署到暂存槽,然后在 Azure 门户上进行手动交换(暂存到生产)。

在交换之后,我们通常会在旧的生产部署中保留暂存槽几天(如果我们需要恢复/退出部署)然后将其删除 - 这是一个手动过程。

我希望使用 Teamcity 自动执行此过程。 我的预期解决方案是在部署构建成功后几天启动 Teamcity 构建x(构建步骤的细节无关紧要,因为我可能会再次使用 powershell 删除暂存槽)

这个计划让我研究 Teamcity 构建链、快照依赖项等。

到目前为止我所做的是

  • 通过创建对部署构建配置的快照依赖项正确地创建了构建链,并且
  • 创建了一个完成构建触发器

目前,当前方法在部署构建成功后立即启动依赖构建'删除 Azure 暂存 Web' (B)。但是,我希望这是 x 天之后的延迟构建。

查看上面的构建链,我希望构建B在 2016 年 8 月 13 日上午 7 点 31 分运行(如果 x=3)

我也研究了 Schedule Trigger 选项,但对于如何使用它来实现这一点有点迷茫。据我了解,使用 cron 表达式将导致构建持续运行,这不是我想要的 - 我希望构建 B 只执行一次。

【问题讨论】:

    标签: triggers teamcity teamcity-9.0 build-chain


    【解决方案1】:

    是的,这可以通过使用 REST api 来完成。

    我制作了一个小样本,可以传达基本步骤。这是一个 PowerShell 脚本,它将清除另一个构建配置上的触发器(由脚本中的参数值确定)并添加一个计划触发器,其开始时间是从当前时间开始 X 天(由脚本中的参数值确定)

    1) 在主构建中添加一个 PowerShell 步骤,最后运行 add-scheduled-trigger 作为源代码

    2) 更新脚本中的参数值

    1. $BuildTypeId - 这是您要将触发器添加到的配置的 ID

    2. $NumberOfDays - 这是您希望提前安排触发器的天数

    3. 脚本中嵌入了 admin/admin = REST api 的用户名/密码验证

    完成此操作后,您应该会在每次构建第一个配置时看到创建/更新的计划触发器

    希望对你有帮助

    【讨论】:

    • 听起来很有希望,这在构建链的上下文中是否仍然有效?我也被同事指向github.com/rhysgodfrey/team-city-delayed-finish-build-trigger
    • 太好了 - 我不知道有插件存在。如果您有构建链设置,那么 TeamCIty 会根据您为依赖关系所做的设置来确定是否需要重新构建第一个配置。
    • 有机会我会试一试,然后告诉你结果如何
    猜你喜欢
    • 2013-10-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-12-08
    • 1970-01-01
    • 2020-03-29
    • 2015-11-27
    • 2016-11-21
    相关资源
    最近更新 更多