【发布时间】:2014-12-09 12:36:41
【问题描述】:
场景
我们让 TeamCity 8.1.3 构建每个拉取请求。构建失败在 GitHub 中报告。这很棒。但是,视图错误不会被拾取。这是不好的。我可以全面打开 MvcBuildViews,但我宁愿不这样做,因为我们的解决方案非常大,而且编译时间大约增加了三倍。
我想做的是仅在 PR 中的提交中更改了视图时才启用 MvcBuildViews。例如,如果有人更改了 .cs 文件,则可以正常编译。如果更改了 .cshtml 文件,则启用 MvcBuildViews 并编译。
我的尝试
我的第一次尝试使用了VCS triggers。我在 TeamCity 中建立了两个几乎相同的项目。唯一的区别是 VCS 触发器。一个构建旨在构建代码更改和另一个视图更改。
代码更改触发规则:-:\**.cshtml和+:**.cs
查看变更触发规则:+:**.cshtml
这并没有像我希望的那样工作。在同一个分支上提交 .cs 文件和 .cshtml 文件会触发这两个构建。
我的第二次尝试是使用 PowerShell 构建步骤。我想知道是否可以使用 PowerShell 读取 teamcity.build.changedFiles.file 代理构建属性,确定 cshtml 文件是否已更改,如果已更改,请将 MvcBuildViews 设置为 true。
这失败了,因为我不知道如何读取代理属性。我找到了这个relevant SO question,但它没有用。
我的 PS 构建步骤如下所示。我在这里主要是抓着稻草。
write-host "##teamcity[message text='Starting PhilTest build step']"
write-host "##teamcity[message text='Build number $env:build_number']" #Outputs build number
write-host "##teamcity[message text='Changed files $env:teamcity_build_changedFiles_file']" #Outputs nothing
foreach ($row in $env:teamcity_build_changedFiles_file)
{
write-host "##teamcity[message text='Changed files row $row']" #Outputs nothing
}
write-host "##teamcity[message text='Ending PhilTest build step']"
下一步是什么?
以前有人做过吗?有谁知道我如何才能让我以前尝试工作或知道另一种方法吗?
【问题讨论】:
标签: .net asp.net-mvc asp.net-mvc-4 powershell teamcity