From b62963489a447fa73816c2f05588cd236e14c94d Mon Sep 17 00:00:00 2001 From: Jerry Ma Date: Sun, 29 Sep 2024 15:24:33 +0800 Subject: [PATCH] Add optional workflow (#548) * Add optional workflow * Add optional workflow --- .github/workflows/tests.yml | 37 ++++++++++++++++++++++++--------- src/globals/test-extensions.php | 8 ++++++- 2 files changed, 34 insertions(+), 11 deletions(-) diff --git a/.github/workflows/tests.yml b/.github/workflows/tests.yml index 1088c104..5b10f310 100644 --- a/.github/workflows/tests.yml +++ b/.github/workflows/tests.yml @@ -111,22 +111,39 @@ jobs: run: | vendor/bin/phpunit tests/ --no-coverage + define-matrix: + name: "Define Matrix" + runs-on: ubuntu-latest + outputs: + php: ${{ steps.gendef.outputs.php }} + os: ${{ steps.gendef.outputs.os }} + steps: + - name: "Checkout" + uses: actions/checkout@v4 + + - name: "Setup PHP" + uses: shivammathur/setup-php@v2 + with: + php-version: 8.2 + + - name: Define + id: gendef + run: | + PHP_VERSIONS=$(php src/globals/test-extensions.php php) + OS_VERSIONS=$(php src/globals/test-extensions.php os) + echo 'php='"$PHP_VERSIONS" >> "$GITHUB_OUTPUT" + echo 'os='"$OS_VERSIONS" >> "$GITHUB_OUTPUT" + + build: name: "Build PHP Test (PHP ${{ matrix.php }} ${{ matrix.os }})" runs-on: ${{ matrix.os }} + needs: define-matrix timeout-minutes: 120 strategy: matrix: - php: - - "8.0" - - "8.1" - - "8.2" - - "8.3" - os: - - ubuntu-latest - - macos-13 - - windows-latest - - macos-14 + php: ${{ fromJSON(needs.define-matrix.outputs.php) }} + os: ${{ fromJSON(needs.define-matrix.outputs.os) }} fail-fast: false steps: - name: "Checkout" diff --git a/src/globals/test-extensions.php b/src/globals/test-extensions.php index 755bdf4a..881be3fd 100644 --- a/src/globals/test-extensions.php +++ b/src/globals/test-extensions.php @@ -11,6 +11,10 @@ declare(strict_types=1); // --------------------------------- edit area --------------------------------- +$test_php_version = ['8.3']; + +$test_os = ['macos-13', 'macos-14', 'ubuntu-latest', 'windows-latest']; + $zts = false; $no_strip = false; @@ -58,7 +62,7 @@ function _getCombination(string $type = 'common'): string } if (!isset($argv[1])) { - exit("Please use 'extensions', 'cmd' or 'libs' as output type"); + exit("Please use 'extensions', 'cmd', 'os', 'php' or 'libs' as output type"); } $trim_value = "\r\n \t,"; @@ -73,6 +77,8 @@ if (PHP_OS_FAMILY === 'Windows') { } echo match ($argv[1]) { + 'os' => json_encode($test_os), + 'php' => json_encode($test_php_version), 'extensions' => $final_extensions, 'libs' => $final_libs, 'libs_cmd' => ($final_libs === '' ? '' : (' --with-libs=' . $final_libs)),