dnd-it/action-config
Github Action for reading configuration files and generating workflow matrices
View on GitHubTrust Signals
- Scorecard Score
- not yet scored
- Maintenance Recency
- Activelast commit Apr 24, 2026
- License
- MIT
Pinned Snippet
uses: dnd-it/action-config@472bde8f0b4f34f801df661b626af8c6f575067f # v3.4.0tags can be moved; commit SHAs can't. why a SHA?
Inputs
| name | description | required | default |
|---|---|---|---|
| config_path | Path to the configuration file (JSON or YAML) | yes | .github/matrix-config.yaml |
| dimension | Set the primary dimension. Used for directory field, target filtering, and change detection. Defaults to the config settings.dimension value, or "service" if neither is set. | no | "" |
| target | Filter by dimension value(s). Comma-separated for multiple (e.g. "api,frontend"). If a single value matches a dimension name (not a value of the current dimension), it switches the primary dimension instead. | no | "" |
| environment | Filter environments. Comma-separated for multiple (e.g. "dev,prod") | no | "" |
| exclude | JSON array of patterns to exclude from the matrix (e.g. [{"service":"shared","environment":"dev"}]) | no | "" |
| include | JSON array of entries to append to the matrix (e.g. [{"service":"shared"}]) | no | "" |
| change_detection | When true, use git to detect changed files and filter the matrix to only entries with changes. Uses base_dir from settings to map file paths. Requires actions/checkout with fetch-depth: 0. | no | false |
| summary | Write all output values to the GitHub Actions step summary for at-a-glance visibility. | no | true |
Outputs
| name | description |
|---|---|
| matrix | JSON string containing the matrix configuration |
| changes_detected | Whether any entries have changes (true/false). Only meaningful when change_detection is true. |
| config | JSON object keyed by dimension values for direct field access via fromJson(). E.g. fromJson(steps.<id>.outputs.config).dev.api.directory |
| length | Number of entries in the matrix (e.g. "4"). Useful for conditional job execution: if: needs.setup.outputs.length > 0 |
| config_file | Path to the configuration file that was actually read for this run. |