UbuntuにRuby on Rails、Rspec、SVN、Jenkinsをセットアップする

思ったよりずっと手間取ったので、備忘録代わりにブログ記事にする。

セットアップ先のOSは、Ubuntu 18.04。

1.Ruby on Railsのインストール

以下のコマンドを順に実行した。

sudo apt install git
sudo apt install ruby
sudo gem update --system
sudo apt install ruby-dev
sudo apt install gcc
sudo apt install zlib1g-dev
sudo apt install libxslt-dev
sudo gem install rails

sudo apt install sqlite3
sudo apt install libsqlite3-dev
sudo apt install nodejs
sudo gem install sqlite3


最初のgitは、Visual Studio Codeをインストールしたあとにインストールしたもので、railsには、おそらく必須ではないだろうが、一応入れておいた。

rubyruby-devをインストールし、gemのデータベースを更新したあと、railsをインストールしようとすると、芋づる式に不足しているライブラリが次々と出てきた。gcc、zlib、libxslt-devがそれら不足していたライブラリである。

railsの既定のRDBMSエンジンはSqlLiteである。後に他のRDBMSに変更する予定ではあるが、ここは面倒を避けるためにとりあえずsqlite3、libsqlite3-devをインストールしておいた。また、なぜかJavascriptの処理系も必要だというので、最も一般的なnode.jsをインストールした。SqlLiteについては、OSのパッケージだけではなく、Rubyのモジュールもgemコマンドでインストールした。

 

2.Ruby on Railsセットアップの確認

なにか一つ、railsのアプリケーションを作成して、セットアップが正しいことを確認することとした。

rails new book
cd book
rails server

 

f:id:maplemaple-dev:20180813111243p:plain

 

3.Rspecのインストール

テスト用ツールであるRspecをインストールした。

セットアップ確認用アプリケーションのディレクトリで、以下の操作を行った。

vi Gemfile

(GemFileに以下の1行を追加した)

gem 'rspec-rails'

 

bin/bundle install
bin/rails generate rspec:install
bin/rails g model user first_name:string last_name:string
bin/rake db:migrate
cd spec
cd models
vi user_spec.rb

(テスト用コードを書いた)

bin/bundle exec rspec

 

4.JDKのインストール

JDKをインストールするにあたり、どのバージョンを選ぶか。Jenkinsのサイトのガイダンスによると、8をサポートしている模様。10も、条件付きでサポートしているようだが、8のほうがサポート期限が長いので8をインストールすることとした。

sudo apt install openjdk-8-jdk

 

5.fakeSMTPのダウンロード

ちょっと寄り道して、テスト用メールサーバである、fakeSMTPをダウンロードした。

 これは、ダウンロードしたファイルを解凍し、jarファイルを起動することで動作確認できた。

java -jar fakeSMTP-2.0.jar

f:id:maplemaple-dev:20180813112044p:plain

 

6.SVNのインストール、リポジトリの作成

SVNのインストールを行った。

sudo apt install subversion

 

その後、ホームディレクトリ上でリポジトリの作成を行った。しかし、ファイルシステム上に作成したのは間違いだったかもしれない。というのは、これが原因で、Jenkinsで苦労する羽目になったからだ。

svnadmin create --fs-type fsfs MyRepository

 

7.Jenkinsのセットアップ

jenkinsはubuntuの標準パッケージには存在しないため、外部パッケージリポジトリ(?)からインストールすることになった。

 

jenkins.io

wget -q -O - https://pkg.jenkins.io/debian-stable/jenkins.io.key | sudo apt-key add -
sudo vi /etc/apt/sources.list
sudo apt update
sudo apt install jenkins
systemctl status jenkins

その後、http://localhost:8080/ でJenkinsのコンソール画面を開き、セットアップのガイダンスに従ってセットアップを完了させた。

 

8.Jenkinsで管理する最初のrailsアプリケーションのセットアップ

基本的には、以下のページに従ってセットアップを進めたのだが、一点大ハマリしたのが、SVNである。

www.ruby.or.jp

このページでは、SVNより管理対象のソース一式を取得するように説明されている。それに従い設定したのだが、いざJenkinからビルドを実行すると、

 

ビルドします。 ワークスペース: /var/lib/jenkins/workspace/jenkins_test
FATAL: null
java.nio.channels.NonWritableChannelException
at sun.nio.ch.FileChannelImpl.tryLock(FileChannelImpl.java:1105)
at org.tmatesoft.sqljet.core.internal.fs.SqlJetFileLockManager$1.createLock(SqlJetFileLockManager.java:57)

(以下省略)

 

と、ビルドエラーが発生してしまうのだ。いろいろ検索してみたが、とある中国語のブログに、chmod -R 777 {リポジトリのフォルダ} で解決した、と書かれていた。そんなEveryoneフルコントロール?、と思ったが、これで問題が解消した。その後、当初のパーミッションに戻したが、問題なくビルドできた。一度だけ、Jenkinsに許可が必要な操作があるのだろう。

ちなみに、Jenkinsは、jenkinsというユーザー、およびグループで実行されている。