4

我有一个使用 msbuildbootstrap 运行 msbuild 的 TeamCity 构建。我想在我的本地机器上运行相同的 msbuild 命令,但我不知道 TeamCity 传递了哪些参数。日志没有说。

[Step 1/3] Starting: D:\BuildAgent\plugins\dotnetPlugin\bin\JetBrains.BuildServer.MsBuildBootstrap.exe /workdir:D:\BuildAgent\work\e8f57dfa2eca8e8c /msbuildPath:C:\Windows\Microsoft.NET\Framework\v4.0.30319\MSBuild.exe
[14:10:12][Step 1/3] in directory: D:\BuildAgent\work\e8f57dfa2eca8e8c
[14:10:14][Step 1/3] depot\Build\Scripts\release.build.teamcity: Build target: PublishRelease (1m:10s)
[14:10:14][depot\Build\Scripts\release.build.teamcity] PublishRelease (1m:10s)
[14:10:14][PublishRelease] CreateCustomBuildLabelTask (1s)
[14:10:15][CreateCustomBuildLabelTask] Creating custom build label from TeamCity build number 7375.
[14:10:15][CreateCustomBuildLabelTask] Generated build label is     2016.02.01.ReleaseCandidate
[14:10:15][PublishRelease] CopyBuildArtifactsTask (5s)

如何准确复制 TeamCity 传递给 msbuild 的参数?有没有 msbuildbootstrap 的文档?

4

1 回答 1

2

这是一个棘手的问题,因为 TeamCity 不仅发送属性列表作为 MsBuild 命令的输入。它会创建一个环境变量列表,MsBuild 本身会将这些环境变量作为属性加以考虑。您可以在 TeamCity 的构建配置的“参数”部分中找到定义的环境参数。它们被称为“系统属性(system.)”。

执行构建后,您可以在“系统属性”下名为“参数”的构建结果选项卡中再次找到系统属性列表。

作为构建经理,我不喜欢这种情况,因为在本地机器上重现构建可能非常困难。我们今天使用了太多的系统属性,只在 TeamCity 中指定。我想将我们转移到一个清晰的 API 来执行我们的构建。

于 2016-02-03T11:42:13.083 回答