Commit Graph

3913 Commits

Author SHA1 Message Date
Jamie Tanna 95a7cab7f3 fix(versioning/github-actions): allow v1 to be treated as a version (#42762)
* fix(versioning/github-actions): allow `v1` to be treated as a version

As a similar change to 2ab41fa709, we also
need to allow a major-only version to be treated as a valid version.

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

* chore: remove accidental JSDoc

Co-authored-by: Sebastian Poxhofer <secustor@users.noreply.github.com>

---------

Co-authored-by: Claude Sonnet 4.6 <jamie.tanna+claude-code@mend.io>
Co-authored-by: Sebastian Poxhofer <secustor@users.noreply.github.com>
2026-04-20 10:21:18 +00:00
Jamie Tanna 673fb8e7a9 fix(versioning/github-actions): allow v1.2 to be treated as a version (#42761)
When using `docker` versioning, we correctly treat a `v1.2` -> `v1.3`
version update as valid.

However, when using the previous implementation of `github-actions`'
versioning, we would silently ignore them, filtering them in
`filterValidVersions`.

This leads to cases where a `v1.2` would be upgraded to `v1.3.0`, which
wasn't correct.

Co-authored-by: Claude Sonnet 4.6 <jamie.tanna+claude-code@mend.io>
2026-04-20 09:21:32 +00:00
renovate[bot] 6473c4006d docs: update references to python to 63fdc2b (main) (#42748)
docs: update references to python to 63fdc2b

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-04-20 00:27:20 +00:00
Trim21 9510d133df feat(github-actions): add support for jakebailey/pyright-action version option (#42744) 2026-04-19 14:08:15 +00:00
Johannes Feichtner e70fb64e94 feat(manager/pixi): set currentVersion field for exact pypi dependency versions (#42741) 2026-04-19 10:51:56 +00:00
Philipp Grathwohl a6238a476b feat(manager/cake): Take nuget.config into account for registryUrls of nuget packages (#41545)
* Take nuget.config into account for registryUrls of nuget packages

* Remove 'afterEach' in tests

* Fix PR remarks

* Remove 'any' as suggested in code review

Co-authored-by: Michael Kriese <michael.kriese@gmx.de>

* Update lib/modules/manager/cake/index.ts

Co-authored-by: Michael Kriese <michael.kriese@gmx.de>

* Verify mock parameters in cake manager tests

---------

Co-authored-by: Michael Kriese <michael.kriese@gmx.de>
2026-04-19 08:18:42 +00:00
Jamie Tanna d508716886 feat(versioning): add a github-actions versioning (#42712)
GitHub Actions' versioning somewhat mirrors the SemVer-style versioning,
but doesn't quite.

This is in the case that it's common to use (mutable) tags like `v7` or
`v4.2`, as well as full SemVer style` `v1.2.3` and `v1.3.4-rc2`, doesn't
quite match it.

In addition, with GitHub's recent move to introduce Immutable Tags,
these require new releases to be a full SemVer `major.minor.patch` tag.

However, we don't currently have a way to take users from `@v7` to
`@v8.1.1`, in the case they're using Immutable Tags.

Given this isn't currently straightforward with any of our existing
SemVer-y versioning modules like `semver-coerced` or `semver-partial`,
we should instead introduce a specific Versioning module.

This mostly covers the functionality that `semver-partial` has, but
needs to take advantage of the `allVersions` parameter to find the
"shortest" possible tag for a given resolved Semantic Version.

This was previously attempted in previous changes, but reverted in
db64cc6de0 due to additional complexity.

We won't turn it on by default right now, but as a future change.

Co-authored-by: Claude Sonnet 4.6 <jamie.tanna+claude-code@mend.io>
2026-04-17 19:07:45 +00:00
Michael Kriese 06cf949974 fix(datasource/npm): catch invalid engines (#42718) 2026-04-17 17:38:49 +00:00
Johannes Feichtner be2eacd8d2 feat(vulnerability): improve GitHub advisory PR body notes with summary, GHSA ID and references (#42670)
feat(vulnerability): improve GitHub advisory PR body notes with summary and GHSA ID
2026-04-17 15:33:56 +00:00
Jamie Tanna 171d17734a chore(versioning): allow providing known versions to module (#42719)
As part of future changes, we'll introduce a new Versioning module for
GitHub Actions, which requires knowing if the version it's proposing
actually exists.

This is a more useful concept for Versioning modules to be able to take
advantage of, so we can expose this as an optional capability that
Versioning modules can use.
2026-04-17 15:00:06 +00:00
Jamie Tanna db64cc6de0 fix(manager/github-actions): revert recent changes (#42707)
* Revert "fix(manager/github-actions): override `versioning` for Actions with Immutable Tags (#42690)"

This reverts commit 1b0785bbe0.

* Revert "feat(replacements): migrate users to astral/setup-uv v8 (#42683)"

This reverts commit f5859c2671.

* Revert "feat(manager/github-actions): use `semver-partial` as default versioning (#42685)"

This reverts commit da04b8edac.
2026-04-17 07:10:18 +00:00
Jamie Tanna 1b0785bbe0 fix(manager/github-actions): override versioning for Actions with Immutable Tags (#42690)
The changes in da04b8edac mostly worked,
but given `astral-sh/setup-uv` is now using Immutable Tags it _must_ be
resolved as `versioning=semver`, to make sure that version updates are
correctly raised.

However, we can't treat it as `versioning=semver`, as that will then
fail to parse the current version correctly.

Instead, we must use a `regex` versioning scheme, which allows us to
optionally parse the minor and patch versions.

This allows `newVersion` to be pinned accordingly to SemVer, but does
not require previous versions to be so.

We can do this - for now - with an explicit allowlist.
2026-04-16 16:59:10 +00:00
Michael Kriese f6d41067b4 fix(docker): only set replaceString if requested (#42649) 2026-04-16 13:17:08 +00:00
Jamie Tanna da04b8edac feat(manager/github-actions): use semver-partial as default versioning (#42685)
As per #42331, we should migrate to using `semver-partial` for GitHub
Actions' tags versions, instead of `docker`.

This mirrors actual usage of the way that the ecosystem tags Action
versions, and also has the benefit of automagically migrating users of
Actions that have enabled Immutable Tags, which now must be a full
SemVer tagged version.

As we're now specifying the `versioning: semver-partial`, we don't need
to specify it in `pinGitHubActionDigestsToSemver`.
2026-04-16 10:59:58 +00:00
Stefan Ceriu 0ff55d2d34 feat: add XcodeGen manager for Swift package dependencies in project.yml files (#41889)
* feat: add XcodeGen manager for Swift package dependencies in project.yml files

* chore(xcodegen): inline project.yml fixture

* fix(xcodegen): use semver instead of swift versioning

* fix(xcodegen): use glob syntax for manager file pattern

* tests(xcodegen): expect logger is called on invalid packages

* tests(xcodegen): better assert extracted package contents

* chore(xcodegen): simplify regex usage

* chore(xcodegen): log projects without dependencies

* chore(xcodegen): simplify dependency resolving and remove regular expressions in favor of the `detectPlatform` helper function

* chore(xcodegen): use `coerceString` on package versions to simplify testing and improve coverage

* chore(xcodegen): address PR review comments.

---------

Co-authored-by: Michael Kriese <michael.kriese@visualon.de>
2026-04-15 15:13:04 +00:00
Arnaud Dezandee 914c55b03c refactor(terraform-module): replace interfaces with zod schemas and inline fixtures (#42399)
* refactor(terraform-module): extract getRegistryRepository to utils

* refactor(terraform-module): add zod schemas and validate service discovery

* refactor(terraform-module): use zod schemas in query methods and inline fixtures

* fix(terraform): update hash test to use valid service discovery response

* refactor(terraform-module): address review feedback

* style: biome lint fix

* refactor(terraform-module): address review feedback
2026-04-15 13:41:28 +00:00
RahulGautamSingh 28ab04b43d feat(manager/ant): support custom registryUrls (#42641)
* feat(manager/ant): add registry URL discovery from settingsFile and remoteRepository

Read Maven registry URLs from settingsFile attribute on dependency
blocks (parsed via Maven's extractRegistries) and from inline
<remoteRepository url="..." /> elements. Registries are merged,
deduplicated, and scoped to their dependency block.

* update java docs

* fix coverage

* apply suggestions

* fix ci issues
2026-04-15 12:54:02 +00:00
Arnaud Dezandee f421075a5e feat(terraform-provider): use registry v2 API for release timestamps (#42340)
* feat(terraform-provider): add zod schemas for v2 API response

* feat(terraform-provider): use registry v2 API for release timestamps

* feat(terraform-provider): update v2 API response handling and schema validation

* feat(terraform-provider): address review feedback

* style: fix oxlint
2026-04-15 09:44:39 +00:00
RahulGautamSingh 15c8ab5385 feat(manager/ant): add coords= attribute syntax support (#42635)
* feat(manager/ant): add coords= attribute syntax support

Support Maven coords attribute format (group:artifact:version and
group:artifact:version:scope) as an alternative to separate
groupId/artifactId/version attributes.

* add trace logs

* fix coverage
2026-04-15 09:23:47 +00:00
Johannes Feichtner 1e906e8e33 feat(vulnerability): add severity and CVSS details to GitHub Dependabot alerts (#42568) 2026-04-14 18:05:08 +00:00
Mike Ryan f635ae29c4 chore(instrumentation): add timing statistics for getReleases (#42523)
* feat: timing statistics for getReleases

Adds collection and reporting of timing statistics for
`datasource.getReleases()` calls. Each call records the datasource, registryUrl,
packageName, and duration. The intent is to visibility into where
renovate is retrieving release information and how long that might take.

The report consists of a nested data-structure that provides increasing
detail as we descend datasource, registryUrl, and packageName.

The full report  is logged at trace level
`getReleases statistics with packages`.

A summary report including only datasources and registryUrls is logged
at debug level `getReleases statistics summary`.

* add GetReleasesSpanProcessor

- Re-instrument getReleases calls using open telemetry.
- Adds GetReleasesSpanProcessor, which can adapt
  `getReleases` spans to GetReleasesStats.

* fixup instrumentation tests

* pr feedback

* pr feedback: naming

* pr feedback: comments
2026-04-14 17:36:37 +00:00
RahulGautamSingh 76dcc66816 feat(manager/ant): add <import> file traversal (#42631)
Support <import file="..."/> elements in Ant build files to follow
cross-file dependencies. Properties defined before the import are
available in the imported file. Cycle detection via visited-file
tracking prevents infinite loops.
2026-04-14 17:04:59 +00:00
RahulGautamSingh ef8e6c874b feat(manager/ant): add property resolution and .properties file support (#42175)
* new changes

* use updateDependency

* fix coverage

* apply suggestions

* apply suggestions

* add comment

* Update lib/modules/manager/ant/update.ts

Co-authored-by: Jamie Tanna <github@jamietanna.co.uk>

* apply suggestions zharinov

* fix coverage

* fix coverage

* escape attrName

---------

Co-authored-by: Jamie Tanna <github@jamietanna.co.uk>
2026-04-14 15:04:34 +00:00
Adam Setch 53bd79641c feat(bitbucket-pipelines): update file patterns to support shared configs (#41704)
* feat(bitbucket-pipelines):update file patterns to support shared configs

Signed-off-by: Adam Setch <adam.setch@outlook.com>

* feat(bitbucket-pipelines):update file patterns to support shared configs

Signed-off-by: Adam Setch <adam.setch@outlook.com>

* feat(bitbucket-pipelines):update file patterns to support shared configs

Signed-off-by: Adam Setch <adam.setch@outlook.com>

---------

Signed-off-by: Adam Setch <adam.setch@outlook.com>
Co-authored-by: Michael Kriese <michael.kriese@visualon.de>
2026-04-14 14:26:46 +00:00
Michael Miller 203c5fec0b feat(manager/mise): add support for openfga (#42611)
Co-authored-by: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-14 09:14:09 +00:00
Jamie Tanna 1044a80642 chore(types): add a strong type for ToolName and ConstraintName (#42589)
* chore(types): add a strong type for `ToolName`s

Until #41849, we can use our local definitions of the tool names that
Containerbase supports by extracting out a `ToolName` type.

* fixup! chore(types): add a strong type for `ToolName`s

Co-authored-by: Claude Opus 4.6 <jamie.tanna+claude-code@mend.io>
Co-authored-by: gpt-4.1 <jamie.tanna+github-copilot@mend.io>

* fixup! fixup! chore(types): add a strong type for `ToolName`s

* no-never

* simplify

* coverage

* sq

* warn

* sq

* fixup! sq

* sq

* fixup! sq

---------

Co-authored-by: Claude Opus 4.6 <jamie.tanna+claude-code@mend.io>
Co-authored-by: gpt-4.1 <jamie.tanna+github-copilot@mend.io>
2026-04-14 08:55:42 +00:00
Thomas Papillon ef3c9645e9 feat(sbt): support anonymous objects and dotted symbols for version declaration (#40699)
* sbt: support anonymous objects and dotted symbols

* sbt: use string template syntax
2026-04-13 17:24:56 +00:00
Sergei Zharinov e33aa4cc39 feat(cache): Add writeSchema to Maven cache provider (#42570)
* feat(cache): Add `writeSchema` to Maven cache provider

* Use toEqual and codeBlock in maven schema tests
2026-04-13 14:28:30 +00:00
Jamie Tanna ea1e60e912 fix(github-actions): use correct datasource for Zizmor version (#42587)
As the Docker image needs to be published before we can use it in the
Action.
2026-04-13 09:18:50 +00:00
renovate[bot] c549ff7cef docs: update references to python to 8428c32 (main) (#42572)
docs: update references to python to 8428c32

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-04-13 00:27:43 +00:00
Jamie Tanna 6238715ca5 chore(types): allow constraints to be passed through to getReleases (#42564)
As part of future changes in the Go datasource, this will allow
detecting whether we do want to perform the API calls necessary to
discover `constraints` for a given Go module.

For performance reasons, we do not want to always perform this.
2026-04-12 17:31:06 +00:00
Sergei Zharinov b359a1de4d feat(npm): Trim response data before caching (#42559)
* feat(cache): Add `writeSchema` transform to package cache

* feat(npm): Trim response data before caching
2026-04-12 17:22:32 +00:00
Johannes Feichtner 3a05ade06b refactor(github/vulnerability): use Zod-inferred types as single source of truth (#42494)
* refactor(github/vulnerability): use Zod-inferred types as single source of truth

* revert to false, since undefined means something else on GHES
2026-04-09 08:36:40 +00:00
Go Takagi ecdc476aea fix(bitrise): make steps optional in workflow schema (#42362)
Workflows with only envs/after_run (no steps) caused the entire
bitrise.yml parsing to fail because steps was a required field.
2026-04-09 03:35:41 +00:00
Jamie Tanna b9ad0d79df refactor(types): extract a StatusCheckConfig (#42464)
As part of the Enrichment module functionality, it would be useful to
have a consistent type for the status checks.

As a means to be able to use the underlying status check, without a
branch name, we can extract this into a separate type, while keeping the
existing type for use where we know the branch name.
2026-04-08 14:39:46 +00:00
Michael Kriese 6804768a1a feat(npm): support pnpm workspace file overrides (#42247)
* feat(npm): support pnpm workspace file overrides

* chore: fix comment

* refactor: use types

* feat(npm/pnpm): update overrides in workspace file

* test: fix test

* chore: fix coverage
2026-04-08 12:01:31 +00:00
Sergei Zharinov 7df11ed734 chore(lint): add enforce-ts-extension oxlint rule (#42389)
* refactor(lint): extract custom oxlint rules into separate files

Split `tools/lint/rules.js` into one file per rule under
`tools/lint/rules/`. Also simplify `test-root-describe` with
early-exit guard clauses.

* feat(lint): add `enforce-ts-extension` oxlint rule

Add a custom JS-based oxlint rule that enforces `.ts` extensions on
local imports. The rule catches two problems:

- `.js` extension used instead of `.ts` (auto-fixable)
- missing file extension entirely (report only)

Checked locations:
- static import/export declarations
- dynamic `import()` expressions
- vitest module APIs: `vi.mock`, `vi.doMock`, `vi.unmock`,
  `vi.doUnmock`, `vi.importActual`, `vi.importMock`

Both relative paths (`./`, `../`) and path aliases (`~test/`)
are treated as local. Package imports are ignored.

Also fixes 26 pre-existing violations across 18 spec files.

* Update tools/lint/rules/enforce-ts-extension.js

Co-authored-by: Anne Stellingwerf <1637358+astellingwerf@users.noreply.github.com>

---------

Co-authored-by: Anne Stellingwerf <1637358+astellingwerf@users.noreply.github.com>
2026-04-07 15:36:16 +00:00
Shaan Majid 47807ea2a0 fix(manager/github-actions): disable updates for bare SHA pins without version comment (#42398)
* fix(manager/github-actions): disable updates for naked SHA pins without version comment

* docs(manager/github-actions): document disabled updates for bare SHA pins

* test(manager/github-actions): use single toEqual for version comment assertions

* docs(manager/github-actions): recommend version comment as primary fix for bare SHA pins

* fix(manager/github-actions): add skipReason for naked SHA pins

* docs(manager/github-actions): remove package rule example for re-enabling bare SHA updates

Co-authored-by: Jamie Tanna <github@jamietanna.co.uk>

---------

Co-authored-by: Jamie Tanna <github@jamietanna.co.uk>
2026-04-07 15:34:28 +00:00
Sergei Zharinov a67a96eab5 refactor(lint): Switch to Oxlint (#42384)
* refactor(lint): Switch to Oxlint

* Update .oxlintrc.json

* Fix CI

---------

Co-authored-by: Jamie Tanna <jamie.tanna@mend.io>
2026-04-07 14:42:23 +00:00
Alex 0175429341 fix(manager/npm): apply minimumReleaseAgeExclude to pnpm catalog updates (#42050)
* Fix updating minimumReleaseAgeExclude with pnpm catalogs

* Try fixing coverage
2026-04-07 12:39:15 +00:00
Jamie Tanna ff6b16a468 feat(github-actions): extract Zizmor version automagically (#42415) 2026-04-07 10:47:35 +00:00
ldt-fweichert 624d95d1c0 feat(gradle): add !!-notation support for strictly and prefer constraints (#42135)
* gradle: add strictly / prefer support

* fix tests

* improve code coverage

* apply suggestions from @Churro

* Update lib/modules/versioning/gradle/compare.ts

Co-authored-by: RahulGautamSingh <rahultesnik@gmail.com>

* Update lib/modules/versioning/gradle/index.ts

Co-authored-by: RahulGautamSingh <rahultesnik@gmail.com>

* fixed pin strategy

* ignore pin strategy

---------

Co-authored-by: RahulGautamSingh <rahultesnik@gmail.com>
2026-04-07 09:34:35 +00:00
RahulGautamSingh 373f42e6a1 feat(manager): add Apache Ant manager with basic inline version extraction (#42173)
* feat(manager): add Apache Ant manager with basic inline version extraction

Add new ant package manager that extracts Maven dependencies from
Ant build.xml files using the maven-resolver-ant-tasks library.
Supports inline version attributes on dependency elements.

* fix test

* reuse fn

* fix lint

* fix coverage

* apply suggestions

* simplify tests

* use extractPackageFile and extractPackageFiles

* coverage fix

* apply sugestions
2026-04-07 09:06:55 +00:00
Arnaud Dezandee 59274d2349 refactor(terraform-provider): extract URL constants and rename query methods (#42317)
* refactor(terraform-provider): extract URL constants and rename query methods

* refactor(terraform-provider): consolidate repetitive test cases

* refactor(terraform-provider): improve parameterized test readability
2026-04-03 06:19:13 +00:00
Michael Kriese e8d13714aa fix(replacements): don't use current releases for new digest when new name differs (#42333)
* fix(replacements): don't use current releases for new digest when new name differs

* chore: fix types
2026-04-02 11:58:01 +00:00
Michael Kriese 4d2d86f902 fix(bazel-module,bazelisk): add allowedUnsafeExecutions for bazel mod deps (#42323)
* fix(bazel-module,bazelisk): add `allowedUnsafeExecutions` for `bazel mod deps`

* docs: update manager readmes
2026-04-02 08:01:53 +00:00
Jamie Tanna 0b74302d3a fix: correctly warn when an attestation is missing (#42311)
* test: add additional case for attestation changes

* fix: correctly warn when an attestation is missing

As noted in #37258, when a package registry had previously seen an
attestation for authenticity of a given package release, Renovate should
warn if future updates then lose authenticity.

Our previous attempt at this didn't quite pass around the current
package's attestation, which results in no warnings.

Given recent supply chain attacks where an attestation was removed (such
as Axios in MSC-2026-3522), we should make sure that this logic does
work correctly, and flags to our users.

In the future, we'll add more checks and a failing status check.

By introducing `hasAttestation` in the `LookupUpdate`, this can now be
matched on with `matchJsonata`, as well as providing visibility in the
`packageFiles with updates` log line.

* fixup! fix: correctly warn when an attestation is missing

> Run `pnpm run jest
> lib/workers/repository/process/lookup/index.spec.ts` and handle any test
> failures - the implementation is correct, so update the tests

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

* test: clarify that we don't check for intermediate releases

Which we'll look to improve as part of future changes.

* chore: fix typo

Co-authored-by: Michael Kriese <michael.kriese@visualon.de>

---------

Co-authored-by: Claude Sonnet 4.6 <jamie.tanna+claude-code@mend.io>
Co-authored-by: Michael Kriese <michael.kriese@visualon.de>
2026-04-01 15:00:08 +00:00
Kenta Enomoto 35dbc3b640 fix(swift): don't write from: range to Package.resolved (#42303)
* fix(swift): don't write `from:` range to `Package.resolved`

When a dependency uses a range specifier like `from: "1.0.0"` in
Package.swift, the `newValue` produced by the versioning module contains
the range expression (e.g. `from: "603.0.0"`) rather than a plain version
string. Using `newValue` directly to update `Package.resolved` results in
the lock file containing the range expression instead of a resolved version,
which corrupts it.

Fix by using `dep.newVersion` with the `v` prefix stripped, which is
the actual resolved version and the correct value for `Package.resolved`.

* Update lib/modules/manager/swift/artifacts.ts

Co-authored-by: Michael Kriese <michael.kriese@gmx.de>

---------

Co-authored-by: Michael Kriese <michael.kriese@gmx.de>
2026-04-01 09:59:59 +00:00
Michael Kriese 440e353145 chore: use ts extension (#42300) 2026-04-01 07:46:34 +00:00
renovate[bot] 5cf0aac332 chore(deps): update linters to v1.57.0 (main) (#42278)
* chore(deps): update linters to v1.57.0

| datasource | package              | from   | to     |
| ---------- | -------------------- | ------ | ------ |
| npm        | eslint-plugin-oxlint | 1.56.0 | 1.57.0 |
| npm        | oxlint               | 1.56.0 | 1.57.0 |

* chore: fix oxlint

---------

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: Michael Kriese <michael.kriese@visualon.de>
2026-03-31 13:21:54 +00:00