Skip to content

Commit

Permalink
chore(ci): update renovate config
Browse files Browse the repository at this point in the history
Signed-off-by: ggjulio <juligonz@student.42.fr>
  • Loading branch information
ggjulio committed Oct 6, 2024
1 parent d063e60 commit 8f39110
Show file tree
Hide file tree
Showing 7 changed files with 244 additions and 108 deletions.
64 changes: 64 additions & 0 deletions renovate-presets/README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,64 @@
# Renovate shared presets

This folder contains shared presets.
It also improve separation of concerns between packageRules in a single file quickly become hard to maintain.

# How to use a preset

1. Add the preset to your renovate.json file:

```json
{
//json
"extends": [
"github>argoproj/argo-cd//renovate-presets:argoproj"
]
}
```

### Note :

It would make sense to move this folder to a new repository in the future.

Benefits:
- Improved feedback loop for configuration changes, no need to wait for a PR to be merged into master.
- Avoid polluting git history.
- Avoids consuming the repository's CI/CD resources.
- The `renovate.json` in each repository can be simplified to only include a single presets :
```json
{
"$schema": "https://docs.renovatebot.com/renovate-schema.json",
"extends": [
"github>argoproj/renovate-presets//argoproj/renovate.json5"
],
// rules are empty and this file won't need to be modified again.
"packageRules": []
}
```
Inconvenient:
- Owners of a repository can impact the configuration of all repositories. Use codeowners to prevent this.

Example of repo structure :
```shell
.
├── README.md
├── .github/CODEOWNERS
├── common.json5 # common presets for all repositories
├── fix/
│ └── openssf-merge-confidence-columns.json5
├── custom-managers/
│ ├── bash.json5
│ └── yaml.json5
└── argoproj/ # organization
├── argo-cd/ # repository
├── devtools.json5 # rules specific to the devtool (CI and dev environment...)
├── doc.json5 # rules specific to the doc written with mkdoc.
├── # etc...
└── renovate.json5 # A single preset referenced from the repository argopro/argo-cd.
├── argo-rollouts/ # repository
│ ── renovate.json5




```
74 changes: 74 additions & 0 deletions renovate-presets/commons.json5
Original file line number Diff line number Diff line change
@@ -0,0 +1,74 @@
{
"$schema": "https://docs.renovatebot.com/renovate-schema.json",
"description": "Contains rules that makes sense to enforce by default.",
"dependencyDashboard": true,
"dependencyDashboardOSVVulnerabilitySummary": "all",
"osvVulnerabilityAlerts": true,
"vulnerabilityAlerts": {
"description": "Settings specific to PRs of type security",
"addLabels": ["security"]
},
"extends": [
"config:best-practices",
":gitSignOff",
":labels(dependencies)",
"customManagers:dockerfileVersions",
"security:openssf-scorecard",
"mergeConfidence:all-badges",
"github>argoproj/argo-cd//renovate-presets/fix/openssf-merge-confidence-columns.json5",
],
"packageRules": [
{
"description": "Define the label to make Renovate stop updating a PR.",
"stopUpdatingLabel": "renovate:stop-updating"
},
{
"description": "Define the label to make Renovate rebase a PR.",
"rebaseLabel": "renovate:do-rebase"
},
{
"description": "Define labels of the dependency dashboard issues.",
"dependencyDashboardLabels": [
"dependencies",
]
},
{
"description": "Add label major to PRs with major updates",
"matchUpdateTypes": [
"major"
],
"addLabels": [
"major"
]
},
{
"description": "Add labels for PRs related to javascript",
"matchDatasources": [
"node-version",
"npm"
],
"addLabels": [
"javascript"
]
},
{
"description": "Add labels for PRs related to go",
"matchDatasources": [
"golang-version",
"go"
],
"addLabels": [
"go"
]
},
{
"description": "Add labels for PRs related to python",
"matchCategories": [
"python"
],
"addLabels": [
"python"
]
}
]
}
2 changes: 1 addition & 1 deletion renovate-presets/custom-managers/yaml.json5
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@
"$schema": "https://docs.renovatebot.com/renovate-schema.json",
"customManagers": [
{
"description": "A generic custom manager for updating any yaml fields ending by *version: case incensitive",
"description": "A generic custom manager for updating any yaml fields ending by 'version:' (case insensitive)",
"customType": "regex",
"fileMatch": [
".github\\/workflows.+\\.(?:yml|yaml)$"
Expand Down
72 changes: 72 additions & 0 deletions renovate-presets/devtool.json5
Original file line number Diff line number Diff line change
@@ -0,0 +1,72 @@
{
"$schema": "https://docs.renovatebot.com/renovate-schema.json",
"description": "Rules specific to the devtool (CI, dev environment...)",
"packageRules": [
{
"description": "Enable updates from specified datasources",
"matchDatasources": [
"node-version",
"golang-version"
],
"enabled": true
},
{
"description": "Enable updates from specified go modules",
"matchDatasources": [
"go"
],
"matchPackageNames": [
"github.com/golangci/golangci-lint"
],
"enabled": true
},
{
"description": "Enable updates from specified docker images",
"matchDatasources": [
"docker"
],
"matchPackageNames": [
"docker.io/library/node",
"docker.io/library/golang"
],
"enabled": true
},
{
"description": "Group golang-version packages",
"groupName": "group golang",
"matchDatasources": [
"docker",
"golang-version"
],
"matchPackageNames": [
"/(?:^|/)golang$/"
]
},
{
"description": "Group node-version packages",
"groupName": "group node",
"matchDatasources": [
"docker",
"node-version"
],
"matchPackageNames": [
"/(?:^|/)node$/",
"!calico/node",
"!docker.io/calico/node",
"!kindest/node"
]
},
{
"description": "Example to reduce noise with the automerge features.",
"matchDatasources": [
"golang-version"
],
"matchUpdateTypes": [
"patch",
"pin",
"digest"
],
"automerge": false
}
]
}
14 changes: 14 additions & 0 deletions renovate-presets/docs.json5
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
{
"$schema": "https://docs.renovatebot.com/renovate-schema.json",
"description": "Contains rules specific to the devtool (CI and dev environment...)",
"packageRules": [
{
"description": "Group all dependencies from the docs directory",
"matchFileNames": ["docs/**"],
"groupName": "Docs dependencies"
}
]
}



13 changes: 13 additions & 0 deletions renovate-presets/fix/disable-all-updates.json5
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
{
"$schema": "https://docs.renovatebot.com/renovate-schema.json",
"description": "Disable all updates to avoid conflicts with dependabot, then enable what you need.",
"packageRules": [
{
"matchPackageNames": [
"*"
],
"enabled": false
}
]
}

113 changes: 6 additions & 107 deletions renovate.json
Original file line number Diff line number Diff line change
@@ -1,113 +1,12 @@
{
"$schema": "https://docs.renovatebot.com/renovate-schema.json",
"dependencyDashboard": true,
"dependencyDashboardOSVVulnerabilitySummary": "all",
"osvVulnerabilityAlerts": true,
"reviewersFromCodeOwners": true,
"prHourlyLimit": 10,
"extends": [
"config:best-practices",
"customManagers:dockerfileVersions",
"security:openssf-scorecard",
"mergeConfidence:all-badges",
"github>argoproj/argo-cd//renovate-presets/fix/openssf-merge-confidence-columns.json5",
"github>ggjulio/argo-cd//renovate-presets/commons.json5",
"github>argoproj/argo-cd//renovate-presets/custom-managers/shell.json5",
"github>argoproj/argo-cd//renovate-presets/custom-managers/yaml.json5"
],
"packageRules": [
{
"description": "Disable all updates to avoid conflicts with dependabot, then enable what we want",
"matchPackageNames": [
"*"
],
"enabled": false
},
{
"description": "Add label dependencies to all PRs",
"matchPackageNames": [
"*"
],
"labels": [
"dependencies"
]
},
{
"description": "Enable node-version",
"matchDatasources": [
"node-version"
],
"addLabels": [
"javascript"
],
"enabled": true
},
{
"description": "Enable golang-version",
"matchDatasources": [
"golang-version"
],
"addLabels": [
"go"
],
"enabled": true
},
{
"description": "Enable some go modules",
"matchDatasources": [
"go"
],
"matchPackageNames": [
"go",
"github.com/golangci/golangci-lint"
],
"addLabels": [
"go"
],
"enabled": true
},
{
"description": "Enable bump of golang version in go.mod",
"matchDatasources": [
"golang-version"
],
"rangeStrategy": "bump"
},
{
"description": "Enable some docker images",
"matchDatasources": [
"docker"
],
"matchPackageNames": [
"docker.io/library/node",
"docker.io/library/golang"
],
"enabled": true
},
{
"description": "Group golang-version packages",
"groupName": "golang version",
"matchDepNames": [
"go",
"golang",
"docker.io/golang",
"docker.io/library/golang"
]
},
{
"description": "Group node-version packages",
"groupName": "node version",
"matchDepNames": [
"node",
"docker.io/library/node"
]
},
{
"description": "an example to reduce noise by automerging pkgs that are safe to merge, multiple match fields can be used to reduce the scope of this rule...)",
"matchUpdateTypes": [
"patch",
"pin",
"digest"
],
"automerge": false
}
"github>argoproj/argo-cd//renovate-presets/custom-managers/yaml.json5",
"github>ggjulio/argo-cd//renovate-presets/fix/disable-all-updates.json5",
"github>ggjulio/argo-cd//renovate-presets/devtool.json5",
"github>ggjulio/argo-cd//renovate-presets/docs.json5"
]
}

0 comments on commit 8f39110

Please sign in to comment.