前回まで(Jenkins + GitHubで、RailsのCIの仕組みを整える① - Qiita)で、Jenkinsと必要なプラグインのインストールが終わりました。
今回は、プラグインの設定してジョブを作成します。
プラグインの設定
Git pluginの設定
Jenkinsの管理 > システムの設定 から、「Git plugin」の項目で
「Global Config user.name Value」にbotアカウント名を、「Global Config user.email Value」にメールアドレスを入力する。
GitHub pull request builderの設定
アクセストークンについて
JenkinsがGitHubとやりとりをするためには、botアカウントのアクセストークンが必要になる。
アクセストークンとは、認証に必要な情報のことで、通常はユニークなランダム英数字(32ケタなど)である。
詳しくは、アクセストークンとは?-Webサービスにおけるユーザー認証-|キャリアエヌ(career.n)を参照。
アクセストークンの取得
Jenkinsの管理 > システムの設定 から、「GitHub pull request builder」の項目で
「Create API Token」をクリック。
「Username temp」と「Password temp」を入力し、「Create Token」をクリックすると、
Jenkinsがbotアカウントからアクセストークンを取得してくれる。
原理は、githubのAPIトークンを取得する - Qiitaのようにやっていると思われる。
一度保存し、再び>GitHub pull request builderの設定画面に戻る。
「Test Credentials...」をクリック。
認証が通っているか、テストする。
Jenkinsにジョブを登録する
新規ジョブ作成
「新規ジョブ作成」をクリックする
ジョブ名を入力し、ジョブの種類を選択する。今回はシェル・スクリプトで書くので、「フリースタイル・プロジェクトのビルド」を選択する。
GitHubリポジトリの指定
Gitリポジトリ・ブランチの指定
以下を設定する。
[Repository URL] git@github.com:mokuo/mokumoku_library.git
[Refspec] +refs/pull/:refs/remotes/origin/pr/
[Branch Specifier (blank for 'any')] ${sha1}
Failed to connect to repositoryエラーが出る場合
Failed to connect to repository : Error performing command: git ls-remote -h https://github.com/mokuo/mokumoku_library.git HEAD
が出てしまう。
私の場合はそもそも、gitをインストールしていなかった。
$ sudo yum -y install git
これで解決した。
参考
GitHub pull request builder plugin - Jenkins - Jenkins Wiki
ビルド・トリガ
「GitHub Pull Request Builder」にチェックを入れ、
「Admin list」にリポジトリ所有者のGitHubユーザ名を入力する。
ビルド環境の設定
「rbenv build wrapper」にチェックをし、Rubyのバージョンを指定
「高度な設定」をクリック
「RBENV_ROOT」の値を、デフォルトから変更する。今回は、「$HOME/.rbenv-jenkins」にする。
参考文献
$HOME/.rbenv-jenkins
ビルド手順の追加
「ビルド手順の追加」で、「シェルの実行」を選択し、以下のコマンドを記述する。
bundle install
rake db:create
rake db:migrate
rspec
※bin/をつけると、Permission deniedされた。
参考サイト
Amazon Linux上のJenkinsでrbenv + Bundler + Rspecを動かす - Qiita
以上で、設定は完了。
プルリクエストを送ってみる
BUILD FAILED (Amazon Linux AMI 2016.09 using ruby-build 20160913-13-g8ef0c34)
Rubyのビルドに失敗した。
Updated ruby-build.
Installing 2.3.0...
$ bash -c "env RBENV_ROOT\=\$HOME/.rbenv RBENV_VERSION\=2.3.0 CONFIGURE_OPTS\= RUBY_CONFIGURE_OPTS\= \$HOME/.rbenv/bin/rbenv install 2.3.0"
Downloading ruby-2.3.0.tar.bz2...
-> https://cache.ruby-lang.org/pub/ruby/2.3/ruby-2.3.0.tar.bz2
Installing ruby-2.3.0...
BUILD FAILED (Amazon Linux AMI 2016.09 using ruby-build 20160913-13-g8ef0c34)
Inspect or clean up the working tree at /tmp/ruby-build.20161104155915.17795
Results logged to /tmp/ruby-build.20161104155915.17795.log
Last 10 log lines:
config.sub already exists
checking build system type... x86_64-pc-linux-gnu
checking host system type... x86_64-pc-linux-gnu
checking target system type... x86_64-pc-linux-gnu
checking for gcc... no
checking for cc... no
checking for cl.exe... no
configure: error: in `/tmp/ruby-build.20161104155915.17795/ruby-2.3.0':
configure: error: no acceptable C compiler found in $PATH
See `config.log' for more details
AWS Linux にコンパイラが入っていないのが原因っぽい。
gccをインストールする。
$ sudo yum -y install gcc
参考
Amazon LinuxにRuby on Railsをインストールするとか。 | 俺ん家
$ bash -c "mkdir $HOME/.rbenv-jenkins/.lock"
が延々続く
$ sudo rm -r /var/lib/jenkins/.rbenv-jenkins/.lock/
ERROR: Loading command: install (LoadError) cannot load such file -- zlib
$ sudo yum -y install zlib-devel