Git的门禁签到/预测试提交?

27 c# git teamcity tfs jenkins

我正在考虑从TFS(Team Foundation Server)迁移到Git,但找不到任何与TFS支持门控签到(也称为预测试或延迟提交)相匹配的内容.

Atlassian Bamboo不支持门禁办理登机手续.TeamCity确实支持它(使用他们的术语"延迟提交"),但不支持Git.使用Jenkins本身或Jenkins + Gerrit有很大的缺点,并且没有接近TFS中的门控签入功能.(Jenkins的创作者在此视频中解释了缺点:http://www.youtube.com/watch?v = LVVVw5gnAo0)

Git非常受欢迎(有充分理由),那么人们如何解决这个问题呢?什么是目前最好的解决方案?

Sam*_*der 16

我们刚刚开始使用git并使用工作流程实现了预先测试的提交(我今天就完成了测试).

基本上每个开发人员都有一个他们具有读/写访问权限的个人存储库 在我们的案例中,构建服务器TeamCity使用这些个人存储库构建,然后如果成功将更改推送到"绿色"存储库.开发人员没有"绿色"的写入权限,只有TeamCity构建代理可以写入,但开发人员从"绿色"中提取常见更新.

所以开发从"绿色"开始,推向个人,TeamCity从个人构建,推向绿色.

这篇博文显示了我们正在使用的基本模型,GitHub分支用于个人存储库(使用forks意味着存储库的数量不会失控并最终导致成本更高,并且意味着开发人员可以管理个人构建,因为他们可以分叉,然后创建团队城市构建作业,以将其代码推送到"绿色"):

在此输入图像描述

这是在TeamCity中设置的更多工作,因为每个开发人员都必须拥有自己的构建配置.实际上必须是2个配置,因为TeamCity似乎执行所有构建步骤(包括最终的"推送到绿色"步骤),即使之前的构建步骤失败(如测试:)),这意味着我们必须有个人为开发人员构建,然后是另一个依赖于它的构建配置,假设构建工作,它将执行推送.

  • 你需要代理方签出.这增加了一些额外的复杂性,因为您现在无法使用密码身份验证并需要使用ssh.[这篇博客文章](http://devlicio.us/blogs/mike_nichols/archive/2010/06/12/using-team-city-with-git.aspx)和SSH上的github页面帮助了我. (3认同)

son*_*nob 9

查看Verigreen - 一个轻量级的服务器端门禁登记系统.它在进入系统保护的分支之前验证每个提交.Verigreen不允许任何失败的CI提交破坏集成,发布或任何需要保护的分支.而且 - 这是一个免费的开源项目.

工作原理:Verigreen拦截签到并在ad-hoc分支中运行验证 - 以便在提交失败的情况下,只有相关的开发人员受到影响.

  • 预接收挂钩拦截并创建代码的ad-hoc分支.
  • 验证通过Jenkins工作运行.验证作业内容是完全可配置的.
  • 已验证的代码将合并回受保护的分支,而失败的提交将被阻止并发送给开发人员的通知.

在此输入图像描述

决策基于以下流程:

Verigreen  - 基本流程

有关更多信息,请访问wikiVerigreen.io网站