在 Gitlab CI 上更改 Xdebug 模式 PHP Docker

Posted

技术标签:

【中文标题】在 Gitlab CI 上更改 Xdebug 模式 PHP Docker【英文标题】:Change Xdebug Mode PHP Docker on Gitlab CI 【发布时间】:2021-04-27 16:36:11 【问题描述】:

我想使用 GitLab CI 运行 phpUnit 代码覆盖率,但是当我运行命令 vendor/bin/phpunit --coverage-text --colors=never 时只显示代码测试结果而不生成代码覆盖率。

当我使用带有 Xdebug 的 XAMPP 在本地测试它时,启用使用 xdebug.mode=coverage 生成的代码覆盖率。如何在 docker setup 脚本上更改 php.ini 上的xdebug.mode

我也通过 PHPUnit XML 配置覆盖它,这样也行不通。

<ini name="xdebug.mode" value="coverage" />

这是我的.gitlab-ci.yml

image: php:7.4.14

cache:
  key: "$CI_JOB_NAME-$CI_COMMIT_REF_SLUG"
  paths:
    - vendor

before_script:
  # Install git
  - apt-get update -yqq
  - apt-get install git -yqq

  # Install packages
  - apt-get install libcurl4-openssl-dev

  # Install required php extension
  - docker-php-ext-install curl

  # Install Xdebug
  - pecl install xdebug
  - docker-php-ext-enable xdebug

  # Install composer
  - curl -sS https://getcomposer.org/installer | php

  # Install dependencies
  - php composer.phar update --prefer-stable --prefer-dist --no-interaction --no-progress

run-test:
  script:
    - vendor/bin/phpunit --coverage-text --colors=never

【问题讨论】:

【参考方案1】:

在搜索了一些文章后,我终于可以这样做了。 这是我的例子.gitlab-ci.yml

图片:php:7.4.14

cache:
  key: "$CI_JOB_NAME-$CI_COMMIT_REF_SLUG"
  paths:
    - vendor

before_script:
  # Install git
  - apt-get update -yqq
  - apt-get install git -yqq

  # Install packages
  - apt-get install libcurl4-openssl-dev

  # Install required php extension
  - docker-php-ext-install curl

  # Install Xdebug
  - pecl install xdebug
  - docker-php-ext-enable xdebug

  # Install composer
  - curl -sS https://getcomposer.org/installer | php

  # Install dependencies
  - php composer.phar update --prefer-stable --prefer-dist --no-interaction --no-progress

  # Here to change xdebug mode
  - echo xdebug.mode=coverage > /usr/local/etc/php/conf.d/xdebug.ini 

run-test:
  script:
    - vendor/bin/phpunit --coverage-text --colors=never

【讨论】:

快速提问,有道理......但只是为了确定。正确的方法是覆盖>整个xdebug.ini文件而不是追加一个新行>>对吗?

以上是关于在 Gitlab CI 上更改 Xdebug 模式 PHP Docker的主要内容,如果未能解决你的问题,请参考以下文章

CI系统中的Docker标记策略(GitLab)

为合并请求触发的管道运行应用 GitLab CI/CD 管道更改

更改 Gitlab CI Runner 用户

GitLab Runner CI/CD 中用户模式和系统模式之间的区别

gitlab 添加 CI CD

提交更改时 Gitlab CI/CD 挂起