连续部署与Jenkins和雷克斯
在本教程中,我将向您展示如何使用jenkins作为ci工具和Rex作为部署工具进行连续部署。 我们将一起建立Jenkins,构建和测试流程,Subversion版本库和Perl应用程序示例。
本教程也可用于Java,PHP,Rails,...项目。 但是为了简单起见,我选择了Perl。
这个方法专注于Ubuntu LTS 11.04,但也可以用其他Linux发行版来完成。 对于Jenkins来说,你只需要一个Java环境和Rex,你只需要Perl 5.8(我推荐= = 5.10)和一些Perl模块(见http://rexify.org/ )。
请阅读http://rexify.org/howtos/start.html以简要介绍Rex的内容及其工作原理。
制备
您需要以下系统。 确实可以在一个系统上构建一切,但在本教程中,我将为每个服务使用单独的系统。
- 持续集成服务器(简称:CI服务器)。 这是Jenkins和测试运行的系统。 (Ubuntu 11.04 LTS)
- Subversion Server(Ubuntu 11.04 LTS)
- 2测试Web服务器。 这将是我们将部署我们的测试项目的系统。 (Ubuntu 11.04 LTS)
- 您的工作站(无论什么操作系统,我喜欢Ubuntu,Debian或Mac OS X)
安装Rex
安装它:您的工作站,CI服务器
Rex有多个可用的预构建软件包。 看看http://rexify.org/get/ 。
您也可以通过CPAN安装Rex:
sudo sh -c "curl -L cpanmin.us | perl - Rex"
sudo sh -c "cpanp -i --skiptest Rex::Apache::Deploy"
要构建Rex,您需要以下依赖关系:
- 建立至关重要
- libexpat1-dev
- libssh2-1-dev
- zlib1g-dev
- libssl-dev
不要忘记在您的Jenkins服务器上安装Rex和Rex :: Apache :: Deploy。 您至少需要Rex 0.19.0和Rex :: Apache :: Deploy 0.7.0。
安装Tomcat
安装它:CI服务器
起初我们将安装Jenkins。 启动shell并使用apt-get安装tomcat6和tomcat6-admin。 如果需要,可以使用这个howto来显示如何使用Rex安装Tomcat,然后跳转到第2步“部署Jenkins”。
sudo apt-get install tomcat6 tomcat6-admin
现在打开文件/etc/tomcat6/tomcat-users.xml
并用以下内容替换内容。
<?xml version='1.0' encoding='utf-8'?> <tomcat-users> <role rolename="manager"/> <user username="manager" password="passw0rd" roles="manager"/> </tomcat-users>
现在重新启动Tomcat。
sudo /etc/init.d/tomcat6 restart
部署Jenkins
安装它:CI服务器
从http://mirrors.jenkins-ci.org/war/latest/jenkins.war下载Jenkins。
wget http://mirrors.jenkins-ci.org/war/latest/jenkins.war
首先,您需要创建目录/usr/share/tomcat6/.jenkins
并将其所有者更改为tomcat6。
sudo mkdir /usr/share/tomcat6/.jenkins
sudo chown tomcat6: /usr/share/tomcat6/.jenkins
现在打开一个web浏览器,然后转到http:// your-ci-server:8080 / manager / html
并选择jenkins.war进行部署。
部署Jenkins后,去http:// ci-server / jenkins /
。
好的,如果你看到下面的截图,一切正常。
接下来,您将创建一个Subversion仓库,其中示例项目被管理。
示例存储库
安装它:Subversion Server
sudo apt-get install subversion libapache2-svn apache2
安装软件包后,编辑文件/etc/apache2/mods-enabled/dav_svn.conf
<Location /svn> # enable svn DAV svn # set parent path to allow multiple repositories SVNParentPath /var/lib/svn </Location>
保存文件并创建存储库。
sudo mkdir /var/lib/svn
sudo cd /var/lib/svn
sudo svnadmin create webapp
sudo chown -R www-data: .
sudo /etc/init.d/apache2 restart
示例项目
好的,创建存储库后,切换回工作站,查看并创建一个小项目。 我选择了一个Mojolicious Project( http://mojolicio.us ),因为它很容易设置和处理。
如果您知道如何设置Jenkins与其他项目一起工作,例如PHP,RubyOnRails,Java,...可以随意使用自己的项目。
首先安装Mojolicious:
sudo sh -c "curl -L cpanmin.us | perl - Mojolicious"
也可以在您的CI服务器和Web服务器上安装Mojolicious。
安装后创建mojo应用程序。
svn co http://your-svn-server/svn/webapp
cd webapp
mojo generate app MySite
cd my_site
mojo generate makefile
sed -ie 's/MyApp/MySite/g' Makefile.PL
sed -ie 's/my_app/my_site/g' Makefile.PL
rm Makefile.PLe
现在为内置的网络服务器Hypnotoad创建一个配置文件。 创建一个新的文件hypnotoad.conf
并在其中放入以下行。
{ listen => ['http://*:80'], workers => 5, pid_file => '/var/run/hypnotoad.pid', user => 'www-data' };
好的,这是第一次尝试。 您可以通过启动开发服务器来查看应用程序。
./script/my_site daemon
这将在您的工作站上启动端口3000上的开发服务器。
将所有内容添加到subversion并提交。
cd ../..
svn add my_site
svn ci -m "inital commit"
安装TAP :: Harness :: JUnit
安装它:CI服务器
要获得Jenkins兼容的测试输出,我们需要安装另一个perl模块。 这个模块叫做TAP :: Harness :: JUnit。
不要忘记依赖
sudo apt-get install curl build-essential
sudo sh -c "curl -L cpanmin.us | perl - TAP::Harness::JUnit"