サポート
RVMはボランティアコミュニティによって保守されています。問題はRVM issue trackerにご報告ください。
保守者の一員として貢献したい、または手伝いたい方は、ぜひご協力ください。RVM関連プロジェクトはRVM Github組織でご覧いただけます。
スポンサー
Carbon Ads

Jenkinsとの継続的インテグレーション

JenkinsとRVMを統合することで、異なるgemsetを持つ複数のプロジェクトをテストできるだけでなく、複数のRubyに対して様々なコードベースを同時にテストすることもできます。以下のガイドは主にUbuntuインストールに基づいていますが、手順はどのプラットフォームでも互換性があるはずです。

これらの手順は、ThoughtbotブログのNick Quarantoによる優れたブログ記事に基づいており、より汎用的な用途に適応させたものです。

概要

一般的に、以下のことが必要です。

より詳細なガイドについては、以下を参照してください。

ステップ1. Jenkinsの取得とインストール

最初のステップは、選択したシステムにJenkinsをインストールすることです。現在、いくつかの方法があります。

  1. OSレベルのパッケージによるインストール(今回の場合、Debianパッケージ)
  2. 手動でのダウンロードと設定
  3. jenkins.rbの使用(一般的なプラグインなどをバンドル)

方法2または3を選択した場合、最初にJenkins用の新しいユーザー(通常は「jenkins」)を作成する必要があります。今回は、公式Jenkins Webサイトの手順に従って、最初のオプションを使用します。この方法は、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がロードされたシェルが表示されます。RVMインストールページの手順を実行できます。RVM-install-headメソッドを使用して、Jenkinsユーザーのみに設定することを強くお勧めします。

次に、シェルプロファイルにRVMを追加する必要があります。この場合は、次を`~/.bashrc`の最後に追加します。

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

また、Ubuntuではデフォルトの`.bashrc`に`"&& return"`を含む行があります。あなたのシステムでも同じであれば、RVMインストールで指示されているように、それをifに置き換えてください。

最後に、jenkinsとしてログアウトして再度ログインすると、RVMがロードされるはずです。`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の設定/プロジェクトの追加

実際の作業には、Jenkinsでシェルスクリプトを実行する機能を使用します。

推奨される設定は、Jenkinsの「シェルスクリプトの実行」オプションを使用して、次のようなスクリプトを使用することです。

#!/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 use`行を次のように置き換えることができます。

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

Gitリポジトリからクローンを作成する場合は、JenkinsユーザーのSSHキーを追加する必要があります。

最後に、`rvmrc`から自動的にRubyを使用したり、そのように設定を処理したい場合は、

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

`rvm use`コマンド/関連する設定の代わりに追加できます。