运行 数据库 phpunit 在本地 docker 图像和具有相同 xml 配置的 bitbucket 管道上进行测试

Running database phpunit tests on local docker image and on bitbucket pipelines with same xml configuration

我使用 docker 和 bitbucket 管道,我在本地 docker 容器和 bitbucket 管道中 运行ning 数据库 phpunit 测试。这行得通。在 phpunit.xml.dist 中,我指示数据库 url。

在本地 docker 容器中,这是: mysql://用户:密码@mysql-数据库:3306/数据库

然而,在 bitbucket 管道中: mysql://user:password@localhost:3306/database

我不想每次都更改 phpunit.xml.dist,所以问题是,我怎么 运行 都在同一台主机上(我不在乎它是 "localhost" 或者 "mysql-database")?我试图在 bitbucket-pipelines.yml 中设置 container_name,但它不起作用:

definitions:
  services:
    mysql:
      image: mysql:5.6
      container_name: mysql-database
      environment:
        MYSQL_DATABASE: 'database'
        MYSQL_ROOT_PASSWORD: 'root'
        MYSQL_USER: 'user'
        MYSQL_PASSWORD: 'password'

主机数据库配置应由 config_test.yml 而不是 phpunit.xml.dist 处理。

如果您无法在 config_test.yml 中为 bitbucket 定义自定义参数,您可以定义一个新的 symfony 环境(即:local_test),它有自己的 config_local_test.yml

找到解决方案: a) 如 "goto" 所述:不要在 phpunit.xml.dist 中设置数据库凭据 b) 我的 .env-file 凭据被忽略了,所以我不得不在 bitbucket settings

中设置环境变量

对于那里的任何 Drupal 最终用户,这都有效:

pipelines:
  default:
    - step:
        script:
          - ../vendor/bin/drush si --db-url=mysql://user:password@127.0.0.1/database
          - ../vendor/bin/drush rs 8080 &
          - export SIMPLETEST_DB=mysql://user:password@127.0.0.1/database
          - export SIMPLETEST_BASE_URL=http://127.0.0.1:8080
          - ../vendor/bin/phpunit -c core/phpunit.xml.dist --testsuite=unit
        services:
          - mysql
definitions:
  services:
    mysql:
      image: mysql:5.7
      variables:
        MYSQL_DATABASE: 'database'
        MYSQL_ROOT_PASSWORD: 'root'
        MYSQL_USER: 'user'
        MYSQL_PASSWORD: 'password'