Repository navigation
chore(#4076): hold OpenShell release bumps for 2 days - #8326
rh-hemartin merged 1 commit into
Conversation
Renovate opened a PR for an OpenShell release that upstream pulled the same day, so CI failed on a 404 for the release checksums and the PR had to be closed by hand. Add minimumReleaseAge to the openshell group so a release must stay published for 2 days before Renovate proposes it. minimumReleaseAgeBehaviour=timestamp-optional is required: Renovate age-checks digest updates too, but ghcr gives it no release dates for the digest-pinned base image, so under the default timestamp-required every base-image update would be held forever. The version pin has a GitHub release date and is still held for 2 days. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Signed-off-by: Gil Klein <13672+gklein@users.noreply.github.com>
E2E tests did not runE2E tests run automatically for org/repo members and collaborators on pull requests. For other contributors, a maintainer with write access must add the See E2E testing guide for details. |
1 similar comment
E2E tests did not runE2E tests run automatically for org/repo members and collaborators on pull requests. For other contributors, a maintainer with write access must add the See E2E testing guide for details. |
PR Summary by QodoDelay OpenShell Renovate updates for two days
AI Description
Diagram
High-Level Assessment
Files changed (1)
|
Code Review by Qodo🐞 Bugs (0) 📘 Rule violations (0) 📎 Requirement gaps (0)
Great, no issues found!Qodo reviewed your code and found no material issues that require reviewTip of the day💡 Did you know, you can tweak Display settings with a live preview to see your comment before it ships |
Codecov Report✅ All modified and coverable lines are covered by tests. 📢 Thoughts on this report? Let us know! |
waynesun09
left a comment
There was a problem hiding this comment.
MEDIUM: the PR body says the hold reduces OpenShell PR churn (#7837), but it doesn't
This is about the PR description, not renovate.json. The Changes section says: "back-to-back releases inside the window produce one PR instead of several."
Renovate 44 doesn't work that way. filterInternalChecks() in lib/workers/repository/process/lookup/filter-checks.ts loops over sortedReleases.reverse(), so it checks releases from newest to oldest and picks the first one that has passed minimumReleaseAge:
- If v0.1.4 is 2 days old and v0.1.5 is still pending, Renovate opens or updates
renovate/openshellfor v0.1.4. - When v0.1.5 reaches 2 days, Renovate updates the same branch again.
The hold delays every release by the same amount, so the number of branch updates stays the same, and so do the CI and review runs they trigger. Two releases only collapse into one update when both become eligible between the same two Renovate runs. That also happens without the hold. The #7837 example (#7763, v0.1.0 to v0.1.2 over about 2 weeks) is also much longer than a 2-day window.
Suggestion: remove the #7837 sentence, or change it to something like: "Drops releases that are yanked within the window. It does not change how often the OpenShell PR is opened or rebased." #7837 needs its own fix, for example Dependency Dashboard approval mode, or pausing the group while a migration PR is open.
|
@waynesun09 Thanks, you're right. |
Summary
Hold OpenShell release bumps for 2 days so Renovate never proposes a release that upstream pulls shortly after publishing. That happened with #3967: CI failed on a 404 for the release checksums, and the PR had to be closed by hand.
Related Issue
Closes #4076
Changes
renovate.json: addminimumReleaseAge: "2 days"to theopenshellgroup rule.minimumReleaseAgeBehaviour: "timestamp-optional"to the same rule. This is required. The group also covers the base image, which is digest-pinned on ghcr:lib/workers/repository/process/lookup/digest.ts).lib/modules/datasource/docker/index.ts). ghcr's tag list returns onlynameandtags, with no dates.timestamp-required, every base-image update would be held forever. Withtimestamp-optional, the base image flows as it does today, and the version pin, which has a GitHub release date, is still held for 2 days.Behaviour in Renovate 44 (from source):
internalChecksFilter: strict, a release younger than the window creates no branch, no PR and no CI run (lib/workers/repository/update/branch/index.ts). It shows as pending on the Dependency Dashboard (Dependency Dashboard #2682) and opens as a normal PR once it is 2 days old.renovate/openshellbranch is not rebased onto a release that is still inside the window.Known limits:
timestamp-optionalwould let it through without the hold.Drops releases that upstream yanks within the window. It does not change how often the OpenShell PR is opened or rebased, so it does not help with #7837.
Testing
pre-commit run --files renovate.jsonpasses (check json, whitespace, secrets)renovate-config-validator(Renovate 44) reportsConfig validated successfullyChecklist
!for breaking changes)🤖 Generated with Claude Code