当开发团队把代码提交到Git应用仓库的那一刻,我相信所有的开发者都希望有一个系统能帮助他们把这个应用程序部署到应用服务器上,以节省不必要的人工成本。但是,复杂的应用部署场景,让这个想法实现起来并不简单。
首先,我们需要有一个支持Docker的构建系统,这里推荐Jenkins。它的主要特点是项目开源、方便定制、使用简单。Jenkins可以方便的安装各种第三方插件,从而方便快捷的集成第三方的应用。
通过Jenkins系统的Job触发机制,我们可以方便的创建各种类型的集成Job用例。但缺乏统一标准的Job用例使用方法,会导致项目Job用例使用的混乱,难于管理维护。这也让开发团队无法充分利用好集成系统的优势,当然这也不是我们期望的结果。所以,敏捷实践方法提出了一个可以持续交付的概念 DeploymentPipeline(管道部署)。通过Docker技术,我们可以很方便的理解并实施这个方法。
Jenkins的管道部署把部署的流程形象化成为一个长长的管道,每间隔一小段会有一个节点,也就是Job,完成这个Job工作后才可以进入下一个环节。形式如下:
image source: google image search
大家看到上图中的每一块面板在引入Docker技术之后,就可以使用Docker把任务模块化,然后做成有针对性的Image用来跑需要的任务。每一个任务Image的创建工作又可以在开发者自己的环境中完成,类似的场景可以参考下图:
image source: google image search
所以,使用Docker之后,任务的模块化很自然地被定义出来。通过管道图,可以查看每一步的执行时间。开发者也可以针对任务的需要,为每一个任务定义严格的性能标准,已作为之后测试工作的参考基础。