GitHub Actions manager misses updates for component-prefixed version tags #45418
Replies: 4 comments
|
Confirmed: your source reading is correct, and the two documentation sections genuinely disagree about this tag shape. The "Digest pinning and updating" list accepts Checked today against
So automatic version ordering for these tags currently exists only where the whole tag passes On intent I cannot settle it: #35789 (#35789, open since May 2025, labeled Disclosure: this is a scheduled community-help reply; research and drafting used AI assistance, with each claim above checked against the live sources listed. |
|
Thanks for the detailed writeup @zeitlinger , the reproduction and the source links made this quick to confirm. Your reading is correct, and the short answer is: component-prefixed tags have never been version-ordered. This is a documentation bug on our side, not a regression. What's actually happening
The asymmetry you spotted is real: Also, #40225 is not the cause. Before that PR these deps went to github-tags with github-actions versioning, whose The docs list you quoted came from #35431, which only widened the pin-comment parsing regex i.e. which comment shapes Renovate can read back. It never touched versioning. That list documents comment syntax and shouldn't be read as a claim that version updates work for those tags. Your workaround is the right one Your package rule works for the right reason: Next steps Two things to fix:
Related but distinct: #35789 covers the suffixed-tag case. |
|
I prototyped the built-in approach in a draft PR: #45441. It was fairly contained: widen the GitHub Actions routing gate, teach its versioning module to strip a component prefix while treating that prefix as compatibility, and add regression tests for digest-pinned tags plus cross-component filtering. The focused checks pass, and the upstream CI is running. So proper support does not appear technically difficult from this reproduction. The remaining question is product/maintenance intent: whether the manager should own this convention or keep it as a package-rule recipe. |
Uh oh!
There was an error while loading. Please reload this page.
How are you running Renovate?
Self-hosted Renovate CLI
Which platform you running Renovate on?
GitHub.com
Which version of Renovate are you using?
44.40.0
Please tell us more about your question or problem
The built-in
github-actionsmanager does not propose version updates for a digest-pinned Action whose tag has a slash-separated component prefix.Reproduction
The public repository is:
The relevant workflow entry is:
The upstream repository has these tags:
lint-pr-title/v1.2.3->823ed150196915a86971ab4beb899b0c80d835felint-pr-title/v1.2.4->70c40e5b6522c854a55334124545261cae3d4c73Running the following against the repository reproduces the result:
Expected behavior
Renovate proposes an update from
lint-pr-title/v1.2.3tolint-pr-title/v1.2.4, updating both the comment and pinned digest.The GitHub Actions manager documentation lists
prefix/v1.0.1as a valid tag format:https://docs.renovatebot.com/modules/manager/github-actions/#digest-pinning-and-updating
Actual behavior
Renovate detects the dependency but returns no updates:
{ "depName": "grafana/shared-workflows", "versioning": "exact", "currentValue": "lint-pr-title/v1.2.3", "currentDigest": "823ed150196915a86971ab4beb899b0c80d835fe", "datasource": "github-digest", "updates": [], "packageName": "grafana/shared-workflows", "warnings": [], "currentVersion": "lint-pr-title/v1.2.3", "fixedVersion": "lint-pr-title/v1.2.3" }The parser accepts a component-prefixed pinned version, but
versionLikeReis currently/^v?\d+/. As a result,lint-pr-title/v1.2.3is routed as a non-semver ref togithub-digestwithexactversioning, where only changes to the digest of the same ref are considered:renovate/lib/modules/manager/github-actions/parse.ts
Lines 203 to 207 in ea8d11b
renovate/lib/modules/manager/github-actions/extract.ts
Lines 146 to 153 in ea8d11b
A package rule with component-aware regex versioning makes Renovate find the expected update:
This seems related to, but distinct from:
Is component-prefixed version ordering supposed to work automatically for digest-pinned Actions, as the documentation appears to indicate? If prefix handling is intentionally configuration-only, could the documentation clarify that these are valid only for same-ref digest updates?
Logs (if relevant)
Relevant packageFiles with updates entry
{ "depName": "grafana/shared-workflows", "commitMessageTopic": "{{{depName}}} action", "versioning": "exact", "depType": "action", "replaceString": "grafana/shared-workflows/actions/lint-pr-title@823ed150196915a86971ab4beb899b0c80d835fe # lint-pr-title/v1.2.3", "currentValue": "lint-pr-title/v1.2.3", "currentDigest": "823ed150196915a86971ab4beb899b0c80d835fe", "datasource": "github-digest", "updates": [], "packageName": "grafana/shared-workflows", "warnings": [], "sourceUrl": "https://github.com/grafana/shared-workflows", "registryUrl": "https://github.com", "currentVersion": "lint-pr-title/v1.2.3", "currentVersionTimestamp": "2026-06-10T15:37:47.000Z", "fixedVersion": "lint-pr-title/v1.2.3" }All reactions