代码之家  ›  专栏  ›  技术社区  ›  Ben_G

有没有任何方法可以通过代码杀死(阻止)TFS 2017团队构建?

  •  1
  • Ben_G  · 技术社区  · 6 年前

    我有一个TFS2017版本,第一步是检查c:\驱动器上是否存在所需的文件夹。该文件夹是生成正确完成的先决条件,因此如果该文件夹不存在,我希望显示错误消息并终止生成。我尝试返回-1,但这并不能阻止构建继续。有没有办法以编程方式终止正在运行的构建?

    这是我当前的PS脚本,用于检查文件夹。我用xxxx代替了我的文件夹名(为了保护无辜者;-):

    param([string]$DirSuffix="x")
    <#
    This script is called by the xxxx build to make sure that the GVB folder 
    exists on c:\ before the build is run. It should be called by passing in the 
    directory suffix (e.g. \xxxx 2.3.1). I can't figure out how to 
    kill the build 
    if the folder doesn't exist so I'm just going to write multiple errors to 
    the console and hope that the builder see them and cancels the build.
    #>
    
    [string] $WholeDirectory='C:\XXXX' + $DirSuffix
    if (-NOT [IO.Directory]::Exists($WholeDirectory)) 
    {
      Write-Host Directory $WholeDirectory does not exist - please make sure that the xxxx build has run first!!!
      Write-Host "##vso[task.logissue type=error;] Directory $WholeDirectory does not exist - please make sure that the xxxx build has run 
      return -1
    }
    
    2 回复  |  直到 6 年前
        1
  •  0
  •   Giulio Vian    6 年前

    而不是使用 return -1 ,你应该使用 Logging Commands 出口代码 要使一个构建任务失败,然后使整个构建失败。

     Write-Error "Some error"
     exit 1
    

    添加一个powershell任务以捕获文件夹是否不存在,并判断任务是否必须失败。

    有关如何使vNext生成失败的更多详细信息,请参考以下问题: How to fail the build from a PowerShell task in TFS 2015

    还记得检查 标准错误失败 选项,并选择条件 只有当之前的所有任务都成功时 为构建管道中powershell旁边的构建任务运行此任务。这将终止构建过程。

    enter image description here

        2
  •  0
  •   Shayki Abramczyk Cece Dong - MSFT    6 年前

    如果您有多个代理,并且只想在存在所需文件夹的代理上运行构建,则可以将此文件夹添加到“功能”中 ( Click here to photo ), 在构建定义中,您需要指定所需的“需求”( Click here to photo ).