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

CircleCI2.0+php-coverallsでカバレッジのバッジを表示する

More than 1 year has passed since last update.

CircleCI2.0+php-coverallsでカバレッジのバッジを生成しようとしたところ、Coverallsの説明が古かったりphp-coverallsの説明が微妙だったりして途中ハマったので、バッジを表示されるまでに行った手順を備忘録として残します。

1. coverallsに登録

カバレッジのバッジを表示するためにcoveralls を利用します。
ログインして ADD REPO メニューから対象とするリポジトリを有効にします。有効にしたあとDETAILSボタンよりCoverallsのセットアップ画面に遷移します。

PHPリポジトリの場合はPHPの場合のcoverallsの設定方法が記載されたページが表示されますが、TravisCIでの設定方法しかありません。
CircleCIの場合はドキュメントを読む必要があります。

スクリーンショット 2018-04-25 21.49.51.png

CoverallsのPHPの設定方法のページ を見るとphp-coverallsのREADMEを読めとありますので php-coverallsのREADME を読みましょう。

Coverallsの説明はちと不十分…

2. php-coverallsのインストール

READMEのとおり、まずはcomposerでphp-coverallsをインストールします。

$ composer require php-coveralls/php-coveralls

3. phpunit.xmlまたはphpunit.xml.distにカバレッジのためのログを取得するための記述を追加

phpunit.xml
    <logging>
        <log type="coverage-clover" target="build/logs/clover.xml"/>
    </logging>

4. CircleCIの設定ファイルの修正を行う

READMEによると、CiecleCIの設定ファイルにカバレッジのログを追加するための記載を追加しなければいけないのだけれど、設定ファイルの例がCircleCIの1系の記載になっているので、CircleCI2.0以降の場合は以下のようにする必要があります。

circleci/config.yml
# PHP CircleCI 2.0 configuration file
#
# Check https://circleci.com/docs/2.0/language-php/ for more details
#
version: 2
jobs:
  build:
    docker:
      # specify the version you desire here
      - image: circleci/php:latest

      # Specify service dependencies here if necessary
      # CircleCI maintains a library of pre-built images
      # documented at https://circleci.com/docs/2.0/circleci-images/
      # - image: circleci/mysql:9.4

    working_directory: ~/repo

    steps:
      - checkout

      # Download and cache dependencies
      - restore_cache:
          keys:
          - v1-dependencies-{{ checksum "composer.json" }}
          # fallback to using the latest cache if no exact match is found
          - v1-dependencies-

      - run: mkdir -p build/logs             # ★追加

      - run: composer install -n --prefer-dist

      - save_cache:
          paths:
            - ./vendor
          key: v1-dependencies-{{ checksum "composer.json" }}

      - run: vendor/bin/phpunit
      - run: php vendor/bin/php-coveralls    # ★追加

- run: mkdir -p build/logs- run: php vendor/bin/php-coveralls.circleci/config.yml に追加します。
READMEには後者が載っていませんが必要ですのでしっかり記載します。

5. CircleCIの環境変数にcoverallsのトークンを追加

CircleCIにログインし、CIしたいプロジェクトのSettingsのEnvironment Variablesメニューより「Add Variable」ボタンから環境変数COVERALLS_REPO_TOKEN を追加します。
値はcoverallsのページに表示されていたrepo_tokenの値を設定しておきます。

スクリーンショット 2018-04-25 22.23.29.png

6. .coveralls.ymlを以下のように記載

coveralls.yml
coverage_clover: build/logs/clover.xml
json_path: build/logs/coveralls-upload.json

記載した.coveralls.ymlをリポジトリ直下に配置します。

7. ファイルをpushしてCircleCIでビルドを走らせる

ビルドが通れば、Coverallsのリポジトリのページが更新されます。
ページにカバレッジバッジが表示されれば、バッジの生成は正常に動作しています。

スクリーンショット 2018-04-25 22.34.16.png

このようにバッジが表示されればOKです。
それではバッジをあなたのREADMEに貼って快適なOSSライフを!

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