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

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

Source

  • TeamCity

本文初衷

  • 讓大家了解持續(xù)集成(CI),以及入門了解 JetBrains 家的 TeamCity 的一些簡單實用。
  • TeamCity 的一些復(fù)雜使用我暫時也不會府喳,一樣也是要看文檔的宴卖,所以不管怎樣你都要養(yǎng)成看官網(wǎng)文檔的習(xí)慣。
  • TeamCity 和 Jenkins、Hudson 其實是非常一樣的捌归,基本流程都是差不多的亿絮,所以如果你會其他的幾個 CI 工具的話告喊,學(xué)習(xí)起來很快。
  • Docker 已經(jīng)開始在引入到 CI派昧、CD(持續(xù)交付)過程中黔姜,可以大大簡化整體的過程,也許這是未來的一個方向蒂萎,有興趣的可以了解更多秆吵。

它是什么

為什么會出現(xiàn)

哪些人喜歡它

哪些人不喜歡它

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

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

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

同類工具

TeamCity 入門

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):
    • 解壓壓縮包(解壓速度有點慢):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)里面捆綁了一個 Tomcat猾浦,所以如果你會 Tomcat 的話,有些東西你可以自己改的灯抛。
    • 按我個人習(xí)慣金赦,把解壓縮的目錄放在 usr 目錄下:mv TeamCity/ /usr/program/
    • 進(jìn)入解壓目錄:cd /usr/program/TeamCity/
    • 啟動程序:/usr/program/TeamCity/bin/runAll.sh start
    • 停止程序:/usr/program/TeamCity/bin/runAll.sh stop
    • 啟動需要點時間,最好能給它一兩分鐘吧

首次進(jìn)入

  • 假設(shè)我們已經(jīng)啟動了 TeamCity

  • 訪問(TeamCity 默認(rèn)端口是:8111):http://192.168.1.113:8111/

  • 如果訪問不了对嚼,請先關(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
  • 如果你要改變端口夹抗,找到下面這個 8111 位置:vim /usr/program/TeamCity/conf/server.xml

    <Connector port="8111" ...

  • 在假設(shè)你已經(jīng)可以訪問的情況,我們開始進(jìn)入 TeamCity 的設(shè)置向?qū)В?/p>

  • TeamCity 向?qū)?/p>

  • TeamCity 向?qū)?/p>

    • 如上圖英文所示靡砌,TeamCity 的一些構(gòu)建歷史已脓、用戶信息、構(gòu)建結(jié)果等這類數(shù)據(jù)是需要放在關(guān)系型數(shù)據(jù)庫上的通殃,而默認(rèn)它給我們內(nèi)置了一個度液。
    • 如果你要了解更多 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)置的有一個注意點:'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ù)庫的過程稍微需要點時間齐疙,我這邊是幾分鐘。
  • TeamCity 向?qū)?/p>

    • 如上圖所示旭咽,接受下協(xié)議
  • TeamCity 向?qū)?/p>

    • 如上圖所示贞奋,我們要創(chuàng)建一個頂級管理員賬號,我個人習(xí)慣測試的賬號是:admin轻专,123456
  • TeamCity 向?qū)?/p>

項目的構(gòu)建、管理

  • 建議可以看下官網(wǎng):https://confluence.jetbrains.com/display/TCD9/Configure+and+Run+Your+First+Build

  • 現(xiàn)在讓我們開始創(chuàng)建一個項目進(jìn)行構(gòu)建

  • 項目管理地址:http://192.168.1.113:8111/admin/admin.html?item=projects

  • 假設(shè)我現(xiàn)在有一個項目的結(jié)構(gòu)是這樣的:

    • Youshop-Parent漫拭,輸出是 pom
      • Youshop-manage亚兄,輸出是 pom
        • Youshop-pojo,輸出 jar
  • 我們現(xiàn)在以 Youshop-pojo 為例采驻,讓它自動構(gòu)建并發(fā)布到 Nexus 中审胚,其他項目道理是一樣的,這里就不多說礼旅。

  • TeamCity 向?qū)?/p>

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

  • TeamCity 向?qū)?/p>

  • 如上圖痘系,我們可以看出 TeamCity 也支持 HTTP菲嘴、SVN、Git 等鏈接方式汰翠。

  • TeamCity 向?qū)?/p>

  • 輸入你項目托管商的賬號密碼龄坪,我這里用的是 oschina 的。

  • TeamCity 向?qū)?/p>

  • 賬號复唤、密碼驗證通過健田,現(xiàn)在可以給這個項目配置一個項目基本信息。

  • TeamCity 向?qū)?/p>

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

  • TeamCity 向?qū)?/p>

  • TeamCity 自動掃描到我是用 Maven 構(gòu)建的項目佛纫,所以把 POM 文件找出來了亭畜,如果你一個項目有多種構(gòu)建方式悠咱,有對應(yīng)的配置文件的話铛只,這里都會顯示出來的杆怕。

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

  • TeamCity 向?qū)?/p>

  • 由于我們的目標(biāo)是構(gòu)建完自動發(fā)布到 Nexus攒盈,所以我們的 Maven Goals 應(yīng)該是:clean install deploy,這里我們應(yīng)該點擊:Edit哎榴,進(jìn)行編輯型豁。

  • 如果你不懂 Maven Goals,那你需要學(xué)習(xí)下尚蝌,這個很重要迎变。

  • TeamCity 向?qū)?/p>

    • 如上圖,這臺服務(wù)器必須裝有 Maven飘言、JDK
    • 如上圖衣形,Goals 我們的目標(biāo)是 clean install deploy
    • 如上圖,Maven Home 我建議是自己自定義路徑,這樣肯定不會有問題谆吴。所以你服務(wù)器上的 Maven 安裝路徑是什么你就在這里填寫上去倒源。Maven 目前支持的最高版本是:3.2.5
    • 如上圖,Java Parameters 我建議也是自己自定義路徑句狼,別選擇其他選項笋熬。
  • TeamCity 向?qū)?/p>

    • 如上圖,點擊 run腻菇,開始手動構(gòu)建該項目
  • TeamCity 向?qū)?/p>

    • 如上圖胳螟,我們看到簡略的構(gòu)建日志
  • TeamCity 向?qū)?/p>

  • TeamCity 向?qū)?/p>

    • 如上 2 張圖,我們看到詳細(xì)的構(gòu)建內(nèi)容
  • TeamCity 向?qū)?/p>

    • 如上圖筹吐,當(dāng)我們版本控制中有提交的時候糖耸,TeamCity 會識別到記錄
  • TeamCity 向?qū)?/p>

    • 如上圖,我們可以看到提交的 Commit Message 信息丘薛。
    • 如上圖蔬捷,右邊紅圈的三個按鈕是用來處理這次提交的,常用的是第一次按鈕榔袋,點擊對此次版本進(jìn)行構(gòu)建
  • TeamCity 向?qū)?/p>

    • 如上圖周拐,如果你要看所有的提交記錄,可以在 Change Log 看到并且指定版本構(gòu)建
  • TeamCity 向?qū)?/p>

    • 如上圖凰兑,如果在你不想要這個項目的時候可以進(jìn)行刪除
  • TeamCity 向?qū)?/p>

    • 如上圖妥粟,因為 Goals 里面有 deploy 命令,所以構(gòu)建完成會發(fā)布到 Nexus 中吏够,這樣團隊的人就可以用到最新的代碼了
  • TeamCity 向?qū)?/p>

    • 如上 gif 圖演示勾给,項目常去的幾個配置地方就是這樣些了

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

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

  • 下面我們舉例說常見的:VCS TriggerSchedule Trigger

  • TeamCity 向?qū)?/p>

    • 如上圖锅知,點擊 Add new trigger 添加觸發(fā)器
  • TeamCity 向?qū)?/p>

    • 如上圖播急,常見的觸發(fā)器就這些了
  • TeamCity 向?qū)?/p>

    • 如上圖,配置好 VCS Trigger 效果是售睹,當(dāng)我們有代碼提交的時候桩警,TeamCity 檢查到新版本之后自動構(gòu)建,這個最常用
  • TeamCity 向?qū)?/p>

    • 如上圖昌妹,Schedule Trigger 的作用就是定時構(gòu)建捶枢,除了常用的幾個輸入框設(shè)置定時外,TeamCity 還可以使用 Cron 語法進(jìn)行設(shè)置
    • TeamCity 采用的 Cron 語法是 Quartz飞崖,具體你可以看:Quartz CronTrigger Tutorial
    • 如果你不懂 Cron 語法那就算了烂叔,但是我想做 Java 這個應(yīng)該要會的

集成 IntelliJ IDEA

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

  • TeamCity 向?qū)?/p>

    • 如上圖,我們可以直接連上 TeamCity 服務(wù)器固歪,這里的用戶名密碼是 TeamCity 的賬號系統(tǒng)蒜鸡。
  • TeamCity 向?qū)?/p>

    • 如上圖,連上去的效果是這里會打鉤
  • TeamCity 向?qū)?/p>

    • 如上圖,我們可以直接把別人提交的內(nèi)容做 patch 直接用 IntelliJ IDEA 進(jìn)行整合
    • 還有其他很多結(jié)合玩法大家可以自己去嘗試下

其他

原文出處:簡書

img

立即體驗

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末逢防,一起剝皮案震驚了整個濱河市康聂,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌胞四,老刑警劉巖恬汁,帶你破解...
    沈念sama閱讀 217,084評論 6 503
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異辜伟,居然都是意外死亡氓侧,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,623評論 3 392
  • 文/潘曉璐 我一進(jìn)店門导狡,熙熙樓的掌柜王于貴愁眉苦臉地迎上來约巷,“玉大人,你說我怎么就攤上這事旱捧《览桑” “怎么了?”我有些...
    開封第一講書人閱讀 163,450評論 0 353
  • 文/不壞的土叔 我叫張陵枚赡,是天一觀的道長氓癌。 經(jīng)常有香客問我,道長贫橙,這世上最難降的妖魔是什么贪婉? 我笑而不...
    開封第一講書人閱讀 58,322評論 1 293
  • 正文 為了忘掉前任,我火速辦了婚禮卢肃,結(jié)果婚禮上疲迂,老公的妹妹穿的比我還像新娘。我一直安慰自己莫湘,他們只是感情好尤蒿,可當(dāng)我...
    茶點故事閱讀 67,370評論 6 390
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著幅垮,像睡著了一般腰池。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上军洼,一...
    開封第一講書人閱讀 51,274評論 1 300
  • 那天巩螃,我揣著相機與錄音,去河邊找鬼匕争。 笑死,一個胖子當(dāng)著我的面吹牛爷耀,可吹牛的內(nèi)容都是我干的甘桑。 我是一名探鬼主播,決...
    沈念sama閱讀 40,126評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼跑杭!你這毒婦竟也來了铆帽?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 38,980評論 0 275
  • 序言:老撾萬榮一對情侶失蹤德谅,失蹤者是張志新(化名)和其女友劉穎爹橱,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體窄做,經(jīng)...
    沈念sama閱讀 45,414評論 1 313
  • 正文 獨居荒郊野嶺守林人離奇死亡愧驱,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,599評論 3 334
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了椭盏。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片组砚。...
    茶點故事閱讀 39,773評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖掏颊,靈堂內(nèi)的尸體忽然破棺而出糟红,到底是詐尸還是另有隱情,我是刑警寧澤乌叶,帶...
    沈念sama閱讀 35,470評論 5 344
  • 正文 年R本政府宣布盆偿,位于F島的核電站,受9級特大地震影響准浴,放射性物質(zhì)發(fā)生泄漏陈肛。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 41,080評論 3 327
  • 文/蒙蒙 一兄裂、第九天 我趴在偏房一處隱蔽的房頂上張望句旱。 院中可真熱鬧,春花似錦晰奖、人聲如沸谈撒。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,713評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽啃匿。三九已至,卻和暖如春蛆楞,著一層夾襖步出監(jiān)牢的瞬間溯乒,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 32,852評論 1 269
  • 我被黑心中介騙來泰國打工豹爹, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留裆悄,地道東北人。 一個月前我還...
    沈念sama閱讀 47,865評論 2 370
  • 正文 我出身青樓臂聋,卻偏偏與公主長得像光稼,于是被迫代替她去往敵國和親或南。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 44,689評論 2 354

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