Nextest uses Renovate to keep its dependencies up-to-date. This repository contains our Renovate configuration.
We use a self-hosted
instance of Renovate.
This is so that we can run post-upgrade
commands,
specifically updating the workspace-hack crate managed by
cargo hakari.
- The instance runs as a periodic GitHub
workflow -- can also be
manually triggered via the
workflow_dispatchUI). - The source code is at
.github/workflows/renovate.yml.
The global (or administrator) Renovate configuration is at global-config.json (reference). Comments:
- The list of repositories to fetch must be listed out manually.
- While it is possible to specify repository-specific configuration in the global config, as a matter of policy we restrict
global-config.jsonto only contain global config items. Default repository-specific configuration must go indefault.json.
Default repository-specific configuration goes in default.json. This gets imported into repositories using Renovate's config presets feature (example):
{
"extends": ["github>nextest-rs/renovate"]
}Comments:
ignorePathsis non-additive, so if you wish to ignore a new path in a repo it's best to add it to the defaultignorePaths.- We use the
update-lockfilestrategy for crates specified asxorx.y; see Renovate discussion #28280 for more.
Extra, commonly used sets of repository-specific configuration go in this repository within other files. For example, if a post-upgrade script needs to be run, check it in as an executable scripts/renovate-post-upgrade.sh (example) and import github>nextest-rs/renovate:post-upgrade.
You must do the following three things:
- Add the repository to the list of repositories in
global-config.json. - Check in a
.github/renovate.jsonfile which extends fromdefault.json(example). - Give @nextest-bot write access to the repository in its settings.
Renovate will only manage dependencies for the repository if all three conditions are met.