我们目前使用Gerrit进行团队的开发,在这里我们有十几名开发人员。
这是我们当前的工作流程:
1. 开发人员从主分支上创建自己的分支
2. 开发人员在本地分支上进行开发
3. 开发人员将代码推送到Gerrit,该平台通过包含提交的内容在refs/for/master中来保护主分支(如果你不知道,Gerrit也是一个仓库管理工具)。
4. Gerrit调用Jenkins,在更改集上运行单元测试和Selenium测试。如果测试失败,提交将被退回给开发人员。否则,Jenkins会+1提交。
5. 评审人员审查提交并+1
6. 高级评审人员审查提交并+2,更改集合并到refs/head/master(即实际的分支)
我们非常喜欢这个工作流程;它很棒,它为我们的开发带来了必要的过程和纪律,并使我们之前被忽视和忽略的代码审查瓶颈变成一份待办事项清单,每个人都更加满意。
x - 中间休息 - x
现在,我们正在考虑将任务管理转移到Jira上。当我设置它时,我还设置了Crucible,因为它似乎是将代码审查作为整个流程的一部分进行自然集成的工具。但我无法复制我们喜欢的上述工作流程。由于Jira/Crucible集成中不再有仓库来保护所有内容(而且我们不想付Atlassian's Stash),所以我们将代码推送到Bitbucket。我们不能再直接在主分支上进行开发了,因为错误的代码将不再通过任何测试或代码审查就被开发人员合并到主分支中。唯一的解决方案似乎是使用forks来避免这种情况。好吧,这很烦人,但我可以接受。但是,如何让开发人员的fork的提交经过代码审查后合并到主分支中呢?我想听听那些做过类似事情或知道如何在我的情况下完成任务的人的建议。
如果不采用以上的方法,还有一个选择是尝试使用https://github.com/hobbs/jirret来强制集成Jira和Gerrit,但这种方法使用的是XML RPC,Jira仍然支持,但不再进行任何开发。