Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/tfs/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
TFS-使用CI触发两个生成_Tfs_Continuous Integration - Fatal编程技术网

TFS-使用CI触发两个生成

TFS-使用CI触发两个生成,tfs,continuous-integration,Tfs,Continuous Integration,目前,我有三个具有相应构建的解决方案,它们生成三个工件: CommonSolution -> BuildA -> Common.dll (output drops into a nuget feed) ProgramSolution -> BuildB -> Program.exe ServiceSolution -> BuildC -> Service.svc Program.exe和Service.svc都通过nuget提要使用Common.dll,并且

目前,我有三个具有相应构建的解决方案,它们生成三个工件:

CommonSolution -> BuildA -> Common.dll (output drops into a nuget feed)
ProgramSolution -> BuildB -> Program.exe
ServiceSolution -> BuildC -> Service.svc
Program.exe和Service.svc都通过nuget提要使用Common.dll,并且应该是完全相同的版本

目前所有的构建都是孤立的,因此构建了CommonSolution。然后在程序/服务中手动更新公共nuget,然后构建它们

在TFS中,是否存在这样的方式:如果触发BuildB,它会首先自动触发BuildA,然后在BuildB和BuildC中更新和使用公共nuget,并触发这两个构建


或者还有其他更合适的设置吗?

编辑生成配置时,请转到触发器选项卡并启用持续集成。在那里,您可以定义路径过滤器并指定解决方案文件夹的路径,因此只有在签入对该不同路径的更改时,才会触发生成

在您的情况下,只有CommonSolution更改,dll才会更新。然后只需要将构建B和构建C链接起来

对于最新版本的TFS-Azure DevOps Server 2019,我们有一个内置功能:

大型产品有多个组件,这些组件相互依赖 其他的。这些组件通常是独立构建的。当 上游组件(例如库)更改,下游组件 依赖项必须重新生成并重新验证

在这样的情况下 这些,添加一个构建完成触发器以在 成功完成触发生成。您可以选择任何 同一项目中的其他构建

对于TFS版本2018和之前的版本,有两种方法可以在当前版本中运行另一个版本

选项1:将当前生成定义中的PowerShell任务添加到

假设另一个生成id为5,则可以使用脚本添加PowerShell任务:

$body = @{
definition = @{
id = 5    
}
}
$Uri = "http://account.visualstudio.com/DefaultCollection/project/_apis/build/builds?api-version=2.0"
$buildresponse = Invoke-RestMethod -Method Post -UseDefaultCredentials -ContentType application/json -Uri $Uri -Body (ConvertTo-Json $body)  
选项2:在市场上安装相关扩展 您可以为内部部署的TFS服务器安装一些扩展,然后可以将任务添加到另一个生成队列中。如


是否有任何方法,如果触发BuildB,它会首先自动触发BuildA
因此,您可以在运行Build B的过程中添加一个步骤来触发Build a。

您使用的是什么tfs版本?@Jayendran version 15.117.26714.0,即tfs 2017