持續整合工具TeamCity快速入門

過了即是客發表於2017-07-02

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

安裝

Windows下安裝

要安裝TeamCity很簡單,首先到下載頁面下載TeamCity,由於這裡我用的是Windows系統,所以下載Windows版本的安裝包。下載完成之後安裝即可。在Windows下安裝有一個好處就是可以安裝為服務,這樣以後如果需要管理TeamCity的狀態會更方便一些。這裡要說下,TeamCity分為兩個服務,一個叫做構建代理,實際的專案構建都是通過這個代理服務來執行的;另一個服務就是TeamCity的網頁版控制端,讓我們可以方便的通過網頁進行管理。

當然在下載頁面上可以看到有多個作業系統,不論是Windows、macOS還是Linux都可以執行TeamCity。

Docker下安裝

現在虛擬化服務越來越流行了,因為虛擬化真的非常方便。如果需要在Docker中啟用TeamCity也同樣簡單。TeamCity對應的DockerHub頁面在這裡

首先要做的就差拉取TeamCity映象。

docker pull jetbrains/teamcity-server

拉去映象之後啟動它的例項即可。下面是官方頁面上給出的例子,當然這裡的幾個名稱和檔案位置可以根據需要自行修改。

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系統,那麼預設埠是80,如果是其他系統則是你自己設定的埠。然後訪問瀏覽器的localhost:80即可看到TeamCity頁面。第一次使用需要配置使用者並初始化,之後稍微等待一段時間即可。

之後應該會看到類似的介面,這樣TeamCity就安裝好了。當然我新建了兩個專案,所以實際的介面可能會有所差別。

832668-a2d3856035fb7836.png
TeamCity截圖

配置資料庫

還有一個注意點就是配置資料庫了。預設情況下TeamCity使用的是內建的資料庫,效能並不怎麼樣。所以為了將來使用更加順暢,TeamCity推薦我們設定自己的資料庫。

舉個例子,如果我準備用MySQL資料庫,那麼我需要下載一個MySQL的JDBC驅動mysql-connector-java-5.1.42-bin.jar,然後把它放到TeamCity的資料資料夾的lib\jdbc下,然後在TeamCity中配置相應的資料庫使用者名稱和密碼以便訪問資料庫。

當然這是Windows下的情況,如果使用Docker,可能不需要自己配置資料庫。另外配置玩資料庫之後並不是萬事大吉,有時候TeamCity還會幫你檢測到資料庫的效能問題,這時候只要照著他的提示修改資料庫的配置即可。

新建專案

第一次使用TeamCity的時候會提示你新建專案。之後如果要新建專案,點選右上角的Administration即可。新建專案時需要提供專案程式碼的URL,支援Git、SVN等工具,這裡使用了我的一個簡易小專案作為例子,它的程式碼在這裡

832668-83518675eb998a14.png
新建專案

然後TeamCity會檢查輸入的地址,並提醒我們確認。

832668-564f7a941191fda0.png
確認地址

這樣,專案就建立完成了。

設定構建步驟

持續整合工具需要管理專案的整個生命週期,所以僅僅新增了專案還是不夠的。下面一步就是要設定具體的專案構建步驟。不同的專案可能有不同的構建過程,所以這裡就是設定的重點了。特別要說一下,TeamCity的免費版本只能支援20個構建步驟,所以如果需要用到更多配置的話就需要付費購買商業版了。

另外從這裡就可以看出構建工具的重要性。如果專案是Java專案,使用了業界著名的Maven或Gradle這樣的構建工具來管理專案,那麼TeamCity只需要自動檢測就可以完成所有配置步驟。如果沒有使用這樣的工具,那麼可能需要自己設定構建過程了。(比方說我這裡的WPF桌面程式,就只能自己設定了)

由於我用的例子是WPF桌面程式,所以這裡就來說說.NET程式的構建過程配置。如果使用了自動檢測功能的話,那麼TeamCity會自動幫你新增一個Visual Studio (sln)步驟。不過僅僅這一個步驟是遠遠不夠的,所以我們需要新增其他步驟。

832668-9826d77777a88f3f.png
自動檢測構建步驟

首先考慮到專案中可能使用多種第三方庫,而在.NET平臺下第三方庫一般都是用NuGet獲取。所以我們需要新增一個NuGet步驟。首先點選上圖中的configure build steps manually,然後選擇NuGet Installer型別,在彈出的介面中設定相應的選項。

832668-6c44f7204ef871c3.png
NuGet構建步驟

然後需要設定構建步驟,選擇Visual Studio (sln)即可。

832668-f72a2529c59c40da.png
構建步驟

這樣一來,專案構建的步驟就配置好了。

832668-ccca04e94dd3db5a.png
構建過程配置完成2

構建專案

設定好構建步驟之後,下一步就可以開始構建專案了。點選頁面上面的Projects,切換回專案檢視。然後點選專案右邊的Run即可。

832668-d52264ef55aa5ff6.png
執行專案

這時候構建代理右邊的空白框也會變成藍色,表示正在構建專案。等待片刻,專案就會構建完畢。一個構建任務就完成了。

832668-104e061473e768ca.png
構建成功

測試專案

一個成功的專案必然有完整的測試過程。還是那句話,如果專案使用了成熟的構建工具,那麼TeamCity就會自動檢測和使用這些功能。但是如果TeamCity沒有自動檢測到的話,就需要手動設定了。

首先點選對應專案的Build連結,然後點選構建設定(Settings),並在頁面下方找到構建步驟(Build Steps)。

832668-b7b04e94a0a97d4a.png
構建設定

在前面我們新增了兩個步驟,下面還要繼續新增一個測試步驟。新建一個步驟,型別選擇Visual Studio Tests。在Visual Studio Tests下還有兩個型別,MSTest和VSTest。它們的區別在於VSTest需要TeamCity構建代理伺服器上同時安裝有Visual Studio或者Visual Studio Test Agent。然後Test file names這裡需要填寫測試專案的程式集,只要填寫相對路徑就行了。具體程式集的位置和名稱需要根據專案來確定,我這個測試專案的情況就是如圖所示。最後如果需要檢查測試覆蓋率,還可以設定最後的.NET Coverage tool。

832668-35e01b6c8edd7f92.png
測試設定

設定完成後再次執行構建命令,可以看到這次不僅構建了專案,還同時執行了測試,測試結果也會一併顯示。

832668-14f368003a580f69.png
測試結果

如果點選進入詳情檢視,還會獲得更豐富的結果。這裡我同時選擇了程式碼覆蓋率功能,可以看到非常方便的圖表顯示。

832668-d3a6209064eca169.png
執行測試詳細結果

自動構建

前面所有操作全部是手動點選執行構建的。當然TeamCity也支援自動構建,預設情況下每個專案都會新增一個觸發器,當專案所在的版本控制系統更新的時候觸發構建。當然這個條件也是可以修改的。

如下圖所示,觸發器的設定在專案設定中,如果需要其他觸發器設定在這裡更改即可。

832668-1c02dfa206b3a109.png
構建觸發器

郵件通知

如果構建失敗的話,TeamCity可以向你賬戶傳送電子郵件提醒你狀況,不過這需要你在TeamCity中設定SMTP伺服器才行。如果是公司的話,應該可以使用公司的企業郵箱進行設定。個人建議不要使用國內的電郵,因為有些國內電郵的伺服器由於經常傳送垃圾郵件,可能會被其他一些電郵拉黑,導致無法獲取電子郵件。

832668-f0197836bf10fee8.png
電郵通知

相關文章