Amazon EC2+Jenkins+Github构建自己的CI服务器

beautiful00 2012-06-23

最近在做一个公司内部项目的时候,想搭建一个CI服务器,第一个想到的就是Jenkins,但是因为内部项目,在资源方面不想有更多的消耗,同时也想试玩一下当下正火的“云”概念,于是大家决定把CI服务器放到Amazon的EC2上。

(1)、注册AWS账号,启动EC2实例

    Amazon为每个新用户提供了一个Free Tier Usage的政策,具体政策如下
Free Tier*

As part of AWS’s Free Usage Tier, new AWS customers can get started with Amazon EC2 for free. Upon sign-up, new AWS customers receive the following EC2 services each month for one year:

750 hours of EC2 running Linux/Unix Micro instance usage
750 hours of EC2 running Microsoft Windows Server Micro instance usage
750 hours of Elastic Load Balancing plus 15 GB data processing
30 GB of Amazon Elastic Block Storage (EBS) plus 2 million IOs and 1 GB snapshot storage
15 GB of bandwidth out aggregated across all AWS services
1 GB of Regional Data Transfer
对于我这样的试玩者完全够用,基本上就是免费使用AWS的服务。创建AWS的账户会经历四个步骤,提供个人准确信息;绑定信用卡用做付费,而且会扣除1美元以作验证之用,会退还的,但是要注意你的信用卡的一些政策,避免出现不必要的纠纷;验证用户提供的手机号的正确性;通过你注册邮箱的确认信登陆AWS网站完成注册。别人的一个不错的总结:http://www.bityun.com/archives/42

创建一个EC2的instance,登陆到AWS后,可以使用AWS的managementconsole来管理整个Amazon的服务,在这一步骤中,我创建了一个Ubuntu镜像的实例。整个创建流程可以参考这篇文章http://www.bityun.com/archives/70。

    登录到EC2服务器,在创建EC2 instance的时候,会得到一个密钥pem文件,创建好instance的时候,会有一个Public DNS的信息,这2个就是SSH到EC2实例的全部信息,在Mac/Linux系统下,可以直接通过 登陆到EC2上,如果报无法打开pem文件的问题,是因为当前用户权限问题,可以使用sudo执行解决。在Windows系统下,需要通过软件实现SSH登陆,但是有些软件不支持pem文件,因此需要做一些转换,像putty就需要puttygen把pem文件转换成putty识别的密钥。另外,很
ssh -i <pem文件> username@Public_DNS
多文章都说ec2的默认用户名是ec2-user,这不是绝对的,不同的AMI创建的实例默认用户名不同,比方说这儿创建的ubuntu实例默认的用户名为ubuntu。

(2)安装Jenkins

参考:http://pkg.jenkins-ci.org/debian/;注意,这种安装方式默认会安装OpenJDK的运行库。如果你想使用其他版本的JDK,在安装完成后,可以登陆到jenkins的管理界面ManageJenkins>configsystem中找到JDK一栏进行修改。

(3)Github和Jenkins集成

假设已经有一个github的repository,如何把它和jenkins关联起来?首先,需要给jenkins安装Git和GitHub的插件(ManageJenkins>manageplugins),同时需要在Jenkins的管理界面ManageJenkins>configsystem中配置上Git和GitHub的账号;为了能使用Maven构建项目,需要配置上Maven的环境;为了能在每次CI构建报错的时候能够通知用户,还需要配置上EmailNotification;安装完之后,重启jenkins。

接下来,使用jenkinsnewjob新起一个maven项目,在项目的configure目录下,配置sourcecodemanagement,把Git的repository地址配置上,同时可以配置EmailNotification,出发Build的条件以及pre-build,build,post-build等各个构建阶段需要做的事。

相关推荐