Module matrix

Module matrix 

Source
Expand description

cargo xtask ci matrix — emit GitHub Actions dynamic matrix JSON.

Scans the workspace Cargo.toml files for feature flags and writes two outputs to $GITHUB_OUTPUT:

  • matrix — feature × OS entries (for the clippy job)
  • test-matrix — feature entries for ubuntu test jobs
matrix={"include":[{"label":"default","features":"","os":"ubuntu-latest"},…]}
test-matrix={"include":[{"label":"default","features":"","os":"ubuntu-latest"},…]}

§Usage in a workflow

generate-matrix:
  outputs:
    matrix: ${{ steps.matrix.outputs.matrix }}
    test-matrix: ${{ steps.matrix.outputs.test-matrix }}
  steps:
    - id: matrix
      run: cargo xtask ci matrix

clippy:
  needs: generate-matrix
  strategy:
    matrix:
      include: ${{ fromJson(needs.generate-matrix.outputs.matrix).include }}

test:
  needs: generate-matrix
  strategy:
    matrix:
      include: ${{ fromJson(needs.generate-matrix.outputs.test-matrix).include }}

Functions§

run
Generates the feature matrix and writes both outputs to $GITHUB_OUTPUT.
write_github_output 🔒