Skip to content

fix: Renovate could not look up any of the CI-pinned tools - #9

Merged
FZ2000 merged 2 commits into
mainfrom
fix/renovate-custom-managers
Jul 31, 2026
Merged

fix: Renovate could not look up any of the CI-pinned tools#9
FZ2000 merged 2 commits into
mainfrom
fix/renovate-custom-managers

Conversation

@FZ2000

@FZ2000 FZ2000 commented Jul 31, 2026

Copy link
Copy Markdown
Owner

Renovate reported, on its first run against this repo:

Failed to look up github-releases package ci-pinned-tools: no-result
Files affected: .github/workflows/ci.yml

My bug, and three separate ones behind that single message.

  1. depNameTemplate: "ci-pinned-tools" was a name I invented. A
    datasource lookup needs a real package, so Renovate dutifully asked
    GitHub for a repository called ci-pinned-tools and got nothing. The
    depName is now CAPTURED from the URL — gitleaks/gitleaks,
    trufflesecurity/trufflehog — rather than templated to a constant.

  2. markdownlint-cli arrives via npx, so it is an npm package. It was
    pointed at the github-releases datasource, which could never have
    resolved it whatever the name.

  3. lychee tags its releases lychee-vX.Y.Z, not vX.Y.Z. A single
    matchString covering all three tarballs would have mis-parsed it, so
    it gets its own manager plus an extractVersionTemplate to recover
    the bare version from the tag.

Net effect of the bug: all five pinned tools — gitleaks, trufflehog,
lychee (twice) and markdownlint-cli — were unmanaged while the config
looked like it was managing them. That is the same failure mode as the
fileMatch/matchPackagePatterns options this file already had removed:
configuration that reads as coverage and provides none.

Verified by running each regex against the real ci.yml rather than
reasoning about it:

github-releases  -> gitleaks/gitleaks 8.30.1
                    trufflesecurity/trufflehog 3.96.0
github-releases  -> lycheeverse/lychee 0.24.2
npm              -> markdownlint-cli 0.45.0

Also converted renovate.json -> renovate.json5. Renovate reads it
natively, and the reasoning above is worth keeping next to the regexes —
plain JSON has no comment syntax, and the _comment key workaround trips
Renovate's unknown-option validation. Validated with a real JSON5 parser
against Renovate's published schema, after the first hand-rolled
comment-stripper I tried silently mangled an inline key.

Added a "CI pinned tools" package rule so these arrive as one grouped PR
rather than five.

FZ2000 added 2 commits July 30, 2026 23:25
Renovate reported, on its first run against this repo:

    Failed to look up github-releases package ci-pinned-tools: no-result
    Files affected: .github/workflows/ci.yml

My bug, and three separate ones behind that single message.

1. `depNameTemplate: "ci-pinned-tools"` was a name I invented. A
   datasource lookup needs a real package, so Renovate dutifully asked
   GitHub for a repository called `ci-pinned-tools` and got nothing. The
   depName is now CAPTURED from the URL — `gitleaks/gitleaks`,
   `trufflesecurity/trufflehog` — rather than templated to a constant.

2. `markdownlint-cli` arrives via `npx`, so it is an npm package. It was
   pointed at the github-releases datasource, which could never have
   resolved it whatever the name.

3. lychee tags its releases `lychee-vX.Y.Z`, not `vX.Y.Z`. A single
   matchString covering all three tarballs would have mis-parsed it, so
   it gets its own manager plus an `extractVersionTemplate` to recover
   the bare version from the tag.

Net effect of the bug: all five pinned tools — gitleaks, trufflehog,
lychee (twice) and markdownlint-cli — were unmanaged while the config
looked like it was managing them. That is the same failure mode as the
`fileMatch`/`matchPackagePatterns` options this file already had removed:
configuration that reads as coverage and provides none.

Verified by running each regex against the real ci.yml rather than
reasoning about it:

    github-releases  -> gitleaks/gitleaks 8.30.1
                        trufflesecurity/trufflehog 3.96.0
    github-releases  -> lycheeverse/lychee 0.24.2
    npm              -> markdownlint-cli 0.45.0

Also converted renovate.json -> renovate.json5. Renovate reads it
natively, and the reasoning above is worth keeping next to the regexes —
plain JSON has no comment syntax, and the `_comment` key workaround trips
Renovate's unknown-option validation. Validated with a real JSON5 parser
against Renovate's published schema, after the first hand-rolled
comment-stripper I tried silently mangled an inline key.

Added a "CI pinned tools" package rule so these arrive as one grouped PR
rather than five.
.gitattributes export-ignore and .github/CODEOWNERS both still named the
old file. The CODEOWNERS one matters more than it looks: GitHub silently
ignores a pattern that matches nothing, so the entry would have read as
review protection on the Renovate config while providing none.

Caught by tools/check_discoverability.py, which asserts every CODEOWNERS
pattern matches something — a check added earlier for exactly this, after
two other entries had rotted the same way. It reported:

    FAIL  every CODEOWNERS pattern matches something — dead: ['renovate.json']

so the discoverability job on this PR would have failed had I pushed it.
@FZ2000
FZ2000 merged commit 78d1408 into main Jul 31, 2026
24 checks passed
@FZ2000
FZ2000 deleted the fix/renovate-custom-managers branch July 31, 2026 06:28
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.

1 participant