33 Commits

Author SHA1 Message Date
Jamie Tanna 64aa6497b9 fix(manager/github-actions): relock when regenerating actions.lock (#47294)
As noted in #47292, since `gh actions-lock` v0.2.0 locked pins are
sticky: running `gh actions-lock` only resolves refs that the lockfile
doesn't record yet.

If a ref updates (i.e. `pnpm/setup@v3.0.0` to `pnpm/setup@v3.1.1`), then
`gh actions-lock` fails with a `Ref changed` error and `Unused lockfile
entry`, and writes nothing out, leaving the branch in an unusable state.

Per v0.2.0's release notes, we should use `--relock` to re-resolve every
ref and rebuilds the lockfile graph.

This updates floating tags i.e. `@v4` when occurring, because they are
technically a floating tag that has now updated.

Co-authored-by: Claude Sonnet 5.5 <jamie.tanna+claude-code@mend.io>
2026-10-22 08:01:28 +00:00
renovate[bot] b28f4eb4b7 docs: update references to astral-sh/setup-uv to v10.3.0 (main) (#46932)
docs: update references to astral-sh/setup-uv to v10.3.0

| datasource  | package            | from    | to      |
| ----------- | ------------------ | ------- | ------- |
| github-tags | astral-sh/setup-uv | v10.2.0 | v10.3.0 |

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-10-12 02:23:36 +00:00
renovate[bot] 3b0c2070b5 docs: update references to astral-sh/setup-uv to v10.2.0 (main) (#46506)
docs: update references to astral-sh/setup-uv to v10.2.0

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

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-09-28 00:26:26 +00:00
Jamie Tanna 4a83bc324c docs(manager/github-actions): count how many Actions we support (#46233)
To brag a little bit, and because it's a long table!
2026-09-15 19:59:59 +00:00
Jamie Tanna 343fed8955 docs(manager/github-actions): generate one combined first-party and community table (#45875)
Similar to how we already generate a list of the community actions we
support, we should also generate which first-party Actions from GitHub
are supported, and simplify some of the wording in the docs.

Instead of duplicating this, we can instead move them into a single
section in the documentation.

Co-authored-by: Claude Sonnet 5 <jamie.tanna+claude-code@mend.io>
2026-09-14 08:07:25 +00:00
renovate[bot] b6ffadc70c docs: update references to astral-sh/setup-uv to v10.1.0 (main) (#45921)
docs: update references to astral-sh/setup-uv to v10.1.0

| datasource  | package            | from    | to      |
| ----------- | ------------------ | ------- | ------- |
| github-tags | astral-sh/setup-uv | v10.0.1 | v10.1.0 |

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-09-14 01:25:43 +00:00
renovate[bot] 42cf188fdc chore(deps): update dependency astral-sh/setup-uv to v10 (main) (#45808)
chore(deps): update dependency astral-sh/setup-uv to v10

| datasource  | package            | from   | to      |
| ----------- | ------------------ | ------ | ------- |
| github-tags | astral-sh/setup-uv | v9.0.0 | v10.0.1 |

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-09-09 12:46:52 +00:00
Sebastian Poxhofer 69e05233e8 feat(manager/github-actions): add workflow depType for reusable workflow calls (#45443)
* feat(manager/github-actions): add `workflow` depType for reusable workflow calls

A job-level `uses:` pointing at `owner/repo/.github/workflows/<file>.yml@<ref>`
calls a reusable workflow rather than running an action, but both got the
`action` depType, so `matchDepTypes` could not tell them apart.

Give a reference whose sub-path is exactly `.github/workflows/<file>.yml|.yaml`
the new `workflow` depType. Every other sub-path, such as
`github/codeql-action/init`, stays an action.

The existing depType-keyed sites now accept both values, so nothing else
changes behaviour: the `actions.lock` file records reusable workflow calls too,
and `helpers:pinGitHubActionDigests` pinned them before this split.

* Apply suggestions from code review

Co-authored-by: Sebastian Poxhofer <secustor@users.noreply.github.com>
2026-08-25 11:52:05 +00:00
Jamie Tanna fba1a9de30 feat(manager/github-actions): add support for Actions Lockfiles (#45199)
* refactor(manager/github-actions): make `extractPackageFile` async

As part of follow-up changes we'll need to read `.github/workflows/actions.lock`
while extracting, which requires we are an async function.

To reduce the diff, we can prefactor this change first.

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

* feat(manager/github-actions): add support for Actions Lockfiles

In June, GitHub announced a public preview for the GitHub Actions
lockfile functionality[0].

To add support for this, we can extend our support for GitHub Actions to
handle the presence of an `actions.lock` file, and if so, update it
after updating other manager files.

Although our ideal case would be to have a pure Typescript-based parsing
and updating of the `actions.lock`, due to the early nature of the
Actions Lockfile syntax, and its lack of stability, we can invoke the
`gh actions-lock` extension when updating.

After the schema has reached a v1 release, we can then migrate to
Typescript.

To make sure that the version of the `actions-lock` extension is always
version pinned, we can expose a `constraints` to control the version,
but allow Renovate to keep the pinned default updated as needed.

This doesn't imply that we have support for `lockFileMaintenance`, as we
are only updating the lockfile when there is a dependency update, not
periodically recreating the lockfile from the current ranges.

`gh actions-lock` re-reads every workflow from disk and rewrites the
whole lockfile, so it does not fit `updateArtifacts`, which is called
once per updated package file.

We can instead follow the shape the `npm` manager uses for its
lock files, and have `processBranch` invoke this once per branch, after
every updated package file has been written to disk.

We skip workflows that aren't onboarded to the lockfile, but still run
for any other package file, as a local composite action can be a
transitive dependency of a workflow which is.

`gh actions-lock` rewrites the workflows it manages back to plain refs
when it regenerates them, which strips out any inline digest pin:

```diff
-        uses: actions/setup-java@1bcf9fb12c # v5.4.0
+        uses: actions/setup-java@v5.7.0
```

This would lead to a repository with `pinDigests` set "flip flopping",
and would cause a lot of erroneous noise for repository owners.

Instead, we can make sure that:

- we don't suggest a `pinDigest` for workflows that are managed by the
  lockfile
- digest pinning is still enabled for `docker://` references
- already-committed digests are updated when they're present - we only
  avoid suggesting /new/ digests to be pinned

Co-authored-by: Sebastian Poxhofer <secustor@users.noreply.github.com>
Co-authored-by: Claude Opus 5 <jamie.tanna+claude-code@mend.io>
Co-authored-by: Claude Fable 5 <jamie.tanna+claude-code@mend.io>

[0]: https://github.com/github/actions-lockfile

* coverage

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

* fixup! feat(manager/github-actions): add support for Actions Lockfiles

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

---------

Co-authored-by: Claude Opus 5 <jamie.tanna+claude-code@mend.io>
2026-08-11 11:55:06 +00:00
renovate[bot] 7840681f13 chore(deps): update dependency astral-sh/setup-uv to v9 (main) (#45100)
chore(deps): update dependency astral-sh/setup-uv to v9

| datasource  | package            | from   | to     |
| ----------- | ------------------ | ------ | ------ |
| github-tags | astral-sh/setup-uv | v8.3.2 | v9.0.0 |

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-08-06 07:57:38 +00:00
Sebastian Poxhofer fa17e59984 feat(github-actions): add support for pnpm/setup (#45094)
* refactor(manager/github-actions): return dependency arrays from community `with:` schemas

A `withSchema` now yields `PackageDependency[]` directly, instead of a
`{ val, ...meta }` object whose extra fields were merged in through an untyped
`Record<string, unknown>`. Schemas describe the dependency they find, and a
single step may yield more than one.

`isInvalid` moves out of `CommunityActionConfig` into `valSchema`, its only
caller. The config fields are now applied to every dependency a schema yields.

No behavior change.

* feat(manager/github-actions): support `pnpm/setup`

`pnpm/setup` replaces `pnpm/action-setup` for pnpm 11+. Its `version:` input
resolves as the `pnpm` package, and its `runtime:` input as the JavaScript
runtime to install - `node`, `bun` or `deno`, named as `<name>@<version>` to
match pnpm's `packageManager` field syntax.

An unknown runtime name is skipped as `invalid-name`, so a typo does not pass
silently.
2026-08-06 05:05:41 +00:00
renovate[bot] 6f1dc71a61 docs: update references to astral-sh/setup-uv to v8.3.2 (main) (#44516)
docs: update references to astral-sh/setup-uv to v8.3.2

| datasource  | package            | from   | to     |
| ----------- | ------------------ | ------ | ------ |
| github-tags | astral-sh/setup-uv | v8.3.0 | v8.3.2 |

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-07-13 00:32:05 +00:00
renovate[bot] 59e96e1cf3 docs: update references to astral-sh/setup-uv to v8.3.0 (main) (#44373)
docs: update references to astral-sh/setup-uv to v8.3.0

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

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-07-06 00:31:51 +00:00
Sebastian Poxhofer a84fb3de11 feat(manager/github-actions): support parallel steps (#44341) 2026-07-02 13:44:38 +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
Jamie Tanna 4bf6bd9b92 docs(manger/github-actions): reword "community actions" section (#43829)
* docs(manger/github-actions): reword "community actions" section

As some follow-ups to 27a3f5871f, we
can slightly reword the intro to add some more information about what
these target.

* docs(manager/github-actions): document why there may not be a `packageName`

* docs(manager/github-actions): generate a table for Actions and their `with`s

To provide further clarity on how each of the Actions' `with`s are used,
we can make this more explicit in our autogenerated docs, providing:

- which field(s) are extracted, taken from their Zod schema (with help
  from Claude Opus to extract this)
- note the dependency updating, and where it may be determined from the
  given `withSchema`

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

---------

Co-authored-by: Claude Opus 4.7 <jamie.tanna+claude-code@mend.io>
2026-06-05 16:05:15 +00:00
Michael Kriese 27a3f5871f feat(github-actions): add community actions (#43821)
* feat(github-actions): add community actions

* test: fix test
2026-06-05 08:23:11 +00:00
Michael Kriese 70895fa838 feat(github-actions): add aquasecurity trivy actions (#42782) 2026-04-21 09:11:59 +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 e983daa75d feat(github-actions): Support digests for non-semver refs (#40225)
* feat(github-actions): Support non-semver refs (tags and branches)

* refactor(github-actions): drop ref= prefix, use bare token comments

Address review feedback: use bare `# cargo-llvm-cov` instead of
`# ref=cargo-llvm-cov` for non-semver pin comments, consistent with
how version comments work (`# v4.0.0`).

- Rename pinnedVersionRe -> pinTokenRe, add bareTokenRe fallback
- Add `ref` field to CommentData, separate from pinnedVersion
- Guard replaceString extension to only use ref for SHA-pinned actions
- Remove redundant autoReplaceStringTemplate override
- Deduplicate versionLikeRe (export from parse.ts)
- Add datasource assertions to non-semver tests

* refactor(github-actions): remove unreachable parseComment branch

* test(github-actions): add coverage for non-version ref fallback
2026-03-20 05:57:41 +00:00
Trim21 71674b73bf feat(github-actions): support golangci-lint version defined in golangci-lint-action (#41632)
* feat: support golangci-lint version defined in golangci-lint-action

* feat: add golangci-lint-action to supported community actions
2026-03-03 18:02:01 +00:00
Aspen ed5ad43e2b feat(managers/github-actions): extract and update version for pypa/hatch@install action (#38674)
* feat(github-actions): extract and update version for `pypa/hatch@install` action

* docs(managers/github-actions): add pypa install action to community uses-with list
2025-10-27 09:45:52 +00:00
Trim21 ff290b2ed3 feat(github-actions): add some community action support (#34791)
Co-authored-by: Michael Kriese <michael.kriese@gmx.de>
2025-08-07 16:17:21 +00:00
Jack Baldry d4a25ff8ac feat(github-actions): Also allow forward slash to separate semantic version from a tag prefix (#35431)
Signed-off-by: Jack Baldry <jack.baldry@grafana.com>
2025-05-07 11:00:13 +00:00
Rhys Arkins 65324ac588 feat(github-actions): Support actions/setup-node/go/python with:node-version (#34662)
Co-authored-by: Michael Kriese <michael.kriese@visualon.de>
2025-03-07 12:59:35 +00:00
HonkingGoose c6824223aa docs: update references to Ubuntu versions (#28701)
Co-authored-by: Michael Kriese <michael.kriese@visualon.de>
2024-04-29 15:14:21 +00:00
Artem Kamenev 27eb84f7fb feat(github-actions): add support for version tag prefixes (#27882) 2024-03-13 19:11:16 +00:00
Artem Kamenev 3b4b7f1ff3 feat(github-actions): support ratchet comments (#27846)
Co-authored-by: HonkingGoose <34918129+HonkingGoose@users.noreply.github.com>
Co-authored-by: Rhys Arkins <rhys@arkins.net>
2024-03-12 11:30:43 +00:00
HonkingGoose 08629cfd29 docs: bump actions/checkout version in examples (#24545) 2023-09-20 10:01:23 +00:00
Patrick Schratz 5ff6466919 feat(manager/github-actions): Support for Gitea and Forgejo actions within github-actions manager (#24336)
Co-authored-by: Michael Kriese <michael.kriese@visualon.de>
2023-09-10 09:11:15 +00:00
PeterNitsche 1ecaab241d feat(github-actions): support GitHub actions runners (#23633)
Co-authored-by: HonkingGoose <34918129+HonkingGoose@users.noreply.github.com>
2023-08-08 19:59:41 +00:00
Michael Kriese 6b11746559 docs(github-actions): simplify sample (#23407) 2023-07-17 13:05:15 +00:00
Rhys Arkins dca3418bbd refactor: lib/modules (#14488)
Moves datasource, manager, platform and versioning code from lib/ into new lib/modules/

BREAKING CHANGE: External tools must update paths to datasource, manager, platform and versioning
2022-03-04 09:04:02 +01:00