CI 系统搭建:一. 基础环境设置、规划

去年写的这五篇 CI 文章时候方便邮件测试,自己搞了一个 thstack.com 域名玩。当时也没在意,所有的文章里邮箱地址都是引用 @thstack.com 域名。让我没想到是,2014 年这个神奇的一年,thstack.com 会成为我们的公司名字和域名。

我想说的是,我们内部的邮件系统也在用 @thstack.com,和这几个文章里的邮箱会冲突,导致一些朋友完全照着我的文档测试。结果最近收到了很多测试邮件。希望参考本文测试的朋友,能使用自己的域名来搭建。

随着计算机的高速发展、各种时代变革的到来。百度、360、腾讯这些赚钱机器之间为了利益掐个没完没了。开源项目、社区的活跃进而引来持续集成(CI)系统的诞生。也越发的听到更多的人在说协同开发、敏捷开发、迭代开发、持续集成和单元测试这些拉风的术语。但是也仅仅只是听到在说而已,也没有见到国内有几家公司能有完整的 CI 体系流程。反之一些开源项目都有完整的 CI 体系。我觉得就这一点国内的公司还是要去学习的。

由于对上面那些生涩的词感冒,专门研究了下 CI 相关的系统,才有了这几篇文章。

我用到的系统有:

  • Gitlab:代码托管
  • Gerrit:Code Review
  • Jenkins:代码测试

一开始测试使用了 Gitorious 来做代码的托管,发现界面的功能不全,比较蛋疼。虽然 Gerrit 本身有代码托管功能,但 Gerrit 的界面不敢恭维、也没有 Gitlab 的功能强大。so …

决定使用 Gitlab 还有一点重要原因就是它本身提供保护分支的功能,可以达到 Review 效果。这样和 Gerrit 结合的话,可以针对不同的用户群来分配 Review 方式。

  • 强制 Review:在 Gitlab 上创建的项目,指定相关用户只有 Reporter 权限,这样用户没有权限使用 git push 功能,只能 git review 到 Gerrit 系统上,Jenkins 在监听 Gerrit 上的项目事件会触发构建任务来测试代码,Jenkins 把测试结果通过 ssh gerrit 个这个项目打上 Verified 成功或失败标记,成功通知其它人员 Review。

  • Gitlab 保护 Master 分支:在 Gitlab 上创建的项目可以把 Master 分支保护起来,普通用户可以自己创建分支并提交代码到自己的分支上,没有权限直接提交到 Master 分支,用户最后提交申请把自己的分支 Merge 到 Master,管理员收到 Merge 请求后,Review 后选择是否合并。

由于没有闲置服务器、公网 IP、域名让我去测试。想到 qingcloud 上还有几百没花,所以需要把三套系统整合塞到一个 vps 中。在整合三套系统中遇到一些需要规划的小问题:

  1. 每个系统都有发送邮件的功能,最好弄三个邮箱账号
  2. 三个系统都默认监听了 8080 端口,需要规划端口
  3. 规划了端口的同时随便规划下三个域名,后端做个端口转发方便用户访问

知道什么需要规划后,就来设置吧:

使用系统 ubuntu-12.04.2-server

修改 ssh 时候不需要输入 yes,如果不设置后面 Jenkins 连接 Gerrit 时候会报错

echo 'StrictHostKeyChecking no' >> /etc/ssh/ssh_config /etc/init.d/ssh restart  

Gitlab、Gerrit、Jenkins 版本和下载地址

设置主机名

hostname www.thstack.com  
sysctl -w kernel.hostname=www.thstack.com  
echo www.thstack.com > /etc/hostname  
echo '192.168.8.224 www.thstack.com www' >> /etc/hosts  

注册四个邮箱账号,其中 admin@thstack.com 用来管理三套系统

  1. admin@thstack.com
  2. gitlab@thstack.com
  3. gerrit@thstack.com
  4. jenkins@thstack.com

规划三个域名和端口

  1. gitlab.thstack.com:8081
  2. review.thstack.com:8082
  3. jenkins.thstack.com:8083

设置解析

vim /etc/hosts  
192.168.8.224 gitlab.thstack.com gitlab  
192.168.8.224 review.thstack.com review  
192.168.8.224 jenkins.thstack.com jenkins  

简单规划完后就可以动手去搭建了,后面几篇文章会记录安装的过程。

Longgeek

Read more posts by this author.

Subscribe to Longgeek Fuvism | Python Linux 云计算 | OpenStack 虚拟技术HPC | 性能调优自动化服务器架构

Get the latest posts delivered right to your inbox.

or subscribe via RSS with Feedly!