防止 TFS 构建定义源设置触发构建

Prevent TFS Build Definition Source Settings from triggering a build

当我创建构建定义时,我设置了一些源设置,示例如下:

问题是我希望它在有人签入 BuildsInstall 文件夹时触发构建,但是 Includes 文件夹只是一些库和它需要的其他项目。我不希望它在更改这些库时重新 运行。但是我需要在此处设置它们以确保将它们复制到 Build drop 服务器。有没有一种方法可以跨 Includes 文件夹进行复制,而无需在有人签入此文件夹时强制触发构建?

没有简单的方法可以做到这一点。正如您所发现的,源设置具有双重职责,它们定义了下载的构建所需的文件集 触发 CI 的文件集.

我认为这不是问题,如果在您的构建中使用了 Includes,那么我想在它们更改时启动一个新的构建,以确保更改不会破坏构建过程。

在签入 Includes 目录时使用特殊关键字 ***_NO_CI***

See this post for further details.

有两件事可以解决这个问题。

首先,您需要将源文件夹置于以构建为中心的布局中,这将有助于尽可能多地消除重叠。

如果您需要不应触发构建的特定共享文件夹,则不要将其包含在源映射中,而是添加脚本以将文件下载到您的工作区作为构建的早期部分。

该示例需要针对您的 visual studio 版本进行更新,您应该将源目录传递给脚本。

   REM %1 represents the Sources directory
   REM Compute variables
   SET TfExe="%ProgramFiles(x86)%\Microsoft Visual Studio 10.0\Common7\IDE\TF.exe"
   REM SET TfExe="C:\Program Files\Microsoft Visual Studio 10.0\Common7\IDE\TF.exe"
   Set RefPath="$/TFS BUILDS/Shapes/Main/Includes"
   Set localPath="%~1\Includes"

   REM set the Drive Letter for this build
   Set Localdrive=%localPath:~1,2%
   %Localdrive%
   cd %1

   REM Map the folders 
   %TfExe% workfold /map %RefPath% %localPath%

   REM Get the required content
   %TfExe% get %RefPath%

   REM Unmap the folders 
   %TfExe% workfold /unmap %RefPath%