Skip to content

typisttech/php-matrix-action

Use this GitHub action with your project
Add this Action to an existing workflow or create a new one
View on Marketplace

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

53 Commits
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

PHP Matrix Action

GitHub Release GitHub Marketplace Test License Follow @TangRufus on X Follow @TangRufus.com on Bluesky Sponsor @TangRufus via GitHub Hire Typist Tech

Generate PHP version matrix according to composer.json

Built with ♥ by Typist Tech


Tip

Hire Tang Rufus!

I am looking for my next role, freelance or full-time. If you find this tool useful, I can build you more dev tools like this. Let's talk if you are hiring PHP / Ruby / Go developers.

Contact me at https://typist.tech/contact/


Usage

See action.yml and the underlying script typisttech/php-matrix.

  - uses: typisttech/php-matrix-action@v2
    with:
      # Path to composer.json
      #
      # Default: composer.json
      composer-json: some/path/to/composer.json
      
      # Version format.
      #
      # Available modes:
      #   - `minor-only`: Report `MAJOR.MINOR` versions only
      #   - `full`: Report all satisfying versions in `MAJOR.MINOR.PATCH` format
      #
      # Default: minor-only
      mode: full

      # Source of releases information.
      #
      # Available sources:
      #   - `auto`: Use `offline` in `minor-only` mode. Otherwise, fetch from [php.net]
      #   - `php.net`: Fetch releases information from [php.net]
      #   - `offline`: Use [hardcoded releases] information
      #
      # [php.net]: https://www.php.net/releases/index.php
      # [hardcoded releases]: https://github.com/typisttech/php-matrix/blob/main/resources/all-versions.json
      #
      # Default: auto
      source: offline

      # PHP Matrix version.
      # 
      # The version of [php-matrix] to use. Leave blank for latest. For example: v1.0.2
      # 
      # [php-matrix]: https://github.com/typisttech/php-matrix
      #
      # Default: ''
      version: v1.0.2

      # Verify Attestation
      #
      # Whether to verify PHP matrix tarball attestation.

      # Github Token
      #
      # GitHub token to use for authentication
      #
      # Default: ${{ github.token }}
      github-token: ${{ secrets.GITHUB_PAT_TOKEN }}

Outputs

Key Description Example
constraint PHP constraint found in composer.json ^7.3 || ^8.0
versions String of an array of all supported PHP versions In minor-only mode, ["7.3", "7.4", "8.0", "8.1", "8.2", "8.3", "8.4"]

In full mode, ["7.4.998", "7.4.999", "8.4.998", "8.4.999"]
lowest Lowest supported PHP versions In minor-only mode, 7.3

In full mode, 7.3.0
highest Highest supported PHP versions In minor-only mode, 8.4

In full mode, 8.4.2

Tip

Hire Tang Rufus!

There is no need to understand any of these quirks. Let me handle them for you. I am seeking my next job, freelance or full-time.

If you are hiring PHP / Ruby / Go developers, contact me at https://typist.tech/contact/

Examples

Run tests against all supported PHP versions.
name: Test

on:
  push:

jobs:
  php-matrix:
    runs-on: ubuntu-latest
    outputs:
      versions: ${{ steps.php-matrix.outputs.versions }}
    steps:
      - uses: actions/checkout@v5
        with:
          sparse-checkout: composer.json
          sparse-checkout-cone-mode: false

      - uses: typisttech/php-matrix-action@v2
        id: php-matrix

  test:
    runs-on: ubuntu-latest
    needs: php-matrix
    strategy:
      matrix:
        php-version: ${{ fromJSON(needs.php-matrix.outputs.versions) }}
    steps:
      - uses: actions/checkout@v5
      - uses: shivammathur/setup-php@v2
        with:
          php-version: ${{ matrix.php-version }}
      - run: composer install
      - run: composer test
Run tests on the highest supported PHP version only.
name: Test

on:
  push:

jobs:
  test:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v5

      - uses: typisttech/php-matrix-action@v2
        id: php-matrix

      - uses: shivammathur/setup-php@v2
        with:
          php-version: ${{ steps.php-matrix.outputs.highest }}

      - run: composer install
      - run: composer test
Run `$ composer audit` against all supported PHP versions.
name: Composer Audit

on:
  push:

jobs:
  php-matrix:
    runs-on: ubuntu-latest
    outputs:
      versions: ${{ steps.php-matrix.outputs.versions }}
      highest: ${{ steps.php-matrix.outputs.highest }}
      lowest: ${{ steps.php-matrix.outputs.lowest }}
    steps:
      - uses: actions/checkout@v5
        with:
          sparse-checkout: composer.json
          sparse-checkout-cone-mode: false

      - uses: typisttech/php-matrix-action@v2
        id: php-matrix

  composer-audit:
    needs: php-matrix
    runs-on: ubuntu-latest
    strategy:
      matrix:
        php-version: ${{ fromJSON(needs.php-matrix.outputs.versions) }}
        dependency-versions: [highest]
        include:
          - php-version: ${{ needs.php-matrix.outputs.lowest }}
            dependency-versions: lowest
          - php-version: ${{ needs.php-matrix.outputs.highest }}
            dependency-versions: locked
    env:
      COMPOSER_NO_AUDIT: 1
    steps:
      - uses: actions/checkout@v5
        with:
          sparse-checkout: |
            composer.json
            composer.lock
          sparse-checkout-cone-mode: false

      - uses: shivammathur/setup-php@v2
        with:
          php-version: ${{ matrix.php-version }}
          coverage: none
      - uses: ramsey/composer-install@v3
        with:
          dependency-versions: ${{ matrix.dependency-versions }}

      - run: composer audit

Credits

PHP Matrix Action is a Typist Tech project and maintained by Tang Rufus, freelance developer for hire.

Full list of contributors can be found on GitHub.

Copyright and License

This project is a free software distributed under the terms of the MIT license. For the full license, see LICENSE.

Contribute

Feedbacks / bug reports / pull requests are welcome.

About

Generate PHP version matrix according to `composer.json`

Topics

Resources

License

Stars

Watchers

Forks

Sponsor this project

  •  

Contributors 3

  •  
  •  
  •