From 5b5c73f660eee54d72f73310c16b5dcdacbeff9c Mon Sep 17 00:00:00 2001 From: "Dylan K. Taylor" Date: Mon, 8 Jan 2024 16:12:03 +0000 Subject: [PATCH] Matrixify jobs that run on all PHP versions this allows us to specify PHP versions in just one place instead of 4, and also makes the display of jobs in the UI nicer. --- .github/workflows/main-php-matrix.yml | 165 ++++++++++++++++++++++++++ .github/workflows/main.yml | 157 +----------------------- 2 files changed, 171 insertions(+), 151 deletions(-) create mode 100644 .github/workflows/main-php-matrix.yml diff --git a/.github/workflows/main-php-matrix.yml b/.github/workflows/main-php-matrix.yml new file mode 100644 index 000000000..3bc0bdebf --- /dev/null +++ b/.github/workflows/main-php-matrix.yml @@ -0,0 +1,165 @@ +name: CI (all supported PHP versions) + +on: + workflow_call: + inputs: + php: + description: 'PHP version in X.Y format' + required: true + type: string + + #these are parameterized to ease updating + pm-version-major: + description: 'PocketMine-MP major version' + default: 5 + type: number + image: + description: 'Runner image to use' + default: 'ubuntu-20.04' + type: string + +jobs: + phpstan: + name: PHPStan analysis + runs-on: ${{ inputs.image }} + + strategy: + fail-fast: false + + steps: + - uses: actions/checkout@v4 + + - name: Setup PHP + uses: pmmp/setup-php-action@2.0.0 + with: + php-version: ${{ inputs.php }} + install-path: "./bin" + pm-version-major: ${{ inputs.pm-version-major }} + + - name: Restore Composer package cache + uses: actions/cache@v3 + with: + path: | + ~/.cache/composer/files + ~/.cache/composer/vcs + key: "composer-v2-cache-${{ inputs.php }}-${{ hashFiles('./composer.lock') }}" + restore-keys: | + composer-v2-cache- + + - name: Install Composer dependencies + run: composer install --prefer-dist --no-interaction + + - name: Run PHPStan + run: ./vendor/bin/phpstan analyze --no-progress --memory-limit=2G + + phpunit: + name: PHPUnit tests + runs-on: ${{ inputs.image }} + strategy: + fail-fast: false + + steps: + - uses: actions/checkout@v4 + + - name: Setup PHP + uses: pmmp/setup-php-action@2.0.0 + with: + php-version: ${{ inputs.php }} + install-path: "./bin" + pm-version-major: ${{ inputs.pm-version-major }} + + - name: Restore Composer package cache + uses: actions/cache@v3 + with: + path: | + ~/.cache/composer/files + ~/.cache/composer/vcs + key: "composer-v2-cache-${{ inputs.php }}-${{ hashFiles('./composer.lock') }}" + restore-keys: | + composer-v2-cache- + + - name: Install Composer dependencies + run: composer install --prefer-dist --no-interaction + + - name: Run PHPUnit tests + run: ./vendor/bin/phpunit --bootstrap vendor/autoload.php --fail-on-warning tests/phpunit + + integration: + name: Integration tests + runs-on: ${{ inputs.image }} + strategy: + fail-fast: false + + steps: + - uses: actions/checkout@v4 + with: + submodules: true + + - name: Setup PHP + uses: pmmp/setup-php-action@2.0.0 + with: + php-version: ${{ inputs.php }} + install-path: "./bin" + pm-version-major: ${{ inputs.pm-version-major }} + + - name: Restore Composer package cache + uses: actions/cache@v3 + with: + path: | + ~/.cache/composer/files + ~/.cache/composer/vcs + key: "composer-v2-cache-${{ inputs.php }}-${{ hashFiles('./composer.lock') }}" + restore-keys: | + composer-v2-cache- + + - name: Install Composer dependencies + run: composer install --no-dev --prefer-dist --no-interaction + + - name: Run integration tests + run: ./tests/travis.sh -t4 + + codegen: + name: Generated Code consistency checks + runs-on: ${{ inputs.image }} + strategy: + fail-fast: false + + steps: + - uses: actions/checkout@v4 + + - name: Setup PHP + uses: pmmp/setup-php-action@2.0.0 + with: + php-version: ${{ inputs.php }} + install-path: "./bin" + pm-version-major: ${{ inputs.pm-version-major }} + + - name: Restore Composer package cache + uses: actions/cache@v3 + with: + path: | + ~/.cache/composer/files + ~/.cache/composer/vcs + key: "composer-v2-cache-${{ inputs.php }}-${{ hashFiles('./composer.lock') }}" + restore-keys: | + composer-v2-cache- + + - name: Install Composer dependencies + run: composer install --no-dev --prefer-dist --no-interaction + + - name: Regenerate registry annotations + run: php build/generate-registry-annotations.php src + + - name: Regenerate KnownTranslation APIs + run: php build/generate-known-translation-apis.php + + - name: Regenerate BedrockData available files constants + run: php build/generate-bedrockdata-path-consts.php + + - name: Regenerate YmlServerProperties constants + run: php build/generate-pocketmine-yml-property-consts.php + + - name: Verify code is unchanged + run: | + git diff + git diff --quiet diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml index 32f8be80e..bcb8036d9 100644 --- a/.github/workflows/main.yml +++ b/.github/workflows/main.yml @@ -6,162 +6,17 @@ on: workflow_dispatch: jobs: - phpstan: - name: PHPStan analysis - runs-on: ${{ matrix.image }} - + all-php-versions: + name: PHP ${{ matrix.php }} strategy: fail-fast: false matrix: - image: [ubuntu-20.04] php: ["8.1", "8.2", "8.3"] - steps: - - uses: actions/checkout@v4 - - - name: Setup PHP - uses: pmmp/setup-php-action@2.0.0 - with: - php-version: ${{ matrix.php }} - install-path: "./bin" - pm-version-major: "5" - - - name: Restore Composer package cache - uses: actions/cache@v3 - with: - path: | - ~/.cache/composer/files - ~/.cache/composer/vcs - key: "composer-v2-cache-${{ matrix.php }}-${{ hashFiles('./composer.lock') }}" - restore-keys: | - composer-v2-cache- - - - name: Install Composer dependencies - run: composer install --prefer-dist --no-interaction - - - name: Run PHPStan - run: ./vendor/bin/phpstan analyze --no-progress --memory-limit=2G - - phpunit: - name: PHPUnit tests - runs-on: ${{ matrix.image }} - strategy: - fail-fast: false - matrix: - image: [ubuntu-20.04] - php: ["8.1", "8.2", "8.3"] - - steps: - - uses: actions/checkout@v4 - - - name: Setup PHP - uses: pmmp/setup-php-action@2.0.0 - with: - php-version: ${{ matrix.php }} - install-path: "./bin" - pm-version-major: "5" - - - name: Restore Composer package cache - uses: actions/cache@v3 - with: - path: | - ~/.cache/composer/files - ~/.cache/composer/vcs - key: "composer-v2-cache-${{ matrix.php }}-${{ hashFiles('./composer.lock') }}" - restore-keys: | - composer-v2-cache- - - - name: Install Composer dependencies - run: composer install --prefer-dist --no-interaction - - - name: Run PHPUnit tests - run: ./vendor/bin/phpunit --bootstrap vendor/autoload.php --fail-on-warning tests/phpunit - - integration: - name: Integration tests - runs-on: ${{ matrix.image }} - strategy: - fail-fast: false - matrix: - image: [ubuntu-20.04] - php: ["8.1", "8.2", "8.3"] - - steps: - - uses: actions/checkout@v4 - with: - submodules: true - - - name: Setup PHP - uses: pmmp/setup-php-action@2.0.0 - with: - php-version: ${{ matrix.php }} - install-path: "./bin" - pm-version-major: "5" - - - name: Restore Composer package cache - uses: actions/cache@v3 - with: - path: | - ~/.cache/composer/files - ~/.cache/composer/vcs - key: "composer-v2-cache-${{ matrix.php }}-${{ hashFiles('./composer.lock') }}" - restore-keys: | - composer-v2-cache- - - - name: Install Composer dependencies - run: composer install --no-dev --prefer-dist --no-interaction - - - name: Run integration tests - run: ./tests/travis.sh -t4 - - codegen: - name: Generated Code consistency checks - runs-on: ${{ matrix.image }} - strategy: - fail-fast: false - matrix: - image: [ubuntu-20.04] - php: ["8.1", "8.2", "8.3"] - - steps: - - uses: actions/checkout@v4 - - - name: Setup PHP - uses: pmmp/setup-php-action@2.0.0 - with: - php-version: ${{ matrix.php }} - install-path: "./bin" - pm-version-major: "5" - - - name: Restore Composer package cache - uses: actions/cache@v3 - with: - path: | - ~/.cache/composer/files - ~/.cache/composer/vcs - key: "composer-v2-cache-${{ matrix.php }}-${{ hashFiles('./composer.lock') }}" - restore-keys: | - composer-v2-cache- - - - name: Install Composer dependencies - run: composer install --no-dev --prefer-dist --no-interaction - - - name: Regenerate registry annotations - run: php build/generate-registry-annotations.php src - - - name: Regenerate KnownTranslation APIs - run: php build/generate-known-translation-apis.php - - - name: Regenerate BedrockData available files constants - run: php build/generate-bedrockdata-path-consts.php - - - name: Regenerate YmlServerProperties constants - run: php build/generate-pocketmine-yml-property-consts.php - - - name: Verify code is unchanged - run: | - git diff - git diff --quiet + uses: ./.github/workflows/main-php-matrix.yml + with: + php: ${{ matrix.php }} + secrets: inherit codestyle: name: Code Style checks