Jenkins是一个自动化的集成工具,它会自动从git仓库分支下载代码并进行打包等操作,然后提交给nexus,减少开发人员不必要的劳烦操作,提高效率。下面是jeninks的工作流程,该工具是把git、maven、neuxs等工具联系在一起,提高工作效率。
    jenkins 流程.png

    1、系统整体设计流程

    image.png

    2、发布窗口机制
    上述的发布流程还是比较重的,不可能每天都走一遍。因此设定一个固定的发布时间(中移在线周二周四)。下午4点准时发布,如果这个点还没有来得及实现或测试的需求,则需要到下一个窗口才能发布。这样做的目的是为了让团队中每个人清晰有一个时间概念,知道什么时候该干什么事,避免手忙脚乱的随意发布上线。

    3、发布计划
    很多的时候迭代的需求之间是有依赖关系,还有需求的工作量也不一样,有的下个窗口就能完成,有的则需要更长时间,为此我们需要提前计划好下个窗口能上线的需求,避免A需求发布时,他所依赖的B需求确不能发布的情况发生,或者中间随意添加需求,从而让发布变得难以控制。

    4、实施计划
    有了发布计划并不意味着就可以拿着计划更新上线了,到了发布时间计划的项目不一定能够如期实现,更重要的是发布计划中并不没有包含实施更新说明(如:需要更新哪些SQL脚本哪些配置文件等)。而这些都是测试人员在更新环境的时候所必要的。所以在发布之前需要开发人员填写一个部署说明文档。
    文档包含如下内容:需求说明、需求编号、应用系统、依赖系统、项目文件、变更脚本、变更配置、开发负责人、测试负责人、版本编号、发布时间。 一般由各个开发来共同编写这个文档。所以我们需要可以在线共同协作的文本编辑系统来实现。而不是采用桌面软件来编辑。目前有很多这类的文档系统如:石墨、有道云、腾讯文档等。当然你们企业可能禁止访问公网,或者对信息安全非常敏感那这时我们需要安装购买:confluence这类的协同软件。
    5、时间节点
    整个过程涉及多方团队协作,只要一方延误,就会造成其它方 等待或工作推迟的情况发生。比如开发的A需求延迟半天提测就这会导致测试的工作会延尽、从而影响上线时间。为避免这种情况我们需要设计精细的时间节点如下:

    image.png

    快速迭代版本分支管理办法.jpg