将TFS CI构建def移动到VSTS - VSTS CI构建def获取所有内容并构建所有内容

时间:2018-06-12 19:14:42

标签: tfs continuous-integration azure-devops

我们开始将旧的xaml build def迁移到VSTS基于Web的构建def。对于每个分支,我们有一个调试构建def和一个发布构建def。 debug build def设置为Continuous Integration构建。作为测试,我修改了一个源文件并将其签入。旧的xaml构建def检出了1个文件,似乎只构建了更改的项目(我们想要和期望在CI构建中)。在xaml构建日志中,我看到以下内容:

<InformationField Name="Message" Value="1 file(s) were downloaded with a total size of 0.29 MB." />

它在3.3分钟内完成了构建。

在新的VSTS版本中 - 我看到它确实是&#34; tf get / version:170936&#34;并获取变更集ID中的所有文件&#34; 170936&#34;:

2018-06-12T15:08:39.8409262Z Checking if artifacts directory exists: C:\BuildAgent\agent2\_work\1\a
2018-06-12T15:08:39.8409262Z Deleting artifacts directory.
2018-06-12T15:08:39.8409262Z Creating artifacts directory.
2018-06-12T15:08:39.8564882Z Checking if test results directory exists: C:\BuildAgent\agent2\_work\1\TestResults
2018-06-12T15:08:39.8564882Z Deleting test results directory.
2018-06-12T15:08:39.8564882Z Creating test results directory.
2018-06-12T15:08:39.8877401Z Starting: Get sources
2018-06-12T15:08:39.9033640Z Entering TfvcSourceProvider.PrepareRepositoryAsync
2018-06-12T15:08:39.9033640Z localPath=C:\BuildAgent\agent2\_work\1\s
2018-06-12T15:08:39.9033640Z clean=False
2018-06-12T15:08:39.9033640Z sourceVersion=170936
2018-06-12T15:08:39.9033640Z mappingJson={"mappings":[{"serverPath":"$/Path/To/Branch","mappingType":"map","localPath":"\\"}]}
2018-06-12T15:08:39.9033640Z Syncing repository: Project Name (TFVC)
2018-06-12T15:08:39.9033640Z workspaceName=ws_1_45
2018-06-12T15:09:06.7318304Z Workspace Name: ws_1_45;a6060273-b85e-4d4b-ac63-3fbbcafc308b
2018-06-12T15:09:06.7630780Z tf get /version:170936
2018-06-12T15:09:21.6070136Z Getting C:\BuildAgent\agent2\_work\1\s;C124440
2018-06-12T15:09:21.6070136Z Getting C:\BuildAgent\agent2\_work\1\s;C124440
2018-06-12T15:09:21.6226405Z Getting C:\BuildAgent\agent2\_work\1\s\.nuget;C158533
2018-06-12T15:09:21.6226405Z Getting C:\BuildAgent\agent2\_work\1\s\Build Scripts;C141602
2018-06-12T15:09:21.6226405Z Getting C:\BuildAgent\agent2\_work\1\s\Databases;C124440
~ 
~ The rest of branch...
~

然后似乎重建所有项目需要13.2分钟才能运行,比旧的xaml构建时间长10分钟。

我错过了新构建def的东西吗?我没有&#34;清洁&#34;在VS Build任务中选中了按钮。我有一个build.clean变量,但默认情况下它是空白 - 有时候我们想要清理,所以我们可以将它设置为&#34; all&#34;在排队时间。

在网络上点击即可显示以下MS VSTFS版本:15.105.25910.0

非常感谢任何帮助。

1 个答案:

答案 0 :(得分:0)

对于多个构建代理,即使您尚未选中VS Build任务的 Clean 复选框,并且“存储库”中的clean选项也设置为“ false”。

由于代理是随机选择的,因此以前可能不包含您的源代码。这就是为什么您看到TFS执行tf get /version:170936并获取更改集ID为“ 170936”的所有文件并生成所有项目的原因。

对于构建定义的“选项”选项卡中的“多配置”。请参阅官方文章:How do I build multiple configurations for multiple platforms?

enter image description here

之后,它将在构建过程中将配置拆分为多个构建。

enter image description here

由于构建定义成功构建了多个配置,因此您可以继续启用并行构建以减少构建的持续时间/反馈时间。您可以在选项页面上将此选项指定为附加选项: enter image description here

看看这篇帖子Building multiple configurations and/or platforms in Build 2015

要缩小问题是否与多个构建代理相关的情况,您还可以按需send TFS build to a specific agent,并在同一构建代理中与clean=false多次对构建进行排队,它应该只构建变更的项目(CI)。