持續(xù)集成工具TeamCity快速入門

大名鼎鼎的Intellij IDEA大家都聽說過吧,它的出品公司Jetbrains不僅推出了一系列好用的IDE,同時還推出了現(xiàn)在正熱的Kotlin語言。Jetbrains還有一個非常好用的產(chǎn)品就是今天要介紹的持續(xù)集成工具TeamCity。

安裝

Windows下安裝

要安裝TeamCity很簡單,首先到下載頁面下載TeamCity,由于這里我用的是Windows系統(tǒng),所以下載Windows版本的安裝包。下載完成之后安裝即可。在Windows下安裝有一個好處就是可以安裝為服務(wù),這樣以后如果需要管理TeamCity的狀態(tài)會更方便一些。這里要說下,TeamCity分為兩個服務(wù),一個叫做構(gòu)建代理,實(shí)際的項(xiàng)目構(gòu)建都是通過這個代理服務(wù)來執(zhí)行的;另一個服務(wù)就是TeamCity的網(wǎng)頁版控制端,讓我們可以方便的通過網(wǎng)頁進(jìn)行管理。

當(dāng)然在下載頁面上可以看到有多個操作系統(tǒng),不論是Windows、macOS還是Linux都可以運(yùn)行TeamCity。

Docker下安裝

現(xiàn)在虛擬化服務(wù)越來越流行了,因?yàn)樘摂M化真的非常方便。如果需要在Docker中啟用TeamCity也同樣簡單。TeamCity對應(yīng)的DockerHub頁面在這里。

首先要做的就差拉取TeamCity鏡像。

docker pull jetbrains/teamcity-server

拉去鏡像之后啟動它的實(shí)例即可。下面是官方頁面上給出的例子,當(dāng)然這里的幾個名稱和文件位置可以根據(jù)需要自行修改。

docker run -it --name teamcity-server-instance  \
    -v <path to data directory>:/data/teamcity_server/datadir \
    -v <path to logs directory>:/opt/teamcity/logs  \
    -p <port on host>:8111 \
    jetbrains/teamcity-server

使用TeamCity

初始化

安裝完成并啟動TeamCity之后,我們就可以在Web頁面中訪問它了。如果是Windows系統(tǒng),那么默認(rèn)端口是80,如果是其他系統(tǒng)則是你自己設(shè)置的端口。然后訪問瀏覽器的localhost:80即可看到TeamCity頁面。第一次使用需要配置用戶并初始化,之后稍微等待一段時間即可。

之后應(yīng)該會看到類似的界面,這樣TeamCity就安裝好了。當(dāng)然我新建了兩個項(xiàng)目,所以實(shí)際的界面可能會有所差別。

TeamCity截圖

配置數(shù)據(jù)庫

還有一個注意點(diǎn)就是配置數(shù)據(jù)庫了。默認(rèn)情況下TeamCity使用的是內(nèi)置的數(shù)據(jù)庫,性能并不怎么樣。所以為了將來使用更加順暢,TeamCity推薦我們設(shè)置自己的數(shù)據(jù)庫。

舉個例子,如果我準(zhǔn)備用MySQL數(shù)據(jù)庫,那么我需要下載一個MySQL的JDBC驅(qū)動mysql-connector-java-5.1.42-bin.jar,然后把它放到TeamCity的數(shù)據(jù)文件夾的lib\jdbc下,然后在TeamCity中配置相應(yīng)的數(shù)據(jù)庫用戶名和密碼以便訪問數(shù)據(jù)庫。

當(dāng)然這是Windows下的情況,如果使用Docker,可能不需要自己配置數(shù)據(jù)庫。另外配置玩數(shù)據(jù)庫之后并不是萬事大吉,有時候TeamCity還會幫你檢測到數(shù)據(jù)庫的性能問題,這時候只要照著他的提示修改數(shù)據(jù)庫的配置即可。

新建項(xiàng)目

第一次使用TeamCity的時候會提示你新建項(xiàng)目。之后如果要新建項(xiàng)目,點(diǎn)擊右上角的Administration即可。新建項(xiàng)目時需要提供項(xiàng)目代碼的URL,支持Git、SVN等工具,這里使用了我的一個簡易小項(xiàng)目作為例子,它的代碼在這里。

新建項(xiàng)目

然后TeamCity會檢查輸入的地址,并提醒我們確認(rèn)。

確認(rèn)地址

這樣,項(xiàng)目就建立完成了。

設(shè)置構(gòu)建步驟

持續(xù)集成工具需要管理項(xiàng)目的整個生命周期,所以僅僅添加了項(xiàng)目還是不夠的。下面一步就是要設(shè)置具體的項(xiàng)目構(gòu)建步驟。不同的項(xiàng)目可能有不同的構(gòu)建過程,所以這里就是設(shè)置的重點(diǎn)了。特別要說一下,TeamCity的免費(fèi)版本只能支持20個構(gòu)建步驟,所以如果需要用到更多配置的話就需要付費(fèi)購買商業(yè)版了。

另外從這里就可以看出構(gòu)建工具的重要性。如果項(xiàng)目是Java項(xiàng)目,使用了業(yè)界著名的Maven或Gradle這樣的構(gòu)建工具來管理項(xiàng)目,那么TeamCity只需要自動檢測就可以完成所有配置步驟。如果沒有使用這樣的工具,那么可能需要自己設(shè)置構(gòu)建過程了。(比方說我這里的WPF桌面程序,就只能自己設(shè)置了)

由于我用的例子是WPF桌面程序,所以這里就來說說.NET程序的構(gòu)建過程配置。如果使用了自動檢測功能的話,那么TeamCity會自動幫你添加一個Visual Studio (sln)步驟。不過僅僅這一個步驟是遠(yuǎn)遠(yuǎn)不夠的,所以我們需要添加其他步驟。

自動檢測構(gòu)建步驟

首先考慮到項(xiàng)目中可能使用多種第三方庫,而在.NET平臺下第三方庫一般都是用NuGet獲取。所以我們需要添加一個NuGet步驟。首先點(diǎn)擊上圖中的configure build steps manually,然后選擇NuGet Installer類型,在彈出的界面中設(shè)置相應(yīng)的選項(xiàng)。

NuGet構(gòu)建步驟

然后需要設(shè)置構(gòu)建步驟,選擇Visual Studio (sln)即可。

構(gòu)建步驟

這樣一來,項(xiàng)目構(gòu)建的步驟就配置好了。

構(gòu)建過程配置完成2

構(gòu)建項(xiàng)目

設(shè)置好構(gòu)建步驟之后,下一步就可以開始構(gòu)建項(xiàng)目了。點(diǎn)擊頁面上面的Projects,切換回項(xiàng)目視圖。然后點(diǎn)擊項(xiàng)目右邊的Run即可。

運(yùn)行項(xiàng)目

這時候構(gòu)建代理右邊的空白框也會變成藍(lán)色,表示正在構(gòu)建項(xiàng)目。等待片刻,項(xiàng)目就會構(gòu)建完畢。一個構(gòu)建任務(wù)就完成了。

構(gòu)建成功

測試項(xiàng)目

一個成功的項(xiàng)目必然有完整的測試過程。還是那句話,如果項(xiàng)目使用了成熟的構(gòu)建工具,那么TeamCity就會自動檢測和使用這些功能。但是如果TeamCity沒有自動檢測到的話,就需要手動設(shè)置了。

首先點(diǎn)擊對應(yīng)項(xiàng)目的Build鏈接,然后點(diǎn)擊構(gòu)建設(shè)置(Settings),并在頁面下方找到構(gòu)建步驟(Build Steps)。

構(gòu)建設(shè)置

在前面我們添加了兩個步驟,下面還要繼續(xù)添加一個測試步驟。新建一個步驟,類型選擇Visual Studio Tests。在Visual Studio Tests下還有兩個類型,MSTest和VSTest。它們的區(qū)別在于VSTest需要TeamCity構(gòu)建代理服務(wù)器上同時安裝有Visual Studio或者Visual Studio Test Agent。然后Test file names這里需要填寫測試項(xiàng)目的程序集,只要填寫相對路徑就行了。具體程序集的位置和名稱需要根據(jù)項(xiàng)目來確定,我這個測試項(xiàng)目的情況就是如圖所示。最后如果需要檢查測試覆蓋率,還可以設(shè)置最后的.NET Coverage tool。

測試設(shè)置

設(shè)置完成后再次運(yùn)行構(gòu)建命令,可以看到這次不僅構(gòu)建了項(xiàng)目,還同時運(yùn)行了測試,測試結(jié)果也會一并顯示。

測試結(jié)果

如果點(diǎn)擊進(jìn)入詳情查看,還會獲得更豐富的結(jié)果。這里我同時選擇了代碼覆蓋率功能,可以看到非常方便的圖表顯示。

運(yùn)行測試詳細(xì)結(jié)果

自動構(gòu)建

前面所有操作全部是手動點(diǎn)擊執(zhí)行構(gòu)建的。當(dāng)然TeamCity也支持自動構(gòu)建,默認(rèn)情況下每個項(xiàng)目都會添加一個觸發(fā)器,當(dāng)項(xiàng)目所在的版本控制系統(tǒng)更新的時候觸發(fā)構(gòu)建。當(dāng)然這個條件也是可以修改的。

如下圖所示,觸發(fā)器的設(shè)置在項(xiàng)目設(shè)置中,如果需要其他觸發(fā)器設(shè)置在這里更改即可。

構(gòu)建觸發(fā)器

郵件通知

如果構(gòu)建失敗的話,TeamCity可以向你賬戶發(fā)送電子郵件提醒你狀況,不過這需要你在TeamCity中設(shè)置SMTP服務(wù)器才行。如果是公司的話,應(yīng)該可以使用公司的企業(yè)郵箱進(jìn)行設(shè)置。個人建議不要使用國內(nèi)的電郵,因?yàn)橛行﹪鴥?nèi)電郵的服務(wù)器由于經(jīng)常發(fā)送垃圾郵件,可能會被其他一些電郵拉黑,導(dǎo)致無法獲取電子郵件。

電郵通知
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • Spring Cloud為開發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見模式的工具(例如配置管理,服務(wù)發(fā)現(xiàn),斷路器,智...
    卡卡羅2017閱讀 136,578評論 19 139
  • Android 自定義View的各種姿勢1 Activity的顯示之ViewRootImpl詳解 Activity...
    passiontim閱讀 179,094評論 25 709
  • Spring Boot 參考指南 介紹 轉(zhuǎn)載自:https://www.gitbook.com/book/qbgb...
    毛宇鵬閱讀 47,275評論 6 342
  • 如果你要去玉泉路小市場看看琥珀蜜蠟,聽聽鳥鳴,要小心。 劉亮程凍壞的骨頭里的冷被我丟在了那里。 再留它一會兒,我的...
    一個沈旸閱讀 587評論 1 0
  • 1 小和尚跟著師父去化緣,兩人走了很多路,又累又渴,可是正值荒年,百姓家要吃飽肚子都很難,實(shí)在沒有多余的糧食可以分...
    凌云仙渡閱讀 6,350評論 3 13

友情鏈接更多精彩內(nèi)容