防止 TFS 构建定义源设置触发构建
Prevent TFS Build Definition Source Settings from triggering a build
当我创建构建定义时,我设置了一些源设置,示例如下:
问题是我希望它在有人签入 Builds 或 Install 文件夹时触发构建,但是 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%
当我创建构建定义时,我设置了一些源设置,示例如下:
问题是我希望它在有人签入 Builds 或 Install 文件夹时触发构建,但是 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%