CircleCI+PHP_CodeSniffer+reviewdogでコードに規律を
前提
プロジェクトにPHP_CodeSnifferのインストール
$ composer require --dev squizlabs/php_codesniffer
$ composer require --dev squizlabs/php_codesniffer
CIでテストする際にcurl
でダウンロードでも良い気がする?
今回はローカルでphpcbf
を使いたいときがあるので同梱する
CircleCIの設定
CircleCI > ADD PROJECTS
> Set Up Project
- 設定ファイルの作成・配置
Starting build
設定ファイルの作成・配置
プロジェクト直下に.circleci/config.yml
を作成しpush
# 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:7.1-browsers
environment:
REVIEWDOG_VERSION: "0.9.11"
# 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: composer install -n --prefer-dist
- save_cache:
paths:
- ./vendor
key: v1-dependencies-{{ checksum "composer.json" }}
# run tests!
- run: curl -fSL https://github.com/haya14busa/reviewdog/releases/download/$REVIEWDOG_VERSION/reviewdog_linux_amd64 -o reviewdog && chmod +x ./reviewdog
- run: ./vendor/bin/phpcs --warning-severity=0 --standard=PSR2 --report=code --report-width=120 ./src
- run: |
./vendor/bin/phpcs --error-severity=0 --runtime-set ignore_warnings_on_exit 1 --standard=PSR2 --report=emacs ./src | ./reviewdog -efm="%f:%l:%c: %m" -reporter=github-pr-review
Githubアクセストークンの設定
reviewdog
にコメントさせるためには権限を持ったGithubアクセストークンを発行する必要があります。
New personal access token > public_repo
権限をつけたトークンを発行
- CircleCI >
WORKFLOWS
> 対象のブランチの歯車アイコン >Environment Variables
>Add Variables
-
REVIEWDOG_GITHUB_API_TOKEN
の値に先ほど作成したトークンを設定
ビルドするタイミングの設定
デフォルトではPRの有無にかかわらずプッシュ毎にビルドが動いてしまいますが、
reviewdog
はPRに対してコメントをつけるツールであるため、PRが存在していないとコメントをつけることが出来ません。
PRが存在するブランチのみビルドする設定へと変更します。
CircleCI > WORKFLOWS
> 対象のブランチの歯車アイコン > Advanced Settings
> Only build pull requests
をOn
に設定
(この設定も弊害があるようでアプリを作り対策をしている方もおられるようです。)
参考: CircleCIのOnly build pull requestsをoffにしてもプルリクエストを作ったらJobを実行したい
ブランチの保護設定
このままではCircleCIでエラーが出てもマージできてしまうため、ブランチの保護設定を変更します。
対象のリポジトリ > Settings
> Branches
> Add rule
で下記のように設定します。
参考:Protected Branches機能で柔軟なワークフローを構築する
最後に
テストにひっかかりそうなコードをコミットし、PRを作成します。
CircleCIでビルドされコメントがつき、マージがブロックされているのがわかります。
おまけ
機械的に直せるものは直してしまう
$ ./vendor/bin/phpcbf --standard=PSR2 ./src
Author And Source
この問題について(CircleCI+PHP_CodeSniffer+reviewdogでコードに規律を), 我々は、より多くの情報をここで見つけました https://qiita.com/piotzkhider/items/eb22af7245f5cf126769著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .