You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

TFS 2015 Gated Build触发发布及动态禁用构建步骤咨询

针对TFS 2015 Update 1构建问题的解决方案

一、动态控制Publish Artifact步骤仅在CI/定时构建执行

TFS 2015 Update 1没有内置的步骤条件可视化配置,但我们可以通过环境变量+自定义变量+PowerShell脚本实现动态禁用:

  1. 添加自定义构建变量
    在构建定义的"Variables"标签页,新增一个变量SkipPublishArtifact,默认值设为False。

  2. 插入判断构建类型的PowerShell脚本步骤
    在Publish Artifact步骤之前添加一个PowerShell脚本任务,脚本内容如下:

    # 获取当前构建的触发原因环境变量
    $triggerReason = $env:BUILD_REASON
    
    # 判断是否为Gated Checkin构建,是则设置跳过变量为True
    if ($triggerReason -eq "Gated") {
        Write-Host "##vso[task.setvariable variable=SkipPublishArtifact]True"
        Write-Host "当前为Gated构建,将跳过Publish Artifact步骤"
    } else {
        Write-Host "##vso[task.setvariable variable=SkipPublishArtifact]False"
        Write-Host "当前为CI/定时构建,将执行Publish Artifact步骤"
    }
    

    注:TFS 2015的BUILD_REASON取值对应:CI构建为IndividualCI/BatchedCI,定时构建为Schedule,Gated构建为Gated。

  3. 配置Publish Artifact步骤的执行条件
    编辑Publish Artifact步骤,在"Run this task"下拉菜单中选择Custom condition,输入以下条件表达式:

    eq(variables['SkipPublishArtifact'], 'False')
    

    这样只有当变量为False时(即CI/定时构建),才会执行该步骤。

二、解决Gated Job空Drop仍触发CI/CD发布的问题

Gated构建本质是预检查,不应该触发后续发布,问题通常出在发布触发器的配置上,可通过以下两种方式解决:

方式1:在发布触发器中过滤Gated构建

打开对应的发布定义,进入"Triggers"标签页:

  • 找到"Build completion"触发器,选择目标构建定义后,点击Filters按钮。
  • 添加一个过滤条件:Build.Reason 不等于 Gated。
    这样只有非Gated的构建完成后,才会触发发布流程。

方式2:过滤无工件的构建

如果希望进一步排除空Drop的构建,可以在发布触发器的Filters中再添加一个条件:

  • Build.Artifacts.Count 大于 0
    这样只有生成了有效工件的构建,才会触发发布。

额外检查点

确认构建定义的"Triggers"标签页中,Gated Checkin的设置没有同时勾选CI触发的选项,避免Gated构建被误识别为CI构建。

内容的提问来源于stack exchange,提问作者Avinash Sharma

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.21 07:32:37