微信号:infoqchina

介绍:有内容的技术社区媒体

针对持续交付管理构建作业

2013-09-09 17:37 InfoQ

对于不断演进中的产品,持续交付(CD)使其开发到产品交付的过程更加简单。持续集成(CI)位于持续交付过程的开始阶段,它扮演了这个过程中的重要角色,由它定义软件开发过程。


在书上和网上可以查到很多持续集成工具的资料,但处于持续集成过程中核心的构建作业却没有太多资料。


典型的持续集成过程如下:开发人员在他们自己的机器上手工构建和测试源代码。然后他们会把修改提交到一个源码控制管理系统。随后构建工具将运行作业编译和测试这些代码。然后把构建的工件上传到一个中心资源库,用于接下来的开发和测试。


因此,作业在持续集成工具中的角色是管理源代码不断的修改、运行测试并通过发布通道管理工件传输的物流。

构建工作的作业任务少则数个,多则上千,所有作业都执行不同的功能。幸运的是,我们可以用一种更加有效的方式去管理这些作业。

自动化创建构建作业

那么为什么我们要装置一套自动化创建其他作业的设施?


构建工具在用户手册中描述了如何创建构建作业,但却很少具体解释如何管理这些作业,尽管这些工具完全可以做到这些事情。

通常开发人员要了解他们的应用是如何构建的,然后为创建和配置构建作业取得独占性控制权限。然而,这个过程存在一些缺陷:

  1. 软件架构约束:由于架构层面的因素,应用很可能有各种不同的构建方式。开发人员可能需要说明他与另一个开发人员在构建应用时的不同,所以一个作业和另一个作业的构建配置总有些细微的差异。因此,如果所有的配置都不同,那么大量的作业就会变得极难维护。

  2. 人为因素:手工创建作业引入了出错的风险,尤其是采用先复制再修改的方式去创建一个新作业(即先复制一个已有的作业,然后再修改这个副本,从而得到一个新作业)。

  3. 作业时间轴控制:通常情况下,不会保存每次构建的作业配置,也就是说,如果一个作业的配置被修改了,那么就有可能破坏之前的构建。

所以综合考虑以上几点,如果创建作业时没有一个一致的方法,开发人员就要用自己的设备执行构建了,那么迎接我们的最终结果将是极难维护的持续集成构建系统和令人头痛的管理。这违背了建立持续集成系统的原则:精益和易维护性。


实际上大多数构建工具都具有这样的设施,可以通过API脚本自动化创建、维护和备份构建作业。然而,尽管构建工具在用户手册里提到过这些功能,但却经常被忽视而未被采用。

自动化创建构建作业的优点

为简化持续集成构建过程,可以使用一个主构建作业去自动化创建多个作业,这种做法有以下几个优点。

  1. 通过作业模版或脚本创建所有构建作业的配置。它们也可以放在配置控制之下。使用模版或运行脚本可以非常简单地创建一个新作业。这可以显著地缩减作业创建时间(从若干分钟缩短到几秒种)。今后,也可以更加简单地修改作业配置;修改构建作业模版的配置就可以保证所有在之后新创建的作业都会继承这些修改。

  2. 所有已有构建作业的配置都保持一致,相比杂乱不一致的系统,这就可以更加简单地通过工具或脚本全局更新所有的配置了。

  3. 开发人员在构建作业时就不再需要构建工具的详细知识了。

  4. 自动化创建和拆卸构建作业的能力是敏捷持续集成构建生命周期的一部分。

让我们一起探讨一下下列的几个要点,欢迎查看原文。


***********************************

本文来自InfoQ微信公众账号:infoqchina

1、回复“今日新闻”,查看今天更新的新闻;

2、回复“今日英文”,查看今天英文站的更新;

3、回复“文章 +关键词”,搜索关键词相关内容;

4、回复“QCon”,了解QCon大会相关信息;

5、回复“活动”,了解最近InfoQ组织的线下沙龙;

6、回复“架构师”,获取《架构师》下载地址;

7、回复“投稿”,了解投稿流程。

***********************************

 
InfoQ 更多文章 Facebook如何实现PB级别数据库自动化备份 学术派Google软件工程师Matt Welsh谈移动开发趋势 Spotify为什么要使用一些“无聊”的技术? 妹纸们放假了,汉纸们做啥? 大多数重构可以避免
猜您喜欢 推荐几款我一直在用的chrome插件(上) 3.19开发人员最常用的的13款PHP框架 为了腾讯云,马化腾不仅亲自上阵,还约了郁亮、俞敏洪、方洪波等百名大咖 Tomcat单点登录配置及源码分析 不要大白边!聊聊GIF动画毛边的处理方法