Skip to content

Latest commit

 

History

History
53 lines (36 loc) · 3.12 KB

README.md

File metadata and controls

53 lines (36 loc) · 3.12 KB

Renovate configuration

Nextest uses Renovate to keep its dependencies up-to-date. This repository contains our Renovate configuration.

Self-hosting Renovate

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.

Global Renovate configuration

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 in default.json.

Repository-specific Renovate configuration

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 default ignorePaths.
  • We use the update-lockfile strategy for crates specified as x or x.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.

Adding a new repository to Renovate

You must do the following three things:

  1. Add the repository to the list of repositories in global-config.json.
  2. Check in a .github/renovate.json file which extends from default.json (example).
  3. 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.