TeamCity:成功构建推送到Git Repo

时间:2012-11-10 22:00:53

标签: git teamcity

TeamCity可以将成功构建推送到git存储库吗?

我无法在TeamCity中看到具体的构建步骤来执行此操作 我使用TeamCity版本7.1.1

谢谢,亨里克

更新:

好的,谢谢你的回答, 我发现它有点复杂。 我发现我可以简单地将成功构建的标签推回到我的全局存储库,TeamCity从该存储库获取构建数据。我可以从中提取更改,看看上次提交是否成功。

如果TeamCity为这种工作流程提供了一个简单的选项,我会很高兴的!

如果每个开发人员都可以从仅在构建成功时更新的repo中提取,或者我在这里错了,那将是非常棒的吗?

4 个答案:

答案 0 :(得分:6)

您可以让TeamCity执行一个随后调用git push的shell脚本(使用适当的参数,例如git push <repository>来推送到另一个存储库)。请确保git不需要针对推送操作的交互式身份验证。

可以在此处找到相关示例(使用git push部署到Heroku):http://blog.carbonfive.com/2010/08/06/deploying-to-heroku-from-teamcity/

答案 1 :(得分:4)

我终于成功了!

您必须在teamcity项目中添加构建参数:

name= env.PATH
value= C:\Program Files (x86)\Git\cmd

然后使用自定义脚本添加新的命令行构建步骤:

call git push "C:\Gruene Git Repos\TeamCityApp" master

“通话”这个词很重要!

感谢您的帮助! 亨利克

答案 2 :(得分:2)

简单回答

有一段时间,TeamCity支持VCS标签,这允许您的VCS Root用户(如果它具有写入权限)标记刚刚使用该版本或TeamCity知道的任何其他内容构建的提交哈希(请参阅参数引用的完整列表)在TeamCity wiki中。

一边

如另一个答案中所述,TeamCity中可用的自动合并功能将自动执行从指定的分支列表(启用通配符)合并到请求的分支,它将监视和构建,并且只有在成功时才合并它们。

自动合并功能可能很好,但是如果你没有良好的测试覆盖率,它也可能是危险的,因为开发人员可能会破坏没有测试的东西,这会导致你的问题代码漫长的道路。防止这种情况的一种方法是每次项目构建时都要求创建/运行+2测试(可在TeamCity中配置)。这些警告在之前链接的文章中提到,它宣布了自动合并功能。

相关决议

我们遇到了一个与合并无直接关系的类似问题,但要求将工作中的一些更改推出超出&#34;轻量级标签&#34; (对于Git至少)如果你使用VCS标签(可怕的名字),TeamCity会添加。

我们最终做的是:

  1. 使用类型&#34;环境变量&#34;的参数(构建代理可见,其他类型不可见)并设置&#34; Spec&#34;使#34;密码&#34;类型的字段这将阻止输入的文本显示在配置UI或作业日志输出中。
  2. 在作业配置
  3. 上输入用户名和密码作为参数
  4. 创建了一个脚本,该脚本查看了&#34;代理端&#34;的git远程URL。存储库并在网址(http://gituser:gitpassword@githost.com/path/to/repo.git)中添加了内嵌用户名和密码的新远程,以便在新分支上推送更改。
    • 然后我们删除脚本末尾的遥控器,以便访问系统的任何人都无法取出凭证。当然,凭证的范围也相当严格,只能访问某些存储库,但最小权限规则总是很好用。

答案 3 :(得分:0)

我的解决方案可能是愚蠢的,但很简单。 步骤如下:

  1. 从heroku git存储库中克隆你的heroku 它将创建你的heroku app文件夹。

    heroku git:clone -a {app-name}

  2. 将需要更新的文件复制到heroku

    xcopy client "{app-name}/client" /e/i/h/y

    xcopy server "{app-name}/server" /e/i/h/y

    xcopy imports "{app-name}/imports" /e/i/h/y

  3. git add。

    cd {app-name} && git add .

  4. git commit

    cd {app-name} && git commit --message 'ok'

  5. 推送到heroku

    cd {app-name} && git push heroku master