16
3

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 5 years have passed since last update.

エムスリーAdvent Calendar 2017

Day 2

GitLab CI で Elixir プロジェクトのカバレッジを取得する

Last updated at Posted at 2017-12-01

Elixir プロジェクトに対し ExCoveralls を使って、GitLab CI でカバレッジ取得し結果を HTML で見れるようにします。サンプルコードをこちらに用意してみました。
https://github.com/ma2gedev/gitlab_ci_example

ExCoveralls の設定

設定は ExCoveralls の README.md 通りにします。

mix.exs projecttest_coverage: [tool: ExCoveralls] を追加。

mix.exs

def project do
  [
    ...省略...
    test_coverage: [tool: ExCoveralls]
  ]
end

deps に excoveralls を追加。

mix.exs
defp deps do
  [
    ...省略...
    {:excoveralls, "~> 0.7", only: :test}
  ]
end

参考コミット

mix deps.get を実行で設定は完了。

ここまでできれば MIX_ENV=test mix coveralls コマンドが実行できます。

$ MIX_ENV=test mix coveralls
..

Finished in 0.04 seconds
2 tests, 0 failures

Randomized with seed 663727
----------------
COV    FILE                                        LINES RELEVANT   MISSED
 75.0% lib/gitlab_ci_example.ex                       11        4        1
[TOTAL]  75.0%
----------------

GitLab CI 用の設定

HTML の出力結果がいい感じなので、これを取得できるように設定します。

ExCoveralls で出力される HTML 結果

HTML を取得するために MIX_ENV=test mix coveralls.html を実行すると、./cover/excoveralls.html が生成されるので、これを artifacts として登録します。
以下が設定ファイルの例です。

.gitlab-ci.yml
...省略...
test:
  coverage: /\[TOTAL\]\s+(\d+\.\d+)%/
  script:
    - mix local.hex --force
    - mix local.rebar --force
    - mix deps.get
    - MIX_ENV=test mix coveralls.html
  artifacts:
    expire_in: 2 week
    when: always
    paths:
      - cover

参考コミット

coverage: /\[TOTAL\]\s+(\d+\.\d+)%/カバレッジのバッジとかできて便利なので設定しています。

これができたら GitLab へ Push して CI の実行を待ちます。
以下のように結果が表示されたら設定、動作確認まで完了です。

$ MIX_ENV=test mix coveralls.html
...省略...
Generated gitlab_ci_example app
..

Finished in 0.09 seconds
2 tests, 0 failures

Randomized with seed 972758
----------------
COV    FILE                                        LINES RELEVANT   MISSED
 75.0% lib/gitlab_ci_example.ex                       11        4        1
[TOTAL]  75.0%
----------------
Generating report...
Uploading artifacts...
cover: found 2 matching files
Uploading artifacts to coordinator...
...省略...

所感

社内の Elixir プロジェクト向けに書こうと思ったのですが、外向けでも良いと思ったので公開しました(ちょっと雑だけど)。
GitLab いつの間にかとても便利になってきていて毎日感謝しながら開発しています :pray:
GitLab をすぐに最新に上げてくれて、GitLab CI もガンガン動くようにしてくれているインフラチームの皆さんにも感謝 :pray:

Resources

16
3
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
16
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?