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_dispatch
UI). - 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.json
to 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:
ignorePaths
is 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-lockfile
strategy for crates specified asx
orx.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.json
file 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.