13
6

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

ElixirでCircleCI(GitHub連携も)

Last updated at Posted at 2019-09-18

記事概要

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に登録したら、ダッシュボードに行って下さい。
ダッシュボードに行ったら左のメニューからプロジェクトの追加を選択して下さい。

addproj.png

対象プロジェクトの選択

ADD PROJECTSを押したらプロジェクトの一覧が出るので、対象のプロジェクトのSet Up Projectを選択します。
スクリーンショット 2019-09-18 12.30.49.png

次は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です。

まとめ

13
6
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
13
6

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?