持續集成:TeamCity 的安裝和使用
字數2840 閱讀1061 評論2 喜歡10
TeamCity
本文初衷
讓大家瞭解持續集成(CI),以及入門瞭解 JetBrains 家的 TeamCity 的一些簡單實用。
TeamCity 的一些複雜使用我暫時也不會,一樣也是要看文檔的,所以不管怎樣你都要養成看官網文檔的習慣。
TeamCity 和 Jenkins、Hudson 其實是非常一樣的,基本流程都是差不多的,所以如果你會其他的幾個 CI 工具的話,學習起來很快。
Docker 已經開始在引入到 CI、CD(持續交付)過程中,可以大大簡化整體的過程,也許這是未來的一個方向,有興趣的可以瞭解更多。
它是什麼
官網定義(就一句話):
Powerful Continuous Integration out of the box
官網文檔:https://confluence.jetbrains.com/display/TCD9/TeamCity+Documentation
支持的平臺、環境如下圖(看不懂也沒關係,只要知道它最友好的是 Java 開發即可):
TeamCity
對上圖的具體講解可以看(很重要):https://confluence.jetbrains.com/display/TCD9/Supported+Platforms+and+Environments
爲什麼會出現
TeamCity 的出現需要了解這個概念:持續集成(Continuous Integration)
網絡文章:http://www.ruanyifeng.com/blog/2015/09/continuous-integration.html
哪些人喜歡它
哪些人不喜歡它
Google 不到結果,應該是沒人不喜歡,只是有些人用不慣
爲什麼學習它
更好地保證項目質量
同類工具
Jenkins:http://jenkins-ci.org/
Travis CI:http://travis-ci.org/
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 環境)
在我講之前,如果你英文還可以,就到官網這裏看下:
安裝環境要求:
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 ACCEPT
sudo /etc/rc.d/init.d/iptables save
sudo 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 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 3.2.5:http://archive.apache.org/dist/maven/maven-3/3.2.5/binaries/
如上圖,這臺服務器必須裝有 Maven、JDK
如上圖,
Goals
我們的目標是clean install deploy
如上圖,
Maven Home
我建議是自己自定義路徑,這樣肯定不會有問題。所以你服務器上的 Maven 安裝路徑是什麼你就在這裏填寫上去。Maven 目前支持的最高版本是:3.2.5如上圖,
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
代碼檢查功能: