Commit Graph

14403 Commits

Author SHA1 Message Date
Jamie Tanna ac013be4e2 fix(workers/global): parse .jsonc files (#44034)
* fix(workers/global): parse `.jsonc` files

As noted in #44033, this leads to cases where
`renovate-config-validator` can't parse a repo's `renovate.jsonc`.

This doesn't currently affect when Renovate itself runs fully.

* test(workers/global): add coverage for `getParsedContent`

This test also validates that the fix introduced in the previous commit
correctly fixes the issue.

This also makes sure that if we change the default JSON-like filenames,
we'll validate that it can be parsed, based on the filename.

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

---------

Co-authored-by: Claude Sonnet 4.6 <jamie.tanna+claude-code@mend.io>
2026-06-16 13:45:14 +00:00
renovate[bot] 8af0cbc7b5 fix(deps): update ghcr.io/renovatebot/base-image docker tag to v13.59.4 (main) (#44027)
fix(deps): update ghcr.io/renovatebot/base-image docker tag to v13.59.4

| datasource | package                        | from    | to      |
| ---------- | ------------------------------ | ------- | ------- |
| docker     | ghcr.io/renovatebot/base-image | 13.59.3 | 13.59.4 |

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-06-16 09:57:16 +00:00
Jan-Otto Kröpke 7424be0484 feat(presets/workaround): add Grafana Docker image versioning workaround (#44015)
* feat(presets/workaround): add Grafana Docker image versioning workaround

* Update lib/config/presets/internal/workarounds.preset.ts

---------

Co-authored-by: Sebastian Poxhofer <secustor@users.noreply.github.com>
2026-06-16 09:04:12 +00:00
Nahrin 372b258a05 docs(manager/sveltos): remove duplicated depTypes table from readme (#44016)
Move the Sveltos documentation links into the dep-types.ts description
fields so they appear in the auto-generated Dependency types table.
Replace the duplicate hand-written table in readme.md with a config
example showing how to use depTypes for fine-grained control.

Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
2026-06-16 05:48:01 +00:00
Nahrin 7c256166b3 test(manager/github-actions): add missing community action tests (#44018)
Add test coverage for community actions that had no corresponding
tests: azure/setup-helm, docker/setup-buildx-action,
docker/setup-compose-action, helm/chart-testing-action, and
sigoden/install-binary.

Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
2026-06-16 05:45:22 +00:00
Tharaka De Silva 727e29ffbf feat(release-notes): include gitRef in release notes cache key (#43991)
* feat(release-notes): include gitRef in release notes cache key

Append the release gitRef to the changelog cache key so that releases
sharing a version but pointing at different git refs are cached and
matched independently.

* chore: remove global resets
2026-06-16 05:10:31 +00:00
Jamie Tanna a8abc01421 chore(workers/repository): add a summary of dependency updates (#43770)
* test(workers/repository): don't use generic `times(2)` matcher

So it's clearer what we're validating.

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

* chore(workers/repository): add a summary of dependency updates

As part of future changes, we'll be making further tweaks to how the
onboarding PR is generated, which will introduce a summary of the
dependency updates a given onboarding PR would produce.

As this is valuable information regardless of whether we're in
onboarding/reconfigure mode or not, we can create a new function for
this, and output it after the `branches info extended`.

We can make sure to indicate when there are vulnerability alert updates
in a separate count to the per-`updateType` calculation, and a running
total.

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

* chore(workers/repository): add manager-specific breakdowns to "Updates summary"

So we can use this information when providing a summary on
Onboarding/Reconfigure PRs.

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

* fixup! chore(workers/repository): add manager-specific breakdowns to "Updates summary"

---------

Co-authored-by: Claude Opus 4.7 <jamie.tanna+claude-code@mend.io>
2026-06-15 10:20:57 +00:00
Sebastian Poxhofer ee55af49e4 feat(docker): use schema validated getJson (#43775)
* fix(docker): replace getJsonUnchecked with validated getJson

Replace all getJsonUnchecked calls in the Docker datasource with
Zod-validated getJson calls. Add RegistryAuthToken, RegistryTagsList,
and QuayTagsResponse schemas to schema.ts and add unit tests for them.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>

* do not use getJson if we do not look at the body

* chore: default to false for safety

---------

Co-authored-by: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-06-15 07:19:42 +00:00
RahulGautamSingh 8be9e6bb6c fix(manager/deno): tolerate compilerOptions without jsx fields (#44002)
The zod v4 migration made compilerOptions fail validation when jsxImportSource/jsxImportSourceTypes keys were absent, aborting Deno dependency extraction.
2026-06-15 07:16:35 +00:00
Sergei Zharinov b348ddcbb9 refactor(cache): prepare package cache for binary payloads (#43921)
Add buffer compression helpers, an envelope codec, and a legacy package-cache decoder. Hoist package
cache reads into the base backend so file, Redis, and SQLite share format detection, legacy
fallback, and corrupt-entry handling while preserving existing write formats.
2026-06-15 06:50:29 +00:00
Sebastian Poxhofer 171a591d84 feat(git): validate commit shas (#43988)
* feat(git): validate length commit shas

* test: adapt test mocks

* chore: update import paths

* feat(git): make the validation more strict and support repositories using sha256

* test: add fakeSha function for deterministic git commit shas in tests
2026-06-15 06:36:57 +00:00
RahulGautamSingh 204a63d945 fix(config/parse): ignore trailing commas during jsonc validation (#44000)
* fix(config/parse): ignore trailing commas during jsonc validation

* use codeBlock for wrapping code
2026-06-15 06:35:18 +00:00
renovate[bot] 6d30628faa fix(deps): update ghcr.io/renovatebot/base-image docker tag to v13.59.3 (main) (#44003)
fix(deps): update ghcr.io/renovatebot/base-image docker tag to v13.59.3

| datasource | package                        | from    | to      |
| ---------- | ------------------------------ | ------- | ------- |
| docker     | ghcr.io/renovatebot/base-image | 13.59.2 | 13.59.3 |

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-06-15 06:31:15 +00:00
Nahrin cc32f48c9c docs(versioning): replace bare links with descriptive markdown links in urls (#43951)
* fix(versioning): replace bare links with descriptive markdown links in urls

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>

* refactor: export markdownLinkRegex from common.ts and import in test

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>

---------

Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
2026-06-15 06:30:54 +00:00
renovate[bot] 1ac09e77e2 docs: update references to python to 6f473f8 (main) (#43993)
docs: update references to python to 6f473f8

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-06-15 00:28:08 +00:00
github-actions[bot] 89a217dbfb feat(data): automatic update of static data (#43983)
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2026-06-14 14:24:32 +00:00
renovate[bot] 71beea4866 fix(deps): update ghcr.io/renovatebot/base-image docker tag to v13.59.2 (main) (#43987)
fix(deps): update ghcr.io/renovatebot/base-image docker tag to v13.59.2

| datasource | package                        | from    | to      |
| ---------- | ------------------------------ | ------- | ------- |
| docker     | ghcr.io/renovatebot/base-image | 13.59.1 | 13.59.2 |

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-06-14 13:28:19 +00:00
Matthias Baur e0cf904a6a fix(helmv3): skip helm-git repositories (#43932)
Co-authored-by: Copilot copilot@github.com
2026-06-13 11:44:47 +00:00
Tobias Bieniek a73e4d1adc feat(manager/github-actions): support dtolnay/rust-toolchain toolchain input (#43956)
* feat(manager/github-actions): support dtolnay/rust-toolchain `toolchain` input

Extract the `toolchain` input of `dtolnay/rust-toolchain` as a `rust` dependency via the `rust-version` datasource, mirroring the rust-toolchain manager. Sliding-window expressions like `stable 18 months ago` are extracted as-is and rejected by the `rust-release-channel` versioning during lookup.

* feat(manager/github-actions): add rust-version datasource to `supportedDatasources`
2026-06-13 08:04:51 +00:00
renovate[bot] e9ee107b1a fix(deps): update ghcr.io/renovatebot/base-image docker tag to v13.59.1 (main) (#43977)
fix(deps): update ghcr.io/renovatebot/base-image docker tag to v13.59.1

| datasource | package                        | from    | to      |
| ---------- | ------------------------------ | ------- | ------- |
| docker     | ghcr.io/renovatebot/base-image | 13.59.0 | 13.59.1 |

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-06-13 04:28:34 +00:00
renovate[bot] da4e48e030 feat(deps): update ghcr.io/renovatebot/base-image docker tag to v13.59.0 (main) (#43969)
feat(deps): update ghcr.io/renovatebot/base-image docker tag to v13.59.0

| datasource | package                        | from    | to      |
| ---------- | ------------------------------ | ------- | ------- |
| docker     | ghcr.io/renovatebot/base-image | 13.58.8 | 13.59.0 |

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-06-12 19:39:06 +00:00
renovate[bot] 8cd4e2c9a9 fix(deps): update ghcr.io/renovatebot/base-image docker tag to v13.58.8 (main) (#43966)
fix(deps): update ghcr.io/renovatebot/base-image docker tag to v13.58.8

| datasource | package                        | from    | to      |
| ---------- | ------------------------------ | ------- | ------- |
| docker     | ghcr.io/renovatebot/base-image | 13.58.7 | 13.58.8 |

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-06-12 16:33:10 +00:00
renovate[bot] c9277cab03 fix(deps): update ghcr.io/renovatebot/base-image docker tag to v13.58.7 (main) (#43963)
fix(deps): update ghcr.io/renovatebot/base-image docker tag to v13.58.7

| datasource | package                        | from    | to      |
| ---------- | ------------------------------ | ------- | ------- |
| docker     | ghcr.io/renovatebot/base-image | 13.58.6 | 13.58.7 |

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-06-12 12:40:19 +00:00
renovate[bot] 4a2842d629 fix(deps): update ghcr.io/renovatebot/base-image docker tag to v13.58.6 (main) (#43958)
fix(deps): update ghcr.io/renovatebot/base-image docker tag to v13.58.6

| datasource | package                        | from    | to      |
| ---------- | ------------------------------ | ------- | ------- |
| docker     | ghcr.io/renovatebot/base-image | 13.58.5 | 13.58.6 |

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-06-12 10:33:45 +00:00
Martin Costello 40450a840e feat(datasource/github-runners): add macOS Intel labels (#43540)
* feat(datasource/github-runners): add macOS Intel labels

Add `macos-15-intel` and `macos-26-intel` runner labels to the datasource.

* feat(datasource/github-runners): add tests

Add test for upgrading macos-*-intel runners.

* chore(datasource/github-runners): split tests

Split-up the tests into different operating system families.
2026-06-11 20:28:57 +00:00
Martin Costello 6c6621e220 feat(datasource/github-runners): add ubuntu 26 (#43950)
Add support for GitHub Actions `ubuntu-26.04` and `ubuntu-26.04-arm` runners in preview.
2026-06-11 20:28:09 +00:00
renovate[bot] 5a5d8f53f6 fix(deps): update ghcr.io/renovatebot/base-image docker tag to v13.58.5 (main) (#43911)
fix(deps): update ghcr.io/renovatebot/base-image docker tag to v13.58.5

| datasource | package                        | from    | to      |
| ---------- | ------------------------------ | ------- | ------- |
| docker     | ghcr.io/renovatebot/base-image | 13.58.0 | 13.58.5 |

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-06-11 19:16:37 +00:00
Pierluigi Lenoci 09def4f3a7 feat(config): add statusCheckWhen option to control individual Renovate status checks (#42887)
* feat: add generic statusCheckWhen option to control any renovate status check

Replace the artifacts-specific `artifactsCheckWhen` option with a generic
`statusCheckWhen` object that can control when ANY Renovate status check is
emitted. Keys mirror `statusCheckNames`: `artifactError`, `configValidation`,
`mergeConfidence`, `minimumReleaseAge`.

Each key accepts: "always" | "never" | "failed"
- always: set check on every commit (green on success, red on failure)
- never: skip the check entirely
- failed: only set the check when there is a failure (silent on success)

Default values preserve existing behavior:
- artifactError: "failed" (only report failures, as before)
- configValidation: "always"
- mergeConfidence: "always"
- minimumReleaseAge: "always"

The defaults table in docs is autogenerated from the option's `default`
field via `tools/docs` so the docs cannot drift from the source of truth.

Logging is gated so that "skipping" debug lines only fire when there is
something to skip (errors / status set), keeping logs quiet on every
branch run when a check is set to "never".

Example configuration:
```json
{
  "statusCheckWhen": {
    "artifactError": "always",
    "mergeConfidence": "never"
  }
}
```

Signed-off-by: Pierluigi Lenoci <pierluigilenoci@gmail.com>

* refactor(docs): address viceice review — single replace marker, coerceObject, simplify replaceContent call

- Use single replace marker instead of begin/end pair in docs and config.ts
- Use coerceObject from lib/util/object.ts instead of manual (val ?? {}) as Type
- Refactor replaceContent call to match upstream API signature (string, not object)

Signed-off-by: Pierluigi Lenoci <pierluigilenoci@gmail.com>

* fix: fix test for never mode with no errors and format docs

- Add missing config.artifactErrors = [] in test that checks
  'skips status entirely when mode is never with no errors' (beforeEach
  sets artifactErrors to [{fileName: 'some'}], test needs no errors)
- Reformat note block in docs from 4-space to 2-space indent to match
  prettier formatting (custom mkdocs-admonitions plugin expectation)

Signed-off-by: Pierluigi Lenoci <pierluigilenoci@gmail.com>

---------

Signed-off-by: Pierluigi Lenoci <pierluigilenoci@gmail.com>
2026-06-10 14:22:43 +00:00
renovate[bot] 20fe86c10f feat(deps): update ghcr.io/renovatebot/base-image docker tag to v13.58.0 (main) (#43909)
feat(deps): update ghcr.io/renovatebot/base-image docker tag to v13.58.0

| datasource | package                        | from    | to      |
| ---------- | ------------------------------ | ------- | ------- |
| docker     | ghcr.io/renovatebot/base-image | 13.57.1 | 13.58.0 |

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-06-10 11:06:13 +00:00
Roshan Banisetti 5a8b5bbedd feat(platform/gitea,forgejo): use login instead of username for user handles (#43904)
refactor(platform/gitea,forgejo): replace username with login in User types
2026-06-10 06:10:43 +00:00
renovate[bot] b103f93f01 fix(deps): update ghcr.io/renovatebot/base-image docker tag to v13.57.1 (main) (#43903)
fix(deps): update ghcr.io/renovatebot/base-image docker tag to v13.57.1

| datasource | package                        | from    | to      |
| ---------- | ------------------------------ | ------- | ------- |
| docker     | ghcr.io/renovatebot/base-image | 13.57.0 | 13.57.1 |

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-06-10 01:31:23 +00:00
Sebastian Poxhofer dfe806f9ac refactor(gerrit): use schema validated getJson instead of getJsonUnchecked (#43777)
* fix(platform/gerrit): replace getJsonUnchecked with validated getJson

Migrate all getJsonUnchecked calls in lib/modules/platform/gerrit/client.ts
to use Zod-validated getJson. Co-locate schemas in schema.ts with lenient
optional fields to ensure backward compatibility with all existing API responses.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>

* strictly follow previous interfaces

---------

Co-authored-by: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-06-09 17:23:04 +00:00
renovate[bot] ae859faa54 feat(deps): update ghcr.io/renovatebot/base-image docker tag to v13.57.0 (main) (#43893)
feat(deps): update ghcr.io/renovatebot/base-image docker tag to v13.57.0

| datasource | package                        | from    | to      |
| ---------- | ------------------------------ | ------- | ------- |
| docker     | ghcr.io/renovatebot/base-image | 13.56.8 | 13.57.0 |

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-06-09 10:32:22 +00:00
Jérémy Fauvel 5646cbae8c fix: use lockedVersion for currentVersionTimestamp lookup (#42476)
break line
2026-06-09 09:28:35 +00:00
Jiri Daněk def09c2661 fix(github): use base_tree in pushFiles to avoid org ruleset file-path restrictions (#42556)
* fix(github): use base_tree in pushFiles to avoid org ruleset file-path restrictions (#42554)

pushFiles sent the entire repo tree to POST /git/trees without base_tree.
GitHub validates all file paths against org rulesets, rejecting the tree
when it contains protected files (e.g. semgrep.yaml) — even if Renovate
only changed unrelated paths.

Use base_tree (parent commit's tree) with only the changed files from
git diff-tree, so unchanged protected files are inherited without
validation.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>

* test(git): add coverage for getCommitTreeSha and diffCommitTree

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>

* fix(test): assert specific files instead of hardcoding diff count

The test fixture creates 2 known files between develop and
defaultBranch (master_file, file_to_delete), but CI produces 3
changed files — likely a .gitattributes from the CI environment.
Assert on the known files rather than the total count.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>

* fix(git): handle renames, copies, and submodules in diffCommitTree

- Regex now matches multi-char status codes (R100, C100) and
  tab-separated source/target paths for renames and copies.
- Renames emit a deletion for the source path + addition for target.
- Derive tree item type from mode: 160000→commit, 040000→tree,
  otherwise blob.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>

* refactor(git): address review comments in diffCommitTree

Keep git utility types centralized and make diff status handling easier to follow.

Made-with: Cursor

* test(git): cover rename handling in diffCommitTree

Verify that renamed files are emitted as a deletion for the old path and an addition for the new path, matching the tree delta expected by GitHub.

Made-with: Cursor

* fix(git): validate parsed tree SHA

Fail fast when commit output cannot be parsed into a tree SHA so pushFiles does not propagate an invalid base_tree, and cover the failure path in tests.

Made-with: Cursor

* fix(git): enable rename detection and cover remaining diffCommitTree branches

Add -M to diff-tree so Git emits R status for renames, exercising the
existing case 'R' handler. Add focused tests for rename parsing,
submodule mode (160000), and tree mode (040000).

Made-with: Cursor

* fix(git): clarify copy vs rename comment in diffCommitTree

R uses both tab-separated paths (delete old + add new), while C falls
through to default where only the target path matters.

Made-with: Cursor

* refactor(git): remove dead listCommitTree and TreeItem

Nothing imports listCommitTree after the switch to diffCommitTree with
base_tree. Remove the function, its regex, its test, and the TreeItem
interface.

Made-with: Cursor

* refactor(git): tighten DiffTreeItem.type to GitObjectType union

Define GitObjectType = 'blob' | 'tree' | 'commit' and use it in
DiffTreeItem and treeTypeFromMode instead of plain string.

Made-with: Cursor

* fix(git): remove unreachable nullish coalescing in getCommitTreeSha

split()[0] on a non-empty string is always defined, so the ?? ''
fallback was unreachable and caused an uncovered branch in Codecov.

Made-with: Cursor

* fix(git): add v8 ignore for partial branch on throw template literal

v8 reports template literal interpolations inside throw as partial
branch coverage even when the line is tested. Use the established
v8 ignore pattern to suppress the false positive.

Made-with: Cursor

* fix(github): guard pushFiles against empty diff from diffCommitTree

GitHub's POST /git/trees rejects an empty tree array with 422
"Invalid tree info". While prepareCommit already prevents no-op
commits from reaching pushFiles, add a defensive early return so
the failure mode is a clear log message instead of a swallowed 422.

Made-with: Cursor

* docs(github): document hybrid git/REST commit strategy in pushFiles

Restore architectural knowledge from PRs #13824 and #14271 that was
lost when the old "for reasons unknown" comments were replaced. The
push-then-recreate pattern exists because custom refs avoid CI triggers,
REST-created commits get GitHub signing, and GraphQL lacks force-push
and file mode support.

Made-with: Cursor

* fix(git): wrap bare regex literals in regEx() in tests

Use the project's regEx() helper instead of bare /pattern/ in
toMatch and stringMatching calls, consistent with repo conventions.

Made-with: Cursor

* fix(git): revert regEx() in expect.stringMatching (only accepts bare RegExp)

expect.stringMatching() is a Vitest/Jest API that requires a native
RegExp, not the wrapped object from Renovate's regEx() helper.

Made-with: Cursor

* fix(git): drop line count from v8 ignore next

Vitest uses ast-v8-to-istanbul which is AST-aware: it ignores the
entire next AST node (here the whole throw statement), making the
line count unnecessary.

Made-with: Cursor

* refactor(git): replace magic mode strings with GitTreeMode enum

Introduce a documented GitTreeMode enum in types.ts and use it in
treeTypeFromMode, replacing raw '160000'/'040000' literals with named
members linked to the git data model documentation.

Made-with: Cursor

* fix(git): use const object instead of enum for GitTreeMode

Node's TypeScript strip-only mode does not support enum syntax.
Use `as const` object pattern consistent with the rest of the codebase.

Co-authored-by: Cursor <cursoragent@cursor.com>

---------

Co-authored-by: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Co-authored-by: Cursor <cursoragent@cursor.com>
2026-06-09 09:08:20 +00:00
Felipe Santos 33ca9e6ed7 test: fix test cases failing inside devcontainer (#43886) 2026-06-09 06:50:08 +00:00
Alex Waibel 5e4ef7486e fix(manager/flux): pin tag-only OCIRepository digests to spec.ref.digest (#43753)
* fix(flux): pin tag-only OCIRepository digests to separate ref.digest field

* fix(flux): simplify range checks in extractOCIRefTagRange function

* fix(extract): improve handling of OCI reference nodes by using Scalar types

* fix(extract): refactor findOCIRefNodes to accept parsed documents instead of raw content

* fix(extract): update OCIRepository handling to extract tag-only refs with YAML aliases
2026-06-08 19:22:12 +00:00
Sebastian Poxhofer d23bef9637 refactor(schema-utils): add DeepNullish and use it for conda pypi (#43877)
* refactor(schema-utils): add DeepNullish and use it for conda pypi

* docs: add some docs for zod usage
2026-06-08 13:52:58 +00:00
Jan-Otto Kröpke bb147e0414 fix(config/presets): Exclude docker.io/kindest/node from nodejs versioning (#43772)
* fix(lib): Exclude docker.io/kindest/node from nodejs versioning

* Update group.preset.ts
2026-06-08 13:33:38 +00:00
Martijn van der Meij 5e1f88afc6 fix(npm): use packageName for pnpm overrides with range selectors in minimumReleaseAgeExclude (#43477)
* fix(npm): use packageName for pnpm overrides with range selectors in minimumReleaseAgeExclude

For pnpm.overrides entries with version range selectors (e.g. "pkg@<=1.0.0"),
depName contains the full override key including the selector, which is needed
to correctly update package.json. However this caused invalid entries in
minimumReleaseAgeExclude like "fast-xml-parser@<=5.3.5@5.5.7" instead of
"fast-xml-parser@5.5.7", breaking pnpm install with ERR_PNPM_INVALID_MINIMUM_RELEASE_AGE_EXCLUDE.

Fix by using packageName (bare npm package name parsed by @pnpm/parse-overrides)
instead of depName when constructing minimumReleaseAgeExclude entries. Falls back
to depName for dependency types where packageName is not set.

Made-with: Cursor

* test(npm): format pnpm override minimumReleaseAgeExclude test

Use codeBlock helper for expected pnpm-workspace.yaml contents per review.

* test(npm): avoid string concat in shrinkwrap exclude test

Use template literal instead of + to satisfy restrict-plus-operands.

* fix(npm): replace malformed minimumReleaseAgeExclude entries

Skip invalid package@version lines (extra @ after package prefix) when
matching excludes, and replace them instead of appending versions.

* test(npm): cover valid vs malformed exclude matching

* Update lib/modules/manager/npm/artifacts.spec.ts

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

* Update lib/modules/manager/npm/artifacts.spec.ts

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

* test(npm): use codeBlock for expected workspace contents

* fix(npm): remove stale malformed minimumReleaseAgeExclude entries

When a valid exclude entry exists for the same package, drop leftover
malformed lines from the prior double-@ bug instead of leaving them.

* test(npm): avoid string concat in codeBlock expectations

Use template literal instead of + '\n' for prefer-template.

---------

Co-authored-by: Tapio Oikarinen <tapio.oikarinen@hoxhunt.com>
Co-authored-by: Martijn van der Meij <Squixx@users.noreply.github.com>
Co-authored-by: Michael Kriese <michael.kriese@gmx.de>
2026-06-08 13:27:08 +00:00
Tinus Mørch Abell 2abd139cd2 feat(platform/github): support gitUrl option on github (#43531)
* feat(config): add github to gitUrl supportedPlatforms

Declare GitHub as a supported platform for the gitUrl option so users
can configure ssh/endpoint URL resolution on github.com and GHES.

Wiring in the github platform module follows in subsequent commits.

Refs: renovatebot/renovate#43086

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>

* feat(platform/github): fetch sshUrl from repoInfoQuery

Add sshUrl to the GraphQL repository query and to the GhRepo type so
the platform can resolve SSH-based git remotes. Typed as nullable
to match the gitlab pattern and to allow a missing-field error path.

Refs: renovatebot/renovate#43086

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>

* feat(platform/github): add getRepoUrl helper

Introduce a getRepoUrl helper that returns the repository git URL based
on the gitUrl option:
- 'ssh' uses the sshUrl from the GraphQL repo response; throws
  CONFIG_GIT_URL_UNAVAILABLE if not available
- 'default' and 'endpoint' build an https URL from the configured
  endpoint with credentials embedded (current behavior)

The helper is unused in this commit; initRepo wiring follows.

Refs: renovatebot/renovate#43086

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>

* feat(platform/github): support gitUrl in initRepo

Destructure gitUrl from RepoParams and replace the inline URL
construction with getRepoUrl calls. The working URL uses the fork's
ssh_url when running in fork mode, otherwise the GraphQL repo.sshUrl.
The upstream URL (used when forkCreation and a parentRepo is set)
uses repo.sshUrl, which is the parent's URL because the GraphQL
query runs before the fork swap.

GhRestRepo gains an ssh_url field so findFork/createFork responses
can carry the fork's SSH URL forward.

Refs: renovatebot/renovate#43086

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>

* test(platform/github): cover gitUrl branches

Add unit tests for getRepoUrl in utils.spec.ts and three integration
tests in index.spec.ts that exercise initRepo with gitUrl=ssh:

- ssh URL is forwarded to git.initRepo
- missing sshUrl with gitUrl=ssh throws CONFIG_GIT_URL_UNAVAILABLE
- fork mode uses the fork's ssh_url for url and the parent's sshUrl
  for upstreamUrl

initRepoMock and forkInitRepoMock now include sshUrl in the GraphQL
response so existing tests continue to populate the field that the
new code path reads.

Refs: renovatebot/renovate#43086

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>

* docs: note github-specific gitUrl behavior

Document that 'default' and 'endpoint' produce the same URL on GitHub,
that 'ssh' uses the repository's sshUrl, and that fork mode propagates
SSH selection to both the working URL and the upstream URL.

Refs: renovatebot/renovate#43086

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>

* refactor(platform/github): pass parsed URL to getRepoUrl

Accept a pre-parsed URL in getRepoUrl instead of re-parsing the
endpoint string inside the helper. The endpoint is validated during
initPlatform so the helper no longer needs its own null check. The
caller now parses once and passes the URL to both initRepo call
sites; the helper clones it before mutating.

Also assert config.repository as non-null at the initRepo call site,
fixing the TS2345 error reported by the lint-other job.

* Update docs/usage/self-hosted-configuration.md

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

---------

Co-authored-by: Claude Opus 4.7 <noreply@anthropic.com>
Co-authored-by: Michael Kriese <michael.kriese@gmx.de>
2026-06-08 11:51:46 +00:00
github-actions[bot] e065ed5da8 feat(data): automatic update of static data (#43847)
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
Co-authored-by: Michael Kriese <michael.kriese@visualon.de>
2026-06-08 11:43:29 +00:00
renovate[bot] 778b05c5d7 fix(deps): update ghcr.io/renovatebot/base-image docker tag to v13.56.8 (main) (#43863)
fix(deps): update ghcr.io/renovatebot/base-image docker tag to v13.56.8

| datasource | package                        | from    | to      |
| ---------- | ------------------------------ | ------- | ------- |
| docker     | ghcr.io/renovatebot/base-image | 13.56.7 | 13.56.8 |

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-06-08 03:28:26 +00:00
renovate[bot] 813132441d docs: update references to astral-sh/setup-uv to v8.2.0 (main) (#43857)
docs: update references to astral-sh/setup-uv to v8.2.0

| datasource  | package            | from   | to     |
| ----------- | ------------------ | ------ | ------ |
| github-tags | astral-sh/setup-uv | v8.1.0 | v8.2.0 |

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-06-08 00:26:59 +00:00
renovate[bot] 9bac78590b fix(deps): update ghcr.io/renovatebot/base-image docker tag to v13.56.7 (main) (#43856)
fix(deps): update ghcr.io/renovatebot/base-image docker tag to v13.56.7

| datasource | package                        | from    | to      |
| ---------- | ------------------------------ | ------- | ------- |
| docker     | ghcr.io/renovatebot/base-image | 13.56.6 | 13.56.7 |

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-06-07 21:27:19 +00:00
renovate[bot] 52d88af2cb fix(deps): update ghcr.io/renovatebot/base-image docker tag to v13.56.6 (main) (#43853)
fix(deps): update ghcr.io/renovatebot/base-image docker tag to v13.56.6

| datasource | package                        | from    | to      |
| ---------- | ------------------------------ | ------- | ------- |
| docker     | ghcr.io/renovatebot/base-image | 13.56.5 | 13.56.6 |

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-06-07 11:28:17 +00:00
renovate[bot] 5d451e9729 fix(deps): update ghcr.io/renovatebot/base-image docker tag to v13.56.5 (main) (#43851)
fix(deps): update ghcr.io/renovatebot/base-image docker tag to v13.56.5

| datasource | package                        | from    | to      |
| ---------- | ------------------------------ | ------- | ------- |
| docker     | ghcr.io/renovatebot/base-image | 13.56.4 | 13.56.5 |

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-06-07 05:31:18 +00:00
renovate[bot] 9245b57c58 chore(deps): update linters to v1.67.0 (main) (#42416)
* chore(deps): update linters to v1.67.0

| datasource | package | from   | to     |
| ---------- | ------- | ------ | ------ |
| npm        | oxlint  | 1.57.0 | 1.67.0 |

* test(oxlint): deactivate new tests for now

* fixup linting errors

* revert googleAuth mock implementation

---------

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: secustor <sebastian@poxhofer.at>
2026-06-06 14:09:05 +00:00
Jamie Tanna 0ba948cb85 fix(types): allow global config to be set in repositories (#43837)
As we appear to document this [0] as behaviour that's possible.

This make sense to be allowed, and to make it so a self-hosted
administrator can set more controlled settings across their configured
repos.

[0]: https://github.com/renovatebot/renovate/blob/6e411730a05a642c22ffa5fa4ab71f0eea4cdad2/lib/config/secrets.spec.ts#L42-L44
2026-06-06 08:56:07 +00:00
Jamie Tanna 460fa82cf5 fix(config/validation): validate children of arrays in global config (#43836)
* test(config/validation): document existing lack of coverage

So when we change it in the future, we have a failing test.

* fix(config/validation): validate children of arrays in global config

As we previously weren't doing so.
2026-06-06 08:54:16 +00:00