【问题标题】:Using git commands in a TeamCity Build Step在 TeamCity 构建步骤中使用 git 命令
【发布时间】:2012-07-22 20:59:50
【问题描述】:

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

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

不幸的是,构建日志显示git diff 不工作。当我进入该项目的 buildAgent/work 目录时,我看到没有.git 文件夹,因此它无法执行所需的 git 操作。

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

我可以做些什么来让我的构建步骤的脚本中两个分支之间的文件列表发生变化?

【问题讨论】:

  • 有解决方案吗?我在使用 TeamCity 8.1 时也遇到了这个困难。我正在使用 VCS 结帐模式“自动在代理上”,但这似乎没有帮助。 .git 目录仍然丢失。

标签: git teamcity teamcity-7.0


【解决方案1】:

尝试将 VCS 签出模式更改为“始终签出代理上的文件”,如 here 所述。这应该使构建脚本可以访问 .git 文件夹。

【讨论】:

  • 这让我有所收获,但是在 origin/Master 和当前分支之间进行差异是行不通的。相反,它似乎只识别本地或远程的单个分支!我认为 TC 正在做一些时髦的事情——克隆一个克隆或一些不寻常的东西。 “git fetch”会抛出一个错误,即 buildAgent/system/git/git-14CE2659.git 似乎不是 git 存储库,即使当前 repo 位于 buildAgent/work/blah 中。
  • 谢谢!这回答了我的一个问题:stackoverflow.com/questions/17555931/…
  • 不幸的是,如果您需要 ssh 身份验证访问,例如为了将更改推送到远程 git repo,它不起作用,因为 TeamCity 在获取后会擦除 ssh 密钥。 confluence.jetbrains.com/display/TCD9/SSH+Keys+Management
  • 我还必须明确设置我的 Git 可执行路径才能使其正常工作。
【解决方案2】:

@Mike Two 的回答是正确的,需要将 VCS 根配置为在代理上自动使用 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]

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

【讨论】:

    【解决方案3】:

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

    【讨论】:

      猜你喜欢
      • 2017-01-20
      • 2013-01-23
      • 2016-02-28
      • 1970-01-01
      • 2016-06-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多