0
0

More than 3 years have passed since last update.

Github Actions で Rails の CI をやりたい

Posted at

なにこれ?

Github Actions で Ruby on Rails の CI をやりたい、という話をする。ただ、ちょっとマニアックな路線でいこうと思う。

コード

今回のコードは Github のレポジトリ にもあります。

アジェンダ

Github Actions は .github/workflows/ にあるコードを読んで実行してくれるみたいなので、プロジェクトのルートディレクトリ傘下に前記の階層を作り、その後 rails_test.yaml でも作成して CI のコードを書けば、docker-compose up したらローカル環境と同じ条件で rails test がうごく、この記事を書き始めるまでは、そう思っていたのです。

何が悪かったのか

コンテナのホスト側とコンテナ側の user id の不一致のせいで、mkdir とかが実行されず、テストが実行できなかった。

解決した方法

docker-compose で起動したときに uid と gid をコンテナとホストで一致させてやると、この問題は解決できそうだったので、下記のようにした。

# docker-compose.yaml
services:
  application-server:
    user: "${USER_ID}:${GROUP_ID}"

そんでもって、こうすると Github Actions の CI で動いてくれるみたいだ

$ USER_ID=$(id -u) GROUP_ID=$(id -g) docker-compose build
$ USER_ID=$(id -u) GROUP_ID=$(id -g) docker-compose run -T application-server yarn install --check-file
$ USER_ID=$(id -u) GROUP_ID=$(id -g) docker-compose run -T application-server bundle exec rails db:migrate:reset
$ USER_ID=$(id -u) GROUP_ID=$(id -g) docker-compose run -T application-server bundle exec rails test

おわりに

CI 関連、地味に時間が取られるのが辛い...

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0