CircleCI+PHP_CodeSniffer+reviewdog로 코드에 규율을
전제
프로젝트에 PHP_CodeSniffer 설치
$ composer require --dev squizlabs/php_codesniffer
CI로 테스트할 때 curl
에서 다운로드해도 좋다고 생각하십니까?
이번은 로컬로 phpcbf
를 사용하고 싶을 때가 있으므로 동봉한다
CircleCI 설정
CircleCI > ADD PROJECTS
> Set Up Project
$ composer require --dev squizlabs/php_codesniffer
CircleCI >
ADD PROJECTS
> Set Up Project
Starting build
설정 파일의 작성·배치
프로젝트 바로 아래에
.circleci/config.yml
를 만들고 push
.circle/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: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
권한이 부여된 토큰 발행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
Reference
이 문제에 관하여(CircleCI+PHP_CodeSniffer+reviewdog로 코드에 규율을), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/piotzkhider/items/eb22af7245f5cf126769
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
테스트에 걸릴 것 같은 코드를 커밋하고 PR을 만듭니다.
CircleCI로 빌드되어 코멘트가 붙어, 병합이 블록 되고 있는 것을 알 수 있습니다.
덤
기계적으로 고칠 수있는 것은 고쳐집니다.
$ ./vendor/bin/phpcbf --standard=PSR2 ./src
Reference
이 문제에 관하여(CircleCI+PHP_CodeSniffer+reviewdog로 코드에 규율을), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/piotzkhider/items/eb22af7245f5cf126769
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
$ ./vendor/bin/phpcbf --standard=PSR2 ./src
Reference
이 문제에 관하여(CircleCI+PHP_CodeSniffer+reviewdog로 코드에 규율을), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/piotzkhider/items/eb22af7245f5cf126769텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)