PHP 개발자로서 GitLab 재방문

8456 단어 phpgitlab
때때로 몇 년 동안 사용해 온 도구 설명서를 다시 읽는 것이 좋은 생각인 것 같습니다. 대부분의 경우 최신 버전으로 업데이트하면 모든 것이 제대로 작동하지만 최신 기능을 사용하지 않을 수 있습니다.

여기 내가 이미 알고 있는 것과 이 트윗을 우연히 보고 GitLab의 문서를 다시 읽었을 때 새로 발견한 것이 있습니다.






세바스티안 버그만


@s_bergmann






에서 생성된 Cobertura XML을 사용한 경험이 있습니까? 그런 다음 여기에 댓글을 달아주세요: github.com/sebastianbergm… (또는 수정 gitlab.com/gitlab-org/git… ). 감사!


오전 10:51 - 2021년 11월 19일









TLDR



demo merge request에서 아래의 모든 작업을 볼 수 있습니다.

단위 테스트 보고서



내가 찾은 첫 번째 것은 GitLab이 JUnit XML 파일 형식을 지원하고 PHPUnit이 JUnit XML 파일 보고서를 작성할 수 있다는 것입니다. JUnit XML을 생성하도록 PHPUnit을 구성하고 이를 .gitlab-ci.yml에서 아티팩트로 선언하면 파이프라인 자체 및 병합 요청에서 멋진 단위 테스트 개요를 얻을 수 있습니다.


phpunit.xml 파일에 JUnit 로깅을 추가합니다.

<phpunit>
    <!-- ... -->
    <logging>
        <junit outputFile="junit.xml" />
    </logging>
    <!-- ... -->
</phpunuit>

.gitlab-ci.yml를 통해 이 보고서에 대해 GitLab-CI에 알립니다.

Unit Tests:
  stage: test
  script:
    - ./vendor/bin/phpunit
  artifacts:
    reports:
      junit: junit.xml


테스트 실행에 대한 멋진 개요, 파이프라인 및 병합 요청 개요 페이지에서 모든 테스트를 실행하는 데 걸린 시간을 얻을 수 있습니다.

공식 GitLab 문서의 unit test reports 섹션에서 이 기능에 대한 추가 힌트를 찾을 수 있습니다.

테스트 코드 커버리지



GitLab은 다양한 위치에서 테스트한 코드 적용 범위를 백분율로 표시할 수 있습니다.
  • 사전 정의된 URL
  • 을 통해 배지로
  • 병합 요청에서 이 코드를 병합하면 코드 적용 범위가 증가하는지 감소하는지 여부도 표시
  • 및 분석 > 프로젝트별 리포지토리 개요 및 그룹 수준
  • 에서 시간 경과에 따른 멋진 그래프로 표시됩니다.


    phpunit.xml에 간단한 커버리지 보고서를 추가합니다.

    <phpunit>
        <!-- ... -->
        <coverage>
            <report>
                <text outputFile="php://stdout"
                      showUncoveredFiles="false"
                      showOnlySummary="true" />
            </report>
        </coverage>
    </phpunuit>
    

    .gitlab-ci.yml를 통해 이 보고서에 대해 GitLab-CI에 알립니다(coverage 키 추가).

    Unit Tests:
      stage: test
      script:
        - XDEBUG_MODE=coverage ./vendor/bin/phpunit
      coverage: '/^\s*Lines:\s*\d+.\d+\%./'
    


    이것은 Xdebug를 사용 중이고 GitLab CI에서 테스트를 실행하는 데 사용하는 이미지에 Xdebug가 이미 설치되어 있다고 가정합니다. documentation about this feature here을 찾습니다.

    테스트 코드 커버리지 시각화



    이것은 나에게 절대적인 폭발이었습니다. 라인 커버리지 번호를 얻기 위해 코드 커버리지를 수집하는 동안 GitLab의 모든 곳에서 볼 수 있으며, GitLab이 읽을 수 있는 PHPUnit을 사용하여 Cobertura XML 파일 형식으로 라인 커버리지 보고서를 생성하여 병합 요청에서 직접 커버된 라인과 커버되지 않은 라인을 표시할 수도 있습니다. 차이보기.



    cobertura 커버리지 보고서를 phpunit.xml에 추가합니다.

    <phpunit>
        <!-- ... -->
        <coverage>
            <!-- ... -->
            <report>
                <!-- ... -->
                <cobertura outputFile="cobertura.xml" />
            </report>
        </coverage>
        <!-- ... -->
    </phpunuit>
    

    .gitlab-ci.yml를 통해 이 보고서에 대해 GitLab-CI에 알립니다(coverage_report 아티팩트 키 추가).

    Unit Tests:
      stage: test
      script:
        - XDEBUG_MODE=coverage ./vendor/bin/phpunit
      artifacts:
        reports:
          coverage_report:
            coverage_format: cobertura
            path: cobertura.xml
    


    일부 스크린샷과 함께 test coverage visualization 설명서에서 이 멋진 기능에 대해 자세히 읽어보십시오.

    코드 스타일 위반



    PHP CS Fixer는 GitLab에서 코드의 새로운 위반 사항을 표시하거나 코드 스타일 위반이 해결된 경우에도 표시하는 데 사용할 수 있는 GitLab 형식의 보고서를 생성할 수 있습니다.
    --format=gitlab 인수를 사용하여 PHP CS Fixer를 실행하고 .gitlab-ci.yml를 통해 보고서를 찾을 위치를 GitLab CI에 알려줍니다.

    Coding guidelines:
      stage: static analysis
      script:
        - ./vendor/bin/php-cs-fixer fix -v --dry-run --format=gitlab --using-cache=no src/ > gl-cs-fixer.json || exit 0
      artifacts:
        reports:
          codequality: gl-cs-fixer.json
    


    이 작은 개요가 PHP 프로젝트로 작업할 때 GitLab 및 GitLab CI를 최대한 활용하는 데 도움이 되기를 바랍니다.

    좋은 웹페이지 즐겨찾기