持續整合工具TeamCity快速入門
大名鼎鼎的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就安裝好了。當然我新建了兩個專案,所以實際的介面可能會有所差別。
配置資料庫
還有一個注意點就是配置資料庫了。預設情況下TeamCity使用的是內建的資料庫,效能並不怎麼樣。所以為了將來使用更加順暢,TeamCity推薦我們設定自己的資料庫。
舉個例子,如果我準備用MySQL資料庫,那麼我需要下載一個MySQL的JDBC驅動mysql-connector-java-5.1.42-bin.jar
,然後把它放到TeamCity的資料資料夾的libjdbc
下,然後在TeamCity中配置相應的資料庫使用者名稱和密碼以便訪問資料庫。
當然這是Windows下的情況,如果使用Docker,可能不需要自己配置資料庫。另外配置玩資料庫之後並不是萬事大吉,有時候TeamCity還會幫你檢測到資料庫的效能問題,這時候只要照著他的提示修改資料庫的配置即可。
新建專案
第一次使用TeamCity的時候會提示你新建專案。之後如果要新建專案,點選右上角的Administration
即可。新建專案時需要提供專案程式碼的URL,支援Git、SVN等工具,這裡使用了我的一個簡易小專案作為例子,它的程式碼在這裡。
然後TeamCity會檢查輸入的地址,並提醒我們確認。
這樣,專案就建立完成了。
設定構建步驟
持續整合工具需要管理專案的整個生命週期,所以僅僅新增了專案還是不夠的。下面一步就是要設定具體的專案構建步驟。不同的專案可能有不同的構建過程,所以這裡就是設定的重點了。特別要說一下,TeamCity的免費版本只能支援20個構建步驟,所以如果需要用到更多配置的話就需要付費購買商業版了。
另外從這裡就可以看出構建工具的重要性。如果專案是Java專案,使用了業界著名的Maven或Gradle這樣的構建工具來管理專案,那麼TeamCity只需要自動檢測就可以完成所有配置步驟。如果沒有使用這樣的工具,那麼可能需要自己設定構建過程了。(比方說我這裡的WPF桌面程式,就只能自己設定了)
由於我用的例子是WPF桌面程式,所以這裡就來說說.NET程式的構建過程配置。如果使用了自動檢測功能的話,那麼TeamCity會自動幫你新增一個Visual Studio (sln)步驟。不過僅僅這一個步驟是遠遠不夠的,所以我們需要新增其他步驟。
首先考慮到專案中可能使用多種第三方庫,而在.NET平臺下第三方庫一般都是用NuGet獲取。所以我們需要新增一個NuGet步驟。首先點選上圖中的configure build steps manually
,然後選擇NuGet Installer
型別,在彈出的介面中設定相應的選項。
然後需要設定構建步驟,選擇Visual Studio (sln)即可。
這樣一來,專案構建的步驟就配置好了。
構建專案
設定好構建步驟之後,下一步就可以開始構建專案了。點選頁面上面的Projects
,切換回專案檢視。然後點選專案右邊的Run
即可。
這時候構建代理右邊的空白框也會變成藍色,表示正在構建專案。等待片刻,專案就會構建完畢。一個構建任務就完成了。
測試專案
一個成功的專案必然有完整的測試過程。還是那句話,如果專案使用了成熟的構建工具,那麼TeamCity就會自動檢測和使用這些功能。但是如果TeamCity沒有自動檢測到的話,就需要手動設定了。
首先點選對應專案的Build連結,然後點選構建設定(Settings),並在頁面下方找到構建步驟(Build Steps)。
在前面我們新增了兩個步驟,下面還要繼續新增一個測試步驟。新建一個步驟,型別選擇Visual Studio Tests。在Visual Studio Tests下還有兩個型別,MSTest和VSTest。它們的區別在於VSTest需要TeamCity構建代理伺服器上同時安裝有Visual Studio或者Visual Studio Test Agent。然後Test file names這裡需要填寫測試專案的程式集,只要填寫相對路徑就行了。具體程式集的位置和名稱需要根據專案來確定,我這個測試專案的情況就是如圖所示。最後如果需要檢查測試覆蓋率,還可以設定最後的.NET Coverage tool。
設定完成後再次執行構建命令,可以看到這次不僅構建了專案,還同時執行了測試,測試結果也會一併顯示。
如果點選進入詳情檢視,還會獲得更豐富的結果。這裡我同時選擇了程式碼覆蓋率功能,可以看到非常方便的圖表顯示。
自動構建
前面所有操作全部是手動點選執行構建的。當然TeamCity也支援自動構建,預設情況下每個專案都會新增一個觸發器,當專案所在的版本控制系統更新的時候觸發構建。當然這個條件也是可以修改的。
如下圖所示,觸發器的設定在專案設定中,如果需要其他觸發器設定在這裡更改即可。
郵件通知
如果構建失敗的話,TeamCity可以向你賬戶傳送電子郵件提醒你狀況,不過這需要你在TeamCity中設定SMTP伺服器才行。如果是公司的話,應該可以使用公司的企業郵箱進行設定。個人建議不要使用國內的電郵,因為有些國內電郵的伺服器由於經常傳送垃圾郵件,可能會被其他一些電郵拉黑,導致無法獲取電子郵件。
相關文章
- 整合持續整合工具
- Jenkins持續整合 入門實踐Jenkins
- iOS持續整合從入門到放棄(1)iOS
- 從零入門 Serverless | 教你 7 步快速構建 GitLab 持續整合環境ServerGitlab
- 持續整合平臺 01 jenkins 入門介紹Jenkins
- Django測試與持續整合:從入門到精通Django
- 持續整合、持續部署、持續交付、持續釋出
- 持續整合持續部署持續交付_持續整合與持續部署之間的真正區別
- 持續整合、持續交付、持續部署簡介
- Hudson:持續整合工具的安裝、使用
- 使用開源工具進行持續整合開源工具
- iOS 持續整合iOS
- 基於Jenkins快速搭建持續整合環境Jenkins
- 持續整合工具之Jenkins安裝部署Jenkins
- 持續整合工具之Jenkins基礎使用Jenkins
- 安全開發之持續整合相關工具
- 淺談持續整合(CI)、持續交付(CD)、持續部署(CD)
- 對持續整合、 持續交付、持續部署和持續釋出的介紹
- Jenkins持續整合Jenkins
- Yahoo!Screwdriver:可擴充套件的持續整合工具套件
- 以持續整合工具實現DevOps之禪dev
- 持續整合工具CC的一些經驗
- 持續整合工具Hudson安裝方法(非常簡單)
- 質量之匙:持續整合工具與實踐
- 從持續整合到持續交付——DockerCloud概覽DockerCloud
- 談談持續整合,持續交付,持續部署之間的區別
- Jenkins+Maven+SVN快速搭建持續整合環境(轉)JenkinsMaven
- 通過Docker容器執行持續整合/持續部署Docker
- 持續化整合工具 Jenkins 在 Ubuntu 中安裝JenkinsUbuntu
- 持續整合配置之Nuget
- Taro 小程式持續整合
- 持續整合JenkinsBlueOcean初探Jenkins
- Jenkins持續整合配置Jenkins
- ETL工具----Kettle快速入門
- 淺談持續整合的理解以及實現持續整合,需要做什麼?
- 快速入門 React hooks + 後端整合ReactHook後端
- 【CTF入門】BUUCTF Misc刷題(持續更新)
- 使用流水線外掛實現持續整合、持續部署