自分のサンドボックス用プロジェクトのCircleCIを2.0移行したのでそのメモ。
今回の内容は下記のthoughtbotの記事を参考にすれば動作するはずだし、必要なことは書かれている。 robots.thoughtbot.com
作業したプルリクは以下
Add config file for CirclrCI 2.0 by kuranari · Pull Request #17 · kuranari/mblog · GitHub
Docker image
imageはcircleci/ruby:2.5.0-node
を使用した。
circleci/ruby:2.5.0
ではないのは、nodeの実行環境が必要なRubyのGem uglifier
に依存しているため。
他コンテナの起動を待つ
テスト用のコンテナよりもDBコンテナの起動に時間がかかり、DBへの接続が出来ずエラーになってしまうことがある。(このようなエラーとなる。)
そのためdbの起動をdockerize
コマンドで待つようにした。
Add config file for CirclrCI 2.0 by kuranari · Pull Request #17 · kuranari/mblog · GitHub
thoughtbotのブログの設定ファイルにもその旨書かれているが自分の携わる他プロジェクトでは記述がなかったため当初dockerizeをしていなかった。 そのプロジェクトではテスト用コンテナでミドルウエアやnpmのインストールのような多少時間がかかる処理が発生するため、MySQLコンテナの起動待ちとなる状況は発生しないようである。
workflow化
現状のCIで行うことはテスト実行のため実質不要だが、興味があったのでworkflow化をしておいた。 workflowを使うと、複数のタスクを並列に実行させたり、直列に定義された各Jobの実行有無を条件によって切り分けられる。
並列実行の例でいうとRuby2.3
, 2.4
, 2.5
の3バージョンを対象に並列でテストができるようになる。
直列実行の例だとbuild
, test
, deploy
の3つのJobがある場合、featureブランチではbuild
, test
までを行い、masterブランチでのみbuid
, test
, deploy
を行うことができる。
またworkflowを定義することでcronのようなスケジュール実行を行うことができる。
この辺は下記の記事が詳しい。 qiita.com
まとめ
RailsプロジェクトのCircleCI2.0設定ファイルの記述についてまとめた。
今回はシンプルにrspec
を実行するだけの設定にとどまっているが、今後デプロイ設定なども試していきたい。