Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
13 changes: 13 additions & 0 deletions .github/workflows/ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -131,3 +131,16 @@ jobs:
BASE_SHA: ${{ github.event.pull_request.base.sha }}
run: |
scripts/perf-compare.sh "$BASE_SHA"

# The only check the ruleset requires, so jobs can change without touching repo settings.
ci-pass:
if: always()
needs:
- check-changelog
- frontend
- backend
runs-on: ubuntu-latest
steps:
- name: Fail if a required job failed or was cancelled
if: contains(needs.*.result, 'failure') || contains(needs.*.result, 'cancelled')
run: exit 1
1 change: 1 addition & 0 deletions changelog/160.trivial.md
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
Renovate now batches updates weekly and merges dev tooling, GitHub Actions and lockfile updates once CI passes.
70 changes: 57 additions & 13 deletions renovate.json
Original file line number Diff line number Diff line change
Expand Up @@ -5,44 +5,88 @@
":dependencyDashboard",
":semanticCommits"
],
"description": [
"Tooling and lockfile refreshes merge themselves once CI is green.",
"Runtime libraries, climate-ref, the interpreter, images and every major wait for a review."
],
"timezone": "Australia/Melbourne",
"dependencyDashboardTitle": "Renovate Dependency Dashboard",
"labels": ["dependencies"],
"minimumReleaseAge": "3 days",
"internalChecksFilter": "strict",
"prConcurrentLimit": 5,
"prHourlyLimit": 2,
"prConcurrentLimit": 10,
"prHourlyLimit": 0,
"schedule": ["on monday"],
"platformAutomerge": false,
"automergeType": "pr",
"lockFileMaintenance": {
"enabled": true,
"schedule": ["before 6am on monday"]
"schedule": ["on monday"],
"automerge": true
},
"vulnerabilityAlerts": {
"enabled": true,
"labels": ["dependencies", "security"]
"labels": ["dependencies", "security"],
"schedule": ["at any time"],
"minimumReleaseAge": null,
"groupName": null
},
"osvVulnerabilityAlerts": true,
"packageRules": [
{
"description": "Label frontend (npm) updates",
"matchManagers": ["npm"],
"addLabels": ["frontend"]
},
{
"description": "Label backend (uv / Python) updates",
"matchManagers": ["pep621"],
"matchManagers": ["pep621", "pyenv"],
"addLabels": ["backend"]
},
{
"description": "Group non-major frontend updates into a single PR",
"matchManagers": ["npm"],
"matchUpdateTypes": ["minor", "patch"],
"groupName": "frontend non-major"
"groupName": "frontend dependencies"
},
{
"matchManagers": ["npm"],
"matchDepTypes": ["devDependencies"],
"groupName": "frontend dev tooling",
"automerge": true
},
{
"description": "Group non-major backend updates into a single PR",
"matchManagers": ["pep621"],
"matchUpdateTypes": ["minor", "patch"],
"groupName": "backend non-major"
"groupName": "backend dependencies"
},
{
"matchManagers": ["pep621"],
"matchDepTypes": ["dependency-groups"],
"groupName": "backend dev tooling",
"automerge": true
},
{
"description": "The core library sets what the API can serve, so it is reviewed on its own",
"matchDepNames": ["climate-ref"],
"groupName": "climate-ref",
"schedule": ["at any time"]
},
{
"matchManagers": ["github-actions"],
"groupName": "ci tooling",
"automerge": true
},
{
"description": "Biome is pinned in both package.json and the CI workflow, so they move together",
"matchDepNames": ["@biomejs/biome", "biome"],
"groupName": "ci tooling",
"automerge": true
},
{
"matchManagers": ["dockerfile", "docker-compose"],
"groupName": "container images"
},
{
"description": "A major is never hidden inside a batch and never merges itself",
"matchUpdateTypes": ["major"],
"groupName": null,
"automerge": false
}
]
}
Loading