Skip to content

Add Renovate configuration for automated dependency updates - #49

Open
senolcolak wants to merge 3 commits into
cobaltcore-dev:mainfrom
senolcolak:feature/add-renovate-config
Open

Add Renovate configuration for automated dependency updates#49
senolcolak wants to merge 3 commits into
cobaltcore-dev:mainfrom
senolcolak:feature/add-renovate-config

Conversation

@senolcolak

@senolcolak senolcolak commented May 8, 2026

Copy link
Copy Markdown
Collaborator

Summary

  • Adds Renovate bot configuration matching the pattern used in liquid-ceph
  • Groups minor/patch external dependency updates into a single PR
  • Automerges github.com/sapcc and github.com/cobaltcore-dev dependencies
  • Gates Go minor/major version bumps behind dependency dashboard approval
  • Runs go mod tidy and updates import paths after dependency bumps
  • Enables OSV vulnerability alerts
  • Schedules PRs for Friday mornings (before 8am)

Test Plan

  • Renovate bot picks up the config after merge
  • Dependency Dashboard issue is created in the repo
  • First grouped dependency PR appears on the next Friday

Summary by CodeRabbit

  • Chores
    • Configured automated dependency update management with grouped minor/patch updates, selective automerge for specified providers, and special handling for Go/tooling updates.
    • Enabled OSV vulnerability alerts with full summaries and post-update tidy/import fixes.
    • Set scheduled update window (early Friday), unlimited hourly PR allowance, and disabled semantic commits.

Review Change Stack

@coderabbitai

coderabbitai Bot commented May 8, 2026

Copy link
Copy Markdown

Warning

Rate limit exceeded

@senolcolak has exceeded the limit for the number of commits that can be reviewed per hour. Please wait 56 minutes and 57 seconds before requesting another review.

You’ve run out of usage credits. Purchase more in the billing tab.

⌛ How to resolve this issue?

After the wait time has elapsed, a review can be triggered using the @coderabbitai review command as a PR comment. Alternatively, push new commits to this PR.

We recommend that you space out your commits to avoid hitting the rate limit.

🚦 How do rate limits work?

CodeRabbit enforces hourly rate limits for each developer per organization.

Our paid plans have higher rate limits than the trial, open-source and free plans. In all cases, we re-allow further reviews after a brief timeout.

Please see our FAQ for further information.

ℹ️ Review info
⚙️ Run configuration

Configuration used: defaults

Review profile: CHILL

Plan: Pro

Run ID: 3c5efe1a-fdf9-4e14-9fb0-e54f13a94a4d

📥 Commits

Reviewing files that changed from the base of the PR and between 0d3f1a4 and cbaa928.

📒 Files selected for processing (1)
  • .github/renovate.json
📝 Walkthrough

Walkthrough

Added a Renovate configuration file that sets presets and schema, pins Go updates to 1.26, enables OSV vulnerability alerts with full summaries, runs gomodTidy and gomodUpdateImportPaths after updates, groups and automerges minor/patch updates for specified namespaces, applies special handling for Go-related packages, schedules runs before 8am Friday, and disables semantic commits.

Changes

Renovate Dependency Management Setup

Layer / File(s) Summary
Schema, Go constraint, post-update hooks
.github/renovate.json
Sets Renovate schema/presets, commit message action, constrains Go updates to 1.26, enables OSV vulnerability alerts with full summaries, and runs gomodTidy and gomodUpdateImportPaths after updates.
Package grouping and automerge rules
.github/renovate.json
Defines packageRules to group minor/patch updates globally, automerge minor/patch for github.com/sapcc/* and github.com/cobaltcore-dev/*, and special-cases go/golang/actions/go-versions with separateMinorPatch plus dependency-dashboard approval for minor/major updates.
Execution limits and scheduling
.github/renovate.json
Sets prHourlyLimit: 0, schedules updates “before 8am on Friday”, and disables semantic commit generation.

Estimated code review effort

🎯 3 (Moderate) | ⏱️ ~20 minutes

Poem

🐰 A rabbit nudges the update tree,

pins Go steady at one-two-six with glee,
groups the minors, watches for CVE,
Friday mornings hum with tidy spree,
dependencies pruned, a clean green me.

🚥 Pre-merge checks | ✅ 5
✅ Passed checks (5 passed)
Check name Status Explanation
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.
Title check ✅ Passed The title accurately and clearly describes the main change: adding a Renovate configuration file for automated dependency updates.
Docstring Coverage ✅ Passed No functions found in the changed files to evaluate docstring coverage. Skipping docstring coverage check.
Linked Issues check ✅ Passed Check skipped because no linked issues were found for this pull request.
Out of Scope Changes check ✅ Passed Check skipped because no linked issues were found for this pull request.

✏️ Tip: You can configure your own custom pre-merge checks in the settings.

✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests

Tip

💬 Introducing Slack Agent: The best way for teams to turn conversations into code.

Slack Agent is built on CodeRabbit's deep understanding of your code, so your team can collaborate across the entire SDLC without losing context.

  • Generate code and open pull requests
  • Plan features and break down work
  • Investigate incidents and troubleshoot customer tickets together
  • Automate recurring tasks and respond to alerts with triggers
  • Summarize progress and report instantly

Built for teams:

  • Shared memory across your entire org—no repeating context
  • Per-thread sandboxes to safely plan and execute work
  • Governance built-in—scoped access, auditability, and budget controls

One agent for your entire SDLC. Right inside Slack.

👉 Get started


Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands and usage tips.

@coderabbitai coderabbitai Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 7

🧹 Nitpick comments (5)
.github/renovate.json (2)

66-66: prHourlyLimit: 0 may flood the repo on the first Friday run.

Disabling the hourly PR limit means Renovate can open an unbounded number of PRs in a single scheduled run. If there is a large backlog on the first execution (or after a long gap), this can swamp the review queue and saturate CI concurrency. Consider setting a modest limit (e.g., 1020) and widening the schedule window or using prConcurrentLimit as a complementary cap.

🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In @.github/renovate.json at line 66, The Renovate config sets "prHourlyLimit":
0 which allows unlimited PRs in one run; change "prHourlyLimit" from 0 to a
modest positive integer (e.g., 10 or 20) to cap hourly PR openings, and
optionally add or adjust "prConcurrentLimit" and widen the Renovate schedule
window to spread PRs across time; update the JSON key "prHourlyLimit" in the
file and add "prConcurrentLimit" if not present to provide a complementary cap.

10-12: ⚡ Quick win

Manually-pinned constraints.go won't be kept current by Renovate.

Renovate will not create "update" PRs to update any of these constraint versions once they become outdated, so they must be updated by hand. For this reason, setting constraints manually in the Renovate config is undesirable. Once Go 1.27 (or later) ships, this value becomes stale and may cause Renovate to select an older-than-necessary toolchain for running go mod tidy without any automated reminder to update it.

Consider removing this field and letting Renovate detect the Go version from go.mod automatically (its default behavior), or pair the constraint with a packageRule that also updates it via Renovate.

🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In @.github/renovate.json around lines 10 - 12, The Renovate config currently
hardcodes the Go toolchain under the "constraints" block as "go": "1.26", which
Renovate will not auto-update; remove the manual constraint or replace it with a
rule that keeps it in sync (e.g., delete the "constraints" object containing
"go": "1.26" so Renovate will detect the Go version from go.mod automatically,
or instead add a corresponding packageRule that targets the renovate config and
updates this constraint whenever go.mod changes).
docs/DEPLOYMENT.md (1)

308-314: 💤 Low value

Add language identifier to architecture diagram.

The ASCII architecture diagram would benefit from a language identifier for consistent rendering.

📝 Suggested fix
-```
+```text
 Node A (Producer) ──┐
                     │
 Node B (Producer) ──┼──► NATS Server ──► Consumer(s)
🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@docs/DEPLOYMENT.md` around lines 308 - 314, The fenced ASCII diagram block
uses ``` without a language tag; update the code fence to include a language
identifier (use "text") so the block becomes ```text and the diagram lines
(e.g., "Node A (Producer) ──┐", "NATS Server", "Consumer(s)") render
consistently; simply change the opening fence to ```text and keep the diagram
content unchanged.
docs/INDEX.md (1)

280-291: ⚡ Quick win

Add blank lines around tables for proper Markdown formatting.

The maturity status tables need blank lines before and after them for consistent rendering across Markdown parsers.

📝 Formatting fix
 #### Option 1: Prysm-NG-Small (Recommended ⭐)
+
 | Aspect | Target Status | Target Score |
 |--------|---------------|--------------|
 | **Overall Maturity** | Production-Grade | 9.0/10 |
 ...
 | **Timeline** | 6-9 months | - |
+
 #### Option 2: Prysm-NG (Enterprise)
+
 | Aspect | Target Status | Target Score |
 |--------|---------------|--------------|
 ...
🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@docs/INDEX.md` around lines 280 - 291, Add a blank line before and after each
Markdown table to ensure proper rendering: locate the table starting with the
header row "| Aspect | Target Status | Target Score |" and insert an empty line
above its first "|", and also add an empty line after the last table row (before
"#### Option 2: Prysm-NG (Enterprise)"); repeat the same for any subsequent
tables so every table is separated by a blank line from surrounding headings and
paragraphs.
docs/README.md (1)

252-296: 💤 Low value

Consider adding language identifiers to ASCII diagrams.

The architecture diagrams would benefit from a language identifier like text or ascii for better rendering and accessibility in various Markdown viewers.

📝 Suggested improvement
-```
+```text
 ┌─────────────────────────────────────────────────────────────┐
 │                        Consumers                             │

Apply the same change to the Kubernetes deployment diagram at line 273.

🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@docs/README.md` around lines 252 - 296, The two ASCII diagrams (the
Consumers/NATS diagram under the "Consumers" block and the Kubernetes Deployment
diagram under the "Kubernetes Deployment" heading) currently use fenced code
blocks without a language tag; update each opening triple-backtick to include a
language identifier (e.g., ```text or ```ascii) so Markdown renderers treat them
as plain text and preserve formatting — look for the code blocks that start with
"┌─────────────────────────────────────────────────────────────┐" (Consumers)
and the block that begins the Kubernetes cluster diagram (the one containing
"rook-ceph namespace" and "RGW Pod") and change their opening fences to ```text.
🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

Inline comments:
In @.github/renovate.json:
- Around line 30-43: The renovate rules for the two package groups are missing a
matchUpdateTypes guard so they currently automerge majors; update the two rule
objects that contain "groupName": "github.com/sapcc" and "groupName":
"github.com/cobaltcore-dev" to include "matchUpdateTypes": ["minor","patch"]
(i.e., restrict automerge to minor and patch updates) so major version bumps are
not automatically merged.

In `@docs/ARCHITECTURE.md`:
- Line 11: Several fenced code blocks containing ASCII diagrams are missing
language labels which triggers markdownlint MD040; locate each triple-backtick
fenced block used for diagrams (the opening ``` markers for the ASCII diagrams)
and add an explicit language token (e.g., ```text) after each opening backtick
so the blocks are labeled; update every unlabeled fence corresponding to the
reported diagram blocks so all code fences include a language label.

In `@docs/CODE_EXPLAINED.md`:
- Line 21: Several fenced code blocks in CODE_EXPLAINED.md are missing language
identifiers (they currently start with plain ```), causing markdownlint MD040
failures; update each triple-backtick fence that contains diagrams or plain
flows to start with ```text and add explicit tags like ```go, ```yaml, or
```bash for code examples where appropriate (identify the fences that currently
lack a language tag and replace the opening ``` with the correct language token
so markdownlint no longer flags MD040).

In `@docs/DESIGN_COMPARISON.md`:
- Line 220: The file contains unlabeled fenced code blocks (``` ) causing
markdownlint MD040; update each unlabeled fence by adding a language identifier
(use `text`) immediately after the opening backticks so the blocks read ```text,
ensuring both previously unlabeled fenced blocks are labeled.

In `@docs/HONEST_ANALYSIS.md`:
- Line 76: Several fenced code blocks in HONEST_ANALYSIS.md that contain
diagrams/tables are missing explicit fence languages (triggering MD040); for
each opening triple-backtick of those non-code blocks (the analysis
diagrams/tables previously noted) add an explicit language label such as text
(e.g., change ``` to ```text) so the markdown linter recognizes them; update
every occurrence mentioned in the review so all fenced blocks have an explicit
language.

In `@docs/PRYSM_NG_DESIGN.md`:
- Line 55: Several fenced code blocks containing architecture/cutover diagrams
in PRYSM_NG_DESIGN.md are missing a fence language (MD040); update each
diagram/code fence to include a language specifier. Locate the diagram/code
fences for the architecture and cutover diagrams (the triple-backtick blocks
shown in the file) and change them from ``` to ```text so they have an explicit
fence language; ensure you update every diagram block mentioned in the review to
use ```text.

In `@docs/PRYSM_NG_SMALL_DESIGN.md`:
- Line 74: Several fenced code blocks use plain ``` which triggers MD040; update
each offending block by changing the opening fence from ``` to ```text (i.e.,
replace the bare triple-backtick fences with language-tagged fences) so
prose/ASCII blocks explicitly declare the text language and satisfy the linter.

---

Nitpick comments:
In @.github/renovate.json:
- Line 66: The Renovate config sets "prHourlyLimit": 0 which allows unlimited
PRs in one run; change "prHourlyLimit" from 0 to a modest positive integer
(e.g., 10 or 20) to cap hourly PR openings, and optionally add or adjust
"prConcurrentLimit" and widen the Renovate schedule window to spread PRs across
time; update the JSON key "prHourlyLimit" in the file and add
"prConcurrentLimit" if not present to provide a complementary cap.
- Around line 10-12: The Renovate config currently hardcodes the Go toolchain
under the "constraints" block as "go": "1.26", which Renovate will not
auto-update; remove the manual constraint or replace it with a rule that keeps
it in sync (e.g., delete the "constraints" object containing "go": "1.26" so
Renovate will detect the Go version from go.mod automatically, or instead add a
corresponding packageRule that targets the renovate config and updates this
constraint whenever go.mod changes).

In `@docs/DEPLOYMENT.md`:
- Around line 308-314: The fenced ASCII diagram block uses ``` without a
language tag; update the code fence to include a language identifier (use
"text") so the block becomes ```text and the diagram lines (e.g., "Node A
(Producer) ──┐", "NATS Server", "Consumer(s)") render consistently; simply
change the opening fence to ```text and keep the diagram content unchanged.

In `@docs/INDEX.md`:
- Around line 280-291: Add a blank line before and after each Markdown table to
ensure proper rendering: locate the table starting with the header row "| Aspect
| Target Status | Target Score |" and insert an empty line above its first "|",
and also add an empty line after the last table row (before "#### Option 2:
Prysm-NG (Enterprise)"); repeat the same for any subsequent tables so every
table is separated by a blank line from surrounding headings and paragraphs.

In `@docs/README.md`:
- Around line 252-296: The two ASCII diagrams (the Consumers/NATS diagram under
the "Consumers" block and the Kubernetes Deployment diagram under the
"Kubernetes Deployment" heading) currently use fenced code blocks without a
language tag; update each opening triple-backtick to include a language
identifier (e.g., ```text or ```ascii) so Markdown renderers treat them as plain
text and preserve formatting — look for the code blocks that start with
"┌─────────────────────────────────────────────────────────────┐" (Consumers)
and the block that begins the Kubernetes cluster diagram (the one containing
"rook-ceph namespace" and "RGW Pod") and change their opening fences to ```text.
🪄 Autofix (Beta)

Fix all unresolved CodeRabbit comments on this PR:

  • Push a commit to this branch (recommended)
  • Create a new PR with the fixes

ℹ️ Review info
⚙️ Run configuration

Configuration used: defaults

Review profile: CHILL

Plan: Pro

Run ID: e0626877-899b-4736-a3fe-567f70ee93db

📥 Commits

Reviewing files that changed from the base of the PR and between b91778b and e79290d.

📒 Files selected for processing (13)
  • .github/renovate.json
  • README.md
  • docs/ARCHITECTURE.md
  • docs/CODE_EXPLAINED.md
  • docs/DEPLOYMENT.md
  • docs/DESIGN_COMPARISON.md
  • docs/HONEST_ANALYSIS.md
  • docs/INDEX.md
  • docs/NEXT_STEPS.md
  • docs/PRYSM_NG_DESIGN.md
  • docs/PRYSM_NG_SMALL_DESIGN.md
  • docs/QUICK_REFERENCE.md
  • docs/README.md

Comment thread .github/renovate.json
Comment thread docs/ARCHITECTURE.md Outdated
Comment thread docs/CODE_EXPLAINED.md Outdated
Comment thread docs/DESIGN_COMPARISON.md Outdated
Comment thread docs/HONEST_ANALYSIS.md Outdated
Comment thread docs/PRYSM_NG_DESIGN.md Outdated
Comment thread docs/PRYSM_NG_SMALL_DESIGN.md Outdated
Configures Renovate with the same patterns used in liquid-ceph:
- Groups minor/patch external deps into a single PR
- Automerges github.com/sapcc and github.com/cobaltcore-dev deps
- Gates Go minor/major version bumps behind dashboard approval
- Runs go mod tidy after updates
- Schedules PRs for Friday mornings
- Enables OSV vulnerability alerts
@senolcolak
senolcolak force-pushed the feature/add-renovate-config branch from e79290d to c6b5df0 Compare May 8, 2026 13:19
Without matchUpdateTypes, major version bumps would be automerged
without human review. Gate major bumps by limiting automerge to
minor and patch updates only.
Internal sapcc/cobaltcore-dev packages are trusted to follow semver,
so automerge all update types (including major) matching the pattern
used in liquid-ceph.

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Adds a Renovate configuration to enable automated dependency management for this repository, including grouping, scheduling, OSV vulnerability alerting, and Go module housekeeping after updates.

Changes:

  • Introduces .github/renovate.json with a recommended base config plus OSV vulnerability alert settings.
  • Groups minor/patch dependency updates and schedules Renovate PR creation for Friday mornings.
  • Enables automerge behavior for selected Go module namespaces and adds special handling for Go/tooling updates.

💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

Comment thread .github/renovate.json
Comment on lines +30 to +36
{
"matchPackageNames": [
"/^github\\.com\\/sapcc\\/.*/"
],
"automerge": true,
"groupName": "github.com/sapcc"
},
Comment thread .github/renovate.json
Comment on lines +37 to +43
{
"matchPackageNames": [
"/^github\\.com\\/cobaltcore-dev\\/.*/"
],
"automerge": true,
"groupName": "github.com/cobaltcore-dev"
},
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants