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

本文初衷

  • 讓大家了解持續(xù)集成(CI)眯漩,以及入門(mén)了解 JetBrains 家的 TeamCity 的一些簡(jiǎn)單實(shí)用。
  • TeamCity 的一些復(fù)雜使用我暫時(shí)也不會(huì)吨娜,一樣也是要看文檔的脓匿,所以不管怎樣你都要養(yǎng)成看官網(wǎng)文檔的習(xí)慣。
  • TeamCity 和 Jenkins宦赠、Hudson 其實(shí)是非常一樣的陪毡,基本流程都是差不多的,所以如果你會(huì)其他的幾個(gè) CI 工具的話勾扭,學(xué)習(xí)起來(lái)很快缤骨。
  • Docker 已經(jīng)開(kāi)始在引入到 CI、CD(持續(xù)交付)過(guò)程中尺借,可以大大簡(jiǎn)化整體的過(guò)程,也許這是未來(lái)的一個(gè)方向精拟,有興趣的可以了解更多燎斩。

它是什么

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

哪些人不喜歡它

  • Google 不到結(jié)果栅表,應(yīng)該是沒(méi)人不喜歡笋鄙,只是有些人用不慣

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

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

同類工具

TeamCity 入門(mén)

  • 先來(lái)看一段官網(wǎng)的介紹視頻
  • 這個(gè)視頻其實(shí)已經(jīng)很清楚地說(shuō)明了一個(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
  • 開(kāi)始安裝(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
  • 訪問(wèn)(TeamCity 默認(rèn)端口是:8111):http://192.168.1.113:8111/
  • 如果訪問(wèn)不了绎晃,請(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)可以訪問(wèn)的情況,我們開(kāi)始進(jìn)入 TeamCity 的設(shè)置向?qū)В?/p>

  • image
  • image
    • 如上圖英文所示咱揍,TeamCity 的一些構(gòu)建歷史颖榜、用戶信息、構(gòu)建結(jié)果等這類數(shù)據(jù)是需要放在關(guān)系型數(shù)據(jù)庫(kù)上的述召,而默認(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)藤为,這樣我們無(wú)需在一開(kāi)始使用的就考慮數(shù)據(jù)庫(kù)遷移或安裝的問(wèn)題,我們只要好好感受 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ù)庫(kù)的過(guò)程稍微需要點(diǎn)時(shí)間存淫,我這邊是幾分鐘。
  • image
    • 如上圖所示沼填,接受下協(xié)議
  • image
    • 如上圖所示桅咆,我們要?jiǎng)?chuàng)建一個(gè)頂級(jí)管理員賬號(hào),我個(gè)人習(xí)慣測(cè)試的賬號(hào)是:admin坞笙,123456
  • image

項(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)目道理是一樣的,這里就不多說(shuō)螟蝙。

  • image
  • 如上圖恢恼,由于目前只要是公司的項(xiàng)目都應(yīng)該是在版本控制的,所以這里我們選擇:Create project from URL

  • image
  • 如上圖胰默,我們可以看出 TeamCity 也支持 HTTP场斑、SVN、Git 等鏈接方式牵署。

  • image
  • 輸入你項(xiàng)目托管商的賬號(hào)密碼漏隐,我這里用的是 oschina 的。

  • image
  • 賬號(hào)奴迅、密碼驗(yàn)證通過(guò)青责,現(xiàn)在可以給這個(gè)項(xiàng)目配置一個(gè)項(xiàng)目基本信息。

  • image
  • 在從版本控制中下載文件和掃描文件

  • image
  • TeamCity 自動(dòng)掃描到我是用 Maven 構(gòu)建的項(xiàng)目取具,所以把 POM 文件找出來(lái)了脖隶,如果你一個(gè)項(xiàng)目有多種構(gòu)建方式,有對(duì)應(yīng)的配置文件的話暇检,這里都會(huì)顯示出來(lái)的产阱。

  • 我們勾選 Maven 前面的復(fù)選框,點(diǎn)擊:Use Selected

  • image
  • 由于我們的目標(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è)很重要科汗。

  • image
    • 如上圖藻烤,這臺(tái)服務(wù)器必須裝有 Maven、JDK
    • 如上圖,Goals 我們的目標(biāo)是 clean install deploy
    • 如上圖隐绵,Maven Home 我建議是自己自定義路徑之众,這樣肯定不會(huì)有問(wèn)題。所以你服務(wù)器上的 Maven 安裝路徑是什么你就在這里填寫(xiě)上去依许。Maven 目前支持的最高版本是:3.2.5
    • 如上圖,Java Parameters 我建議也是自己自定義路徑缀蹄,別選擇其他選項(xiàng)峭跳。
  • image
    • 如上圖,點(diǎn)擊 run缺前,開(kāi)始手動(dòng)構(gòu)建該項(xiàng)目
  • image
    • 如上圖蛀醉,我們看到簡(jiǎn)略的構(gòu)建日志
  • image
  • image
    • 如上 2 張圖,我們看到詳細(xì)的構(gòu)建內(nèi)容
  • image
    • 如上圖衅码,當(dāng)我們版本控制中有提交的時(shí)候拯刁,TeamCity 會(huì)識(shí)別到記錄
  • image
    • 如上圖,我們可以看到提交的 Commit Message 信息逝段。
    • 如上圖垛玻,右邊紅圈的三個(gè)按鈕是用來(lái)處理這次提交的,常用的是第一次按鈕奶躯,點(diǎn)擊對(duì)此次版本進(jìn)行構(gòu)建
  • image
    • 如上圖帚桩,如果你要看所有的提交記錄,可以在 Change Log 看到并且指定版本構(gòu)建
  • image
    • 如上圖嘹黔,如果在你不想要這個(gè)項(xiàng)目的時(shí)候可以進(jìn)行刪除
  • image
    • 如上圖账嚎,因?yàn)?Goals 里面有 deploy 命令,所以構(gòu)建完成會(huì)發(fā)布到 Nexus 中儡蔓,這樣團(tuán)隊(duì)的人就可以用到最新的代碼了
  • image
    • 如上 gif 圖演示郭蕉,項(xiàng)目常去的幾個(gè)配置地方就是這樣些了

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

  • 官網(wǎng)提供的觸發(fā)行為有:https://confluence.jetbrains.com/display/TCD9/Configuring+Build+Triggers

  • 下面我們舉例說(shuō)常見(jiàn)的:VCS TriggerSchedule Trigger

  • image
    • 如上圖喂江,點(diǎn)擊 Add new trigger 添加觸發(fā)器
  • image
    • 如上圖召锈,常見(jiàn)的觸發(fā)器就這些了
  • image
    • 如上圖,配置好 VCS Trigger 效果是开呐,當(dāng)我們有代碼提交的時(shí)候烟勋,TeamCity 檢查到新版本之后自動(dòng)構(gòu)建,這個(gè)最常用
  • image
    • 如上圖筐付,Schedule Trigger 的作用就是定時(shí)構(gòu)建卵惦,除了常用的幾個(gè)輸入框設(shè)置定時(shí)外,TeamCity 還可以使用 Cron 語(yǔ)法進(jìn)行設(shè)置
    • TeamCity 采用的 Cron 語(yǔ)法是 Quartz瓦戚,具體你可以看:Quartz CronTrigger Tutorial
    • 如果你不懂 Cron 語(yǔ)法那就算了沮尿,但是我想做 Java 這個(gè)應(yīng)該要會(huì)的

集成 IntelliJ IDEA

  • 安裝 IntelliJ IDEA:https://confluence.jetbrains.com/display/TCD9/IntelliJ+Platform+Plugin

  • image
    • 如上圖,我們可以直接連上 TeamCity 服務(wù)器,這里的用戶名密碼是 TeamCity 的賬號(hào)系統(tǒng)畜疾。
  • image
    • 如上圖赴邻,連上去的效果是這里會(huì)打鉤
  • image
    • 如上圖,我們可以直接把別人提交的內(nèi)容做 patch 直接用 IntelliJ IDEA 進(jìn)行整合
    • 還有其他很多結(jié)合玩法大家可以自己去嘗試下

其他

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
禁止轉(zhuǎn)載啡捶,如需轉(zhuǎn)載請(qǐng)通過(guò)簡(jiǎn)信或評(píng)論聯(lián)系作者姥敛。
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市瞎暑,隨后出現(xiàn)的幾起案子彤敛,更是在濱河造成了極大的恐慌,老刑警劉巖了赌,帶你破解...
    沈念sama閱讀 211,376評(píng)論 6 491
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件墨榄,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡勿她,警方通過(guò)查閱死者的電腦和手機(jī)袄秩,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,126評(píng)論 2 385
  • 文/潘曉璐 我一進(jìn)店門(mén),熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)逢并,“玉大人之剧,你說(shuō)我怎么就攤上這事⊥埠荩” “怎么了猪狈?”我有些...
    開(kāi)封第一講書(shū)人閱讀 156,966評(píng)論 0 347
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)辩恼。 經(jīng)常有香客問(wèn)我雇庙,道長(zhǎng),這世上最難降的妖魔是什么灶伊? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 56,432評(píng)論 1 283
  • 正文 為了忘掉前任疆前,我火速辦了婚禮,結(jié)果婚禮上聘萨,老公的妹妹穿的比我還像新娘竹椒。我一直安慰自己,他們只是感情好米辐,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,519評(píng)論 6 385
  • 文/花漫 我一把揭開(kāi)白布胸完。 她就那樣靜靜地躺著,像睡著了一般翘贮。 火紅的嫁衣襯著肌膚如雪赊窥。 梳的紋絲不亂的頭發(fā)上,一...
    開(kāi)封第一講書(shū)人閱讀 49,792評(píng)論 1 290
  • 那天狸页,我揣著相機(jī)與錄音锨能,去河邊找鬼。 笑死,一個(gè)胖子當(dāng)著我的面吹牛址遇,可吹牛的內(nèi)容都是我干的熄阻。 我是一名探鬼主播,決...
    沈念sama閱讀 38,933評(píng)論 3 406
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼倔约,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼秃殉!你這毒婦竟也來(lái)了?” 一聲冷哼從身側(cè)響起跺株,我...
    開(kāi)封第一講書(shū)人閱讀 37,701評(píng)論 0 266
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤复濒,失蹤者是張志新(化名)和其女友劉穎,沒(méi)想到半個(gè)月后乒省,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 44,143評(píng)論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡畦木,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,488評(píng)論 2 327
  • 正文 我和宋清朗相戀三年袖扛,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片十籍。...
    茶點(diǎn)故事閱讀 38,626評(píng)論 1 340
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡蛆封,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出勾栗,到底是詐尸還是另有隱情惨篱,我是刑警寧澤,帶...
    沈念sama閱讀 34,292評(píng)論 4 329
  • 正文 年R本政府宣布围俘,位于F島的核電站砸讳,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏界牡。R本人自食惡果不足惜簿寂,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,896評(píng)論 3 313
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望宿亡。 院中可真熱鬧常遂,春花似錦、人聲如沸挽荠。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 30,742評(píng)論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)圈匆。三九已至漠另,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間臭脓,已是汗流浹背酗钞。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 31,977評(píng)論 1 265
  • 我被黑心中介騙來(lái)泰國(guó)打工, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人砚作。 一個(gè)月前我還...
    沈念sama閱讀 46,324評(píng)論 2 360
  • 正文 我出身青樓窘奏,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親葫录。 傳聞我的和親對(duì)象是個(gè)殘疾皇子着裹,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,494評(píng)論 2 348

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