name: Testing on: pull_request: push: branches: - main - master # Cancels all previous workflow runs for the same branch that have not yet completed. concurrency: # The concurrency group contains the workflow name and the branch name. group: ${{ github.workflow }}-${{ github.ref }} cancel-in-progress: true jobs: unit: #----------------------------------------------------------------------- name: Unit test / PHP ${{ matrix.php }} strategy: fail-fast: false matrix: php: ['5.6', '7.0', '7.1', '7.2', '7.3', '7.4', '8.0', '8.1'] runs-on: ubuntu-20.04 steps: - name: Check out source code uses: actions/checkout@v2 - name: Check existence of composer.json file id: check_files uses: andstor/file-existence-action@v1 with: files: "composer.json, phpunit.xml.dist" - name: Set up PHP environment if: steps.check_files.outputs.files_exists == 'true' uses: shivammathur/setup-php@v2 with: php-version: '${{ matrix.php }}' coverage: none tools: composer,cs2pr env: COMPOSER_TOKEN: ${{ secrets.GITHUB_TOKEN }} - name: Install Composer dependencies & cache dependencies if: steps.check_files.outputs.files_exists == 'true' uses: "ramsey/composer-install@v2" env: COMPOSER_ROOT_VERSION: dev-${{ github.event.repository.default_branch }} - name: Setup problem matcher to provide annotations for PHPUnit if: steps.check_files.outputs.files_exists == 'true' run: echo "::add-matcher::${{ runner.tool_cache }}/phpunit.json" - name: Run PHPUnit if: steps.check_files.outputs.files_exists == 'true' run: composer phpunit functional: #---------------------------------------------------------------------- name: Functional - WP ${{ matrix.wp }} on PHP ${{ matrix.php }} with MySQL ${{ matrix.mysql }} strategy: fail-fast: false matrix: php: ['5.6', '7.0', '7.1', '7.2', '7.3', '7.4', '8.0', '8.1'] wp: ['latest'] mysql: ['8.0'] include: - php: '5.6' wp: 'trunk' mysql: '8.0' - php: '5.6' wp: 'trunk' mysql: '5.7' - php: '5.6' wp: 'trunk' mysql: '5.6' - php: '7.4' wp: 'trunk' mysql: '8.0' - php: '8.0' wp: 'trunk' mysql: '8.0' - php: '8.0' wp: 'trunk' mysql: '5.7' - php: '8.0' wp: 'trunk' mysql: '5.6' - php: '8.1' wp: 'trunk' mysql: '8.0' - php: '5.6' wp: '3.7' mysql: '5.6' runs-on: ubuntu-20.04 services: mysql: image: mysql:${{ matrix.mysql }} ports: - 3306 options: --health-cmd="mysqladmin ping" --health-interval=10s --health-timeout=5s --health-retries=3 -e MYSQL_ROOT_PASSWORD=root -e MYSQL_DATABASE=wp_cli_test --entrypoint sh mysql:${{ matrix.mysql }} -c "exec docker-entrypoint.sh mysqld --default-authentication-plugin=mysql_native_password" steps: - name: Check out source code uses: actions/checkout@v2 - name: Check existence of composer.json & behat.yml files id: check_files uses: andstor/file-existence-action@v1 with: files: "composer.json, behat.yml" - name: Install Ghostscript if: steps.check_files.outputs.files_exists == 'true' run: | sudo apt-get update sudo apt-get install ghostscript -y - name: Set up PHP environment if: steps.check_files.outputs.files_exists == 'true' uses: shivammathur/setup-php@v2 with: php-version: '${{ matrix.php }}' extensions: gd, imagick, mysql, zip coverage: none tools: composer env: COMPOSER_TOKEN: ${{ secrets.GITHUB_TOKEN }} - name: Change ImageMagick policy to allow pdf->png conversion. if: steps.check_files.outputs.files_exists == 'true' run: | sudo sed -i 's/^.*policy.*coder.*none.*PDF.*//' /etc/ImageMagick-6/policy.xml - name: Install Composer dependencies & cache dependencies if: steps.check_files.outputs.files_exists == 'true' uses: "ramsey/composer-install@v2" env: COMPOSER_ROOT_VERSION: dev-${{ github.event.repository.default_branch }} - name: Start MySQL server if: steps.check_files.outputs.files_exists == 'true' run: sudo systemctl start mysql - name: Configure DB environment if: steps.check_files.outputs.files_exists == 'true' run: | echo "MYSQL_HOST=127.0.0.1" >> $GITHUB_ENV echo "MYSQL_TCP_PORT=${{ job.services.mysql.ports['3306'] }}" >> $GITHUB_ENV echo "WP_CLI_TEST_DBROOTUSER=root" >> $GITHUB_ENV echo "WP_CLI_TEST_DBROOTPASS=root" >> $GITHUB_ENV echo "WP_CLI_TEST_DBNAME=wp_cli_test" >> $GITHUB_ENV echo "WP_CLI_TEST_DBUSER=wp_cli_test" >> $GITHUB_ENV echo "WP_CLI_TEST_DBPASS=password1" >> $GITHUB_ENV echo "WP_CLI_TEST_DBHOST=127.0.0.1:${{ job.services.mysql.ports['3306'] }}" >> $GITHUB_ENV - name: Prepare test database if: steps.check_files.outputs.files_exists == 'true' run: composer prepare-tests - name: Check Behat environment if: steps.check_files.outputs.files_exists == 'true' run: WP_CLI_TEST_DEBUG_BEHAT_ENV=1 composer behat - name: Run Behat if: steps.check_files.outputs.files_exists == 'true' env: WP_VERSION: '${{ matrix.wp }}' run: composer behat || composer behat-rerun