持續(xù)集成:TeamCity 的安裝和使用

  • TeamCity

本文初衷

  • 讓大家了解持續(xù)集成(CI)各薇,以及入門了解 JetBrains 家的 TeamCity 的一些簡(jiǎn)單實(shí)用。
  • TeamCity 的一些復(fù)雜使用我暫時(shí)也不會(huì)衣形,一樣也是要看文檔的拣宏,所以不管怎樣你都要養(yǎng)成看官網(wǎng)文檔的習(xí)慣缀拭。
  • TeamCity 和 Jenkins、Hudson 其實(shí)是非常一樣的眶蕉,基本流程都是差不多的砰粹,所以如果你會(huì)其他的幾個(gè) CI 工具的話,學(xué)習(xí)起來很快造挽。
  • Docker 已經(jīng)開始在引入到 CI碱璃、CD(持續(xù)交付)過程中,可以大大簡(jiǎn)化整體的過程饭入,也許這是未來的一個(gè)方向嵌器,有興趣的可以了解更多。

它是什么

為什么會(huì)出現(xiàn)

哪些人喜歡它

哪些人不喜歡它

  • Google 不到結(jié)果,應(yīng)該是沒人不喜歡庇谆,只是有些人用不慣

為什么學(xué)習(xí)它

  • 更好地保證項(xiàng)目質(zhì)量

同類工具

TeamCity 入門

  • 先來看一段官網(wǎng)的介紹視頻
  • 這個(gè)視頻其實(shí)已經(jīng)很清楚地說明了一個(gè)整理流程是怎樣的岳掐,我今天只是做一個(gè)更加清晰的細(xì)節(jié)講解而已
  • 你需要穿越:https://www.youtube.com/watch?v=J-iYMMG6jmc#action=share

TeamCity 安裝部署(Linux 環(huán)境)

  • 在我講之前,如果你英文還可以饭耳,就到官網(wǎng)這里看下:
  • Installation Quick Start
  • 安裝環(huán)境要求:
    • JDK 1.7 以上串述,如果你要使用的是 2016 最新的 TeamCity 9.1 的話,JDK 官網(wǎng)推薦的 1.8
  • 安裝包下載:https://www.jetbrains.com/teamcity/download/#section=linux-version
  • 開始安裝(eg:TeamCity-9.1.6.tar.gz):
    • 解壓壓縮包(解壓速度有點(diǎn)慢):tar zxf TeamCity-9.1.6.tar.gz
    • 解壓完的目錄結(jié)構(gòu)講解:https://confluence.jetbrains.com/display/TCD9/TeamCity+Home+Directory
    • 下載的 tar.gz 的本質(zhì)是已經(jīng)里面捆綁了一個(gè) Tomcat寞肖,所以如果你會(huì) Tomcat 的話纲酗,有些東西你可以自己改的。
    • 按我個(gè)人習(xí)慣新蟆,把解壓縮的目錄放在 usr 目錄下:mv TeamCity/ /usr/program/
    • 進(jìn)入解壓目錄:cd /usr/program/TeamCity/
    • 啟動(dòng)程序:/usr/program/TeamCity/bin/runAll.sh start
    • 停止程序:/usr/program/TeamCity/bin/runAll.sh stop
    • 啟動(dòng)需要點(diǎn)時(shí)間觅赊,最好能給它一兩分鐘吧

首次進(jìn)入

  • 假設(shè)我們已經(jīng)啟動(dòng)了 TeamCity
  • 訪問(TeamCity 默認(rèn)端口是:8111):http://192.168.1.113:8111/
  • 如果訪問不了,請(qǐng)先關(guān)閉防火墻: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
  • 如果你要改變端口琼稻,找到下面這個(gè) 8111 位置:vim /usr/program/TeamCity/conf/server.xml
<Connector port="8111" ...
  • 在假設(shè)你已經(jīng)可以訪問的情況吮螺,我們開始進(jìn)入 TeamCity 的設(shè)置向?qū)В?/li>
  • TeamCity 向?qū)?/div>
  • TeamCity 向?qū)?/div>
    • 如上圖英文所示萝风,TeamCity 的一些構(gòu)建歷史、用戶信息紫岩、構(gòu)建結(jié)果等這類數(shù)據(jù)是需要放在關(guān)系型數(shù)據(jù)庫上的规惰,而默認(rèn)它給我們內(nèi)置了一個(gè)。
    • 如果你要了解更多 TeamCity External Database泉蝌,你可以看:https://confluence.jetbrains.com/display/TCD9/Setting+up+an+External+Database
    • 首次使用歇万,官網(wǎng)是建議使用默認(rèn)的:Internal(HSQLDB),這樣我們無需在一開始使用的就考慮數(shù)據(jù)庫遷移或安裝的問題梨与,我們只要好好感受 TeamCity 給我們的堕花,等我們決定要使用了,后續(xù)再更換數(shù)據(jù)也是可以的粥鞋。但是內(nèi)置的有一個(gè)注意點(diǎn):'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.'
    • 假設(shè)我們就選 Internal(HSQLDB) 缘挽,則在創(chuàng)建初始化數(shù)據(jù)庫的過程稍微需要點(diǎn)時(shí)間,我這邊是幾分鐘呻粹。
  • TeamCity 向?qū)?/div>
    • 如上圖所示壕曼,接受下協(xié)議
  • TeamCity 向?qū)?/div>
    • 如上圖所示,我們要?jiǎng)?chuàng)建一個(gè)頂級(jí)管理員賬號(hào)等浊,我個(gè)人習(xí)慣測(cè)試的賬號(hào)是:admin腮郊,123456
  • TeamCity 向?qū)?/div>

項(xiàng)目的構(gòu)建过咬、管理

- Youshop-Parent,輸出是 pom
    - Youshop-manage制妄,輸出是 pom
        - Youshop-pojo掸绞,輸出 jar
  • 我們現(xiàn)在以 Youshop-pojo 為例,讓它自動(dòng)構(gòu)建并發(fā)布到 Nexus 中耕捞,其他項(xiàng)目道理是一樣的衔掸,這里就不多說。
  • TeamCity 向?qū)?/div>
  • 如上圖俺抽,由于目前只要是公司的項(xiàng)目都應(yīng)該是在版本控制的敞映,所以這里我們選擇:Create project from URL
  • TeamCity 向?qū)?/div>
  • 如上圖,我們可以看出 TeamCity 也支持 HTTP磷斧、SVN振愿、Git 等鏈接方式诗芜。
  • TeamCity 向?qū)?/div>
  • 輸入你項(xiàng)目托管商的賬號(hào)密碼,我這里用的是 oschina 的埃疫。
  • TeamCity 向?qū)?/div>
  • 賬號(hào)、密碼驗(yàn)證通過孩哑,現(xiàn)在可以給這個(gè)項(xiàng)目配置一個(gè)項(xiàng)目基本信息栓霜。
  • TeamCity 向?qū)?/div>
  • 在從版本控制中下載文件和掃描文件
  • TeamCity 向?qū)?/div>
  • TeamCity 自動(dòng)掃描到我是用 Maven 構(gòu)建的項(xiàng)目,所以把 POM 文件找出來了横蜒,如果你一個(gè)項(xiàng)目有多種構(gòu)建方式胳蛮,有對(duì)應(yīng)的配置文件的話,這里都會(huì)顯示出來的丛晌。
  • 我們勾選 Maven 前面的復(fù)選框仅炊,點(diǎn)擊:Use Selected
  • TeamCity 向?qū)?/div>
  • 由于我們的目標(biāo)是構(gòu)建完自動(dòng)發(fā)布到 Nexus,所以我們的 Maven Goals 應(yīng)該是:clean install deploy澎蛛,這里我們應(yīng)該點(diǎn)擊:Edit抚垄,進(jìn)行編輯。
  • 如果你不懂 Maven Goals谋逻,那你需要學(xué)習(xí)下呆馁,這個(gè)很重要。
  • TeamCity 向?qū)?/div>
    • 如上圖毁兆,這臺(tái)服務(wù)器必須裝有 Maven浙滤、JDK
    • 如上圖,Goals 我們的目標(biāo)是 clean install deploy
    • 如上圖悯嗓,Maven Home 我建議是自己自定義路徑铆惑,這樣肯定不會(huì)有問題薄霜。所以你服務(wù)器上的 Maven 安裝路徑是什么你就在這里填寫上去。Maven 目前支持的最高版本是:3.2.5
    • 如上圖揖膜,Java Parameters 我建議也是自己自定義路徑,別選擇其他選項(xiàng)骗爆。
  • TeamCity 向?qū)?/div>
    • 如上圖次氨,點(diǎn)擊 run,開始手動(dòng)構(gòu)建該項(xiàng)目
  • TeamCity 向?qū)?/div>
    • 如上圖摘投,我們看到簡(jiǎn)略的構(gòu)建日志
  • TeamCity 向?qū)?/div>
  • TeamCity 向?qū)?/div>
    • 如上 2 張圖煮寡,我們看到詳細(xì)的構(gòu)建內(nèi)容
  • TeamCity 向?qū)?/div>
    • 如上圖,當(dāng)我們版本控制中有提交的時(shí)候犀呼,TeamCity 會(huì)識(shí)別到記錄
  • TeamCity 向?qū)?/div>
    • 如上圖幸撕,我們可以看到提交的 Commit Message 信息。
    • 如上圖外臂,右邊紅圈的三個(gè)按鈕是用來處理這次提交的坐儿,常用的是第一次按鈕,點(diǎn)擊對(duì)此次版本進(jìn)行構(gòu)建
  • TeamCity 向?qū)?/div>
    • 如上圖,如果你要看所有的提交記錄貌矿,可以在 Change Log 看到并且指定版本構(gòu)建
  • TeamCity 向?qū)?/div>
    • 如上圖炭菌,如果在你不想要這個(gè)項(xiàng)目的時(shí)候可以進(jìn)行刪除
  • TeamCity 向?qū)?/div>
    • 如上圖,因?yàn)?Goals 里面有 deploy 命令逛漫,所以構(gòu)建完成會(huì)發(fā)布到 Nexus 中黑低,這樣團(tuán)隊(duì)的人就可以用到最新的代碼了
  • TeamCity 向?qū)?/div>
    • 如上 gif 圖演示,項(xiàng)目常去的幾個(gè)配置地方就是這樣些了

配置自動(dòng)構(gòu)建觸發(fā)行為

  • 官網(wǎng)提供的觸發(fā)行為有:https://confluence.jetbrains.com/display/TCD9/Configuring+Build+Triggers
  • 下面我們舉例說常見的:VCS Trigger酌毡、Schedule Trigger
  • TeamCity 向?qū)?/div>
    • 如上圖克握,點(diǎn)擊 Add new trigger 添加觸發(fā)器
  • TeamCity 向?qū)?/div>
    • 如上圖,常見的觸發(fā)器就這些了
  • TeamCity 向?qū)?/div>
    • 如上圖枷踏,配置好 VCS Trigger 效果是菩暗,當(dāng)我們有代碼提交的時(shí)候,TeamCity 檢查到新版本之后自動(dòng)構(gòu)建旭蠕,這個(gè)最常用
  • TeamCity 向?qū)?/div>
    • 如上圖停团,Schedule Trigger 的作用就是定時(shí)構(gòu)建,除了常用的幾個(gè)輸入框設(shè)置定時(shí)外掏熬,TeamCity 還可以使用 Cron 語法進(jìn)行設(shè)置
    • TeamCity 采用的 Cron 語法是 Quartz客蹋,具體你可以看:Quartz CronTrigger Tutorial
    • 如果你不懂 Cron 語法那就算了,但是我想做 Java 這個(gè)應(yīng)該要會(huì)的

集成 IntelliJ IDEA

  • 安裝 IntelliJ IDEA:https://confluence.jetbrains.com/display/TCD9/IntelliJ+Platform+Plugin
  • TeamCity 向?qū)?/div>
    • 如上圖孽江,我們可以直接連上 TeamCity 服務(wù)器讶坯,這里的用戶名密碼是 TeamCity 的賬號(hào)系統(tǒng)。
  • TeamCity 向?qū)?/div>
    • 如上圖岗屏,連上去的效果是這里會(huì)打鉤
  • TeamCity 向?qū)?/div>
    • 如上圖辆琅,我們可以直接把別人提交的內(nèi)容做 patch 直接用 IntelliJ IDEA 進(jìn)行整合
    • 還有其他很多結(jié)合玩法大家可以自己去嘗試下

其他

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市这刷,隨后出現(xiàn)的幾起案子婉烟,更是在濱河造成了極大的恐慌,老刑警劉巖暇屋,帶你破解...
    沈念sama閱讀 207,113評(píng)論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件似袁,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡咐刨,警方通過查閱死者的電腦和手機(jī)昙衅,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,644評(píng)論 2 381
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來定鸟,“玉大人而涉,你說我怎么就攤上這事×瑁” “怎么了啼县?”我有些...
    開封第一講書人閱讀 153,340評(píng)論 0 344
  • 文/不壞的土叔 我叫張陵材原,是天一觀的道長(zhǎng)。 經(jīng)常有香客問我季眷,道長(zhǎng)余蟹,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 55,449評(píng)論 1 279
  • 正文 為了忘掉前任子刮,我火速辦了婚禮客叉,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘话告。我一直安慰自己,他們只是感情好卵慰,可當(dāng)我...
    茶點(diǎn)故事閱讀 64,445評(píng)論 5 374
  • 文/花漫 我一把揭開白布沙郭。 她就那樣靜靜地躺著,像睡著了一般裳朋。 火紅的嫁衣襯著肌膚如雪病线。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 49,166評(píng)論 1 284
  • 那天鲤嫡,我揣著相機(jī)與錄音送挑,去河邊找鬼。 笑死暖眼,一個(gè)胖子當(dāng)著我的面吹牛惕耕,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播诫肠,決...
    沈念sama閱讀 38,442評(píng)論 3 401
  • 文/蒼蘭香墨 我猛地睜開眼司澎,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來了栋豫?” 一聲冷哼從身側(cè)響起挤安,我...
    開封第一講書人閱讀 37,105評(píng)論 0 261
  • 序言:老撾萬榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎丧鸯,沒想到半個(gè)月后蛤铜,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 43,601評(píng)論 1 300
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡丛肢,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,066評(píng)論 2 325
  • 正文 我和宋清朗相戀三年围肥,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片蜂怎。...
    茶點(diǎn)故事閱讀 38,161評(píng)論 1 334
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡虐先,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出派敷,到底是詐尸還是另有隱情蛹批,我是刑警寧澤撰洗,帶...
    沈念sama閱讀 33,792評(píng)論 4 323
  • 正文 年R本政府宣布,位于F島的核電站腐芍,受9級(jí)特大地震影響差导,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜猪勇,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,351評(píng)論 3 307
  • 文/蒙蒙 一设褐、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧泣刹,春花似錦助析、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,352評(píng)論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至掀泳,卻和暖如春雪隧,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背员舵。 一陣腳步聲響...
    開封第一講書人閱讀 31,584評(píng)論 1 261
  • 我被黑心中介騙來泰國打工脑沿, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人马僻。 一個(gè)月前我還...
    沈念sama閱讀 45,618評(píng)論 2 355
  • 正文 我出身青樓庄拇,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國和親韭邓。 傳聞我的和親對(duì)象是個(gè)殘疾皇子丛忆,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 42,916評(píng)論 2 344

推薦閱讀更多精彩內(nèi)容