在TeamCity构建步骤中使用git命令

时间:2012-07-24 14:04:14

标签: git teamcity teamcity-7.0

我的一个TeamCity v7.0构建项目依赖于在当前开发分支和主分支之间使用diff来确定需要运行的内容。我写了一个小脚本,使用了类似的东西:

git diff origin/master..origin/QA --name-only --diff-filter=AM | DoSomethingWithThoseFiles

不幸的是,构建日志表明git diff无效。当我进入这个项目的buildAgent / work目录时,我发现没有.git文件夹,所以它无法执行所需的git操作。

我已将teamcity.git.use.local.mirrors=true放入TW-15873所提到的buildAgent.properties文件中,但这似乎没有任何帮助。

我可以做些什么来在脚本中为我的构建步骤更改两个分支之间的文件列表?

3 个答案:

答案 0 :(得分:49)

尝试将VCS结帐模式更改为“始终在代理上签出文件”,如文档here所示。这应该使构建脚本能够访问.git文件夹。

答案 1 :(得分:7)

@Mike双方的答案是正确的,需要配置VCS根目录以在服务器上的Agent-not-上自动使用Checkout模式。 TC文档没有提到默认情况下隐藏此必需设置为' advanced'。所以这是一张需要寻找的图片。

Advanced Settings

仅供参考,我的具体VS2013解决方案步骤错误来自MSBuild,如下所示。我使用的是最新的TeamCity Enterprise 9.0 EAP(版本31963)。 [PreBuildEvent] Exec [14:21:55][Exec] git rev-parse --short=9 HEAD > "C:\TeamCity\buildAgent\work\e5e910561e800525\MYPROJECT\bin\Debug\version.txt" [14:21:55][Exec] fatal: Not a git repository (or any of the parent directories): .git [14:21:55][Exec] C:\Program Files (x86)\MSBuild\12.0\bin\Microsoft.Common.CurrentVersion.targets(1131, 5): error MSB3073: The command "git rev-parse --short=9 HEAD > "C:\TeamCity\buildAgent\work\e5e910561e800525\Higgens\bin\Debug\version.txt"" exited with code 128. [14:21:55]

//编辑;我不知道如何将其添加到评论中。

答案 2 :(得分:0)

设置 teamcity.git.use.shallow.clone=falseteamcity.git.fetchAllHeads=true 可能是缺失的,至少在最新版本的 TC 上是这样。