name: Matrix Example permissions: contents: read on: workflow_dispatch: pull_request: branches: - main jobs: changed-files: name: Get changed files runs-on: ubuntu-latest outputs: matrix: ${{ steps.changed-files.outputs.all_changed_files }} steps: - name: Checkout uses: actions/checkout@v4 with: fetch-depth: 0 - name: Get changed files id: changed-files uses: ./ with: matrix: true - name: List all changed files run: echo '${{ steps.changed-files.outputs.all_changed_files }}' matrix-job: name: Run Matrix Job runs-on: ubuntu-latest needs: [changed-files] strategy: matrix: files: ${{ fromJSON(needs.changed-files.outputs.matrix) }} max-parallel: 4 fail-fast: false steps: - name: Checkout uses: actions/checkout@v4 - name: Test run: | echo ${{ matrix.files }}