🐶
GitLab CI で reviewdog と PHPStan を使いたい
はじめに
GitLab CI でも reviewdog で PHPStan したい。
準備
1. reviewdog 用のユーザーを作成する
Access
- Projects limit: 1
- Can create group: No
- Access level: Regular
- External: Yes
気分が上がるので Aveter のアイコンを設定しておくこと!
2. 作成したユーザーのアクセストークンを作成する
User Settings -> Access Tokens -> Personal Access Tokens
- Name: reviewdog
- Scopes: api
3. プロジェクトに作成したユーザーを追加する
Members -> Invite member
- GitLab member: reviewdog
- Role: Reporter
4. プロジェクトの CI の環境変数を設定する
Settings -> CI/CD -> Variables
- Key: REVIEWDOG_GITLAB_API_TOKEN
- Value: 2 で作成したアクセストークン
- Type: Variable
- Environment scope: All
- Protect variable: No
- Mask variable: Yes
5. .gitlab-ci.yml を作成する
.gitlab-ci.yml
stages:
- reviewdog
reviewdog-phpstan:
stage: reviewdog
variables:
GIT_STRATEGY: clone
GIT_DEPTH: 0
rules:
- if: $CI_MERGE_REQUEST_ID ## MR の場合のみ実行
image: composer:2
allow_failure: true
before_script:
- wget -O - -q
https://raw.githubusercontent.com/reviewdog/reviewdog/master/install.sh
| sh -s
script:
- composer require -q --no-ansi --no-interaction --no-scripts
--no-progress --prefer-dist --dev phpstan/phpstan:2.1
- bin/reviewdog -version
- ./vendor/bin/phpstan -V
- ./vendor/bin/phpstan analyse --no-progress --error-format=raw
| ./bin/reviewdog -f=phpstan -reporter=gitlab-mr-discussion
動作確認
以下のようなディレクトリ構成、ファイルで MergeRequest を作成。
.
├── .gitlab-ci.yml
├── phpstan.dist.neon
└── src
└── sample.php
phpstan.dist.neon
parameters:
level: 7
paths:
- src
src/sample.php
<?php
declare(strict_types=1);
function addNumbers(int $a, int $b): int {
return $a + $b;
}
echo addNumbers(5, 10) . PHP_EOL;
echo addNumbers('5', 10) . PHP_EOL;
MergeRequest に以下のようなコメントがつけば成功。
環境
- GitLab: 13.12.10-ce 古っっ
- GitLab Runner: 15.8.2 古っっ
Discussion