Help us understand the problem. What is going on with this article?

ElixirでCircleCI(GitHub連携も)

記事概要

データ構造を作ってみたTipsから派生。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です。

まとめ

Why do not you register as a user and use Qiita more conveniently?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away