GIT&詹金斯 - 如何进退两难

时间:2013-12-29 19:23:09

标签: git jenkins continuous-integration

我正在从clearcase迁移到GIT。在clearcase中,我在文件上有“checkout”功能,表明该文件的工作并阻止其他人(在流上)编辑文件,并避免合并。现在,在GIT中我们遇到了很多合并,这很好,但我想使用CI来简化合并。

这就是我的想法:

  1. 每天早上2点,我将浏览团队中的计算机列表 - 并访问GIT存储库,然后启动git push --force origin {user_name} (也就是说,为每个用户创建一个分支)
  2. 然后,我将执行不同分支之间的合并,如果有非平凡的合并,我将创建一个警告可能性的报告。
  3. 如果合并没有问题,我将构建并确保没有编译问题,也可能会进行一些测试。
  4. 但是,我知道通常的做法是挂钩提交并在那时运行CI进程。

    GIT在本地维护几乎所有内容并避免服务器端调用,并且我填写了将git提交挂钩到CI进程会破坏GIT的这一优势。

    所以,有几个问题:

    1. CI与GIT有什么共同的做法/方法?
    2. 我在哪里可以阅读更多关于不同GIT&的实际实现的内容。 CI接近。
    3. 哪种传播最为广泛,与其他方法相比有哪些优势?
    4. 谢谢

2 个答案:

答案 0 :(得分:3)

我似乎想通过git来模仿旧的clearcase诱导工作流程。这通常不是一个好主意。 (即使您的团队习惯了良好的旧工作流程。)

如果clearcase适合你,只需坚持使用clearcase。如果您有充分的理由切换到git,请利用这个机会查看业务工作流程并围绕它构建合适的git工作流程。

问自己一些问题:

  • 您使用的是哪种文件? (代码,文档......)
  • 为什么需要更改文件? (新功能,错误修复,......)
  • 为什么不同的团队成员需要处理相同的文件? (也许你可以改进你的任务或项目结构的分配?)

接下来设置一些有意义的分支。目前看起来你正在一个主分支上完成所有工作,但git中的分支非常轻量级,你应该考虑在不同的分支中开发功能并进行显式合并。

请不要滥用您的CI系统来推送提交并强制执行自动合并,除非您有充分的理由。 “推”通常意味着,您已完成工作并准备与其他团队成员分享。您的CI系统通常无法确定工作是否已完成或处于某种错误的实验状态。

我建议设置一些分支,为它们提供良好的语义,并设置CI系统,以便在更新时检查这些分支。 - 推送和合并之类的东西应该始终由真实的人明确而有意地完成。否则,迟早会发生奇怪的事情。

但所有这些都取决于您的具体情况。没有适合每个人的食谱。

答案 1 :(得分:0)

我的建议是购买这本书: 持续交付:通过构建,测试和部署自动化发布可靠的软件 (Addison-Wesley签名系列(Fowler)) - Humble,Jez,Farley,David

本书概述了持续集成的良好流程和框架。我相信,开发人员有责任确保代码在提交到触发自动构建的主分支之前编译,合并并通过高级功能测试。开发人员还需要承诺立即修复自动构建输出的任何问题。您的CI工具集需要传达自动构建和测试的状态以及管理需求,以确保失败是开发团队修复的最高优先级。