将覆盖率添加到PHP应用程序Gitlab-CI
#php #laravel #devops #gitlab

首先,让我们对Dockerfile进行一些更改,然后将此部分添加到其中:

RUN LC_ALL=C.UTF-8 apt-add-repository ppa:ondrej/php -y

现在,我们可以安装PHP扩展名Easy Pizzy !!

因此,我们在gitlab-ci.yml
中添加构建部分

build:
  stage: Build
  image: docker:20.10.16
  services:
    - docker:dind
  script:
    - docker login -u $CI_REGISTRY_USER -p $CI_REGISTRY_PASSWORD $CI_REGISTRY
    - docker build --pull -t $IMAGE_TAG .
    - docker push $IMAGE_TAG

现在我们准备好图像后,本节完成

之后,我们可以创建一个测试部分,并安装在此阶段所需的XDEBUG:

code-coverage:
  stage: Test
  image: $IMAGE_TAG
  script:
    - apt-get update
    - apt-get install -y php8.2-xdebug
    - export XDEBUG_MODE=coverage

我们应该避免在Dockerfile中直接安装Xdebug,因为它会降低性能!

Image description

只有一个部分,然后我们的覆盖范围指标就准备就绪

添加此行,因此它将运行代码覆盖范围测试并将覆盖范围的百分比提取到GitLab,并制作测试结果的副本,因此我们可以在Merge请求中检查它们

code-coverage:
  stage: Test
  image: $IMAGE_TAG
  script:
    - apt-get update
    - apt-get install -y php8.2-xdebug
    - export XDEBUG_MODE=coverage
    - ./vendor/bin/phpunit --do-not-cache-result --log-junit phpunit-report.xml --coverage-cobertura phpunit-coverage.xml --coverage-text --colors=never
  artifacts:
    when: always
    reports:
      junit: phpunit-report.xml
      coverage_report:
        coverage_format: cobertura
        path: phpunit-coverage.xml
  coverage: '/^\s*Lines:\s*\d+.\d+\%/'

现在让我们创建一个合并请求,我们在管道通过后发生了什么:
Image description

Image description

Image description