Commit Graph

27243 Commits

Author SHA1 Message Date
Jamie Tanna f3a488d386 feat(manager/github-actions): support dagger/dagger-for-github version
As the repo publishes per-SDK/component release tags i.e.
`sdk/typescript/v0.21.9`, `helm/chart/v0.21.9`), we need to specify
`extractVersion` to extract the version as we need.

Co-Authored-By: Claude Sonnet 5 <jamie.tanna+claude-code@mend.io>
2026-09-15 09:30:19 +01:00
Jamie Tanna bbc65f4192 feat(manager/github-actions): support hashicorp/setup-packer version
Co-Authored-By: Claude Sonnet 5 <jamie.tanna+claude-code@mend.io>
2026-09-15 09:30:18 +01:00
Jamie Tanna 12ed31619d feat(manager/github-actions): support mozilla-actions/sccache-action version
Co-Authored-By: Claude Sonnet 5 <jamie.tanna+claude-code@mend.io>
2026-09-15 09:30:18 +01:00
Jamie Tanna baa71ca980 feat(manager/github-actions): support supabase/setup-cli version
Co-Authored-By: Claude Sonnet 5 <jamie.tanna+claude-code@mend.io>
2026-09-15 09:30:18 +01:00
Jamie Tanna 5673b25e10 feat(manager/github-actions): support pulumi/actions pulumi-version
Co-Authored-By: Claude Sonnet 5 <jamie.tanna+claude-code@mend.io>
2026-09-15 09:30:17 +01:00
Jamie Tanna efa75c7648 feat(manager/github-actions): support stCarolas/setup-maven maven-version
As Maven tags releases as maven-X.Y.Z rather than plain SemVer, we need to set a custom extractVersion.

As ranges can be used, we can treat it as Node-package-registry-style versioning.

Co-Authored-By: Claude Sonnet 5 <jamie.tanna+claude-code@mend.io>
2026-09-15 09:30:17 +01:00
Jamie Tanna 9cdc00d432 feat(manager/github-actions): support bufbuild/buf-setup-action version
Co-Authored-By: Claude Sonnet 5 <jamie.tanna+claude-code@mend.io>
2026-09-15 09:30:17 +01:00
Jamie Tanna 753efadea1 feat(manager/github-actions): support raven-actions/actionlint version
Co-Authored-By: Claude Sonnet 5 <jamie.tanna+claude-code@mend.io>
2026-09-15 09:30:16 +01:00
Jamie Tanna 13d1256a6d feat(manager/github-actions): support actions-rust-lang/setup-rust-toolchain toolchain
As the Action only uses the last `toolchain` as the active one, we can
only update that value.

Co-Authored-By: Claude Sonnet 5 <jamie.tanna+claude-code@mend.io>
2026-09-15 09:30:16 +01:00
Jamie Tanna 3574cf0c5c feat(manager/github-actions): support j178/prek-action prek-version
As this may be a SemVer range, we need to treat it as an npm version.

Co-Authored-By: Claude Sonnet 5 <jamie.tanna+claude-code@mend.io>
2026-09-15 09:30:16 +01:00
Jamie Tanna 53481c1c87 feat(manager/github-actions): support reviewdog/action-setup reviewdog_version
Co-Authored-By: Claude Sonnet 5 <jamie.tanna+claude-code@mend.io>
2026-09-15 09:30:16 +01:00
Jamie Tanna cf86fd0e85 feat(manager/github-actions): support astral-sh/ruff-action version
Co-Authored-By: Claude Sonnet 5 <jamie.tanna+claude-code@mend.io>
2026-09-15 09:30:15 +01:00
Jamie Tanna 225f87e669 feat(manager/github-actions): support biomejs/setup-biome version
Co-Authored-By: Claude Sonnet 5 <jamie.tanna+claude-code@mend.io>
2026-09-15 09:30:15 +01:00
Jamie Tanna 5eb960b3a8 feat(manager/github-actions): support abatilo/actions-poetry poetry-version
Co-Authored-By: Claude Sonnet 5 <jamie.tanna+claude-code@mend.io>
2026-09-15 09:30:15 +01:00
Jamie Tanna 6b48fc31df feat(manager/github-actions): support opentofu/setup-opentofu tofu_version
Co-Authored-By: Claude Sonnet 5 <jamie.tanna+claude-code@mend.io>
2026-09-15 09:30:14 +01:00
Jamie Tanna 31d7babcdc feat(manager/github-actions): support goreleaser/goreleaser-action version
As it allows for a range, we need to parse it as if it's npm versioning.

Co-Authored-By: Claude Sonnet 5 <jamie.tanna+claude-code@mend.io>
2026-09-15 09:30:14 +01:00
Jamie Tanna 3ce6d3a62a feat(manager/github-actions): support erlef/setup-beam's version inputs
setup-beam is a bit more complex, as it has multiple inputs, and
`erlang/otp` releases as `OTP-x.y.z`, so we need to specify a custom
`extractVersion`.

Co-Authored-By: Claude Sonnet 5 <jamie.tanna+claude-code@mend.io>
2026-09-15 09:30:14 +01:00
Jamie Tanna 4e450418be feat(manager/github-actions): support helm/kind-action's version inputs
kind-action is a bit more complex, as it has multiple inputs.

Co-Authored-By: Claude Sonnet 5 <jamie.tanna+claude-code@mend.io>
2026-09-15 09:30:13 +01:00
Jamie Tanna 7b8ac17c36 feat(manager/github-actions): support GitTools/actions/gitversion/setup's versionSpec
Co-Authored-By: Claude Sonnet 5 <jamie.tanna+claude-code@mend.io>
2026-09-15 09:27:54 +01:00
Jamie Tanna e227af992e feat(manager/github-actions): support subosito/flutter-action's flutter-version
Co-Authored-By: Claude Sonnet 5 <jamie.tanna+claude-code@mend.io>
2026-09-15 09:27:54 +01:00
Jamie Tanna 6687887bb8 feat(manager/github-actions): support aquaproj/aqua-installer's aqua_version
Co-Authored-By: Claude Sonnet 5 <jamie.tanna+claude-code@mend.io>
2026-09-15 09:27:54 +01:00
Jamie Tanna e8a17adefe feat(manager/github-actions): support cycjimmy/semantic-release-action semantic_version
Co-Authored-By: Claude Sonnet 5 <jamie.tanna+claude-code@mend.io>
2026-09-15 09:27:54 +01:00
Jamie Tanna 347c642f1d feat(manager/github-actions): support cloudflare/wrangler-action wranglerVersion
Co-Authored-By: Claude Sonnet 5 <jamie.tanna+claude-code@mend.io>
2026-09-15 09:27:53 +01:00
Jamie Tanna 9b7dfb9d8b feat(manager/github-actions): support peaceiris/actions-hugo's hugo-version
Co-Authored-By: Claude Sonnet 5 <jamie.tanna+claude-code@mend.io>
2026-09-15 09:27:53 +01:00
Jamie Tanna f417e2004f feat(manager/github-actions): support jfrog/setup-jfrog-cli's version
Co-Authored-By: Claude Sonnet 5 <jamie.tanna+claude-code@mend.io>
2026-09-15 09:27:53 +01:00
Jamie Tanna 84be57eadd feat(manager/github-actions): support helm/chart-releaser-action's version
Co-Authored-By: Claude Sonnet 5 <jamie.tanna+claude-code@mend.io>
2026-09-15 09:27:53 +01:00
Jamie Tanna 9266b6d05e feat(manager/github-actions): support azure/setup-kubectl's version
Co-Authored-By: Claude Sonnet 5 <jamie.tanna+claude-code@mend.io>
2026-09-15 09:27:52 +01:00
Jamie Tanna b4f9d9d607 feat(manager/github-actions): support snok/install-poetry's version
Co-Authored-By: Claude Sonnet 5 <jamie.tanna+claude-code@mend.io>
2026-09-15 09:27:52 +01:00
Jamie Tanna d27e967632 feat(manager/github-actions): support terraform-linters/setup-tflint's tflint_version (#46034)
Co-authored-by: Claude Sonnet 5 <jamie.tanna+claude-code@mend.io>
2026-09-15 07:53:32 +00:00
Jamie Tanna 6c7e9faa7e feat(manager/github-actions): support extractions/setup-just's just-version (#46033)
Co-authored-by: Claude Sonnet 5 <jamie.tanna+claude-code@mend.io>
2026-09-15 07:53:31 +00:00
Jamie Tanna 3de36a8e43 feat(manager/github-actions): support gradle/actions/setup-gradle's gradle-version (#46032)
Co-authored-by: Claude Sonnet 5 <jamie.tanna+claude-code@mend.io>
2026-09-15 07:53:30 +00:00
Jamie Tanna 608b47ea2a feat(manager/github-actions): support hashicorp/setup-terraform's terraform_version (#46031)
Co-authored-by: Claude Sonnet 5 <jamie.tanna+claude-code@mend.io>
2026-09-15 07:53:29 +00:00
Michael Kriese fa0eb6cd4c ci: ratchet the branch coverage threshold (#45955)
build: ratchet the branch coverage threshold

A full run on this branch reports 100% statements (49249/49249), 100%
functions (7333/7333) and 99.16% branches (25479/25696), up from 98.72%
(25434/25765) before the manager coverage work. The threshold moves to
99.14, keeping the same rounding-down margin as before.

Statements, functions and lines are already pinned at 100 and stay
there.

Co-authored-by: Claude Opus 5 <michael.kriese+claude-code@mend.io>
2026-09-15 07:10:11 +00:00
Michael Kriese 55a7341be2 test(manager): close long-tail branch coverage gaps (#45954)
* test(manager): close azure-pipelines, bundler and cocoapods gaps

Adds a pipeline whose step task is not versioned, so nothing is
extracted, and a gem lock line carrying no version, which is skipped.

Marks four guards that cannot be false: `extractContainer()` always
returns a dep, `getLockFilePath()` always returns a path, and the
cocoapods dep name, spec name and git account all derive from values
their enclosing check already proved present.

Co-Authored-By: Claude Opus 5 <michael.kriese+claude-code@mend.io>

* test(manager): close cargo, composer and cpanfile gaps

Adds a composer repository map that disables something other than
packagist, which is dropped rather than recorded.

Marks five guards: the cargo warning only fires for a crate dep and its
retry only runs when a dep was already current, a gitlab rule without a
token never passes the auth check, and both cpanfile handlers run only
once their match produced a value.

Two implicit elses stay counted, in the cargo version resolver and the
composer repository mapper, since a coverage-ignore hint does not attach
to an `else if`.

Co-Authored-By: Claude Opus 5 <michael.kriese+claude-code@mend.io>

* test(manager): close deps-edn, docker-compose and dockerfile gaps

Adds three extractions: a deps.edn alias whose value is not a map, a
compose extension carrying no image, and a dockerfile escape directive
naming a character other than a backtick, which leaves the default in
place.

Marks the deps-edn repository name check, since object keys are always
strings, and notes the repository spec chain, where a coverage-ignore
hint does not attach to an `else if`.

Co-Authored-By: Claude Opus 5 <michael.kriese+claude-code@mend.io>

* test(manager/flux): close the flux coverage gaps

Adds two GitRepository resources whose url is ssh rather than http, one
pinned to a tag and one to a commit. Neither yields a source url, since
only http urls can be turned into one.

Marks the Kustomization image guard: the schema rejects an image without
a name, so `extractImage()` cannot return null there.

Co-Authored-By: Claude Opus 5 <michael.kriese+claude-code@mend.io>

* test(manager): mark github-actions, gitlabci and glasskube guards

None of these six needs a test. A parsed action ref is either a docker
or a repository ref, `getDep()` always returns a dep for a job container
and a service, and the remaining three need a listed file that cannot be
read, a listed file that yields no deps, or a manifest whose
repositories match no name.

The glasskube resource kind chain stays counted, since a coverage-ignore
hint does not attach to an `else if`.

Co-Authored-By: Claude Opus 5 <michael.kriese+claude-code@mend.io>

* test(manager): mark gomod and gradle-wrapper guards

Four guards that need setups no test provides: a removed dep that is not
added back, a go.mod the replace massaging leaves unchanged, and a
daemon-jvm file carrying no toolchain version. A parsed go directive
always yields a version.

The additional-dependency count chain stays counted, since a
coverage-ignore hint does not attach to an `else if`.

Co-Authored-By: Claude Opus 5 <michael.kriese+claude-code@mend.io>

---------

Co-authored-by: Claude Opus 5 <michael.kriese+claude-code@mend.io>
2026-09-15 07:10:10 +00:00
Michael Kriese dec41b697e test(manager/terraform): close branch coverage gaps (#45948)
test(manager/terraform): close the terraform family coverage gaps

Adds two terraform extractions that no test covered: a lock file that
cannot be read, and one that holds no locks. Both leave the deps without
a locked version.

Marks three guards. The lockfile update path needs a change that also
satisfies the recorded constraints, `extractTFLintPlugin()` never
returns null, and only terragrunt's already-ignored default case leaves
its result unset.

Two implicit elses stay counted, in the terraform module extractor and
the tflint key parser: a coverage-ignore hint does not attach to an
`else if`, so they carry a plain note.

Co-authored-by: Claude Opus 5 <michael.kriese+claude-code@mend.io>
2026-09-15 07:10:10 +00:00
Michael Kriese 44a9f5283b test(manager/sbt,swift): close branch coverage gaps (#45946)
test(manager/sbt,swift): close the sbt and swift coverage gaps

sbt is now fully covered by tests: a build definition referencing
symbols that were never defined, a resolver whose location is not a url,
a package file that yields nothing during a multi-file extract, and two
scala version strings that normalization leaves alone - a range and a
version with no patch part.

swift keeps two marks. `artifacts.ts` falls back to an empty depName
that extract always sets, and the null state in `extract.ts` is only
re-entered at a deps boundary. Its two `.package(` transitions stay
counted, since a coverage-ignore hint does not attach to an `else if`.

Co-authored-by: Claude Opus 5 <michael.kriese+claude-code@mend.io>
2026-09-15 07:10:09 +00:00
Michael Kriese 351201cac6 test(manager/bazel): close branch coverage gaps (#45944)
test(manager/bazel): close the bazel branch coverage gaps

Adds two extractions that no test covered: a `go_repository` carrying
both a tag and a commit, which must not be marked digest-only, and a
`maven_install` artifact whose coordinate is not group:artifact:version.

Marks the rest. `parser.ts` guards are type narrowing over the parsed
fragment tree, where the else only happens if the parser hands back a
shape it never produces. In `artifacts.ts` only http rules reach
updateArtifacts, and the empty url list already returned earlier.

The digest branch in `rules/http.ts` stays counted: a coverage-ignore
hint does not attach to an `else if`, so it carries a plain note.

Co-authored-by: Claude Opus 5 <michael.kriese+claude-code@mend.io>
2026-09-15 07:10:08 +00:00
renovate[bot] b536021ec7 fix(deps): update ghcr.io/renovatebot/base-image docker tag to v13.98.3 (main) (#46198)
fix(deps): update ghcr.io/renovatebot/base-image docker tag to v13.98.3

| datasource | package                        | from    | to      |
| ---------- | ------------------------------ | ------- | ------- |
| docker     | ghcr.io/renovatebot/base-image | 13.98.2 | 13.98.3 |

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
44.90.3
2026-09-15 04:27:30 +00:00
renovate[bot] 72e7670708 chore(deps): update dependency uv to v0.12.14 (main) (#46197)
chore(deps): update dependency uv to v0.12.14

| datasource      | package      | from    | to      |
| --------------- | ------------ | ------- | ------- |
| github-releases | astral-sh/uv | 0.12.13 | 0.12.14 |

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-09-15 03:23:52 +00:00
renovate[bot] 653d73057f chore(deps): update dependency astral-sh/uv to v0.12.14 (main) (#46196)
chore(deps): update dependency astral-sh/uv to v0.12.14

| datasource      | package      | from    | to      |
| --------------- | ------------ | ------- | ------- |
| github-releases | astral-sh/uv | 0.12.13 | 0.12.14 |

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-09-15 03:23:39 +00:00
renovate[bot] d2e5541f23 chore(deps): update codecov/codecov-action action to v7.1.0 (main) (#46195)
chore(deps): update codecov/codecov-action action to v7.1.0

| datasource  | package                | from   | to     |
| ----------- | ---------------------- | ------ | ------ |
| github-tags | codecov/codecov-action | v7.0.0 | v7.1.0 |

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-09-15 01:25:32 +00:00
renovate[bot] 271ec2a54e fix(deps): update ghcr.io/renovatebot/base-image docker tag to v13.98.2 (main) (#46170)
fix(deps): update ghcr.io/renovatebot/base-image docker tag to v13.98.2

| datasource | package                        | from    | to      |
| ---------- | ------------------------------ | ------- | ------- |
| docker     | ghcr.io/renovatebot/base-image | 13.98.1 | 13.98.2 |

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
44.90.2
2026-09-14 22:24:27 +00:00
renovate[bot] 1b8054f66e chore(deps): update ghcr.io/containerbase/devcontainer docker tag to v14.15.2 (main) (#46136)
chore(deps): update ghcr.io/containerbase/devcontainer docker tag to v14.15.2

| datasource | package                            | from    | to      |
| ---------- | ---------------------------------- | ------- | ------- |
| docker     | ghcr.io/containerbase/devcontainer | 14.15.1 | 14.15.2 |

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
44.90.1
2026-09-14 21:25:22 +00:00
renovate[bot] 73bf8d0f64 fix(deps): update ghcr.io/renovatebot/base-image docker tag to v13.98.1 (main) (#46137)
fix(deps): update ghcr.io/renovatebot/base-image docker tag to v13.98.1

| datasource | package                        | from    | to      |
| ---------- | ------------------------------ | ------- | ------- |
| docker     | ghcr.io/renovatebot/base-image | 13.98.0 | 13.98.1 |

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-09-14 21:24:50 +00:00
Jamie Tanna b2135e41b7 fix(exec): memoise which install-tools we've run (#46084)
When running Renovate with `binarySource=install` on a repository with
many branches, the amount of time running `install-tool` - on already
installed tools - can take a significant percentage of the overall run.

For instance, on one repository we have instrumented with OpenTelemetry,
we see:

- initial `install-tool golang`: 8.7s
- follow-up `install-tool golang`: median 635ms, max 2.4s

However, because we run `install-tool golang` 640 times, this adds up to
24.8/29.2m (85%) of the repo's run time, which is an overwhelming
percentage when we're not even re-installing the tool.

To handle this more effectively, we can add an in-memory cache of all
the tools (and resolved versions) that we've installed in a given run.

We can't do this with `binarySource=docker`, as it has a fresh container
each time.

Co-authored-by: Claude Sonnet 5 <jamie.tanna+claude-code@mend.io>
44.90.0
2026-09-14 20:33:10 +00:00
renovate[bot] fb7f1f4e5a feat(deps): update ghcr.io/renovatebot/base-image docker tag to v13.98.0 (main) (#46125)
feat(deps): update ghcr.io/renovatebot/base-image docker tag to v13.98.0

| datasource | package                        | from     | to      |
| ---------- | ------------------------------ | -------- | ------- |
| docker     | ghcr.io/renovatebot/base-image | 13.97.13 | 13.98.0 |

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-09-14 20:25:22 +00:00
renovate[bot] 0e4ccb2ac5 chore(deps): update ghcr.io/containerbase/devcontainer docker tag to v14.15.1 (main) (#46124)
chore(deps): update ghcr.io/containerbase/devcontainer docker tag to v14.15.1

| datasource | package                            | from    | to      |
| ---------- | ---------------------------------- | ------- | ------- |
| docker     | ghcr.io/containerbase/devcontainer | 14.15.0 | 14.15.1 |

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-09-14 20:24:58 +00:00
Jamie Tanna 826541b266 fix(datasource/go): don't cache private modules (#45949)
Previously, we were caching private Go modules' information, even when
`cachePrivatePackages=false`.

This leads to the module path, versions, and possibly the `go`
directive being cached unintentionally.

Instead of doing so, we should make sure that we're intentionally
caching packages.

To do this, we can use a mix of the `GOPRIVATE`/`GONOPROXY` to determine
which packages shouldn't be fetched in the public Go proxy, given
they're private, following how the Go toolchain itself does this.

When interacting with the public Go proxy, we treat these packages as
public (as the public Go proxy has no means to authenticate) and so
anything outside of this should be treated as private.

When `GOPROXY` contains `direct`, we only treat a package as public only
when the public proxy is in the list too, the way Go's own default is
written. This is used to imply that `direct` is the fallback for
whatever the public proxy doesn't have.

When thre is no Go proxy set, `GOPROXY=direct` means everything comes
from source, which tells us nothing about who is allowed to read it.

This doesn't catch everything: with the default `GOPROXY`, a private
package the public proxy doesn't have falls through to `direct` and is
still cached by Renovate, unless `GOPRIVATE` says otherwise. We only
learn that no proxy served it after we've fetched it, which is after
`cacheable` is determined.

When using Renovate with a private Go proxy mirror, such as Artifactory,
this will result in no cached packages until `cachePrivatePackages:
true` is set.

This is a similar change to #45348.

Co-authored-by: Claude Opus 5 <jamie.tanna+claude-code@mend.io>
44.89.1
2026-09-14 16:39:36 +00:00
Gregor Zeitlinger 2e951d2254 feat(mise): support selector lockfile updates (#44615)
* mise: support selector lockfile updates

* fix(mise): handle empty lockfile AST

* test(mise): use valid empty TOML AST fixture

* fix(mise): support current regex utility

* fix: clarify lockfile-only lookup handling

* fix(mise): handle selector lockfile updates correctly

* test(mise): cover selector lockfile review fixes

* fix(mise): scope selector artifact refresh

* chore: retrigger CI

* fix(mise): remove unreachable lockfile guard

* refactor(lookup): clarify lockfile-only value handling

* refactor(mise): use shared TOML utilities

* fix(mise): handle selector lockfile edge cases

* fix(mise): satisfy selector CI coverage

* fix(mise): require dependency names

* fix(mise): preserve configured dependency names

* fix(mise): address selector lockfile review feedback

* test(mise): cover major selector lockfile updates

* chore(static-data): auto-update Java LTS versions

So we don't have a hardcoded set of data in the mise manager.

Co-authored-by: Claude Sonnet 5 <jamie.tanna+claude-code@mend.io>

* fix(mise): address selector lockfile feedback

* test(manager/mise): cover nonnumeric current version prefix

formatLockedVersion()'s currentPrefix fallback to '' only runs when
the current version has no leading numeric match, which no existing
test reached.

Co-Authored-By: Claude Sonnet 5 <jamie.tanna+claude-code@mend.io>

---------

Co-authored-by: Jamie Tanna <jamie.tanna@mend.io>
Co-authored-by: Claude Sonnet 5 <jamie.tanna+claude-code@mend.io>
44.89.0
2026-09-14 15:57:22 +00:00
Michael Kriese ed285cc4c1 perf(manager/maven-wrapper): avoid matching each line twice (#46027)
refactor(maven-wrapper): avoid matching each line twice

`extractLineInfo` ran `line.match(regex)` only to re-run `regex.exec(line)`
on the same line immediately afterwards. None of the regexes are global,
so `exec` alone is equivalent and halves the regex work per line.

Co-authored-by: Claude Opus 5 <michael.kriese+claude-code@mend.io>
44.88.0
2026-09-14 15:11:01 +00:00