どうも、たくチャレ(@takuchalle)です。

以前 Rails チュートリアルのアプリをGitLab上で自動ビルドを行うように設定しました。

GitLab の CI/CD 機能を使って RailsTutorial を master に push すると自動で Heroku にデプロイする方法について。

今は違うアプリケーションを作っていて、こちらでもGitLab上で自動ビルドを行うようにしています。

怒られた

セットアップ時にYour Ruby version is 2.5.3, but your Gemfile specified 2.5.1というエラーで失敗してしまいました。

実行しているRubyのバージョンとGemfileに記載されているバージョンが一致しないというエラーです。Rails チュートリアルの時は特に意識しなかったけど偶然一致してたんですかね…(要確認)

解決方法

開発しているマシンのRubyのバージョンをアップデートしてGemsfileを更新すればいいんでしょうけど、今回はGitLab側を修正しました。

エラーが起きた時に登録していた.gitlab-ci.ymlは次のようになっていました。

stages:
  - test

before_script:
  - apt-get update -qy
  - apt-get install -y nodejs
  - bundle install

Test:
  stage: test
  script:
    - bundle exec rails db:migrate RAILS_ENV=test
    - bundle exec rails test

GitLabで何も指定しない場合のRubyのバージョンは2.5.3になるみたいです(2018/11/14現在)。なので、明示的にバージョンを指定してあげれば問題なく動かすことができました。

image: ruby:2.5.1

stages:
  - test

before_script:
  - apt-get update -qy
  - apt-get install -y nodejs
  - bundle install

Test:
  stage: test
  script:
    - bundle exec rails db:migrate RAILS_ENV=test
    - bundle exec rails test

まとめ

エラーは簡単に解消することはできました。プロジェクトを立ち上げた最初に CI のセットアップしておくとトラブルが軽微で済むので早めにやっておくのがオススメです。

ただ、自動テストを行う度にbundle installしているので結構時間がかかります。インストール済みのイメージを作成して使うようにすればもっと早くなると思うので、近々やってみたいと思います。

同じカテゴリの記事