gpt4 book ai didi

.net - 如果 View 发生更改,则使用 TeamCity 打开 MvcBuildViews

转载 作者:行者123 更新时间:2023-12-04 12:20:41 28 4
gpt4 key购买 nike

场景

我们有 TeamCity 8.1.3 构建每个拉取请求。构建失败在 GitHub 中报告。这很棒。但是,不会拾取 View 错误。这不好。我可以全面打开 MvcBuildViews,但我不想,因为我们的解决方案非常大,而且编译时间大约增加了三倍。

我想要做的是仅当在 PR 的提交中更改 View 时才启用 MvcBuildViews。例如,如果有人更改了 .cs 文件,则正常编译。如果 .cshtml 文件被更改,则启用 MvcBuildViews 并编译。

我试过的

我第一次尝试使用 VCS triggers .我在 TeamCity 中设置了两个几乎相同的项目。唯一的区别是 VCS 触发器。一个构建旨在构建代码更改,另一个构建 View 更改。

代码更改触发规则:-:\**.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']"

接下来是什么?

以前有人这样做过吗?有谁知道我如何才能获得以前的工作尝试或知道另一种方法?

最佳答案

teamcity.build.changedFiles.file 没有环境变量,如您在此文档中所见:Predefined Build Parameters .

在这种情况下,您可以使用 %system.teamcity.build.changedFiles.file%。 TeamCity 会将文件的完整路径传递给您的 PowerShell 脚本,其中包含有关构建中包含的已更改文件的信息。

该文件包含换行 rune 件:每一行对应一个文件,格式如下:

<relative file path>:<change type>:<revision>

关于.net - 如果 View 发生更改,则使用 TeamCity 打开 MvcBuildViews,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26365528/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com