本文共 4390 字,大约阅读时间需要 14 分钟。
持续集成(Continuous Integration),也就是我们经常说的 CI,是现代软件开发技术的基础。本文论述了如何使用 TeamCity 持续集成工具来实现项目的持续集成。
目前,CI 已在当前业界被许多软件开发团队所采用,是一种在整个软件开发生命周期内保证代码质量的常见做法。它是一种开发实践,旨在帮助开发团队应对软件开发过程中的如下挑战:
简言之,CI 是在敏捷开发过程中,实现速度、效率、质量的软件开发实践,可以持续为用户交付可用的软件产品。更多详情可以参考。
正如 TeamCity 官网的自我介绍的那样,TeamCity 是一款强大的开箱机用 CI 工具(“Powerful Continuous Integration out of the box”)。其特性包括:
TeamCity 分免费专业版授权(Professional Server License)和收费企业版授权(Enterprise Server License)。两者在功能上完全一致,只是在使用的数量上会有限制,其中,免费版授权包含20 个 build configuration 以及 3 个 build agent。可以单独购买构建代理授权( Build Agent License),含1个 build agent以及10个build configuration,费用是 299美元。企业版授权在build configuration 上是无限的,可以购买3 到 100 不等的 build agent,费用大概在1999至21999美元之间。
对于试用用户或者小团队而言,Professional Server License 足够了。
下面介绍下 TeamCity 的常见用法。本例使用版本为 TeamCity Professional 10.0.4。
在创建一个项目(Project)后,可以将项目与相应的源码进行关联。源码管理工具支持 Git、CVS、Subversion 等。本例使用的项目是 necc_country,使用的源码管理工具为 Subversion。
在 VCS Roots 下,添加一个源码关联的地址: svn://10.30.22.18:32881/unengli/biz/gov/necc/branches/country
。
构建配置(Build Configurations),是指项目构建过程中,一些列的步骤计划。比如,可以是代码质量检查、Maven 构建、发布等等步骤。
我们选择点击“Edit”按钮,在“Build Steps”中来设置一些构建计划。
使用 SonarQube 来进行代码质量检查。
其中,
使用 Maven 来项目的构建。可以自定义 Maven 的 Goals,比如:
clean install -Dmaven.test.skip=true
或者
clean package
等。如果是采用 TDD 的开发方式,建议不要使用-Dmaven.test.skip=true
来过滤掉测试步骤。
可以使用 FTP Upload 或者 SSH Upload 等方式将发布包发布到部署环境中。在本例,由于 CI 和部署的环境是在同一台主机上,使用 FTP Upload 即可。
其中,
10.30.22.18:/necc_simulation/gov-tomcat-necc/webapps/gov
,使用的用户为dev
,那么,最终部署到主机的绝对路径为/home/dev/necc_simulation/gov-tomcat-necc/webapps/gov
。%teamcity.build.workingDir%/web/gov/target/gov
中的 %teamcity.build.workingDir%
是 TeamCity 构建的工作区间。在本例中,我们将项目部署到了 Tomcat 容器中,部署完之后,需要重启 Tomcat。这里,我们使用 SSH Exec 来执行一段重启服 Tomcat 的脚本。
其中,
# 切换到 Tomcat 安装目录的 bin 目录下cd /home/dev/necc_simulation/gov-tomcat-necc/bin# 是打印当前的工作目录pwd# 杀掉使用特定端口的 Tomcat 进程,即关闭当前程序/sbin/fuser -k -n tcp 6060# 给脚本赋予可以执行的权限chmod 775 startup.sh# 删除旧的日志rm -rf ../logs/*# 查看 Java 版本java -version# 启动./startup.sh
可以采用自动触发,或者手动触发来执行构建。
点击右上角的“Run”即可手动触发来执行构建。
在将项目与相应的源码进行关联后,默认会生成一个“VCS Trigger”,即,只要有变更提交到代码管理服务器上,就会自动触发构建。当然,也可以自行添加多种触发器。
可以查看整个构建过程的情况,包括构建花费的时间等。
[11:50:33]Finalize build settings[11:50:38]The build is removed from the queue to be prepared for the start[11:50:38]Collecting changes in 1 VCS root[11:50:38]Starting the build on the agent Default Agent[11:50:38]Clearing temporary directory: /home/unengli/TeamCity/buildAgent/temp/buildTmp[11:50:38]Publishing internal artifacts[11:50:38]Using vcs information from agent file: a774be4779f9ea86.xml[11:50:38]Clean build enabled: removing old files from /home/unengli/TeamCity/buildAgent/work/a774be4779f9ea86[11:50:38]Checkout directory: /home/unengli/TeamCity/buildAgent/work/a774be4779f9ea86[11:50:38]Updating sources: server side checkout (3m:08s)[11:53:47]Step 1/5: maven build (Maven) (3m:33s)[11:57:21]Step 2/5: deploy gov、ent to 18 test server (SSH Upload)[11:57:21]Step 3/5: deploy ent to 40 (SSH Upload)[11:57:21]Step 4/5: deploy to tomcat 7 gov (FTP Upload) (39s)[11:58:00]Step 5/5: restart tomcat (SSH Exec)[11:58:00]Publishing internal artifacts[11:58:01]Build finished
转载地址:http://wowsx.baihongyu.com/