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には、おそらく必須ではないだろうが、一応入れておいた。
rubyとruby-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
3.Rspecのインストール
テスト用ツールであるRspecをインストールした。
セットアップ確認用アプリケーションのディレクトリで、以下の操作を行った。
vi Gemfile
(GemFileに以下の1行を追加した)
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
SVNのインストールを行った。
sudo apt install subversion
その後、ホームディレクトリ上でリポジトリの作成を行った。しかし、ファイルシステム上に作成したのは間違いだったかもしれない。というのは、これが原因で、Jenkinsで苦労する羽目になったからだ。
svnadmin create --fs-type fsfs MyRepository
7.Jenkinsのセットアップ
jenkinsはubuntuの標準パッケージには存在しないため、外部パッケージリポジトリ(?)からインストールすることになった。
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である。
このページでは、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というユーザー、およびグループで実行されている。