與 TeamCity 的持續整合
TeamCity 是一個持續整合伺服器,設計為在您每次進行變更時,自動對專案執行測試。您可以設定 TeamCity,在您的測試通過或將變更部署到遠端環境時,自動提交變更至版本控制。透過整合 rvm 與 TeamCity,您可以針對多個 Ruby 版本執行測試,並使用獨立的 gem 組合測試多個專案。
一般概觀
為了使用 RVM 執行 TeamCity,您需要
- 設定一個 TeamCity 伺服器,用於管理您的建置,並提供一個網路介面,讓您可以監控和控制建置流程。
- 執行一個或多個獨立的建置代理程式,用於實際執行建置和執行您的測試。這些建置代理程式可以 與 TeamCity 伺服器位於同一台機器上,或從遠端機器連線。
- 在 TeamCity 伺服器上,指定您希望建置代理程式使用的 Ruby 和 Gemset,作為專案設定的一部分。
安裝 TeamCity
安裝建置代理程式
設定 TeamCity 專案
設定建置代理程式
在建置代理程式的機器上安裝專案的 Ruby 和 Gemset。這可以在每個建置代理程式機器上以手動方式執行,或作為命令列建置執行器執行,只要在代理程式嘗試使用 RVM 建置專案之前,在每個建置代理程式的環境中完成即可。
設定建置代理程式以使用 RVM
使用 Rake 建置執行器
TeamCity 5.1.3 包含對 Rake 建置執行器中 RVM 設定的支援。在建置執行器的「啟動參數」中,設定下列選項
- 「Ruby 解譯器路徑」可以是建置執行器上安裝的任何 RVM Ruby。(例如「1.9.2」)
- 「RVM Gemset 名稱」可以是指定 Ruby 中的任何 RVM Gemset。
使用命令列建置執行器
從 TeamCity 5.1.3 開始,命令列建置執行器不支援 RVM,但它們可以在適當的環境變數下使用 RVM。以下範例示範如何使用命令列建置執行器執行「bundle install」。
在建置執行器設定步驟中
- 將「建置執行器」設定為「命令列」
- 將「命令執行檔」設定為「~/.rvm/gems/%rvm.ruby%@%rvm.gemset%/bin/bundle」
- 將「命令參數」設定為「install」
在屬性和環境變數設定步驟中
新增下列兩個「設定參數」。將這些值設定為設定參數,讓它們可以在建置執行器設定和下列環境變數中重複使用。
名稱 | 值 |
---|---|
rvm.ruby | 專案的 Ruby |
rvm.gemset | 專案的 Gemset |
將下列環境變數新增到「建置參數」
名稱 | 值 |
---|---|
BUNDLE_PATH | ~/.rvm/gems/%rvm.ruby%@%rvm.gemset% |
GEM_HOME | ~/.rvm/gems/%rvm.ruby%@%rvm.gemset% |
GEM_PATH | ~/.rvm/gems/%rvm.ruby%@%rvm.gemset%:/home/teamcity/.rvm/gems/%rvm.ruby%@global |
PATH | ~/.rvm/bin:~/.rvm/rubies/%rvm.ruby%/bin:~/.rvm/gems/%rvm.ruby%@%rvm.gemset%/bin:~/.rvm/gems/%rvm.ruby%@global/bin:%env.PATH% |
使用上述任何一種設定,建置代理程式在執行建置時都能參照 RVM Ruby 和 Gemset。