持续集成:TeamCity 的安装和使用
TeamCity
本文初衷
- 让大家了解持续集成(CI),以及入门了解 JetBrains 家的 TeamCity 的一些简单实用。
- TeamCity 的一些复杂使用我暂时也不会,一样也是要看文档的,所以不管怎样你都要养成看官网文档的习惯。
- TeamCity 和 Jenkins、Hudson 其实是非常一样的,基本流程都是差不多的,所以如果你会其他的几个 CI 工具的话,学习起来很快。
- Docker 已经开始在引入到 CI、CD(持续交付)过程中,可以大大简化整体的过程,也许这是未来的一个方向,有兴趣的可以了解更多。
它是什么
- 官网定义(就一句话):
Powerful Continuous Integration out of the box - 官网首页:https://www.jetbrains.com/teamcity/
- 官网特性总结:https://www.jetbrains.com/teamcity/features/
- 百度百科:http://baike.baidu.com/view/3703414.htm
- 官网文档:https://confluence.jetbrains.com/display/TCD9/TeamCity+Documentation
- 支持的平台、环境如下图(看不懂也没关系,只要知道它最友好的是 Java 开发即可):
TeamCity- 对上图的具体讲解可以看(很重要):https://confluence.jetbrains.com/display/TCD9/Supported+Platforms+and+Environments
为什么会出现
- TeamCity 的出现需要了解这个概念:持续集成(Continuous Integration)
- 百科定义:http://baike.baidu.com/view/5253255.htm
- 网络文章:http://www.ruanyifeng.com/blog/2015/09/continuous-integration.html
哪些人喜欢它
- 持续集成学习笔记-入门篇(1)持续集成基本概念
- 7 reasons why you should be using Continuous Integration
- What is CI and why use it?
哪些人不喜欢它
- Google 不到结果,应该是没人不喜欢,只是有些人用不惯
为什么学习它
- 更好地保证项目质量
同类工具
- Jenkins:http://jenkins-ci.org/
- Travis CI:http://travis-ci.org/
- Bamboo:http://www.atlassian.com/software/bamboo
- Hudson:http://hudson-ci.org/
- QuickBuild:http://www.pmease.com/
- 其他:http://www.oschina.net/project/tag/344/ci?lang=0&os=0&sort=view&p=1
- 好的网络文章介绍:
TeamCity 入门
- 先来看一段官网的介绍视频
- 这个视频其实已经很清楚地说明了一个整理流程是怎样的,我今天只是做一个更加清晰的细节讲解而已
- 你需要穿越:https://www.youtube.com/watch?v=J-iYMMG6jmc#action=share
TeamCity 安装部署(Linux 环境)
- 在我讲之前,如果你英文还可以,就到官网这里看下:
- Installation Quick Start
- 安装环境要求:
- JDK 1.7 以上,如果你要使用的是 2016 最新的 TeamCity 9.1 的话,JDK 官网推荐的 1.8
- 安装包下载:https://www.jetbrains.com/teamcity/download/#section=linux-version
- 开始安装(eg:TeamCity-9.1.6.tar.gz):
- 解压压缩包(解压速度有点慢):
tar zxf TeamCity-9.1.6.tar.gz - 解压完的目录结构讲解:https://confluence.jetbrains.com/display/TCD9/TeamCity+Home+Directory
- 下载的 tar.gz 的本质是已经里面捆绑了一个 Tomcat,所以如果你会 Tomcat 的话,有些东西你可以自己改的。
- 按我个人习惯,把解压缩的目录放在 usr 目录下:
mv TeamCity/ /usr/program/ - 进入解压目录:
cd /usr/program/TeamCity/ - 启动程序:
/usr/program/TeamCity/bin/runAll.sh start - 停止程序:
/usr/program/TeamCity/bin/runAll.sh stop - 启动需要点时间,最好能给它一两分钟吧
- 解压压缩包(解压速度有点慢):
首次进入
- 假设我们已经启动了 TeamCity
- 访问(TeamCity 默认端口是:8111):http://192.168.1.113:8111/
- 如果访问不了,请先关闭防火墙:
service iptables stop - 你也可以选择把端口加入白名单中:
sudo iptables -I INPUT -p tcp -m tcp --dport 8111 -j ACCEPTsudo /etc/rc.d/init.d/iptables savesudo service iptables restart
- 如果你要改变端口,找到下面这个 8111 位置:
vim /usr/program/TeamCity/conf/server.xml
<Connector port="8111" ...
- 在假设你已经可以访问的情况,我们开始进入 TeamCity 的设置向导:
TeamCity 向导- 如上图英文所示,TeamCity 的一些软件安装的配置、服务的配置默认都会放在:
/root/.BuildServer - 如果你要了解更多 TeamCity Data Directory 目录,你可以看:https://confluence.jetbrains.com/display/TCD9/TeamCity+Data+Directory
- 如上图英文所示,TeamCity 的一些软件安装的配置、服务的配置默认都会放在:
TeamCity 向导- 如上图英文所示,TeamCity 的一些构建历史、用户信息、构建结果等这类数据是需要放在关系型数据库上的,而默认它给我们内置了一个。
- 如果你要了解更多 TeamCity External Database,你可以看:https://confluence.jetbrains.com/display/TCD9/Setting+up+an+External+Database
- 首次使用,官网是建议使用默认的:
Internal(HSQLDB),这样我们无需在一开始使用的就考虑数据库迁移或安装的问题,我们只要好好感受 TeamCity 给我们的,等我们决定要使用了,后续再更换数据也是可以的。但是内置的有一个注意点:'TeamCity with the native MSSQL external database driver is not compatible with Oracle Java 6 Update 29, due to a bug in Java itself. You can use earlier or later versions of Oracle Java.' - 假设我们就选
Internal(HSQLDB),则在创建初始化数据库的过程稍微需要点时间,我这边是几分钟。
TeamCity 向导- 如上图所示,接受下协议
TeamCity 向导- 如上图所示,我们要创建一个顶级管理员账号,我个人习惯测试的账号是:
admin,123456
- 如上图所示,我们要创建一个顶级管理员账号,我个人习惯测试的账号是:
TeamCity 向导- 如上图所示,安装完首次进来地址:http://192.168.1.113:8111/profile.html?tab=userGeneralSettings
- 我们可以完善一些管理员信息和基础配置信息,这些配置不配置都无所谓了,只是完善了可以更加好用而已
- 如果你有 SMTP 的邮箱,你可以来这里开启邮件通知功能:http://192.168.1.113:8111/admin/admin.html?item=email
- 如果你要开启通知功能那肯定下一步就是考虑通知内容的模板要如何设定:https://confluence.jetbrains.com/display/TCD9//Customizing+Notifications
- 模板存放路径在:
/root/.BuildServer/config/_notifications,用的是 FreeMarker 的语法
项目的构建、管理
- 建议可以看下官网:https://confluence.jetbrains.com/display/TCD9/Configure+and+Run+Your+First+Build
- 现在让我们开始创建一个项目进行构建
- 项目管理地址:http://192.168.1.113:8111/admin/admin.html?item=projects
- 假设我现在有一个项目的结构是这样的:
- Youshop-Parent,输出是 pom
- Youshop-manage,输出是 pom
- Youshop-pojo,输出 jar
- 我们现在以 Youshop-pojo 为例,让它自动构建并发布到 Nexus 中,其他项目道理是一样的,这里就不多说。
TeamCity 向导- 如上图,由于目前只要是公司的项目都应该是在版本控制的,所以这里我们选择:Create project from URL
TeamCity 向导- 如上图,我们可以看出 TeamCity 也支持 HTTP、SVN、Git 等链接方式。
TeamCity 向导- 输入你项目托管商的账号密码,我这里用的是 oschina 的。
TeamCity 向导- 账号、密码验证通过,现在可以给这个项目配置一个项目基本信息。
TeamCity 向导- 在从版本控制中下载文件和扫描文件
TeamCity 向导- TeamCity 自动扫描到我是用 Maven 构建的项目,所以把 POM 文件找出来了,如果你一个项目有多种构建方式,有对应的配置文件的话,这里都会显示出来的。
- 我们勾选 Maven 前面的复选框,点击:
Use Selected
TeamCity 向导- 由于我们的目标是构建完自动发布到 Nexus,所以我们的 Maven Goals 应该是:
clean install deploy,这里我们应该点击:Edit,进行编辑。 - 如果你不懂 Maven Goals,那你需要学习下,这个很重要。
TeamCity 向导- 如上图,这台服务器必须装有 Maven、JDK
- 如上图,
Goals我们的目标是clean install deploy - 如上图,
Maven Home我建议是自己自定义路径,这样肯定不会有问题。所以你服务器上的 Maven 安装路径是什么你就在这里填写上去。Maven 目前支持的最高版本是:3.2.5- 下载 Maven 3.2.5:http://archive.apache.org/dist/maven/maven-3/3.2.5/binaries/
- 如上图,
Java Parameters我建议也是自己自定义路径,别选择其他选项。
TeamCity 向导- 如上图,点击
run,开始手动构建该项目
- 如上图,点击
TeamCity 向导- 如上图,我们看到简略的构建日志
TeamCity 向导
TeamCity 向导- 如上 2 张图,我们看到详细的构建内容
TeamCity 向导- 如上图,当我们版本控制中有提交的时候,TeamCity 会识别到记录
TeamCity 向导- 如上图,我们可以看到提交的 Commit Message 信息。
- 如上图,右边红圈的三个按钮是用来处理这次提交的,常用的是第一次按钮,点击对此次版本进行构建
TeamCity 向导- 如上图,如果你要看所有的提交记录,可以在 Change Log 看到并且指定版本构建
TeamCity 向导- 如上图,如果在你不想要这个项目的时候可以进行删除
TeamCity 向导- 如上图,因为 Goals 里面有 deploy 命令,所以构建完成会发布到 Nexus 中,这样团队的人就可以用到最新的代码了
TeamCity 向导- 如上 gif 图演示,项目常去的几个配置地方就是这样些了
配置自动构建触发行为
- 官网提供的触发行为有:https://confluence.jetbrains.com/display/TCD9/Configuring+Build+Triggers
- 下面我们举例说常见的:
VCS Trigger、Schedule Trigger
TeamCity 向导- 如上图,点击
Add new trigger添加触发器
- 如上图,点击
TeamCity 向导- 如上图,常见的触发器就这些了
TeamCity 向导- 如上图,配置好
VCS Trigger效果是,当我们有代码提交的时候,TeamCity 检查到新版本之后自动构建,这个最常用
- 如上图,配置好
TeamCity 向导- 如上图,
Schedule Trigger的作用就是定时构建,除了常用的几个输入框设置定时外,TeamCity 还可以使用 Cron 语法进行设置 - TeamCity 采用的 Cron 语法是 Quartz,具体你可以看:Quartz CronTrigger Tutorial
- 如果你不懂 Cron 语法那就算了,但是我想做 Java 这个应该要会的
- 如上图,
集成 IntelliJ IDEA
- 安装 IntelliJ IDEA:https://confluence.jetbrains.com/display/TCD9/IntelliJ+Platform+Plugin
TeamCity 向导- 如上图,我们可以直接连上 TeamCity 服务器,这里的用户名密码是 TeamCity 的账号系统。
TeamCity 向导- 如上图,连上去的效果是这里会打钩
TeamCity 向导- 如上图,我们可以直接把别人提交的内容做 patch 直接用 IntelliJ IDEA 进行整合
- 还有其他很多结合玩法大家可以自己去尝试下
其他
- TeamCity 的插件列表:https://confluence.jetbrains.com/display/TW/TeamCity+Plugins
- 使用外部数据库:
- 数据备份:https://confluence.jetbrains.com/display/TCD9/TeamCity+Data+Backup
- 代码检查功能:
原文链接:http://www.jianshu.com/p/255a484555d9
著作权归作者所有,转载请联系作者获得授权,并标注“简书作者”。
持续集成:TeamCity 的安装和使用的更多相关文章
- Jenkins持续集成企业实战系列之Jenkins持续集成简介及安装-----02
1. Jenkins持续集成简介 注:原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 .作者信息和本声明.否则将追究法律责任. 最初接触Jenkins也是由于公司需求, ...
- 有手就行2——持续集成环境—Jenkins安装、插件、用户权限及凭证管理
有手就行2--持续集成环境-Jenkins安装.插件.权限及凭证管理 持续集成环境(1)-Jenkins安装 持续集成环境(2)-Jenkins插件管理 持续集成环境(3)-Jenkins用户权限管理 ...
- 持续集成 TeamCity 的配置与使用
环境:实现自动编译与自动化测试,发布到远程服务器,环境 VS2015 +WIN2008R2 什么是TeamCity TeamCity是由Jetbrains开发的一款功能强大的持续集成(Continue ...
- 持续集成篇 --Hudson持续集成服务器的安装配置与使用
样例项目参考视频教程:http://www.roncoo.com/course/view/85d6008fe77c4199b0cdd2885eaeee53 IP:192.168.4.221 8G内存 ...
- Hudson持续集成服务器的安装配置与使用
Hudson只是一个持续集成服务器(持续集成工具),要想搭建一套完整的持续集成管理平台, 还需要用到前面课程中所讲到的 SVN.Maven.Sonar等工具,按需求整合则可. 1.安装 JDK并配置 ...
- 持续集成工具Jenkins安装、部署、使用
本文介绍jenkins,利用其做项目发布与持续集成交付工具. 一.Jenkins是什么? Jenkins是基于Java开发的一种持续集成工具,用于监控持续重复的工作,功能包括: 1.持续的软件版本发布 ...
- 【持续集成】jenkins安装部署从git获取代码
一:持续集成的概念: 1.1:总体的概括 持续集成Continuous Integration 持续交付Continuous Delivery 持续部署Continuous Deployment 1. ...
- Gitlab CI持续集成 - GitLab Runner 安装与注册
GitLab Runner安装 需要添加gitlab官方库: # For Debian/Ubuntu/Mint curl -L https://packages.gitlab.com/install/ ...
- Dubbo入门到精通学习笔记(六):持续集成管理平台之Hudson 持续集成服务器的安装配置与使用
文章目录 安装Hudson 使用Hudson tips:自动化部署 附录:两个脚本 安装Hudson IP:192.168.4.221 8G 内存(Hudson 多个工程在同时构建的情况下比较耗内存) ...
- Linux进阶之Jenkins持续集成介绍及安装演示
一.Jenkins介绍 Jenkins是一个开源软件项目,是基于Java开发的一种持续集成工具,用于监控持续重复的工作,旨在提供一个开放易用的软件平台,使软件的持续集成变成可能. Jenkins功能包 ...
随机推荐
- 【模板模式】 Template Pattern
模板模式 又叫模板方法模式,在一个方法中定义一个算法的骨架,而将一些步骤延迟到子类中.模板方法使得子类可以在不改变算法结构的情冴下,重新定义算法中的某些步骤(这个我觉得很抽象,很抽象) e:学会说“不 ...
- Linux Guard Service - 守护进程分裂
分裂守护进程 由于fork()后第一行仍然在循环中,使用fork()返回值鉴别当前进程的性质 int i = 0; for (i = 0; i < 10; i++) { // sleep(1); ...
- 群晖Synology
简介 群晖是做的最好的一家NAS公司,声称是买软件卖硬件,软件有丰富的功能. 白群晖就是指从正规渠道买软件+硬件,价格昂贵,性价比低. 黑群晖是指自己搭建或购买单独的硬件(可以是电脑主机.可以是其他厂 ...
- hdu 1542/1255 Atlantis/覆盖的面积
1542 1255 两道扫描线+线段树的入门题. 基本没有什么区别,前者是模板,后者因为是求覆盖次数至少在两次以上的,这个同样是具有并集性质的,所以把cover的判断条件更改一下就可以了qwq. hd ...
- logstash--使用ngxlog收集windows日志
收集流程 1nxlog => 2logstash => 3elasticsearch 1. nxlog 使用模块 im_file 收集日志文件,开启位置记录功能 2. nxlog 使用模块 ...
- jquery中的正则表达式
1.什么是正则表达式: 能让计算机读懂的字符串匹配规则. 2.正则表达式的写法: var re=new RegExp('规则', '可选参数');var re=/规则/修饰参数; 3.规则中的字符 1 ...
- PL/SQL那点事-->SqlSession operation; SQL []; ORA-01722: 无效数字
PL/SQL那点事-->SqlSession operation;SQL []; ORA-01722: 无效数字 出现这种情况,在网上查了很多方法:大致主要有两种方法帮助我们解决这个问题: 1. ...
- HTML5 调用百度地图API地理定位
<!DOCTYPE html> <html> <title>HTML5 HTML5 调用百度地图API地理定位实例</title> <head&g ...
- Flink学习笔记:Flink API 通用基本概念
本文为<Flink大数据项目实战>学习笔记,想通过视频系统学习Flink这个最火爆的大数据计算框架的同学,推荐学习课程: Flink大数据项目实战:http://t.cn/EJtKhaz ...
- 【医学影像】《Identifying Medical Diagnoses and Treatable Diseases by Image-Based Deep Learning》论文笔记
这篇论文的作者是张康教授为首的团队,联合国内外众多医院及科研机构,合力完成,最后发表在cell上,实至名归. 从方法的角度上来说,与上一篇博客中的论文很相似,采用的都是InceptionV3模型,同时 ...