使用 Docker 简化 TeamCity 安装 已翻译 100%

oschina 投递于 2014/07/26 07:49 (共 5 段, 翻译完成于 08-07)
阅读 4761
收藏 49
2
加载中

JetBrains出品的TeamCity是一款强大易用的持续集成(continuous integration)系统。它是一款商业产品,但对于小型项目和FOSS应用程序(免费和开源软件)有一项特殊的零费用许可证。尽管TeamCity的安装已经相对容易了,但通过使用Docker,安装过程会更简便。

像许多其它的最新式的持续集成系统一样,TeamCity采用了构建服务器和构建代理的概念。服务器负责管理和构建配置。实际的构建过程(编译、打包、部署等等)是由一个或多个代理执行的。通过个种方式,很容易实现代理的自动设置,整个设置过程中只需要很少的手动配置。

DavidWTF
DavidWTF
翻译于 2014/08/07 14:51
1

TeamCity服务器只需要Java。安装过程很简单。通过Docker,安装会更简单。为此,我准备了一个专门的容器 ariya/centos6-teamcity-server。此容器的基本系统是ariya/centos6-oracle-jre7,一个运行了Oracle官方Java 7的CentOS 6.5系统(更准确地说,到发稿为止是JRE 1.7.0_65-b17)。

假定你有一个已经安装了Docker的系统(VPS例如:Linode或DigitalOcean,Amazon EC2实例,一个虚拟机或一部真正的计算机),安装TeamCity服务器就简单到只需要运行下列命令。注意,如果你在使用OS X,如果你仅想试验本安装请使用boot2docker(参看我之前发表的博客 Docker on OS X 了解更多细节)。

docker run -dt -name teamcity_server -p 8111:8111 ariya/centos6-teamcity-server
DavidWTF
DavidWTF
翻译于 2014/08/07 15:04
1

几分钟后,打开机器地址的8111端口,开始TeamCity服务器的Web配置(更多细节请阅读官方TeamCity文档),如下图所示。如果你的系统使用了iptalbes,确保8111端口允许连接。注意,TeamCity数据将存储在特殊的位置/data/teamcity这是一个标准的Docker卷,应当允许简单挂载、备份和未来升级。

teamcity

服务器配置完成后,就应为此服务器指定构建代理(不然,什么也构建不了)。通过运行容器ariya/centos-teamcity-agent,我们再次用Docker产生一个构建代理。为了让代理工作,我们需要为它指定服务器。运行下列命令:

docker run -e TEAMCITY_SERVER=http://buildserver:8111 \
    -dt -p 9090:9090 ariya/centos6-teamcity-agent
DavidWTF
DavidWTF
翻译于 2014/08/07 15:58
1

如果你在运行着服务器容器的同一台主机上运行它,你需要将它们连接(link)起来。

docker run -e TEAMCITY_SERVER=http://teamcity_server:8111 \
    --link teamcity_server:teamcity_server -dt ariya/centos6-teamcity-agent

环境变量中的TEAMCITY_SERVER是必须的,需要指向你上一步启动的TeamCity服务器的本地实例。一旦你运行了这个容器,它会连接到所指定的服务器,下载代理ZIP文件并安装。第一次连接服务器后,构建代理通常需要花几分钟时间更新。如果一切工作正常,在你的TeamCity服务器Web页面的Agent标签项中,你将看到一个新的代理。授权代理,现在它准备接受任何构建工作了!

如果启动代理出现问题,(docker ps)没有显示运行的容器,重新运行它,但这次使用 -it选项(interactive terminal交互终端)代替 -dt。这将转存一些额外的调试信息,有助于解决问题。

DavidWTF
DavidWTF
翻译于 2014/08/07 16:25
1

注意,此代理容器也是基于带Java 7的CentOS 6。通常这还不够,你可能需要其它的依赖项(不同的SDK,编译器,库等等)。理想情况下,那些依赖项能自动解决,或基于不同系统容器,或通过正确的自动设置。更多细节,参考我之前发表的博客 Build Agent: Template vs Provisioning

还有借口不用持续集成?我可不这么想!

DavidWTF
DavidWTF
翻译于 2014/08/07 16:56
1
本文中的所有译文仅用于学习和交流目的,转载请务必注明文章译者、出处、和本文链接。
我们的翻译工作遵照 CC 协议,如果我们的工作有侵犯到您的权益,请及时联系我们。
加载中

评论(5)

hjhfrank
hjhfrank
其实安装这个很简单的好不好?我昨晚刚安装了
本文下载的TeamCity路径为/usr/local/src/
# cd /usr/local/src/TeamCity
# ./bin/teamcity-server.sh start
显示如下:
Using CATALINA_BASE: /usr/local/src/TeamCity
Using CATALINA_HOME: /usr/local/src/TeamCity
Using CATALINA_TMPDIR: /usr/local/src/TeamCity/temp
Using JRE_HOME: /usr
Using CLASSPATH: /usr/local/src/TeamCity/bin/bootstrap.jar:/usr/local/src/TeamCity/bin/tomcat-juli.jar
Tomcat started.

# ps aux | grep tomcat
# ps aux | grep teamcity
查看tomcat 和 teamcity 是否已成功启动即可

再通过查看配置文件得知teamcity的端口号
#vim /usr/local/src/TeamCity/conf/server.xml
<Connector port="8111" protocol="org.apache.coyote.http11.Http11NioProtocol"
connectionTimeout="60000"
redirectPort="8543"
useBodyEncodingForURI="true"
socket.txBufSize="64000"
socket.rxBufSize="64000"
tcpNoDelay="1"
/>

本版本为TeamCity 9.0.2 (build 32195)
其中8111即为端口号
开放了即可用ip+端口访问
阿兵哥
阿兵哥
对呀瞬间复杂啦
hy2014qq
hy2014qq
afsaf
knktc
knktc
teamcity的安装本身就很方便啊,这么一整感觉更复杂了
雪梦科技
雪梦科技
很不错的文章,感谢分享。
返回顶部
顶部