Laravel 프로젝트의 빌드 상태 및 테스트 커버리지 배지 표시

새로운 개발자 역할을 찾기 위해 여러 인터뷰를 통해 확장하기 위해 다양한 프로젝트를 구축했습니다. 특히 하나는 내 readme.md 파일에 빌드 상태와 코드 커버리지 보고서를 배지로 표시하는 특정 지침이 포함된 Laravel 프로젝트였습니다.

온라인 도움말을 검색했지만 이 문제를 해결하기 위한 전체 가이드를 제공하는 어떤 것도 찾을 수 없었습니다. 대부분은 코드 적용 범위 측면을 무시하면서 빌드 상태에 대한 솔루션만 제공했습니다. 나는 이것을 알아 내야했고 시간이 부족했습니다.

아래는 제가 달성하고자 했던 것이며 이를 달성한 방법을 보여드릴 것입니다.



Travis CI 및 Coveralls로 레포 설정



아직 하지 않았다면 가장 먼저 해야 할 일은 Travis로 이동하여 GitHub 계정을 사용하여 로그인하는 것입니다. 로그인한 후 "새 저장소 추가"버튼을 눌러 저장소를 활성화하십시오. Coveralls.io에서 이 절차를 반복합니다.

PHPUnit 및 작업복 구성



다행스럽게도 Laravel은 PHPUnit과 함께 제공됩니다. 이 자습서에서는 일부 테스트를 이미 작성했다고 가정합니다. 그렇지 않은 경우 테스트 작성을 위해 Laravel 문서를 확인하는 것만큼 간단합니다.
Coveralls도 설치할 것입니다. Coveralls는 간단하게 요구함으로써 커버리지 보고서를 호스트하는 데 사용할 것입니다.
composer require php-coveralls/php-coveralls
또는 composer.json 파일의 require 블록에 다음 줄을 추가합니다.
"php-coveralls/php-coveralls": "^1.1"
이렇게 하면 composer.json 파일에 종속 항목으로 추가됩니다.

.travis.yml 및 .coveralls.yml 생성



이제 Laravel 프로젝트의 루트에 Travis 구성 파일(.travis.yml)을 생성하여 Travis CI를 설정합니다. 또한 clover.xml의 경로를 설정하는 데 사용되는 .coveralls.yml을 생성합니다.

내 .travis.yml은 다음과 같습니다. 언어, php 버전을 설정하고 실행할 추가 스크립트를 알려줍니다.

language: php
php:
  - 7.3
  - 7.4
os: linux

before_script:
  - rm -rf composer.lock
  - composer install
  - cp .env.example .env
script:
  - mkdir -p build/logs
  - vendor/bin/phpunit -c phpunit.xml
after_success:
  - travis_retry php vendor/bin/coveralls
  # or enable logging
  - travis_retry php vendor/bin/coveralls -v


내 .coveralls.yml은 다음과 같습니다. phpunit.xml이 빌드/로그 경로에 clover.xml을 저장한다고 가정합니다.

coverage_clover: build/logs/clover.xml
json_path: build/logs/coveralls-upload.json
service_name: travis-ci


의심의 여지가 없도록 내 phpunit.xml 및 .env.example 파일은 다음과 같습니다.

<?xml version="1.0" encoding="UTF-8"?>
<phpunit backupGlobals="false"
         backupStaticAttributes="false"
         bootstrap="vendor/autoload.php"
         colors="true"
         convertErrorsToExceptions="true"
         convertNoticesToExceptions="true"
         convertWarningsToExceptions="true"
         processIsolation="false"
         stopOnFailure="false">
    <testsuites>
        <testsuite name="Unit">
            <directory suffix="Test.php">./tests/Unit</directory>
        </testsuite>

        <testsuite name="Feature">
            <directory suffix="Test.php">./tests/Feature</directory>
        </testsuite>
    </testsuites>
    <filter>
        <whitelist processUncoveredFilesFromWhitelist="true">
            <directory suffix=".php">./app</directory>
        </whitelist>
    </filter>
    <logging>
      <log type="coverage-html" target="tests/coverage" showUncoveredFiles="true" />
      <log type="coverage-clover" target="build/logs/clover.xml"/>
   </logging>
    <php>
        <env name="APP_ENV" value="testing"/>
         <env name="DB_CONNECTION" value="sqlite"/>
        <env name="BCRYPT_ROUNDS" value="4"/>
        <env name="CACHE_DRIVER" value="array"/>
        <env name="MAIL_DRIVER" value="array"/>
        <env name="QUEUE_CONNECTION" value="sync"/>
        <env name="SESSION_DRIVER" value="array"/>
    </php>
</phpunit>



APP_NAME=Laravel
APP_ENV=local
APP_KEY=
APP_DEBUG=true
APP_URL=http://localhost

LOG_CHANNEL=stack

DB_CONNECTION=sqlite
DB_HOST=localhost
DB_PORT=3306
DB_DATABASE=:memory:
DB_USERNAME=homestead
DB_PASSWORD=secret

BROADCAST_DRIVER=log
CACHE_DRIVER=file
QUEUE_CONNECTION=sync
SESSION_DRIVER=file
SESSION_LIFETIME=120

REDIS_HOST=127.0.0.1
REDIS_PASSWORD=null
REDIS_PORT=6379

MAIL_DRIVER=smtp
MAIL_HOST=smtp.mailtrap.io
MAIL_PORT=2525
MAIL_USERNAME=null
MAIL_PASSWORD=null
MAIL_ENCRYPTION=null

PUSHER_APP_ID=
PUSHER_APP_KEY=
PUSHER_APP_SECRET=
PUSHER_APP_CLUSTER=mt1

MIX_PUSHER_APP_KEY="${PUSHER_APP_KEY}"
MIX_PUSHER_APP_CLUSTER="${PUSHER_APP_CLUSTER}"



코드 배포 및 배지 표시



다음은 readme.md 파일에서 사용한 두 배지의 코드입니다. Travis와 Coveralls 모두 이에 대한 삽입 링크를 제공합니다.

Travis CI 빌드 배지

[![Build Status](https://travis-ci.com/chyke007/credible.svg?branch=master)](https://travis-ci.com/chyke007/credible)



작업복 코드 커버리지 배지

[![Coverage Status](https://coveralls.io/repos/github/chyke007/credible/badge.svg?branch=master)](https://coveralls.io/github/chyke007/credible?branch=master)


이제 이 설정으로 코드를 GitHub에 푸시하면 Travis로 빌드를 보내고 Travis는 Coveralls로 커버리지를 보내야 합니다.

그게 전부입니다. 일반적으로 흥미진진한 모험이었습니다. 바라건대 이것이 누군가에게 가이드 역할을 하고 제가 갖고 싶었던 가이드가 되었으면 합니다!

좋은 웹페이지 즐겨찾기