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

Jak*_*son 41 git teamcity teamcity-7.0

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

git diff origin/master..origin/QA --name-only --diff-filter=AM | DoSomethingWithThoseFiles
Run Code Online (Sandbox Code Playgroud)

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

我已经把TW-15873中提到teamcity.git.use.local.mirrors=truebuildAgent.properties文件放入了文件中,但这似乎没有任何帮助.

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

Mik*_*Two 50

尝试将VCS结帐模式更改为"始终在代理上签出文件",如此处所述.这应该使构建脚本能够访问.git文件夹.

  • 这让我成为了一部分,但是在origin/Master和当前分支之间进行差异是行不通的.相反,它似乎只识别本地或远程的SINGLE分支!我认为TC正在做一些时髦的事情 - 克隆一个克隆或一些不寻常的东西."git fetch"抛出一个错误,即buildAgent/system/git/git-14CE2659.git似乎不是一个git存储库,即使当前的repo在buildAgent/work/blah中. (4认同)
  • 不幸的是,如果您需要 ssh 身份验证访问,例如为了将更改推送到远程 git 存储库,则它不起作用,因为 TeamCity 在获取后会删除 ssh 密钥。https://confluence.jetbrains.com/display/TCD9/SSH+Keys+Management (3认同)

Ann*_*ile 7

@Mike Two的答案是正确的,需要配置VCS root以在服务器上的Agent-not-上自动使用Checkout模式.TC文档没有提到默认情况下将此必需设置隐藏为"高级".所以这是一张需要寻找什么的图片.

高级设置

仅供参考,我的具体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]

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