-
Notifications
You must be signed in to change notification settings - Fork 52
Description
Use case: Running test suites with matrix strategies where one tool (e.g., Python) varies by job, while other tools (e.g., uv) should remain consistent.
Current behavior: The mise_toml input overwrites the entire mise.toml file, requiring duplication of all tool definitions.
Workaround (current): Using --env ci with a separate mise.ci.toml file:
# mise.ci.toml
[tools]
uv = "0.9.21" # Constant tools only- uses: jdx/mise-action@v3
with:
install_args: "python@${{ matrix.python-version }} --env ci"This works because mise merges [tools] sections additively, so mise.ci.toml provides base tools and install-args adds the matrix-specific Python version. However, this requires maintaining a separate config file and is less intuitive than a direct override mechanism.
Desired behavior: Allow mise_toml to merge with or override only the specified tools in the repository's mise.toml, rather than replacing the entire configuration.
Example:
Repository mise.toml:
[tools]
python = "3.14.2"
uv = "0.9.21"Current approach (requires duplication):
- uses: jdx/mise-action@v3
with:
mise_toml: |
[tools]
python = "${{ matrix.python-version }}"
uv = "0.9.21" # Must duplicateDesired approach (inherit other tools):
- uses: jdx/mise-action@v3
with:
mise_toml: |
[tools]
python = "${{ matrix.python-version }}"
# uv = "0.9.21" automatically inherited from repo mise.tomlQuestions for maintainers:
- Could
mise_tomlbe implemented to merge with existing configs rather than overwrite? - Would a new input like
mise_toml_overrideormise_toml_merge: truebe preferable? - Are there other patterns or ideas for handling partial tool overrides in CI workflows?
This would make matrix-based CI workflows cleaner and reduce maintenance burden when tool versions change.