記事概要
ElixirConf JP 2019 Kokurajo後の話題にもなったみたいですが、CIツールを使うのは品質保証の上でも大事なことです。何より、一々マージ前のpull requestに同じ簡単な確認をしなくていいのが素晴らしいです。CIを正しく導入すると、プロジェクトのソースコードに統一性が出て(フォーマットチェック設定)、常にテストが完全に通る状態(テスト設定)が保たれます。ぜひ例え個人の趣味プロジェクトでも無料で導入できるので、CIツールは是非入れて下さい。
この記事ではElixirのプロジェクトでのCircleCI連携を簡単に説明します。
CircleCI(GitHub連携)の導入
CircleCIの説明はこちらに譲ります。というか、ぶっちゃけここ見ればわかる気がしますが、とりあえずElixirに特化した最低限の手順での実現への記事ということで。
CircleCIの導入は簡単です。もしアカウントがなければGitHubのアカウントと連携して作って下さい。無料でも制限付きで動かせます。個人での開発等なら無料でも問題ないと思います。
CircleCIとGithubの連携
最初に連携しちゃいます。後述のconfig.yml
を先に書いても大丈夫ですが、先に連携しておくとconfig.yml
をmasterにpushもしくはPull Requestした際に実行を確認できます。
プロジェクトを追加する
CircleCIに登録したら、ダッシュボードに行って下さい。
ダッシュボードに行ったら左のメニューからプロジェクトの追加を選択して下さい。
対象プロジェクトの選択
ADD PROJECTSを押したらプロジェクトの一覧が出るので、対象のプロジェクトのSet Up Project
を選択します。
次はconfig.yml
の作成ですが、Set Upが終わると雛形が表示されるのでそれを使っても構いません。
config.ymlの作成
プロジェクト直下に.circleci
ディレクトリを作って、下記のようなconfig.yml
ファイルを作成して下さい。雛形は連携の設定時のものの他にCircleCIのページのPhoenix用のconfig.ymlもあります。
version: 2
jobs:
build:
docker:
- image: circleci/elixir:1.9.1
environment:
MIX_ENV: test
steps:
- checkout
- run:
name: Check format
command: mix format --check-formatted
- run:
name: Install Hex
command: mix local.hex --force
- run:
name: Run deps.get
command: mix deps.get
- run:
name: Run mix compile
command: mix compile
- run:
name: Run test
command: mix test
CircleCIの実行
後はmasterにpushしたり、Pull Requestを出すと自動でconfig.yml
に設定したコマンド群が走ります。
場合によっては
- run:
name: Install Rebar
command: mix local.rebar --force
も追加する必要があると思います。コマンドは必要に応じて足して下さい。
また、Elixirのバージョン指定を変える場合、dockerのimageのバージョン指定を変更して下さい。
今回は下記の順に処理を実行しています
- mix format --check-formatted(フォーマッターあたってるか)
- mix local.hex --force(Hexインストール)
- mix deps.get(依存性解決)
- mix compile(コンパイルが通るか)
- mix test(テストが通るか)
ローカルでの実行
ローカルにcircleciをインストールしたら、プロジェクトルートで
$ circleci build
これで:okです。
まとめ
- CircleCI簡単使おう(他のCIツールでも良いので何かしら導入しよう)
- CIツールの導入は品質を担保する
- CIについてもっと学びたい人は継続的デリバリーを読もう
- CircleCIのバッジをGitHubのREADMEにつけたりもできます