温馨提示:本文翻译自stackoverflow.com,查看原文请点击:php - How to stop Github Actions step when functional tests failed (using Codeception)
codeception functional-testing github github-actions php

php - 功能测试失败时如何停止Github Actions步骤(使用Codeception)

发布于 2020-11-12 00:20:46

我是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/

这是操作步骤的日志:

Github动作日志

任何人都知道为什么该步骤不会失败以及如何引发错误?

查看更多

提问者
Samuel
被浏览
18
riQQ 2020-06-10 23:28

codeception:functional即使发生错误,也可能将退出代码设置为0。docker exec传递过程的退出代码。如果命令返回退出代码!= 0,则GitHub Actions将使该步骤失败。