TeamCity系列01:安装和配置

5,227 阅读5分钟

TeamCity[下文简称TC]是JetBrains旗下的一款持续集成[Continuous Integration,简称CI]工具,开箱即用。

声明:本系列所有内容针对Jdk1.8环境。


首先明确一个概念,什么是CI,CI要达到什么目的?简单来说,CI是一种软件开发实践,在软件项目团队中,每天都可能会有不同的开发人员提交代码,共享代码库中的代码是否时刻保持可运行状态,不得而知。那么,在开发进程中,持续的构建部署共享代码库,就能及时测试代码的可运行时态,及早发现问题并解决。

由此可见,在团队项目中,CI已经是必不可少的一环。

业界的CI工具也有很多,五花齐放,各显神通,如流行的开源工具Jenkins,以及CircleCI、GitLab CI等,本文不讨论各CI工具的优劣,聚焦TC的使用介绍。

TC是一款功能强大且用户用好的CI工具,具有以下主要功能:

1) 在不同平台和环境中同时运行并行构建

2) 优化代码集成周期并确保永远不会在存储库中获得损坏的代码

3) 通过智能测试重新排序查看即时测试结果报告

4) 支持Java和.net:为Java和.NET运行代码覆盖和重复查找器

5) 自定义构建持续时间,成功率,代码质量和自定义指标的统计信息


Windows下安装:

请确保系统中已经安装了maven和git软件,并正确配置了环境变量。这很重要。

1)下载exe安装程序:http://www.jetbrains.com/teamcity/download/

2)选择安装的功能组件:


Build Agent:构建代理,实际代码集成构建的载体,默认和TC服务Server安装在同一台服务器上。TC支持多构建代理,TC Server可以连接不同服务器上的多个不同构建代理,协同工作。由于当前是在演练环境,请勾选。

Server:TC服务,主要承载TC的核心服务和web界面,请勾选。

同时,勾选Windows Service,安装windows服务。

3)选择端口

默认端口是80,建议修改成8111:


4)配置Build Agent的属性:


如上图可知:TC服务的web地址是http://localhost:8111,同时构建代理对TC服务的监听端口是9090,以及代理所在的目录是C:\Softapp\JetBrains\TeamCity2\buildAgent,即在TC的安装目录下:


5)选择通过系统账号运行TC服务和Build Agent代理服务



6)开启服务


也可以通过windows services管理面板手动管理。



Centos7下安装:

确保已经安装了git和maven,并配置好了系统环境变量,这很重要。

1)下载tar.gz安装程序:http://www.jetbrains.com/teamcity/download/,并将安装包传送至centos系统,如拷贝至/data/software/目录中:


下面安装2018.1.2版本:

2)解压2018.1.2版本:

tar -xzvf /data/software/TeamCity-2018.1.2.tar.gz

生成TeamCity目录,打开目录,内容如下:


见上图:

bin:存放TC的可执行文件,如runAll.sh、startup.sh、shutdown.sh、teamcity-server.sh等;

buildAgent:默认构建代理目录,存放构建代理的文件以及执行信息;

conf:TC配置文件目录,如server.xml,可以更换TC的服务端口;

licenses:存放TC的凭证文件等;

logs:存放执行日志文件;

3)启动服务

runAll.sh脚本可以同时启动TC server和Build Agent;如果Build Agent需要单独启动的话,可以执行teamcity-server.sh单纯启动TC server,启停的命令如下:(后台执行)

  • 同时启动TC server和Build Agent:nohup /data/software/TeamCity/bin/runAll.sh start,对应停止服务命令:/data/software/TeamCity/bin/runAll.sh stop
  • 只启动TC server:nohup /data/software/TeamCity/bin/teamcity-server.sh start,对应停止服务命令:/data/software/TeamCity/bin/teamcity-server.sh stop

建议此处使用runAll.sh脚本。


TC服务配置:

在web浏览器中打开:http://localhost:8111,如果是远程centos服务器,首先开通8111防火墙,通过地址:http://[centos服务器ip]:8111访问。

1)配置TC数据存储目录Data Directory:


TeamCity数据目录是TeamCity服务器用于存储配置的设置信息、构建结果和当前操作的文件信息的目录。该目录是所有配置设置的主存储,并保存对TeamCity安装至关重要的数据。

默认即可,点击Proceed。

2)配置数据库


TeamCity可以在SQL数据库中存储构建历史记录,用户,构建结果和一些运行时数据,以便后续问题排查。

其中,包括HSQLDB内置数据库以及其他可持久化到硬盘的数据库,如mysql等。

HSQLDB是默认的内置数据库,但不建议使用,摘录TC官网所言:

在第一次TeamCity运行时,默认情况下建议使用基于HSQLDB数据库引擎的内部数据库。内部数据库仅适用于评估目的;它开箱即用,无需额外设置。

但是,我们强烈建议在生产环境中使用外部数据库作为后端TeamCity数据库。
外部数据库通常更可靠并提供更好的性能:内部数据库可能崩溃并丢失所有数据(例如,在“磁盘空间不足”情况下)。
此外,内部数据库在大型数据集(例如,超过200Mb的数据库存储文件)上可能变得非常慢。
另请注意,如果您使用内部数据库,我们的支持不会涵盖任何性能或数据库数据丢失问题。

简而言之,不要将内部HSQLDB数据库用于生产TeamCity实例。

我们选择MySQL数据库:


需要拷贝一个mysql jabc连接的jar到数据目录的lib/jabc目录下,或者选择在线下载。


然后再创建一个空数据库,执行如下命令:

create database <database-name> collate utf8_bin;
create user <user-name> identified by '<password>';
grant all privileges on <database-name>.* to <user-name>;
grant process on *.* to <user-name>;

然后在上图中填入数据库的连接信息,点击Proceed。

注意:必须新建一个空数据库并赋权,否则可能出现如下错误:

Found a TeamCity schema when expected an empty database

3)最后一步:创建TC的所有者账户信息


输入用户名和密码后,点击Create ccount,完成TC的配置。


好了,本文就到这里,下一篇讲讲TC的基本使用。