运行 数据库 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'
我使用 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'