我尝试使用Bitbucket管道为我的应用程序构建一些测试过程。
核心测试工具是赛普拉斯。我想设置几个docker容器并执行Cypress来测试我的应用。
所以,我的bitbucket-pipelines.yml
看起来像这样:
image: docker:stable
options:
docker: true
pipelines:
default:
- step:
name: Install PHP app
caches:
- composer
script:
- cp config/db.sample.php config/db.php
- sed -i "s/[HOSTNAME]/db/" config/db.php
- sed -i "s/[DB_NAME]/dbname/" config/db.php
- sed -i "s/[DB_USER]/usr/" config/db.php
- sed -i "s/[DB_USER_PASSWORD]/pass/" config/db.php
- cp web/index.sample.php web/index.php
- docker run --name db --restart always -e MYSQL_DATABASE=dbname -e MYSQL_USER=usr -e MYSQL_PASSWORD=pass -e MYSQL_ALLOW_EMPTY_PASSWORD=yes -d -p 3306:3306 mariadb
- docker run --name web -v="$BITBUCKET_CLONE_DIR:/app" -d -p 8000:80 yiisoftware/yii2-php:5.6-apache
- docker run --name e2e -v="$BITBUCKET_CLONE_DIR:/app" --workdir /app --tty -d cypress/base:10
- docker exec -i web composer install
- docker exec -i db mysql -uroot dbname < ./migrations/data/structure.sql
- docker exec -i e2e yarn install
- docker exec -i e2e yarn run cypress run --config baseUrl=http://web --project ./
services:
- docker
- web
definitions:
services:
db:
image: mariadb
web:
image: yiisoftware/yii2-php:5.6-apache
e2e:
image: cypress/base:10
总体而言,它几乎可以正常工作,但是由于某些原因,我无法访问web
容器内的e2e
服务。我尝试使用容器名称,例如http://web
,但是它不起作用。
怎么了?
答案 0 :(得分:0)
好的,看来问题已经解决了。我决定创建基于yiisoftware/yii2-php:5.6-apache
的新映像,并手动安装所有deps:
https://docs.cypress.io/guides/guides/continuous-integration.html#Dependencies
https://github.com/nodesource/distributions/blob/master/README.md
因此,在那之后,我构建了一个映像并将其用作配置中Web服务的映像。
名为e2e
的服务已删除。
赛普拉斯的测试执行如下:
docker exec -i web yarn run cypress run --config baseUrl=http://localhost:80 --project ./