Web Analytics

使用Jenkins实现多平台并行集成

我们的后端C应用都是支持跨平台的,至少目前在Linux和Solaris上运行是没有问题的,这样一来我们在配置持续集成环境时就要考虑如何实现在代码Commit后触发多平台并行(同时)集成这个需求。 之前使用Buildbot时是通过为一个Scheduler配置多个Builder满足这个需求的。但现在要换成Jenkins,我们如何来实现呢?昨天在折腾Jenkins时我把问题想简单了,今天细致查看了一下Build Log后才发现之前的配置并未真正实现多平台并行集成。 最初的Jenkins配置大致是这样的:我在Jenkins上添加了两个节点(Slave Node),分别为x86-linux-ci-slave和x86-solaris-ci-slave,并且为这两个节点设置了一个相同的标签"foo-ci-slaves"。之后我创建了一个新Job – “foo-multiplatform-ci”,选择的是"构建一个自由风格的软件项目(Build a free-style software project)"。为了使得该Job执行并行集成,我选择了"Restrict where this project can be run",在"Label Expression"中填上了"foo-ci-slaves",其他配置这里就不赘述了。 ...

February 15, 2012 · 3 min · Tony Bai

折腾Jenkins

Buildbot是产品线C应用项目中采用的唯一持续集成工具,一直以来用得还不错。但前些日子部门负责过程改善的同事找到我,说今年部门计划统一各个项目组所使用的Continuous Integration工具,Buildbot有些小众,没有入大家的法眼,部门期望使用的是Jenkins(即原来的Hudson)。既然组织有统一规划,那我自然积极支持。但首先要做的就是评估Jenkins是否能满足我们的需求,并且看看从Buildbot迁移到Jenkins的难度及工作量有多少。这不,今天下午就一直在折腾Jenkins。 一、安装Jenkins Jenkins(前身Hudson)很流行,在各大主流操作系统平台上都有很好的支持,其安装甚是方便,特别是在各主流的Linux发行版平台上,均可使用OS自带的应用包管理工具进行自动安装;当然你也可以直接在官方下载war包。我采用的就是第二种方式,旨在获得更高的Jenkins版本,不过让我失望的是在Ubuntu 9.04(Java version: 1.6.0_20)上,最新的1.451和1.450版本均启动失败,这也是我之前不太喜欢使用Java实现的工具的一个原因之一 – 总是容易出现莫名其妙的异常,而且较难找到原因,也很难fix,除非自己重新构建war包。在这方面像Python等动态脚本语言就有先天优势,一旦出现问题,我可以直接在源码中定位和修改。 ...

February 14, 2012 · 6 min · Tony Bai

解决BuildBot构建结果mail无法发送的问题

在“使用BuildBot搭建持续集成环境”一文中我曾经说到:公司使用的mail服务器只支持SSL连接,而BuildBot似乎对SSL连接的支持有些问题,导致构建结果mail无法发送“。BuildBot实际上使用的是Twisted的mail库来发送邮件的,我下载了Twisted的一些mail发送的例子程序,并使用我的公司mail账户配置,但依旧发送失败。看来这个问题与Twisted的实现有关了。 这个问题已经折腾我许久了,难道非得让我去debug Twisted库?还好,今天我想到了另外一种方法:使用stunnel。原理是这样的:通过stunnel将非SSL连接转换为到公司mail服务器的SSL连接,通过stunnel建立的这条转化通道,mail发送的问题就应该可以解决了。想法归想法,实际上能否达到我的目标,还得通过试验验证。 首先我们需要在BuildBot的master服务器上安装stunnel。 ...

May 31, 2011 · 4 min · Tony Bai