php - 功能测试失败时如何停止 Github Actions 步骤(使用 Codeception)
问题描述
我是 Github Actions 的新手,我尝试与功能测试进行一些持续集成。
我使用 Codeception 并且我的工作流程运行良好,但是当某些测试失败时,该步骤被写为成功。Github 不停止动作,继续运行下一步。
这是我的工作流程 yml 文件:
name: Run codeception tests
on:
push:
branches: [ feature/functional-tests/codeception ]
jobs:
build:
runs-on: ubuntu-latest
steps:
# —— Setup Github Actions —————————————————————————————————————————————
- name: Checkout
uses: actions/checkout@v2
# —— Setup PHP Version 7.3 —————————————————————————————————————————————
- name: Setup PHP environment
uses: shivammathur/setup-php@master
with:
php-version: '7.3'
# —— Setup Docker Environment —————————————————————————————————————————————
- name: Build containers
run: docker-compose build
- name: Start all container
run: docker-compose up -d
- name: Execute www container
run: docker exec -t my_container developer
- name: Create parameter file
run: cp app/config/parameters.yml.dist app/config/parameters.yml
# —— Composer ️ —————————————————————————————————————————————————————————
- name: Install dependancies
run: composer install
# —— Check Requirements —————————————————————————————————————————————
- name: Check PHP version
run: php --version
# —— Setup Database —————————————————————————————————————————————
- name: Create database
run: docker exec -t mysql_container mysql -P 3306 --protocol=tcp -u root --password=**** -e "CREATE DATABASE functional_tests"
- name: Copy database
run: cat tests/_data/test.sql | docker exec -i mysql_container mysql -u root --password=**** functional_tests
- name: Switch database
run: docker exec -t php /var/www/bin/console app:dev:marketplace:switch functional_tests
- name: Execute migrations
run: docker exec -t php /var/www/bin/console --no-interaction doctrine:migrations:migrate
- name: Populate database
run: docker exec -t my_container php /var/www/bin/console fos:elastica:populate
# —— Generate Assets ———————————————————————————————————————————————————————————
- name: Install assets
run: |
docker exec -t my_container php /var/www/bin/console assets:install
docker exec -t my_container php /var/www/bin/console assetic:dump
# —— Tests ✅ ———————————————————————————————————————————————————————————
- name: Run functional tests
run: docker exec -t my_container php codeception:functional
- name: Run Unit Tests
run: php vendor/phpunit/phpunit/phpunit -c app/
这是操作步骤的日志:
任何人都知道为什么该步骤不会失败以及如何抛出错误?
解决方案
codeception:functional
即使发生错误,也可能设置退出代码 = 0。docker exec
传递进程的退出代码。如果命令返回退出代码 != 0,则 GitHub Actions 将失败该步骤。
推荐阅读
- spring-tool-suite - Spring Tool Suite 3 和 4 有什么区别?
- javascript - Vim Typescript 语法高亮不工作
- c - 在另一个头文件中包含外部库的头文件
- flask - 烧瓶不打印到控制台(路由)
- javascript - axios 获取对 localhost:3000/photos 的请求没有返回任何内容?
- amazon-web-services - Elastic Beanstalk Health Severe,失败并显示代码 400 - 即使我可以访问我的网站
- mongoose - CosmosDB 与 mongodb 和 mongoose 的连接
- javascript - 在记忆匹配游戏中显示移动列表
- docker - Docker stdin 读取 unix @->/var/run/docker.sock: 读取: 对等连接重置
- javascript - 你如何在reactjs中转义引号