【问题标题】:TeamCity - Can I cancel currently running builds of the same configuration when starting a new build?TeamCity - 我可以在开始新构建时取消当前正在运行的相同配置的构建吗?
【发布时间】:2015-01-28 11:19:15
【问题描述】:

当我提交源代码管理时,TeamCity 服务器会自动运行一些长时间运行的集成测试。

TeamCity 允许我通过限制同时构建来防止这些任务同时占用所有构建代理,但是我想知道是否可以让 TeamCity 在新任务启动时取消此配置的任何当前正在运行的任务?

在这种环境中,一旦有新的源代码控制提交,旧的集成测试运行就无关紧要了,所以我不希望服务器浪费时间为旧版本运行测试。

【问题讨论】:

    标签: continuous-integration teamcity integration-testing


    【解决方案1】:

    我认为这是不可能的,我会说这是设计使然。

    想象一个允许这样做的世界,您永远不会知道哪个提交导致测试开始失败。如果您有足够多的重叠提交,您可能会在知道要运行的最终测试失败之前进行 50 次构建,并且不知道是最后一次提交还是之前的 49 次提交导致失败。

    恕我直言,您最好集中精力制作,以便可以在不同的服务器上同时进行多次运行,以获得您想要的速度,而不是把婴儿和洗澡水一起扔出去

    更新

    虽然我不认为这是开箱即用的支持,但如果我不得不这样做,我想我会查看getting a notification when a build starts(似乎没有关于构建排队的通知,所以你必须允许多个构建同时运行以使其工作)然后你can use the API to do cancel the other builds:

    您也可以使用 API 获得list of builds,因此应该能够取消所有不是最新的

    【讨论】:

    • 首先感谢您的评论。然而,有问题的测试是集成测试,可能会被代码库之外的环境问题破坏(想想数据库更改),因此这种跟踪可能是无用的。我了解 TeamCity 团队的设计问题,这是一个边缘案例,但为此目的,能够取消构建实际上是有用的。我同意,如果我能够将测试所需的时间缩短到合理的时间范围内,那么问题将无关紧要,但我不确定这在这里是否可行,当然也不可持续。
    • @LiamFlanagan 我知道每个人都有边缘情况,有时实用主义会获胜,无论丑陋如何。归根结底,teamcity 是一个 web 应用程序,而取消是因为有人在 TC 上调用了一个方法。你当然可以伪造这个。我会用我要查看的内容更新我的答案
    【解决方案2】:

    不,这是不可能的。您可以手动取消它。或者您可以添加一个安静时间段(默认为 60 秒),以便在推送某些内容时构建不会立即开始。然后,如果某些提交在几秒或几分钟后到达,它们将包含在 TeamCity 构建中。

    【讨论】:

    • 我想@gerald 指的是: - 从正在运行的构建代理中取消它: - 代理(在仪表板的顶部) - 找到相关的正在运行的构建 - 按下右侧的停止按钮手边或从构建队列中删除它: - 构建队列(在仪表板的顶部): - 在队列中找到相关的构建 - 按下右侧的删除按钮(编辑,因为我按下输入太快了!)
    【解决方案3】:

    我的解决方案类似于Sam's update,但我会使用由提交源代码控制触发的“序言”配置。此作业仅负责检查您的任何集成测试作业是否已在运行并根据需要stopping them with a REST API call

    主要集成测试从使用与前导配置关联的构建完成触发器的专用作业配置运行。

    此设置使查询正在运行的作业变得非常简单,如果有新的工作要做,则可能需要取消。所以步骤变成了:

    1. 序言 - 取消任何正在运行的集成测试作业,由 VCS 触发
    2. 集成测试 - 由完成“序言”构建触发

    【讨论】:

    • “序言”配置是什么意思?您是指第一个构建步骤还是我似乎无法找到相关信息的某个功能?
    • 无论如何,this powershell 为我工作。感谢您为我指明正确的方向。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-02-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-02-05
    • 2018-05-12
    相关资源
    最近更新 更多