These are Shareable Config Presets for SpotOn. It contains wide-use Renovatebot configs, based on our toolset and mindset.
If Renovate has already been activated for repo
-
Check to see if you have a
renovate.json
already. It can be in any of these possible locations. -
Change
renovate
config to:{ "$schema": "https://docs.renovatebot.com/renovate-schema.json", "extends": [ "local>SpotOnInc/renovate-config" ] }
After that, skip to step 3 below.
Otherwise:
-
Manually update as much as you can before moving forward. You will have the best experience with Renovate if you start with a fully-updated repo.
-
Activate Renovatebot Github App for your repo or ask your GitHub org administrators to enable it.
-
Renovate will create an init PR for the new repo - open it and check that it has:
{ "$schema": "https://docs.renovatebot.com/renovate-schema.json", "extends": [ "local>SpotOnInc/renovate-config" ] }
-
(Optional) We recommend moving the config to
.github/renovate.json5
. -
(Optional) If you use
pre-commit
we recommend adding next check to repo.pre-commit-config.yaml
:- repo: https://github.com/pre-commit/mirrors-prettier rev: v3.1.0 hooks: - id: prettier # https://prettier.io/docs/en/options.html#parser files: '.json5$'
-
Be sure that the
Dependency graph
andDependabot alerts
are enabled for the repo. Details. -
Merge PR and relax. Renovate will create PRs based on provided schedules. By default, you will see Renovate PRs on Mondays.
To change the default config, edit default.template.json5
and create a PR. The matching default.json
will be automatically generated and added after your PR is merged.
Note: If your new
default.json
config does not apply for more than 6 hours, create test repo and copy-paste the wholedefault.json
over and rename it torenovate.json
. Renovatebot will test the configuration and create issues if it found problems with the configuration. Or you can ask ChatGPT :)
To create a new release, go here.
If there are no releases for more than 30 days and in main
present something that is ready to be released - the release will be automatically triggered.
- How Renovate find/create/update PRs
TL;DR: Renovatebot checks branch names and PR titles. If PR is not found to match the branch - Renovatebot will create a new PR.
To recreate a closed PR, rename the closed PR.
-
- Organization level presets -
myorg/renovate-config/default.json
magic name - GitHub-hosted Presets
- Contributing to presets
- Preset Versioning
- Organization level presets -
-
Known limitations
Example: GitHub hosted app Mend checks each active repository roughly every three hours, if no activity has been seen before then (merged PRs, etc).- No rebasing if you have made edits (conflicting with pre-commit auto-fixes)
-
onboardingConfigFileName (self-hosted only).
Useful to change onboarding Renovate config file location.
-
How to edit branch names, commit messages, PR titles, and PR content
-
Separate
patch
andminor
releases of dependencies into separate PRs.
More details here -
:pinVersions - maintain a single version only and not SemVer ranges
-
:rebaseStalePrs - Rebase existing PRs any time the base branch has been updated.
-
Create a regex manager in your
renovate.json5
such as:{ regexManagers: [ { description: "", fileMatch: [""], // regex matchStrings: [ "", // Your regex will be here ], //One of https://docs.renovatebot.com/modules/datasource/ datasourceTemplate: "", packageNameTemplate: "{{packageName}}", // custom-prefix@ needed only in case you;d like provide some custom rules to theses packages depNameTemplate: "custom-prefix@{{packageName}}", // In case you'd like remove `v` prefix extractVersionTemplate: "^v?(?<version>.*)$", // One of https://docs.renovatebot.com/modules/versioning/, IE `semver`: versioningTemplate: "semver", }, ], //// By providing `packageRules` and `matchDepPatterns` you can customize your package updates from regexManager. // packageRules: [ // { // matchDepPatterns: ["^custom-prefix@"], // }, // ], }
and fill all fields except
matchStrings
. -
Find file with dependencies that you want to update and paste file content to regex101.com
-
Write regex for
matchStrings
which will catch:Note Renovate uses RE2 without back and forward lookup groups support, so PCRE2 with these limitations in mind works fine
- current package version (
<currentValue>
) - package source URL (
<packageName>
). What should be inside depends ondatasourceTemplate
which you will use.
For example, fordatasourceTemplate: "github-releases"
you need cutch to<packageName>
GithubPkgOrg/PkgRepo
string.
- current package version (
-
Copy regex from
regex101.com
tomatchStrings
section. Replace all\
with\\
. -
Test that all works as expected. It could be done by creating a temporary repo with your Renovate config and test file, with a non-latest version. Read Renovate logs, force PR creation, and check opened PR if needed.
Possible Final Result
{ // For https://atmos.tools/core-concepts/components/vendoring/#schema-componentyaml regexManagers: [ { description: "Update Atmos Vendor Components", fileMatch: ["component.yaml$"], matchStrings: [ "spec:(.|\\n)*?source:(.|\\n)*?uri:.*\\.[a-z]+\\/(?<packageName>.*)\\.git(.|\\n)*?version:[\\s]*(?<currentValue>.*)", ], datasourceTemplate: "github-releases", packageNameTemplate: "{{packageName}}", depNameTemplate: "atmos-vendor@{{packageName}}", extractVersionTemplate: "^v?(?<version>.*)$", versioningTemplate: "semver", }, ], packageRules: [ { matchDepPatterns: ["^atmos-vendor@"], extends: ["schedule:monthly"], }, ], }