TeamCity安装和配置

前言

持续集成(CI)

TeamCity是JetBrains旗下的一款持续集成[Continuous Integration,简称CI]工具,开箱即用。学习TeamCity之前首先需要明确一个概念,什么是持续集成(CI)?

持续集成(CI)是一种软件开发实践,即团队开发成员经常集成他们的工作,通常每个成员每天至少集成一次,也就意味着每天可能会发生多次集成。每次集成都通过自动化的构建(包括编译,发布,自动化测试)来验证,从而尽早地发现集成错误。———《百度百科》

TeamCity

业界的CI工具已经有很多了,比如开源工具Jenkins,以及CircleCI、GitLab CI等,本文不讨论各CI工具的优劣,旨在介绍TeamCity的使用方式。

TeamCity是一款功能强大的持续集成(Continue Integration)工具,包括服务器端和客户端,目前支持Java,.Net项目开发。TeamCity提供一系列特性可以让团队快速实现持续继承:IDE工具集成、各种消息通知、各种报表、项目的管理、分布式的编译等等,所有的这些,都是 让你的团队快速享有持续继承带来的效率提升、高质量的软件保障。

环境

  1. JDK 1.8
  2. Maven 3.6
  3. TeamCity 2019.1.5
  4. SpringBoot 2.1.4.RELEASE
  5. Ubuntu 16.04
  6. GitHub

注意:此环境为本文使用环境,各位同学可根据自己公司生产环境酌情配置。

安装

1.Ubuntu系统下使用wget命令下载或者下载到本地之后,再拷贝到服务器上。

2.下载完成后通过tar -xvf fileName 命令,将文件解压。

3.将解压后的文件夹移动至/usr/local/并重名为:TeamCity(个人习惯,以方便服务器上软件管理,此步骤可省略),并cd到解压后TeamCity目录下的bin文件夹下,效果如下:

4.在此目录下执行./runAll.sh start 以启动TeamCity。查看进程检查是否启动成功。如下图,TeamCity启动成功,默认端口为8111

5.常用配置

如果你要改变端口,找到下面这个 8111 位置:vim /usr/local/TeamCity/conf/server.xml

<Connector port="8111" ...

启动程序:/usr/local/TeamCity/bin/runAll.sh start

停止程序:/usr/local/TeamCity/bin/runAll.sh stop

配置TeamCity

1.通过浏览器访问服务器IP:TeamCity端口,即可访问到如下页面。假设你已经可以访问到这个页面,首先配置TeamCity软件缓存目录,默认为/root/.BuildServer(初次使用不建议修改),点击Proceed

点击查看更多 TeamCity Data Directory 目录

2.TeamCity将构建历史记录,用户,构建结果和一些运行时数据存储在SQL数据库中。官网建议在首次使用的时候选择默认的:Internal(HSQLDB),但是,在生产环境中强烈建议将外部数据库用作后端TeamCity数据库。在本文中我们选择默认的:Internal(HSQLDB),然后进入漫长的等待。

点击查看更多 TeamCity External Database 配置

3.等待构建初始化

4.创建一个超级管理员用户(此步骤忘记截图,此图片来源网络)

5.本文跳过了完善基础信息步骤,如有需要,可自行百度

项目构建

项目可参考TeamCity测试项目

我们以此项目为例,将其通过TeamCity管理,实现自动构建并发布到本服务器上。

1.点击选择Project --> Create Project

2.选择:Create project from URL,输入项目地址和GitHub账户密码

TeamCity 支持 HTTP(S)、SVN、Git 等链接方式。

3.账号、密码验证通过之后,生成该项目的基础信息。

项目名中有-生成项目名时不会带出,需要手动添加。

4.TeamCity自动扫描到此项目是用Maven构建而成,所以把POM文件找了出来,如果你一个项目有多种构建方式,有对应的配置文件的话,这里都会显示出来的。此处我们勾选Maven前面的复选框,点击:Use Selected

5.由于我们的目的是构建完后将项目自动发布到该服务器,所以我们的 Maven Goals 应该是:clean install,这里我们应该点击:Edit,进行编辑

6.如下

  • Goals: maven install Maven 打包命令

  • Additional Maven command line parameters: -Dmaven.test.skip=true 跳过单元测试

  • Working directory: /repo maven下载jar包存放位置

  • Maven: <Custom> 选择本地安装的Maven

    /usr/local/maven 本地maven安装目录位置

  • JDK: <Custom> 选择本地安装的JDK

  • JDK home path: /usr/local/jdk8` 本地JDK安装目录位置

7.通过以上配置,已经完成通过TeamCity自动将项目获取并编译打包。点击Add build step,添加命令实现将项目自动运行。

8.选择Command LineStep name可以不填,为此步骤的名称;Custom Script,通过端口号将当前运行的项目停止;启动项目

// 通过端口号将当前运行的项目停止,将此处8004换成自己的项目端口
kill -9 $(netstat -nlp | grep :8004 | awk '{print $7}' | awk -F"/" '{ print $1 }')
// 启动项目,将此处目录换成自己实际jar包存放目录
nohup java -jar /repo/com/wayne/wayne-teamcity/0.0.1-SNAPSHOT/wayne-teamcity-0.0.1-SNAPSHOT.jar &

9.如下图,点击Run开始手动构建并运行我们的项目

10.点击Build Log查看构建日志

效果展示

好像看不到什么效果 o(╯□╰)o

通过以上配置,即实现了TeamCity(半)自动获取最新代码、构建、发版项目

TeamCity自动构建项目及集成IDEA(待更新......)

结束语

本人已开通公众号,欢迎大家前来灌水

TeamCity安装和配置的更多相关文章

  1. JDK安装与配置

    JDK安装与配置 一.下载 JDK是ORACLE提供免费下载使用的,官网地址:https://www.oracle.com/index.html 一般选择Java SE版本即可,企业版的选择Java ...

  2. Node.js 教程 01 - 简介、安装及配置

    系列目录: Node.js 教程 01 - 简介.安装及配置 Node.js 教程 02 - 经典的Hello World Node.js 教程 03 - 创建HTTP服务器 Node.js 教程 0 ...

  3. 烂泥:redis3.2.3安装与配置

    本文由ilanniweb提供友情赞助,首发于烂泥行天下 想要获得更多的文章,可以关注我的微信ilanniweb 前一段时间写过一篇codis集群的文章,写那篇文章主要是因为当时的项目不支持redis自 ...

  4. mysql源码包手动安装、配置以及测试(亲测可行)

    笔记编者:小波/qq463431476博客首页:http://www.cnblogs.com/xiaobo-Linux/ 记下这篇mysql笔记,望日后有用! redhat6采用centos yum源 ...

  5. 环境搭建系列-系统安装之centos 6.5安装与配置

    按照国际惯例,系列目录先奉上: 系列一:系统安装之centos 6.5安装与配置 系列二:准备工作之Java环境安装 系列三:数据为先之MySQL读写集群搭建 系列四:谈分布式之RabbitMQ集群搭 ...

  6. ZooKeeper安装与配置

    一. 单机安装.配置: 1. 下载zookeeper二进制安装包下载地址:http://apache.dataguru.cn/zookeeper/zookeeper-3.4.3/zookeeper-3 ...

  7. mac 下JDK 与 tomcat 的安装与配置

    一.Mac下JDK的安装 1.先检测Mac是否已经安装过JDK,在终端中输入java 或者 javac 显示说明,表明已经安装过JDK,JDK版本查询终端键入java -version,终端会返回JD ...

  8. 烂泥:zabbix3.0安装与配置

    本文由ilanniweb提供友情赞助,首发于烂泥行天下 想要获得更多的文章,可以关注我的微信ilanniweb 这个月又快过完了,最近也比较忙,没时间写文章,今天挤点时间把zabbix3.0安装与配置 ...

  9. Jenkins入门系列之——02第二章 Jenkins安装与配置

    2014-12-08:已不再担任SCM和CI的职位,Jenkins的文章如无必要不会再维护. 写的我想吐血,累死了. 网页看着不爽的,自己去下载PDF.有问题请留言! Jenkins入门系列之——03 ...

随机推荐

  1. keras输出预测值和真实值

    在使用keras搭建神经网络时,有时需要查看一下预测值和真是值的具体数值,然后可以进行一些其他的操作.这几天查阅了很多资料.好像没办法直接access到训练时的数据.所以我们可以通过回调函数,传入新的 ...

  2. STL函数适配器

    一:适配器简介 C++中有三类适配器,分别是容器适配器,迭代器适配器和函数适配器,这里主要介绍函数适配器. (一)函数适配器简介 STL中已经定义了大量的函数对象,但是有时候需要对函数返回值进行进一步 ...

  3. K8s常用命令操作

    K8s常用命令操作 一.kubectl命令补全 1.master安装命令补全,并临时生效 yum install -y bash-completion source /usr/share/bash-c ...

  4. 【C#设计模式3】工厂方法模式

    一.引言 在简单工厂模式中讲到简单工厂模式的缺点,有一点是——简单工厂模式系统难以扩展,一旦添加新产品就不得不修改简单工厂方法,这样就会造成简单工厂的实现逻辑过于复杂,然而本专题介绍的工厂方法模式可以 ...

  5. 携程Apollo统一配置中心的搭建和使用

    原文链接:https://blog.csdn.net/luhong327/article/details/81453001 一.Apollo配置中心介绍 1.What is Apollo 1.1 Ap ...

  6. ROS学习(二)运行keyboard

    1.ssh连接机器人 ./dora*.sh 启动roscore,相当于启动ros系统 roscore 2.另启终端,也就意味着重新ssh连接机器人, ./dora*.sh 运行wheel驱动 rosr ...

  7. [转帖]详解oracle数据库唯一主键SYS_GUID()

    详解oracle数据库唯一主键SYS_GUID() https://www.toutiao.com/i6728736163407856139/ 其实 需要注意 这里满不能截取 因为截取了 就不一定唯一 ...

  8. [转帖]Swagger介绍及使用

    Swagger介绍及使用 32018.12.07 01:39:21字数 2241阅读 89207 https://www.jianshu.com/p/349e130e40d5 导语: 相信无论是前端还 ...

  9. python之 -> 的含义

    函数或方法标注通常用于 :类型提示:例如以下函数预期接受两个 int 参数并预期返回一个 int 值: def sum(a: int, b: int) -> int: return a + b ...

  10. MongoDB 逻辑运算符

    逻辑与   $and:要求满足所有查询条件 ,否则返回空 语法:db.集合名.find{ $and: [ { <expression1> }, { <expression2>  ...