支援
RVM 由志工社群維護,請將問題回報至 RVM 問題追蹤器。
如果您能提供協助或希望成為維護人員之一 - 只需開始協助即可。您可以在 RVM Github 組織 找到更多與 RVM 相關的專案。
贊助者
Carbon Ads

與 Jenkins 的持續整合

將 rvm 與 Jenkins 整合不僅讓您能使用不同的 gemset 測試多個專案,同時還能讓您同時針對多個 Ruby 測試不同的程式碼庫。以下指南主要以 Ubuntu 安裝為基礎,但這些說明應與任何平台相容。

請注意,這些說明是根據 Nick Quaranto 在 thoughbot 部落格上的 精彩部落格文章 為基礎,並改編為更通用的用途。

一般概觀

一般來說,您需要

如需更詳細的指南,請參閱下方

步驟 1. 取得並安裝 Jenkins

第一步是在您選擇的系統上安裝 Jenkins。目前,有幾種方法可以取得

  1. 透過作業系統層級套件安裝(在我們的案例中,是 debian 套件)
  2. 手動下載並設定
  3. 使用 jenkins.rb(它會綑綁常見的外掛程式等)

如果您選擇方法二或三,您需要先為 jenkins 建立一個新使用者(通常稱為「jenkins」)。在我們的案例中,我們將使用第一個選項,遵循 jenkins 官方網站上的說明。此方法會自動為我們設定 init.d,也會自動建立 jenkins 使用者。

如果手動設定,我建議透過 jenkins.rb 安裝 jenkins,以獲得它提供的便利性。

步驟 2. 設定 RVM

下一步可以說是最重要的 - 您需要為上一步中新增的 jenkins 使用者設定 rvm。首先,我們需要安裝所有依賴項。RVM 會自動安裝建置每個 Ruby 所需的項目。

sudo apt-get install curl bison build-essential zlib1g-dev libssl-dev libreadline5-dev libxml2-dev git-core

請注意,如果您也想要針對 jruby 執行 CI,您需要安裝更多套件,包括 jdk - 請參閱上面連結的 ubuntu 頁面以取得更多資訊。

接下來,您需要以 ubuntu 使用者身分登入,在本例中 - jenkins。

sudo -Hiu jenkins

這應該會讓您進入已載入 bash 的 shell。因此,現在您可以執行 rvm 安裝 頁面上的說明 - 我們強烈建議使用 rvm-install-head 方法,僅為 jenkins 使用者設定。

接下來,我們需要將 rvm 新增到我們的 shell 設定檔 - 在本例中,我們會將下列內容新增到 ~/.bashrc 的結尾

[[ -s "$HOME/.rvm/scripts/rvm" ]] && source "$HOME/.rvm/scripts/rvm"

此外,在 ubuntu 中,預設的 .bashrc 有一行包含「&& return」 - 如果您的系統也是如此,請務必依照 rvm 安裝說明將其替換為 if。

最後,如果我們登出並以 jenkins 身分重新登入,現在應該會載入 rvm。您可以透過輸入以下內容來確認

type rvm | head -1

應該會產生「rvm is a function」。

最後,我們會以 jenkins 使用者將下列行新增到 ~/.rvmrc,以讓實際流程整體而言更輕鬆

rvm_install_on_use_flag=1
rvm_project_rvmrc=1
rvm_gemset_create_on_use_flag=1

有關每個含義的說明,請參閱 rvmrc 頁面,其中詳細說明每個含義 / 本文件適當的部分 - 此方法的基本概念是,當我們第一次使用 Ruby / gemset 時,rvm 會自動安裝 Ruby 並建立 gemset。

步驟 3. 設定 Jenkins / 新增專案

對於實際的繁重工作,我們將使用執行 shell 指令碼與 jenkins 的功能。

我們建議的設定是使用下列指令碼與 jenkins 選項「執行 Shell 指令碼」

#!/bin/bash
# Use the correct ruby
rvm use "ruby@gemset"
# Set "fail on error" in bash
set -e
# Do any setup
# e.g. possibly do 'rake db:migrate db:test:prepare' here
bundle install
# Finally, run your tests
rake

-e 選項會導致 bash 在任何指令碼結束時傳回錯誤。這是讓指令碼按預期運作的關鍵。

請注意,在某些設定中,環境可能無法正確載入。在這些情況下,您應該在 shebang 下方新增下列內容

source "$HOME/.rvm/scripts/rvm"

如果您想要使用矩陣建置,此方法表示您可以定義環境變數,例如 build_ruby,並將矩陣欄位設定為您想要使用的每個 ruby,並用以下內容取代 rvm 使用列

rvm use "$build_ruby@gemset-to-use"

從 git 儲存庫複製時,您需要確保為 jenkins 使用者新增 ssh 金鑰。

最後,如果您想要自動使用 rvmrc 中的 ruby/以這種方式處理設定,您可能想要新增

[[ -s ".rvmrc" ]] && source .rvmrc

取代 rvm 使用指令/相關設定。