Skip to content

Renovate: automerge 0.x patches and CalVer IOC image updates - #218

Open
gilesknap wants to merge 2 commits into
mainfrom
fix-issue-35-automerge-ioc-and-0x
Open

gilesknap wants to merge 2 commits into
mainfrom
fix-issue-35-automerge-ioc-and-0x

Conversation

@gilesknap

@gilesknap gilesknap commented Sep 23, 2026 •

Copy link
Copy Markdown
Member

Fixes #35

#37 added automerge for minor and patch updates with current version >= 1.0.0. The follow-ups discussed in #35 (reopened 2025-05-22) were never done:

  1. Patch updates for dependencies below 1.0.0. This follows @DiamondJoseph's suggestion ("patch for non-ioc version <1.0.0"). Several are waiting now with green CI: pandablocks-ioc 0.11.5 → 0.11.6 (Update ghcr.io/pandablocks/pandablocks-ioc Docker tag to v0.11.6 #214) and tiled 0.2.2 → 0.2.18 (Update tiled Docker tag to v0.2.18 #193). glazed 0.1.1 → 0.2.0 (Update glazed Docker tag to v0.2.0 #210) is a 0.x minor, so it still needs a manual merge.
  2. All updates to ghcr.io/epics-containers/ioc-* images. Generic IOCs use CalVer, so a year rollover counts as "major". The thread concluded "stick to datever for IOCs and always deploy a new tag".

blueapi no longer needs special handling because it is at 1.x now and its updates already automerge (#205, #206).

Automerge still waits for the verify_ioc_instances check. For example, #209 (ioc-pmac-runtime 2026.8.1 → 2026.9.1) is failing verify and would not merge.

Testing

  • renovate-config-validator renovate.json: config validated successfully.
  • The rules can't be exercised until Renovate runs on main. Watch the Dependency Dashboard (Dependency Dashboard #25) after merging.

If you'd rather put these rules in services-template-helm's template/renovate.json for every beamline, tell me and I'll move them there.

🤖 Generated with Claude Code

https://claude.ai/code/session_014GsvY8MPA1WdKubZ76YVcd

Summary by CodeRabbit

  • Chores
    • Patch updates for packages below version 1.0.0 can now merge automatically.
    • Updates to Generic IOC container images, including major, minor, and patch releases, can also merge automatically when CI passes. This streamlines deployment of new image releases.

Follow-up to #37, implementing the rules agreed in #35:
- patch updates for dependencies still below 1.0.0
- all updates of ghcr.io/epics-containers/ioc-* images, which use
  CalVer so a year rollover is a "major" bump

Refs #35

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_014GsvY8MPA1WdKubZ76YVcd
@coderabbitai

coderabbitai Bot commented Sep 23, 2026 •

Copy link
Copy Markdown

Review in Change Stack →

Navigate logical layers of code changes, visualize relationships, and explore their blast radius.

Warning

Review limit reached

Next included review available in 17 minutes.

Check out review usage here.

View limit details

Limit details: You’ve used the included review currently available.

This review ran on the open-source allowance, not this organization's plan, because the pull request author doesn't have an assigned seat. Waiting won't change this — ask an organization admin to assign them a seat, or add seats in Billing if every seat is already assigned, then retry.

Learn how review limits work.

Review configuration:

⚙️ Run configuration

Configuration used: defaults

Review profile: CHILL

Plan: Advanced

Run ID: a2fcec64-8f72-4e24-a001-3d6118327b04

📥 Commits

Reviewing files that changed from the base of the PR and between 611a3ec and baf5610.

📒 Files selected for processing (1)
  • renovate.json

No actionable comments were generated in the recent review. 🎉

ℹ️ Recent review info
⚙️ Run configuration

Configuration used: defaults

Review profile: CHILL

Plan: Advanced

Run ID: 1eebfd48-fd16-4f15-b1ad-e32261f97ddf

📥 Commits

Reviewing files that changed from the base of the PR and between a9380fe and 611a3ec.

📒 Files selected for processing (1)
  • renovate.json

Included review availability: Your plan provides up to 1 included review per hour; 0 remain after this review.


📝 Walkthrough

Walkthrough

The Renovate configuration adds two automerge rules: one for patch updates to packages with current versions beginning with 0, and one for major, minor, and patch updates to matching Generic IOC Docker images.

Changes

Renovate automerge rules

Layer / File(s) Summary
Package update automerge rules
renovate.json
Adds a rule for patch updates when the current version matches /^0/. Adds a rule for all update types to Docker packages matching /^ghcr\.epics-containers\/ioc-/, with a comment describing CalVer tags and CI as the deployment gate.

Estimated code review effort: 2 (Simple) | ~8 minutes

Merge Risk: ⚪ Minimal · up to 611a3

The new rules match the intended dependency updates. No concrete merge-blocking behavior change is evident.

🚥 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 clearly and concisely describes both main changes: automerging 0.x patch updates and CalVer IOC image updates.
Linked Issues check ✅ Passed The changes support issue #35 by extending Renovate automerge coverage. The new rule covers patch updates for packages with versions below 1.0.0. The new rule covers all updates for `ghcr.io/epics-con…
Out of Scope Changes check ✅ Passed The reported changes are limited to two Renovate package rules in renovate.json. Both rules configure automatic dependency or IOC image updates and therefore support the linked issue's continuous de…
Docstring Coverage ✅ Passed No functions found in the changed files to evaluate docstring coverage. Skipping docstring coverage check. Docstring coverage is scoped to functions touched by this diff. Analyzed 0 functions across 0…
✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Commit to this branch
  • Create a new PR

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

@gilesknap gilesknap closed this Sep 23, 2026
@gilesknap gilesknap reopened this Sep 23, 2026
…teways chart

- Add matchCurrentVersion /^20\d\d\./ to the ioc-* image rule so it only
  automerges majors for CalVer-pinned images (e.g. not ioc-asyn-runtime:4.46).
- Add a matching rule for the epics-gateways helm chart, which is also
  CalVer and would otherwise need a manual merge on a year rollover.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01Jd9gGzEQubx2j1kD6Q2s8a
@gilesknap

Copy link
Copy Markdown
Member Author

Independent review by a Claude Fable agent

  • (minor) epics-gateways helm chart is also CalVer, so a year rollover would be a major update with no automerge rule -> Fixed in baf5610 (new helm rule for epics-gateways).
  • (nit) IOC rule matched on image name only, so it would also automerge majors for a non-CalVer pin such as ioc-asyn-runtime:4.46 -> Fixed in baf5610 (added matchCurrentVersion: "/^20\\d\\d\\./").

Checked with renovate-config-validator (44.111.3) and by running the rules through Renovate's applyPackageRules(): IOC CalVer majors/minors and epics-gateways majors/minors automerge; ioc-asyn-runtime 4.46, glazed 0.x minor, action majors and digests do not.

Review and replies by Claude Code.

@gilesknap

Copy link
Copy Markdown
Member Author

Keeping this open for now. I'd like to prove automerge on p47 first, with an overnight test as the safety net: epics-containers/p47-services#202 (comment)

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.

Auto-merge update PRs for DAQ services

1 participant