首先明确一个概念, 什么是 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 的基本使用.
来源: https://juejin.im/post/5ba79834e51d450e942f3895