mirror of
https://github.com/renovatebot/renovate.git
synced 2026-11-01 18:19:51 +00:00
141e136869
* feat(manager/mise): support gitlab backend Maps the mise `gitlab` backend (e.g. `gitlab:gitlab-org/cli`) to the gitlab-releases datasource, mirroring the github backend including version_prefix support. * refactor(manager/mise): use optional instead of Nullish for tool options TOML has no null type, so MiseToolOptions values are only ever a string or absent. .optional() models that exactly; Nullish only adds value for sources that can emit explicit null. * fix(manager/mise): use RegExp.escape in gitlab backend Main switched `createGithubToolConfig` from the `escapeRegExp` util to `RegExp.escape` and dropped the import, which left the newly added `createGitlabToolConfig` referencing an undefined symbol after the merge. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com> --------- Co-authored-by: Michael Kriese <michael.kriese@mend.io> Co-authored-by: Claude Opus 5 (1M context) <noreply@anthropic.com>
160 lines
8.2 KiB
Markdown
160 lines
8.2 KiB
Markdown
Renovate can update [mise configuration files](https://mise.jdx.dev/configuration.html#mise-toml).
|
|
|
|
### Supported configuration files
|
|
|
|
Renovate supports all standard mise configuration file patterns:
|
|
|
|
- `mise.toml`, `.mise.toml`
|
|
- `mise/config.toml`, `.mise/config.toml`
|
|
- `.config/mise.toml`, `.config/mise/config.toml`, `.config/mise/mise.toml`
|
|
- `.rtx.toml` (legacy)
|
|
- Environment-specific variants (e.g., `mise.production.toml`, `.mise.dev.toml`)
|
|
- Local variants (e.g., `mise.local.toml`, `.mise.local.toml`)
|
|
|
|
### Supported tool locations
|
|
|
|
Renovate supports top level [`tools`](https://mise.jdx.dev/configuration.html#tools-dev-tools) and [`tasks.*.tools`](https://mise.jdx.dev/tasks/task-configuration.html#tools) keys.
|
|
|
|
### Lock file support
|
|
|
|
Renovate supports mise lock files (`mise.lock`).
|
|
When a lock file is present:
|
|
|
|
- Dependencies will have their `lockedVersion` extracted from the lock file
|
|
- Renovate can update lock files when dependencies change
|
|
- Lock file maintenance is supported via the `lockFileMaintenance` option. When the `mise` version Renovate runs supports it (see [safe mode](#trust-model-for-lock-file-updates) for how the version is detected), maintenance runs `mise lock --bump`, which advances fuzzy selectors (e.g. `node = "22"`) to the latest matching version rather than only refreshing existing locked versions.
|
|
|
|
Renovate recognizes environment-specific lock files:
|
|
|
|
- `mise.lock` - default lock file
|
|
- `mise.local.lock` - local configuration lock file, typically ignored alongside `mise.local.toml`
|
|
- `mise.{env}.lock` - environment-specific lock files (e.g., `mise.production.lock`)
|
|
- `mise.{env}.local.lock` - environment-specific local lock files, typically ignored alongside `mise.{env}.local.toml`
|
|
|
|
For more information about mise lock files, see the [mise lock file documentation](https://mise.jdx.dev/dev-tools/mise-lock.html).
|
|
|
|
### Trust model for lock file updates
|
|
|
|
Running `mise lock` can execute repository-defined behavior, so Renovate treats mise lockfile refreshes as an unsafe execution.
|
|
|
|
Self-hosted administrators must explicitly allow this path by including `mise` in the global [`allowedUnsafeExecutions`](../../../self-hosted-configuration.md#allowedunsafeexecutions) setting.
|
|
|
|
Because mise lock can execute repository-defined scripts, Renovate treats lockfile refreshes as an unsafe execution and attempts to run mise in [safe mode](https://mise.jdx.dev/configuration/settings.html#safe).
|
|
|
|
If mise does not support safe mode or version detection fails, Renovate blocks all mise operations.
|
|
|
|
#### Allowing Unsafe Executions
|
|
|
|
Self-hosted administrators can permit these operations by adding "mise" to the global [`allowedUnsafeExecutions`](../../../self-hosted-configuration.md#allowedunsafeexecutions) configuration.
|
|
|
|
Once allowed, Renovate runs mise trust before mise lock when a mise.lock file is present. This exposes the trust step in execution logs and defers trust rules to mise.
|
|
|
|
In particular:
|
|
|
|
- an existing `mise.lock` is required
|
|
- self-hosted administrators decide whether this unsafe execution is acceptable for their environment
|
|
|
|
### Renovate only updates primary versions
|
|
|
|
Renovate's `mise` manager is designed to automatically update the _first_ (primary) version listed for each tool in the `mise.toml` file.
|
|
|
|
Secondary or fallback versions require manual updates.
|
|
|
|
#### Example
|
|
|
|
Given a `mise.toml` entry like:
|
|
|
|
```toml
|
|
[tools]
|
|
erlang = ["23.3", "22.0"]
|
|
```
|
|
|
|
Renovate will update `"23.3"` (the primary version) but will not touch `"22.0"` (the fallback version).
|
|
|
|
#### Why can Renovate only update primary versions?
|
|
|
|
To maintain consistency and reliability, Renovate opts to only manage the _first_ listed version.
|
|
|
|
- Fallback versions can often be older versions of a tool that are known to work and are there as a backup.
|
|
|
|
This follows the same workflow that Renovate's `asdf` manager uses.
|
|
|
|
### Short names support
|
|
|
|
Renovate uses the [mise registry](https://mise.jdx.dev/registry.html) to resolve tool short names to their appropriate datasource.
|
|
|
|
Where possible, Renovate will automagically support tools from the mise registry (via `mise registry --json`).
|
|
|
|
This means that any tool in the mise registry that has a supported backend (e.g. `aqua`, `github`, `cargo`) should be automatically supported by Renovate.
|
|
|
|
#### Adding new tool support
|
|
|
|
If a tool you need is not yet in the mise registry, add it upstream to [mise](https://mise.jdx.dev/registry.html).
|
|
Once Renovate syncs its registry data, the tool will be supported automatically, as long as it is in a backend that Renovate supports.
|
|
|
|
For tools that need a custom datasource mapping (e.g. core tools like `node`, `python`), you can create a PR to extend Renovate's `mise` manager directly.
|
|
|
|
If you want to add support for other tools' short names to `mise`, you can create a PR to extend Renovate's `asdf` manager, which indirectly helps Renovate's `mise` manager as well.
|
|
Even if the tool does not use the `asdf` backend in the registry, the short names added to the `asdf` manager will still be used in the `mise` manager.
|
|
|
|
This may no longer be necessary now we automagically add support via the tools that the mise registry advertises.
|
|
|
|
### Backends support
|
|
|
|
Renovate's `mise` manager supports the following [backends](https://mise.jdx.dev/dev-tools/backends/):
|
|
|
|
- [`core`](https://mise.jdx.dev/core-tools.html)
|
|
- [`asdf`](https://mise.jdx.dev/dev-tools/backends/asdf.html)
|
|
- [`aqua`](https://mise.jdx.dev/dev-tools/backends/aqua.html)
|
|
- [`cargo`](https://mise.jdx.dev/dev-tools/backends/cargo.html)
|
|
- [`gem`](https://mise.jdx.dev/dev-tools/backends/gem.html)
|
|
- [`github`](https://mise.jdx.dev/dev-tools/backends/github.html)
|
|
- [`gitlab`](https://mise.jdx.dev/dev-tools/backends/gitlab.html)
|
|
- [`go`](https://mise.jdx.dev/dev-tools/backends/go.html)
|
|
- [`npm`](https://mise.jdx.dev/dev-tools/backends/npm.html)
|
|
- [`pipx`](https://mise.jdx.dev/dev-tools/backends/pipx.html)
|
|
- [`spm`](https://mise.jdx.dev/dev-tools/backends/spm.html)
|
|
- [`ubi`](https://mise.jdx.dev/dev-tools/backends/ubi.html)
|
|
- [`vfox`](https://mise.jdx.dev/dev-tools/backends/vfox.html)
|
|
|
|
#### Limitations
|
|
|
|
Renovate's `mise` manager does not support the following tool syntax:
|
|
|
|
- `asdf` and `vfox` plugins
|
|
e.g. `asdf:mise-plugins/asdf-yarn` or `vfox:version-fox/vfox-elixir`
|
|
Short names with backends like `asdf:yarn` or `vfox:elixir` are supported if the short names (`yarn`, `elixir`) are supported.
|
|
|
|
- `aqua` packages with `http` [package type](https://aquaproj.github.io/docs/reference/registry-config/#package-types).
|
|
However if the short name using `aqua` backend is supported by Renovate, it will be updated.
|
|
e.g. [`aqua:helm/helm`](https://github.com/aquaproj/aqua-registry/blob/main/pkgs/helm/helm/registry.yaml) is not supported, but `helm` or `aqua:helm` is supported.
|
|
|
|
- `aqua` packages with [`version_filter`](https://aquaproj.github.io/docs/reference/registry-config/version-prefix).
|
|
We don't read the aqua registry itself, so we can't support this feature.
|
|
If some packages using `version_filter` like [`aqua:biomejs/biome`](https://github.com/aquaproj/aqua-registry/blob/main/pkgs/biomejs/biome/registry.yaml) are not updated or updated incorrectly, set `extractVersion` in the Renovate config manually like below.
|
|
|
|
```json
|
|
{
|
|
"packageRules": [
|
|
{
|
|
"matchDepNames": ["aqua:biomejs/biome"],
|
|
"extractVersion": "cli/(?<version>.+)"
|
|
}
|
|
]
|
|
}
|
|
```
|
|
|
|
- Some of `ubi` backend tools with [`tag_regex`](https://mise.jdx.dev/dev-tools/backends/ubi.html#ubi-uses-weird-versions) option.
|
|
The `tag_regex` option is used as `extractVersion`, but the regex engines are not the same between mise and Renovate.
|
|
If the version is not updated or updated incorrectly, override `extractVersion` manually in the Renovate config.
|
|
|
|
- Some of `github` backend tools with [`version_prefix`](https://mise.jdx.dev/dev-tools/backends/github.html) option.
|
|
The `version_prefix` option is converted to `extractVersion` by escaping special regex characters.
|
|
If the version is not updated or updated incorrectly, override `extractVersion` manually in the Renovate config.
|
|
|
|
- Renovate will prefer the `github:` backend over other backends, if using the tool definition from the mise registry
|
|
|
|
### Supported default registry tool short names
|
|
|
|
<!-- Autogenerate in https://github.com/renovatebot/renovate -->
|