Compare commits

..

418 Commits

Author SHA1 Message Date
CrazyMax
6b020dcb5f Merge pull request #1099 from crazy-max/inputlist-trim-opt
Some checks failed
cosign-releases-json / generate (push) Has been cancelled
cosign-releases-json / open-pr (push) Has been cancelled
compose-releases-json / generate (push) Has been cancelled
compose-releases-json / open-pr (push) Has been cancelled
compose-lab-releases-json / generate (push) Has been cancelled
compose-lab-releases-json / open-pr (push) Has been cancelled
buildx-releases-json / generate (push) Has been cancelled
buildx-releases-json / open-pr (push) Has been cancelled
buildx-lab-releases-json / generate (push) Has been cancelled
buildx-lab-releases-json / open-pr (push) Has been cancelled
build / build (20) (push) Has been cancelled
build / build (24) (push) Has been cancelled
codeql / analyze (push) Has been cancelled
test / test (20, ubuntu-24.04-arm) (push) Has been cancelled
test / test (20, ubuntu-latest) (push) Has been cancelled
test / test (24, ubuntu-24.04-arm) (push) Has been cancelled
test / test (24, ubuntu-latest) (push) Has been cancelled
test / prepare-itg (push) Has been cancelled
test / test-itg (push) Has been cancelled
update-deps / update (buildkit) (push) Has been cancelled
update-deps / update (buildx) (push) Has been cancelled
update-deps / update (compose) (push) Has been cancelled
update-deps / update (cosign) (push) Has been cancelled
update-deps / update (docker) (push) Has been cancelled
update-deps / update (regctl) (push) Has been cancelled
update-deps / update (undock) (push) Has been cancelled
validate / prepare (push) Has been cancelled
validate / validate (push) Has been cancelled
zizmor / run (push) Has been cancelled
publish / publish (push) Has been cancelled
util: add opt-in whitespace preservation for multiline inputs
2026-04-24 15:04:00 +02:00
CrazyMax
7735d988c2 Merge pull request #1098 from docker/dependabot/npm_and_yarn/actions/core-3.0.1
build(deps): bump @actions/core from 3.0.0 to 3.0.1
2026-04-24 15:03:08 +02:00
CrazyMax
b1c438e45d Merge pull request #1094 from docker/dependabot/github_actions/crazy-max-dot-github-d5da4ebb4f
build(deps): bump the crazy-max-dot-github group across 1 directory with 3 updates
2026-04-24 15:02:31 +02:00
CrazyMax
113a6a2593 Merge pull request #1096 from docker/dependabot/npm_and_yarn/actions/github-9.1.1
build(deps): bump @actions/github from 9.1.0 to 9.1.1
2026-04-24 15:02:12 +02:00
CrazyMax
6a4f724ca6 util: add opt-in whitespace preservation for multiline inputs
Signed-off-by: CrazyMax <1951866+crazy-max@users.noreply.github.com>
2026-04-24 14:54:53 +02:00
dependabot[bot]
0e25bd8416 build(deps): bump @actions/core from 3.0.0 to 3.0.1
Bumps [@actions/core](https://github.com/actions/toolkit/tree/HEAD/packages/core) from 3.0.0 to 3.0.1.
- [Changelog](https://github.com/actions/toolkit/blob/main/packages/core/RELEASES.md)
- [Commits](https://github.com/actions/toolkit/commits/HEAD/packages/core)

---
updated-dependencies:
- dependency-name: "@actions/core"
  dependency-version: 3.0.1
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-04-24 12:50:14 +00:00
dependabot[bot]
175f68dacc build(deps): bump @actions/github from 9.1.0 to 9.1.1
Bumps [@actions/github](https://github.com/actions/toolkit/tree/HEAD/packages/github) from 9.1.0 to 9.1.1.
- [Changelog](https://github.com/actions/toolkit/blob/main/packages/github/RELEASES.md)
- [Commits](https://github.com/actions/toolkit/commits/HEAD/packages/github)

---
updated-dependencies:
- dependency-name: "@actions/github"
  dependency-version: 9.1.1
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-04-24 12:50:09 +00:00
dependabot[bot]
e1b4350c60 build(deps): bump the crazy-max-dot-github group across 1 directory with 3 updates
Bumps the crazy-max-dot-github group with 3 updates in the / directory: [crazy-max/.github/.github/workflows/releases-json.yml](https://github.com/crazy-max/.github), [crazy-max/.github/.github/workflows/pr-assign-author.yml](https://github.com/crazy-max/.github) and [crazy-max/.github/.github/workflows/zizmor.yml](https://github.com/crazy-max/.github).


Updates `crazy-max/.github/.github/workflows/releases-json.yml` from 1.6.0 to 1.7.1
- [Release notes](https://github.com/crazy-max/.github/releases)
- [Commits](d89fe92d80...64a0bfaf6e)

Updates `crazy-max/.github/.github/workflows/pr-assign-author.yml` from 1.6.0 to 1.7.1
- [Release notes](https://github.com/crazy-max/.github/releases)
- [Commits](d89fe92d80...64a0bfaf6e)

Updates `crazy-max/.github/.github/workflows/zizmor.yml` from 1.6.0 to 1.7.1
- [Release notes](https://github.com/crazy-max/.github/releases)
- [Commits](d89fe92d80...64a0bfaf6e)

---
updated-dependencies:
- dependency-name: crazy-max/.github/.github/workflows/pr-assign-author.yml
  dependency-version: 1.7.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: crazy-max-dot-github
- dependency-name: crazy-max/.github/.github/workflows/releases-json.yml
  dependency-version: 1.7.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: crazy-max-dot-github
- dependency-name: crazy-max/.github/.github/workflows/zizmor.yml
  dependency-version: 1.7.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: crazy-max-dot-github
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-04-24 12:49:55 +00:00
CrazyMax
0dd731c97a Merge pull request #1095 from docker/dependabot/npm_and_yarn/fast-xml-parser-5.7.1
build(deps): bump fast-xml-parser from 5.5.7 to 5.7.1
2026-04-24 14:48:32 +02:00
CrazyMax
390084ea84 Merge pull request #1097 from docker/dependabot/npm_and_yarn/actions/http-client-4.0.1
build(deps): bump @actions/http-client from 4.0.0 to 4.0.1
2026-04-24 14:48:15 +02:00
dependabot[bot]
50fee370fb build(deps): bump @actions/http-client from 4.0.0 to 4.0.1
Bumps [@actions/http-client](https://github.com/actions/toolkit/tree/HEAD/packages/http-client) from 4.0.0 to 4.0.1.
- [Changelog](https://github.com/actions/toolkit/blob/main/packages/http-client/RELEASES.md)
- [Commits](https://github.com/actions/toolkit/commits/HEAD/packages/http-client)

---
updated-dependencies:
- dependency-name: "@actions/http-client"
  dependency-version: 4.0.1
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-04-23 22:54:28 +00:00
dependabot[bot]
38aa026d97 build(deps): bump fast-xml-parser from 5.5.7 to 5.7.1
Bumps [fast-xml-parser](https://github.com/NaturalIntelligence/fast-xml-parser) from 5.5.7 to 5.7.1.
- [Release notes](https://github.com/NaturalIntelligence/fast-xml-parser/releases)
- [Changelog](https://github.com/NaturalIntelligence/fast-xml-parser/blob/master/CHANGELOG.md)
- [Commits](https://github.com/NaturalIntelligence/fast-xml-parser/compare/v5.5.7...v5.7.1)

---
updated-dependencies:
- dependency-name: fast-xml-parser
  dependency-version: 5.7.1
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-04-23 05:43:01 +00:00
CrazyMax
d6de532537 Merge pull request #1093 from docker/dependabot/github_actions/actions/setup-node-6.4.0
build(deps): bump actions/setup-node from 6.3.0 to 6.4.0
2026-04-22 10:13:31 +02:00
dependabot[bot]
62fc276169 build(deps): bump actions/setup-node from 6.3.0 to 6.4.0
Bumps [actions/setup-node](https://github.com/actions/setup-node) from 6.3.0 to 6.4.0.
- [Release notes](https://github.com/actions/setup-node/releases)
- [Commits](53b83947a5...48b55a011b)

---
updated-dependencies:
- dependency-name: actions/setup-node
  dependency-version: 6.4.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-04-21 22:53:39 +00:00
CrazyMax
344dbdb9dc Merge pull request #1091 from docker/dependabot/github_actions/github/codeql-action-4.35.2
build(deps): bump github/codeql-action from 4.35.1 to 4.35.2
2026-04-21 11:32:25 +02:00
CrazyMax
c59155252c Merge pull request #1092 from docker/bot/docker-releases-json
Update `.github/docker-releases.json`
2026-04-21 11:32:07 +02:00
crazy-max
b4901a73b4 github: update .github/docker-releases.json
Signed-off-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2026-04-21 00:54:46 +00:00
dependabot[bot]
3e7b0b1fc0 build(deps): bump github/codeql-action from 4.35.1 to 4.35.2
Bumps [github/codeql-action](https://github.com/github/codeql-action) from 4.35.1 to 4.35.2.
- [Release notes](https://github.com/github/codeql-action/releases)
- [Changelog](https://github.com/github/codeql-action/blob/main/CHANGELOG.md)
- [Commits](c10b8064de...95e58e9a2c)

---
updated-dependencies:
- dependency-name: github/codeql-action
  dependency-version: 4.35.2
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-04-17 22:54:15 +00:00
CrazyMax
7de38a449e Merge pull request #1088 from crazy-max/ci-update-mac
ci: update macos runners to 26
2026-04-17 11:00:03 +02:00
CrazyMax
598ee76eb5 ci: update macos runners to 26
Signed-off-by: CrazyMax <1951866+crazy-max@users.noreply.github.com>
2026-04-17 10:17:50 +02:00
CrazyMax
c0802dd0a0 Merge pull request #1090 from crazy-max/docker-install-retry
docker(install): retry macOS archive installs on transient apt mirror failures
2026-04-17 10:17:26 +02:00
CrazyMax
c3d1cd7711 docker(install): retry macOS archive installs on transient apt mirror failures
Signed-off-by: CrazyMax <1951866+crazy-max@users.noreply.github.com>
2026-04-17 00:31:21 +02:00
CrazyMax
2f1916fd72 Merge pull request #1087 from crazy-max/lima-update
docker(install): update lima images
2026-04-16 23:36:16 +02:00
CrazyMax
dabf20b4a3 Merge pull request #1089 from crazy-max/docker-install-diag
docker(install): lima install diagnostics for Docker provisioning failures
2026-04-16 23:36:00 +02:00
CrazyMax
964c3b5ae3 docker(install): lima install diagnostics for Docker provisioning failures
Signed-off-by: CrazyMax <1951866+crazy-max@users.noreply.github.com>
2026-04-16 23:06:48 +02:00
CrazyMax
18d695c762 docker(install): update lima images
Signed-off-by: CrazyMax <1951866+crazy-max@users.noreply.github.com>
2026-04-16 16:59:54 +02:00
CrazyMax
3c03d1910f Merge pull request #1084 from docker/deps/compose-version
chore(deps): update Compose version to v5.1.3
2026-04-16 11:33:00 +02:00
crazy-max
ad1a5ac48b chore(deps): update Compose version to v5.1.3
Signed-off-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2026-04-16 08:45:29 +00:00
CrazyMax
9aa53743c1 Merge pull request #1074 from docker/bot/compose-releases-json
Update `.github/compose-releases.json`
2026-04-16 10:45:15 +02:00
CrazyMax
28bbe39846 Merge pull request #1077 from docker/deps/compose-version
chore(deps): update Compose version to v5.1.2
2026-04-16 10:44:55 +02:00
crazy-max
86b9869cba github: update .github/compose-releases.json
Signed-off-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2026-04-16 08:44:54 +00:00
crazy-max
f5b8aff81f chore(deps): update Compose version to v5.1.2
Signed-off-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2026-04-16 08:44:44 +00:00
CrazyMax
8c1bb17a01 Merge pull request #1076 from docker/deps/regctl-version
chore(deps): update Regctl version to v0.11.3
2026-04-16 10:44:29 +02:00
crazy-max
6e93a02244 chore(deps): update Regctl version to v0.11.3
Signed-off-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2026-04-16 08:35:56 +00:00
CrazyMax
630331ba64 Merge pull request #1078 from docker/deps/docker-version
chore(deps): update Docker version to 29.4
2026-04-16 10:35:40 +02:00
crazy-max
89e1efc290 chore(deps): update Docker version to 29.4
Signed-off-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2026-04-16 08:35:33 +00:00
CrazyMax
1cd4a5a66a Merge pull request #1079 from docker/deps/cosign-version
chore(deps): update Cosign version to v3.0.6
2026-04-16 10:35:19 +02:00
crazy-max
3d5c1a72f5 chore(deps): update Cosign version to v3.0.6
Signed-off-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2026-04-16 08:16:13 +00:00
CrazyMax
4c1404ea24 Merge pull request #1082 from crazy-max/update-deps-push-change
ci(update-deps): update push trigger
2026-04-16 10:16:01 +02:00
CrazyMax
bfb1b882cf ci(update-deps): update push trigger
Signed-off-by: CrazyMax <1951866+crazy-max@users.noreply.github.com>
2026-04-16 10:14:35 +02:00
CrazyMax
e2e67fece1 Merge pull request #1081 from docker/fix-update-deps-2
fix(ci): preserve version replacements in update-deps workflow
2026-04-16 10:10:53 +02:00
CrazyMax
47d08eafbf fix(ci): preserve version replacements in update-deps workflow
Signed-off-by: CrazyMax <1951866+crazy-max@users.noreply.github.com>
2026-04-16 10:07:41 +02:00
CrazyMax
b35c65c0cf Merge pull request #1080 from docker/fix-update-deps
ci: fix update-deps workflow
2026-04-16 10:03:00 +02:00
CrazyMax
34cb2176ef ci: fix update-deps workflow
Signed-off-by: CrazyMax <1951866+crazy-max@users.noreply.github.com>
2026-04-16 09:57:33 +02:00
CrazyMax
8d7f29fb5f Merge pull request #1075 from docker/update-dev-deps
ci: automated dependency update workflow
2026-04-16 08:43:02 +02:00
CrazyMax
52ea39a90d ci: automated dependency update workflow
Signed-off-by: CrazyMax <1951866+crazy-max@users.noreply.github.com>
2026-04-16 08:41:56 +02:00
CrazyMax
c9ad217b4e Merge pull request #1073 from crazy-max/fix-zizmor
ci(zizmor): update rules
2026-04-15 16:28:07 +02:00
CrazyMax
887bd3e2d2 ci(zizmor): update rules
Signed-off-by: CrazyMax <1951866+crazy-max@users.noreply.github.com>
2026-04-15 16:10:02 +02:00
CrazyMax
b3a03f4303 Merge pull request #1072 from crazy-max/handlebars-compile
util: add handlebars render helper
2026-04-15 14:40:42 +02:00
CrazyMax
834b59514f util: add handlebars render helper
Signed-off-by: CrazyMax <1951866+crazy-max@users.noreply.github.com>
2026-04-15 10:15:43 +02:00
CrazyMax
e7e22d0351 Merge pull request #1067 from crazy-max/git-context-pr
Some checks failed
publish / publish (push) Has been cancelled
buildx(build): stabilize pull request git contexts
2026-04-14 19:09:10 +02:00
CrazyMax
2730cbaedb Merge pull request #1066 from docker/dependabot/npm_and_yarn/actions/github-9.1.0
build(deps): bump @actions/github from 9.0.0 to 9.1.0
2026-04-14 11:01:11 +02:00
CrazyMax
25592884aa Merge pull request #1070 from docker/dependabot/github_actions/peter-evans/create-pull-request-8.1.1
build(deps): bump peter-evans/create-pull-request from 8.1.0 to 8.1.1
2026-04-14 10:59:46 +02:00
CrazyMax
69796bb711 Merge pull request #1069 from docker/dependabot/github_actions/docker/bake-action-7.1.0
build(deps): bump docker/bake-action from 7.0.0 to 7.1.0
2026-04-14 10:59:26 +02:00
CrazyMax
f576b4c55e Merge pull request #1068 from docker/dependabot/github_actions/actions/github-script-9.0.0
build(deps): bump actions/github-script from 8.0.0 to 9.0.0
2026-04-14 10:59:09 +02:00
CrazyMax
d4016fedd1 Merge pull request #1071 from docker/bot/regclient-releases-json
Update `.github/regclient-releases.json`
2026-04-14 10:55:04 +02:00
crazy-max
b90db28914 github: update .github/regclient-releases.json
Signed-off-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2026-04-14 00:26:05 +00:00
dependabot[bot]
4c5d0cc596 build(deps): bump peter-evans/create-pull-request from 8.1.0 to 8.1.1
Bumps [peter-evans/create-pull-request](https://github.com/peter-evans/create-pull-request) from 8.1.0 to 8.1.1.
- [Release notes](https://github.com/peter-evans/create-pull-request/releases)
- [Commits](c0f553fe54...5f6978faf0)

---
updated-dependencies:
- dependency-name: peter-evans/create-pull-request
  dependency-version: 8.1.1
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-04-13 23:08:37 +00:00
dependabot[bot]
9e247bffd9 build(deps): bump docker/bake-action from 7.0.0 to 7.1.0
Bumps [docker/bake-action](https://github.com/docker/bake-action) from 7.0.0 to 7.1.0.
- [Release notes](https://github.com/docker/bake-action/releases)
- [Commits](82490499d2...a66e1c87e2)

---
updated-dependencies:
- dependency-name: docker/bake-action
  dependency-version: 7.1.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-04-13 23:07:12 +00:00
dependabot[bot]
e2e567b7ff build(deps): bump actions/github-script from 8.0.0 to 9.0.0
Bumps [actions/github-script](https://github.com/actions/github-script) from 8.0.0 to 9.0.0.
- [Release notes](https://github.com/actions/github-script/releases)
- [Commits](ed597411d8...3a2844b7e9)

---
updated-dependencies:
- dependency-name: actions/github-script
  dependency-version: 9.0.0
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-04-13 23:07:01 +00:00
CrazyMax
8e54dfe49a buildx(build): stabilize pull request git contexts
Signed-off-by: CrazyMax <1951866+crazy-max@users.noreply.github.com>
2026-04-11 16:48:30 +02:00
dependabot[bot]
0fe236c199 build(deps): bump @actions/github from 9.0.0 to 9.1.0
Bumps [@actions/github](https://github.com/actions/toolkit/tree/HEAD/packages/github) from 9.0.0 to 9.1.0.
- [Changelog](https://github.com/actions/toolkit/blob/main/packages/github/RELEASES.md)
- [Commits](https://github.com/actions/toolkit/commits/HEAD/packages/github)

---
updated-dependencies:
- dependency-name: "@actions/github"
  dependency-version: 9.1.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-04-10 22:53:35 +00:00
CrazyMax
d046dce429 Merge pull request #1065 from crazy-max/undock-update
update undock to 0.12.0
2026-04-10 11:48:18 +02:00
CrazyMax
f887624a15 update undock to 0.12.0
Signed-off-by: CrazyMax <1951866+crazy-max@users.noreply.github.com>
2026-04-10 10:52:28 +02:00
CrazyMax
b1a6006855 Merge pull request #1064 from docker/bot/undock-releases-json
Update `.github/undock-releases.json`
2026-04-10 10:48:40 +02:00
crazy-max
18ff4741ad github: update .github/undock-releases.json
Signed-off-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2026-04-10 08:48:11 +00:00
CrazyMax
ad48f37a53 Merge pull request #1063 from docker/bot/compose-releases-json
Update `.github/compose-releases.json`
2026-04-09 14:35:38 +02:00
crazy-max
64a97caba2 github: update .github/compose-releases.json
Signed-off-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2026-04-09 12:35:08 +00:00
CrazyMax
1788b15091 Merge pull request #1062 from docker/dependabot/github_actions/crazy-max-dot-github-5d1631a9f4
build(deps): bump the crazy-max-dot-github group with 3 updates
2026-04-09 10:15:01 +02:00
dependabot[bot]
b647608edd build(deps): bump the crazy-max-dot-github group with 3 updates
Bumps the crazy-max-dot-github group with 3 updates: [crazy-max/.github/.github/workflows/releases-json.yml](https://github.com/crazy-max/.github), [crazy-max/.github/.github/workflows/pr-assign-author.yml](https://github.com/crazy-max/.github) and [crazy-max/.github/.github/workflows/zizmor.yml](https://github.com/crazy-max/.github).


Updates `crazy-max/.github/.github/workflows/releases-json.yml` from 1.3.0 to 1.6.0
- [Release notes](https://github.com/crazy-max/.github/releases)
- [Commits](bb328ea508...d89fe92d80)

Updates `crazy-max/.github/.github/workflows/pr-assign-author.yml` from 1.3.0 to 1.6.0
- [Release notes](https://github.com/crazy-max/.github/releases)
- [Commits](bb328ea508...d89fe92d80)

Updates `crazy-max/.github/.github/workflows/zizmor.yml` from 1.3.0 to 1.6.0
- [Release notes](https://github.com/crazy-max/.github/releases)
- [Commits](bb328ea508...d89fe92d80)

---
updated-dependencies:
- dependency-name: crazy-max/.github/.github/workflows/releases-json.yml
  dependency-version: 1.6.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: crazy-max-dot-github
- dependency-name: crazy-max/.github/.github/workflows/pr-assign-author.yml
  dependency-version: 1.6.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: crazy-max-dot-github
- dependency-name: crazy-max/.github/.github/workflows/zizmor.yml
  dependency-version: 1.6.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: crazy-max-dot-github
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-04-08 22:53:11 +00:00
CrazyMax
5461b12028 Merge pull request #1058 from docker/dependabot/npm_and_yarn/lodash-4.18.1
build(deps): bump lodash from 4.17.23 to 4.18.1
2026-04-08 12:34:54 +02:00
CrazyMax
4234ae887e Merge pull request #1061 from docker/test-sigstore-timeout
Some checks failed
publish / publish (push) Has been cancelled
sigstore: wire tests to explicit cosign binaries
2026-04-08 12:25:19 +02:00
CrazyMax
6b70c3ac3a sigstore: wire tests to explicit cosign binaries
Signed-off-by: CrazyMax <1951866+crazy-max@users.noreply.github.com>
2026-04-08 12:15:42 +02:00
dependabot[bot]
fc54adf38a build(deps): bump lodash from 4.17.23 to 4.18.1
Bumps [lodash](https://github.com/lodash/lodash) from 4.17.23 to 4.18.1.
- [Release notes](https://github.com/lodash/lodash/releases)
- [Commits](https://github.com/lodash/lodash/compare/4.17.23...4.18.1)

---
updated-dependencies:
- dependency-name: lodash
  dependency-version: 4.18.1
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-04-08 07:22:26 +00:00
CrazyMax
638fb92de8 Merge pull request #1060 from crazy-max/sigstore-fix-verified-blob
sigstore: default blob attestation verification to SLSA provenance v1
2026-04-08 09:06:25 +02:00
CrazyMax
ab22ca5180 sigstore: default blob attestation verification to SLSA provenance v1
Signed-off-by: CrazyMax <1951866+crazy-max@users.noreply.github.com>
2026-04-07 16:41:12 +02:00
CrazyMax
76d6a50711 Merge pull request #1059 from docker/bot/docker-releases-json
Update `.github/docker-releases.json`
2026-04-07 14:58:56 +02:00
crazy-max
10d53b02ad github: update .github/docker-releases.json
Signed-off-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2026-04-07 12:30:30 +00:00
CrazyMax
29f6dfe684 Merge pull request #1056 from docker/dependabot/npm_and_yarn/vite-7.3.2
build(deps): bump vite from 7.3.1 to 7.3.2
2026-04-07 09:58:04 +02:00
CrazyMax
60efcc66f6 Merge pull request #1057 from docker/bot/cosign-releases-json
Update `.github/cosign-releases.json`
2026-04-07 09:57:46 +02:00
CrazyMax
8b91e0fb97 Merge pull request #1055 from docker/bot/docker-releases-json
Update `.github/docker-releases.json`
2026-04-07 09:57:29 +02:00
crazy-max
95cf5badfe github: update .github/cosign-releases.json
Signed-off-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2026-04-07 00:20:52 +00:00
dependabot[bot]
5ce6d8499c build(deps): bump vite from 7.3.1 to 7.3.2
Bumps [vite](https://github.com/vitejs/vite/tree/HEAD/packages/vite) from 7.3.1 to 7.3.2.
- [Release notes](https://github.com/vitejs/vite/releases)
- [Changelog](https://github.com/vitejs/vite/blob/v7.3.2/packages/vite/CHANGELOG.md)
- [Commits](https://github.com/vitejs/vite/commits/v7.3.2/packages/vite)

---
updated-dependencies:
- dependency-name: vite
  dependency-version: 7.3.2
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-04-06 22:40:24 +00:00
crazy-max
cd33c690bf github: update .github/docker-releases.json
Signed-off-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2026-04-04 00:44:48 +00:00
CrazyMax
aef1d233d6 Merge pull request #1054 from crazy-max/buildkit-0.29.0
update buildkit to 0.29.0 and buildx to 0.33.0
2026-03-31 18:29:02 +02:00
CrazyMax
56d608e044 update buildkit to 0.29.0 and buildx to 0.33.0
Signed-off-by: CrazyMax <1951866+crazy-max@users.noreply.github.com>
2026-03-31 18:12:44 +02:00
CrazyMax
40bb1df6da Merge pull request #1053 from docker/bot/buildx-releases-json
Update `.github/buildx-releases.json`
2026-03-31 17:36:26 +02:00
crazy-max
a1e2d6a054 github: update .github/buildx-releases.json
Signed-off-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2026-03-31 15:35:42 +00:00
CrazyMax
5e187be740 Merge pull request #1049 from docker/dependabot/github_actions/crazy-max-dot-github-e80592674b
build(deps): bump the crazy-max-dot-github group with 3 updates
2026-03-31 09:41:14 +02:00
CrazyMax
eb2beba50e Merge pull request #1052 from docker/dependabot/github_actions/github/codeql-action-4.35.1
build(deps): bump github/codeql-action from 4.34.1 to 4.35.1
2026-03-31 09:40:53 +02:00
CrazyMax
bc2e9f0a20 Merge pull request #1050 from docker/dependabot/github_actions/codecov/codecov-action-6.0.0
build(deps): bump codecov/codecov-action from 5.5.4 to 6.0.0
2026-03-31 09:40:36 +02:00
CrazyMax
31584ad49f Merge pull request #1051 from docker/dependabot/github_actions/crazy-max/ghaction-dump-context-3.0.0
build(deps): bump crazy-max/ghaction-dump-context from 2.3.0 to 3.0.0
2026-03-31 09:40:13 +02:00
dependabot[bot]
4c3e16190f build(deps): bump github/codeql-action from 4.34.1 to 4.35.1
Bumps [github/codeql-action](https://github.com/github/codeql-action) from 4.34.1 to 4.35.1.
- [Release notes](https://github.com/github/codeql-action/releases)
- [Changelog](https://github.com/github/codeql-action/blob/main/CHANGELOG.md)
- [Commits](3869755554...c10b8064de)

---
updated-dependencies:
- dependency-name: github/codeql-action
  dependency-version: 4.35.1
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-03-30 23:10:17 +00:00
dependabot[bot]
b46b0e4e98 build(deps): bump crazy-max/ghaction-dump-context from 2.3.0 to 3.0.0
Bumps [crazy-max/ghaction-dump-context](https://github.com/crazy-max/ghaction-dump-context) from 2.3.0 to 3.0.0.
- [Release notes](https://github.com/crazy-max/ghaction-dump-context/releases)
- [Commits](5355a8e5e6...5d2753e707)

---
updated-dependencies:
- dependency-name: crazy-max/ghaction-dump-context
  dependency-version: 3.0.0
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-03-30 23:08:19 +00:00
dependabot[bot]
cbbecf4971 build(deps): bump codecov/codecov-action from 5.5.4 to 6.0.0
Bumps [codecov/codecov-action](https://github.com/codecov/codecov-action) from 5.5.4 to 6.0.0.
- [Release notes](https://github.com/codecov/codecov-action/releases)
- [Changelog](https://github.com/codecov/codecov-action/blob/main/CHANGELOG.md)
- [Commits](75cd11691c...57e3a136b7)

---
updated-dependencies:
- dependency-name: codecov/codecov-action
  dependency-version: 6.0.0
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-03-30 23:08:15 +00:00
dependabot[bot]
365134329e build(deps): bump the crazy-max-dot-github group with 3 updates
Bumps the crazy-max-dot-github group with 3 updates: [crazy-max/.github/.github/workflows/releases-json.yml](https://github.com/crazy-max/.github), [crazy-max/.github/.github/workflows/pr-assign-author.yml](https://github.com/crazy-max/.github) and [crazy-max/.github/.github/workflows/zizmor.yml](https://github.com/crazy-max/.github).


Updates `crazy-max/.github/.github/workflows/releases-json.yml` from 1.1.0 to 1.3.0
- [Release notes](https://github.com/crazy-max/.github/releases)
- [Commits](20ef82212d...bb328ea508)

Updates `crazy-max/.github/.github/workflows/pr-assign-author.yml` from 1.1.0 to 1.3.0
- [Release notes](https://github.com/crazy-max/.github/releases)
- [Commits](20ef82212d...bb328ea508)

Updates `crazy-max/.github/.github/workflows/zizmor.yml` from 1.2.0 to 1.3.0
- [Release notes](https://github.com/crazy-max/.github/releases)
- [Commits](bbd31df64e...bb328ea508)

---
updated-dependencies:
- dependency-name: crazy-max/.github/.github/workflows/releases-json.yml
  dependency-version: 1.3.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: crazy-max-dot-github
- dependency-name: crazy-max/.github/.github/workflows/pr-assign-author.yml
  dependency-version: 1.3.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: crazy-max-dot-github
- dependency-name: crazy-max/.github/.github/workflows/zizmor.yml
  dependency-version: 1.3.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: crazy-max-dot-github
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-03-30 23:08:03 +00:00
CrazyMax
cde20d56a4 Merge pull request #1048 from docker/dependabot/npm_and_yarn/brace-expansion-1.1.13
build(deps): bump brace-expansion from 1.1.12 to 1.1.13
2026-03-30 11:06:10 +02:00
dependabot[bot]
9e00c79a5a build(deps): bump brace-expansion from 1.1.12 to 1.1.13
Bumps [brace-expansion](https://github.com/juliangruber/brace-expansion) from 1.1.12 to 1.1.13.
- [Release notes](https://github.com/juliangruber/brace-expansion/releases)
- [Commits](https://github.com/juliangruber/brace-expansion/compare/v1.1.12...v1.1.13)

---
updated-dependencies:
- dependency-name: brace-expansion
  dependency-version: 1.1.13
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-03-28 01:49:44 +00:00
CrazyMax
dde76171da Merge pull request #1047 from crazy-max/dockerfile-update-deps
dockerfile: update dev dependencies
2026-03-27 17:16:27 +01:00
CrazyMax
161311a2ae dockerfile: update dev dependencies
Signed-off-by: CrazyMax <1951866+crazy-max@users.noreply.github.com>
2026-03-27 14:51:57 +01:00
CrazyMax
81bd676284 Merge pull request #1041 from crazy-max/buildkit-0.29.0-rc1
update buildkit to 0.29.0-rc1 and buildx to 0.33.0-rc1
2026-03-27 10:50:37 +01:00
CrazyMax
3da460dafc Merge pull request #1045 from docker/dependabot/npm_and_yarn/handlebars-4.7.9
build(deps): bump handlebars from 4.7.8 to 4.7.9
2026-03-27 10:50:21 +01:00
CrazyMax
91c970e007 Merge pull request #1046 from crazy-max/zizmor
zizmor workflow
2026-03-27 10:45:54 +01:00
CrazyMax
a4ec5f5780 fix zizmor findings
Signed-off-by: CrazyMax <1951866+crazy-max@users.noreply.github.com>
2026-03-27 10:43:15 +01:00
CrazyMax
9242fb9941 zizmor workflow
Signed-off-by: CrazyMax <1951866+crazy-max@users.noreply.github.com>
2026-03-27 10:30:32 +01:00
dependabot[bot]
38434e8823 build(deps): bump handlebars from 4.7.8 to 4.7.9
Bumps [handlebars](https://github.com/handlebars-lang/handlebars.js) from 4.7.8 to 4.7.9.
- [Release notes](https://github.com/handlebars-lang/handlebars.js/releases)
- [Changelog](https://github.com/handlebars-lang/handlebars.js/blob/v4.7.9/release-notes.md)
- [Commits](https://github.com/handlebars-lang/handlebars.js/compare/v4.7.8...v4.7.9)

---
updated-dependencies:
- dependency-name: handlebars
  dependency-version: 4.7.9
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-03-26 22:53:30 +00:00
CrazyMax
be7208651f update buildkit to 0.29.0-rc1 and buildx to 0.33.0-rc1
Signed-off-by: CrazyMax <1951866+crazy-max@users.noreply.github.com>
2026-03-26 15:57:13 +01:00
CrazyMax
78126ab93d Merge pull request #1039 from docker/dependabot/npm_and_yarn/picomatch-4.0.4
build(deps): bump picomatch from 4.0.3 to 4.0.4
2026-03-26 15:49:44 +01:00
CrazyMax
9b59922400 Merge pull request #1038 from docker/bot/docker-releases-json
Update `.github/docker-releases.json`
2026-03-26 15:49:27 +01:00
CrazyMax
fbbcb5d563 Merge pull request #1040 from docker/bot/buildx-releases-json
Update `.github/buildx-releases.json`
2026-03-26 15:49:08 +01:00
crazy-max
82c75d6f0c github: update .github/buildx-releases.json
Signed-off-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2026-03-26 12:24:12 +00:00
dependabot[bot]
629e3bad0b build(deps): bump picomatch from 4.0.3 to 4.0.4
Bumps [picomatch](https://github.com/micromatch/picomatch) from 4.0.3 to 4.0.4.
- [Release notes](https://github.com/micromatch/picomatch/releases)
- [Changelog](https://github.com/micromatch/picomatch/blob/master/CHANGELOG.md)
- [Commits](https://github.com/micromatch/picomatch/compare/4.0.3...4.0.4)

---
updated-dependencies:
- dependency-name: picomatch
  dependency-version: 4.0.4
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-03-26 07:05:53 +00:00
crazy-max
d74bc4420e github: update .github/docker-releases.json
Signed-off-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2026-03-26 00:48:10 +00:00
Tõnis Tiigi
7f3ea34932 Merge pull request #1037 from crazy-max/update-crazy-max-actions
ci: bump crazy-max/.github to 1.1.0
2026-03-25 10:42:21 -07:00
CrazyMax
4ed493883c Merge pull request #1033 from crazy-max/git-context-fallback
buildx(build): simplify git context format fallback
2026-03-25 12:14:07 +01:00
CrazyMax
f44e3f98d2 ci: bump crazy-max/.github to 1.1.0
Signed-off-by: CrazyMax <1951866+crazy-max@users.noreply.github.com>
2026-03-25 12:12:29 +01:00
CrazyMax
512a30b8f2 buildx(build): simplify git context format fallback
Signed-off-by: CrazyMax <1951866+crazy-max@users.noreply.github.com>
2026-03-24 14:52:31 +01:00
CrazyMax
c6393e7db0 Merge pull request #1030 from crazy-max/secret-file-rm-copy
Some checks failed
publish / publish (push) Has been cancelled
buildx(build): preserve original paths for file secrets
2026-03-24 13:51:30 +01:00
CrazyMax
ed92d5bfc1 Merge pull request #1032 from docker/dependabot/npm_and_yarn/csv-parse-6.2.1
build(deps): bump csv-parse from 6.2.0 to 6.2.1
2026-03-21 10:24:26 +01:00
dependabot[bot]
51b8539246 build(deps): bump csv-parse from 6.2.0 to 6.2.1
Bumps [csv-parse](https://github.com/adaltas/node-csv/tree/HEAD/packages/csv-parse) from 6.2.0 to 6.2.1.
- [Changelog](https://github.com/adaltas/node-csv/blob/master/packages/csv-parse/CHANGELOG.md)
- [Commits](https://github.com/adaltas/node-csv/commits/csv-parse@6.2.1/packages/csv-parse)

---
updated-dependencies:
- dependency-name: csv-parse
  dependency-version: 6.2.1
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-03-20 22:53:38 +00:00
CrazyMax
13b1e23099 Merge pull request #1029 from docker/dependabot/npm_and_yarn/fast-xml-parser-5.5.7
build(deps): bump fast-xml-parser from 5.5.6 to 5.5.7
2026-03-20 15:01:12 +01:00
CrazyMax
a77c02abb5 Merge pull request #1028 from docker/dependabot/npm_and_yarn/flatted-3.4.2
build(deps): bump flatted from 3.3.1 to 3.4.2
2026-03-20 15:00:53 +01:00
CrazyMax
e459d51261 Merge pull request #1031 from docker/bot/compose-releases-json
Update `.github/compose-releases.json`
2026-03-20 14:04:19 +01:00
crazy-max
2c17edf5bb github: update .github/compose-releases.json
Signed-off-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2026-03-20 12:21:44 +00:00
CrazyMax
8b5d8e53b6 buildx(build): preserve original paths for file secrets
Signed-off-by: CrazyMax <1951866+crazy-max@users.noreply.github.com>
2026-03-20 10:47:59 +01:00
dependabot[bot]
0cad5b4863 build(deps): bump fast-xml-parser from 5.5.6 to 5.5.7
Bumps [fast-xml-parser](https://github.com/NaturalIntelligence/fast-xml-parser) from 5.5.6 to 5.5.7.
- [Release notes](https://github.com/NaturalIntelligence/fast-xml-parser/releases)
- [Changelog](https://github.com/NaturalIntelligence/fast-xml-parser/blob/master/CHANGELOG.md)
- [Commits](https://github.com/NaturalIntelligence/fast-xml-parser/compare/v5.5.6...v5.5.7)

---
updated-dependencies:
- dependency-name: fast-xml-parser
  dependency-version: 5.5.7
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-03-20 01:28:29 +00:00
dependabot[bot]
a5c22330fd build(deps): bump flatted from 3.3.1 to 3.4.2
Bumps [flatted](https://github.com/WebReflection/flatted) from 3.3.1 to 3.4.2.
- [Commits](https://github.com/WebReflection/flatted/compare/v3.3.1...v3.4.2)

---
updated-dependencies:
- dependency-name: flatted
  dependency-version: 3.4.2
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-03-20 01:01:08 +00:00
CrazyMax
9505deb078 Merge pull request #1027 from docker/dependabot/npm_and_yarn/sigstore/sign-4.1.1
Some checks failed
publish / publish (push) Has been cancelled
build(deps): bump @sigstore/sign from 4.1.0 to 4.1.1
2026-03-19 10:04:24 +01:00
dependabot[bot]
af784a2022 build(deps): bump @sigstore/sign from 4.1.0 to 4.1.1
Bumps [@sigstore/sign](https://github.com/sigstore/sigstore-js) from 4.1.0 to 4.1.1.
- [Release notes](https://github.com/sigstore/sigstore-js/releases)
- [Commits](https://github.com/sigstore/sigstore-js/compare/sigstore@4.1.0...@sigstore/sign@4.1.1)

---
updated-dependencies:
- dependency-name: "@sigstore/sign"
  dependency-version: 4.1.1
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-03-19 09:01:22 +00:00
CrazyMax
afcc1c08a8 Merge pull request #1026 from docker/dependabot/npm_and_yarn/sigstore/tuf-4.0.2
build(deps): bump @sigstore/tuf from 4.0.1 to 4.0.2
2026-03-19 09:59:27 +01:00
CrazyMax
af0890ba7a Merge pull request #1025 from crazy-max/git-context-attrs
buildx(build): support extensible git context attrs
2026-03-19 09:58:55 +01:00
dependabot[bot]
c4109c3fc2 build(deps): bump @sigstore/tuf from 4.0.1 to 4.0.2
Bumps [@sigstore/tuf](https://github.com/sigstore/sigstore-js) from 4.0.1 to 4.0.2.
- [Release notes](https://github.com/sigstore/sigstore-js/releases)
- [Commits](https://github.com/sigstore/sigstore-js/compare/@sigstore/sign@4.0.1...@sigstore/tuf@4.0.2)

---
updated-dependencies:
- dependency-name: "@sigstore/tuf"
  dependency-version: 4.0.2
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-03-18 22:53:43 +00:00
CrazyMax
e314ca9bb5 buildx(build): support extensible git context attrs
Signed-off-by: CrazyMax <1951866+crazy-max@users.noreply.github.com>
2026-03-18 22:04:45 +01:00
CrazyMax
29efe4d6a8 Merge pull request #1024 from crazy-max/subdir-dot
Some checks failed
publish / publish (push) Has been cancelled
buildx(build): ignore dot git context subdir
2026-03-18 09:59:13 +01:00
CrazyMax
aacbc67b8d buildx(build): ignore dot git context subdir
Signed-off-by: CrazyMax <1951866+crazy-max@users.noreply.github.com>
2026-03-18 09:53:58 +01:00
CrazyMax
d71b84aad5 Merge pull request #1020 from crazy-max/build-git-context-opts
Some checks failed
publish / publish (push) Has been cancelled
buildx(build): support git context subdir and other query options
2026-03-18 09:24:44 +01:00
CrazyMax
ea05649ce1 Merge pull request #1023 from crazy-max/bake-vars
bake: var cmd opt support
2026-03-18 09:24:22 +01:00
CrazyMax
012ae0603d bake: var cmd opt support
Signed-off-by: CrazyMax <1951866+crazy-max@users.noreply.github.com>
2026-03-18 09:15:22 +01:00
CrazyMax
6194cf96c1 Merge pull request #1022 from docker/dependabot/npm_and_yarn/fast-xml-parser-5.5.6
build(deps): bump fast-xml-parser from 5.4.1 to 5.5.6
2026-03-18 09:00:41 +01:00
CrazyMax
e804b694a2 Merge pull request #1021 from docker/dependabot/npm_and_yarn/csv-parse-6.2.0
build(deps): bump csv-parse from 6.1.0 to 6.2.0
2026-03-18 09:00:07 +01:00
dependabot[bot]
d2a882884d build(deps): bump fast-xml-parser from 5.4.1 to 5.5.6
Bumps [fast-xml-parser](https://github.com/NaturalIntelligence/fast-xml-parser) from 5.4.1 to 5.5.6.
- [Release notes](https://github.com/NaturalIntelligence/fast-xml-parser/releases)
- [Changelog](https://github.com/NaturalIntelligence/fast-xml-parser/blob/master/CHANGELOG.md)
- [Commits](https://github.com/NaturalIntelligence/fast-xml-parser/compare/v5.4.1...v5.5.6)

---
updated-dependencies:
- dependency-name: fast-xml-parser
  dependency-version: 5.5.6
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-03-18 01:53:33 +00:00
dependabot[bot]
d820ad4123 build(deps): bump csv-parse from 6.1.0 to 6.2.0
Bumps [csv-parse](https://github.com/adaltas/node-csv/tree/HEAD/packages/csv-parse) from 6.1.0 to 6.2.0.
- [Changelog](https://github.com/adaltas/node-csv/blob/master/packages/csv-parse/CHANGELOG.md)
- [Commits](https://github.com/adaltas/node-csv/commits/csv-parse@6.2.0/packages/csv-parse)

---
updated-dependencies:
- dependency-name: csv-parse
  dependency-version: 6.2.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-03-17 22:53:46 +00:00
CrazyMax
a5d905690f Merge pull request #1019 from docker/dependabot/github_actions/softprops/action-gh-release-2.6.1
build(deps): bump softprops/action-gh-release from 2.5.0 to 2.6.1
2026-03-17 15:42:31 +01:00
CrazyMax
6233293ae6 buildx(build): support git context subdir and other query options
Signed-off-by: CrazyMax <1951866+crazy-max@users.noreply.github.com>
2026-03-17 13:09:33 +01:00
dependabot[bot]
9d10fe0e06 build(deps): bump softprops/action-gh-release from 2.5.0 to 2.6.1
Bumps [softprops/action-gh-release](https://github.com/softprops/action-gh-release) from 2.5.0 to 2.6.1.
- [Release notes](https://github.com/softprops/action-gh-release/releases)
- [Changelog](https://github.com/softprops/action-gh-release/blob/master/CHANGELOG.md)
- [Commits](a06a81a03e...153bb8e044)

---
updated-dependencies:
- dependency-name: softprops/action-gh-release
  dependency-version: 2.6.1
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-03-16 22:53:05 +00:00
CrazyMax
a8dc8088d4 Merge pull request #1018 from docker/dependabot/npm_and_yarn/undici-6.24.1
build(deps): bump undici from 6.23.0 to 6.24.1
2026-03-14 12:51:58 +01:00
dependabot[bot]
4bc2c14908 build(deps): bump undici from 6.23.0 to 6.24.1
Bumps [undici](https://github.com/nodejs/undici) from 6.23.0 to 6.24.1.
- [Release notes](https://github.com/nodejs/undici/releases)
- [Commits](https://github.com/nodejs/undici/compare/v6.23.0...v6.24.1)

---
updated-dependencies:
- dependency-name: undici
  dependency-version: 6.24.1
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-03-14 09:18:22 +00:00
CrazyMax
ad2312d5f1 Merge pull request #1016 from crazy-max/imagetools-inspect-retry
Some checks failed
publish / publish (push) Has been cancelled
buildx(imagetools): make manifest retries configurable
2026-03-13 13:46:44 +01:00
CrazyMax
21e2b75b0b buildx(imagetools): make manifest retries configurable
Signed-off-by: CrazyMax <1951866+crazy-max@users.noreply.github.com>
2026-03-13 13:29:09 +01:00
CrazyMax
4d926d8b7b Merge pull request #1015 from docker/dependabot/npm_and_yarn/actions/artifact-6.2.1
Some checks failed
publish / publish (push) Has been cancelled
build(deps): bump @actions/artifact from 6.2.0 to 6.2.1
2026-03-13 11:19:34 +01:00
dependabot[bot]
293c3cdcfe build(deps): bump @actions/artifact from 6.2.0 to 6.2.1
Bumps [@actions/artifact](https://github.com/actions/toolkit/tree/HEAD/packages/artifact) from 6.2.0 to 6.2.1.
- [Changelog](https://github.com/actions/toolkit/blob/main/packages/artifact/RELEASES.md)
- [Commits](https://github.com/actions/toolkit/commits/HEAD/packages/artifact)

---
updated-dependencies:
- dependency-name: "@actions/artifact"
  dependency-version: 6.2.1
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-03-11 22:53:45 +00:00
CrazyMax
17071615a7 Merge pull request #1014 from crazy-max/imagetools-annotations
buildx(imagetools): add annotations support for create command
2026-03-10 12:22:44 +01:00
CrazyMax
0cc9e68b03 buildx(imagetools): add annotations support for create command
Signed-off-by: CrazyMax <1951866+crazy-max@users.noreply.github.com>
2026-03-10 12:06:12 +01:00
CrazyMax
b732db2937 Merge pull request #809 from crazy-max/git-query-url
Some checks failed
publish / publish (push) Has been cancelled
build: git context query format support
2026-03-09 17:26:11 +01:00
CrazyMax
8696544f14 Merge pull request #1013 from crazy-max/imagetools-silent
buildx(imagetools): add skip support and configurable create command silence
2026-03-09 11:32:54 +01:00
CrazyMax
d92ed04680 buildx(imagetools): add skip support and configurable create command silence
Signed-off-by: CrazyMax <1951866+crazy-max@users.noreply.github.com>
2026-03-09 11:17:55 +01:00
CrazyMax
3bb4ae38ea build: git context query format support
Signed-off-by: CrazyMax <1951866+crazy-max@users.noreply.github.com>
2026-03-09 10:47:48 +01:00
CrazyMax
09c0f6a78e Merge pull request #1009 from crazy-max/imagetools-create
Some checks failed
publish / publish (push) Has been cancelled
buildx(imagetools): implement create func with metadata parsing
2026-03-06 09:37:07 +01:00
CrazyMax
3c25c1eed2 Merge pull request #1011 from docker/dependabot/github_actions/docker/setup-buildx-action-4
build(deps): bump docker/setup-buildx-action from 3 to 4
2026-03-06 09:36:29 +01:00
CrazyMax
ee671ae33e Merge pull request #1010 from docker/dependabot/github_actions/docker/bake-action-7
build(deps): bump docker/bake-action from 6 to 7
2026-03-06 09:36:05 +01:00
CrazyMax
960acb25ae ci: switch to matrix subaction
Signed-off-by: CrazyMax <1951866+crazy-max@users.noreply.github.com>
2026-03-06 09:28:21 +01:00
CrazyMax
1ff078d955 Merge pull request #1012 from docker/bot/docker-releases-json
Update `.github/docker-releases.json`
2026-03-06 09:22:38 +01:00
crazy-max
abe7883e9a github: update .github/docker-releases.json
Signed-off-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2026-03-06 00:46:27 +00:00
dependabot[bot]
c16b4fdf35 build(deps): bump docker/setup-buildx-action from 3 to 4
Bumps [docker/setup-buildx-action](https://github.com/docker/setup-buildx-action) from 3 to 4.
- [Release notes](https://github.com/docker/setup-buildx-action/releases)
- [Commits](https://github.com/docker/setup-buildx-action/compare/v3...v4)

---
updated-dependencies:
- dependency-name: docker/setup-buildx-action
  dependency-version: '4'
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-03-05 23:04:37 +00:00
dependabot[bot]
211c9b2312 build(deps): bump docker/bake-action from 6 to 7
Bumps [docker/bake-action](https://github.com/docker/bake-action) from 6 to 7.
- [Release notes](https://github.com/docker/bake-action/releases)
- [Commits](https://github.com/docker/bake-action/compare/v6...v7)

---
updated-dependencies:
- dependency-name: docker/bake-action
  dependency-version: '7'
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-03-05 23:04:32 +00:00
CrazyMax
a30e0f51eb Merge pull request #1007 from crazy-max/buildkit-0.28.0
update buildkit to 0.28.0 and buildx to 0.32.1
2026-03-05 14:51:09 +01:00
CrazyMax
61c3c53dbf update buildkit to 0.28.0 and buildx to 0.32.1
Signed-off-by: CrazyMax <1951866+crazy-max@users.noreply.github.com>
2026-03-05 14:36:36 +01:00
CrazyMax
91a5724116 buildx(imagetools): implement create func with metadata parsing
Signed-off-by: CrazyMax <1951866+crazy-max@users.noreply.github.com>
2026-03-05 13:42:21 +01:00
Tõnis Tiigi
9998df7a3d Merge pull request #1008 from docker/bot/buildx-releases-json
Update `.github/buildx-releases.json`
2026-03-04 12:39:44 -08:00
tonistiigi
3d448bd483 github: update .github/buildx-releases.json
Signed-off-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2026-03-04 20:39:03 +00:00
CrazyMax
51cc1b5526 Merge pull request #1006 from crazy-max/rm-field-history
Some checks failed
publish / publish (push) Has been cancelled
buildx(history): require buildx >=0.23.0 to export a build record
2026-03-04 14:58:07 +01:00
CrazyMax
58584e3d97 buildx(history): require buildx >=0.23.0 to export a build record
Signed-off-by: CrazyMax <1951866+crazy-max@users.noreply.github.com>
2026-03-04 14:38:19 +01:00
CrazyMax
f06e39e022 buildx(history): remove unused field
Signed-off-by: CrazyMax <1951866+crazy-max@users.noreply.github.com>
2026-03-04 14:34:21 +01:00
CrazyMax
4c705618e1 Merge pull request #1005 from crazy-max/util-inputlist-comment
util: add commentNoInfix support to getInputList
2026-03-04 13:36:35 +01:00
CrazyMax
1ebb922e84 util: add commentNoInfix support to getInputList
Signed-off-by: CrazyMax <1951866+crazy-max@users.noreply.github.com>
2026-03-04 12:57:36 +01:00
Tõnis Tiigi
9e446b0b90 Merge pull request #1004 from docker/bot/buildx-releases-json
Some checks failed
publish / publish (push) Has been cancelled
Update `.github/buildx-releases.json`
2026-03-03 17:29:22 -08:00
tonistiigi
d682d6d4a5 github: update .github/buildx-releases.json
Signed-off-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2026-03-04 01:28:43 +00:00
CrazyMax
ca5ab569e5 Merge pull request #895 from crazy-max/remove-export-legacy
buildx(history): remove legacy export-build tool
2026-03-03 21:16:01 +01:00
CrazyMax
5b2d914820 Merge pull request #1002 from docker/dependabot/github_actions/crazy-max/ghaction-github-runtime-4
build(deps): bump crazy-max/ghaction-github-runtime from 3 to 4
2026-03-03 10:54:17 +01:00
CrazyMax
b873721f89 Merge pull request #1000 from crazy-max/node24
update to node 24
2026-03-03 10:53:27 +01:00
dependabot[bot]
c975cd6494 build(deps): bump crazy-max/ghaction-github-runtime from 3 to 4
Bumps [crazy-max/ghaction-github-runtime](https://github.com/crazy-max/ghaction-github-runtime) from 3 to 4.
- [Release notes](https://github.com/crazy-max/ghaction-github-runtime/releases)
- [Commits](https://github.com/crazy-max/ghaction-github-runtime/compare/v3...v4)

---
updated-dependencies:
- dependency-name: crazy-max/ghaction-github-runtime
  dependency-version: '4'
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-03-03 00:08:23 +00:00
CrazyMax
a0a3952b2d update to node 24
Signed-off-by: CrazyMax <1951866+crazy-max@users.noreply.github.com>
2026-03-02 19:40:15 +01:00
CrazyMax
4af1413de8 Merge pull request #1001 from crazy-max/buildkit-0.28.0-rc2
update buildkit to 0.28.0-rc2 and buildx to 0.32.0-rc2
2026-03-02 17:13:06 +01:00
CrazyMax
83a4cb6e7f update buildkit to 0.28.0-rc2 and buildx to 0.32.0-rc2
Signed-off-by: CrazyMax <1951866+crazy-max@users.noreply.github.com>
2026-03-02 16:19:08 +01:00
CrazyMax
9edbb73678 buildx(history): remove legacy export-build tool
Signed-off-by: CrazyMax <1951866+crazy-max@users.noreply.github.com>
2026-03-02 15:11:54 +01:00
CrazyMax
6fc9119f7e Merge pull request #998 from crazy-max/test-output
test: fix name output
2026-03-01 14:28:17 +01:00
CrazyMax
b2caa9ae45 Merge pull request #997 from docker/bot/docker-releases-json
Update `.github/docker-releases.json`
2026-03-01 11:57:27 +01:00
CrazyMax
80446a55b4 Merge pull request #996 from docker/bot/buildx-releases-json
Update `.github/buildx-releases.json`
2026-03-01 11:57:10 +01:00
CrazyMax
c7c816aa2f test: fix name output
Signed-off-by: CrazyMax <1951866+crazy-max@users.noreply.github.com>
2026-03-01 11:51:12 +01:00
crazy-max
3f87521aad github: update .github/docker-releases.json
Signed-off-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2026-02-28 00:38:35 +00:00
crazy-max
c186677904 github: update .github/buildx-releases.json
Signed-off-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2026-02-28 00:27:57 +00:00
CrazyMax
e5d20b9b8b Merge pull request #995 from crazy-max/dev-deps
Some checks failed
publish / publish (push) Has been cancelled
update dev dependencies
2026-02-27 12:28:24 +01:00
CrazyMax
a45bcd1296 Merge pull request #991 from docker/dependabot/github_actions/actions/download-artifact-8
build(deps): bump actions/download-artifact from 7 to 8
2026-02-27 12:26:39 +01:00
CrazyMax
26ff71b24e update dev dependencies
Signed-off-by: CrazyMax <1951866+crazy-max@users.noreply.github.com>
2026-02-27 12:24:36 +01:00
CrazyMax
b1b6c30312 test: restore all-skipped coverage guard with custom reporter
Signed-off-by: CrazyMax <1951866+crazy-max@users.noreply.github.com>
2026-02-27 12:24:36 +01:00
CrazyMax
78f85cbf92 Merge pull request #994 from crazy-max/update-license
dockerfile: update addlicense to v1.2.0
2026-02-27 12:14:50 +01:00
CrazyMax
1b45318512 update vitest to v4
Signed-off-by: CrazyMax <1951866+crazy-max@users.noreply.github.com>
2026-02-27 11:53:46 +01:00
CrazyMax
aa6e45fd98 Merge pull request #992 from docker/dependabot/npm_and_yarn/fast-xml-parser-5.4.1
build(deps): bump fast-xml-parser from 5.3.6 to 5.4.1
2026-02-27 11:44:23 +01:00
CrazyMax
4750efa111 dockerfile: update addlicense to v1.2.0
Signed-off-by: CrazyMax <1951866+crazy-max@users.noreply.github.com>
2026-02-27 11:43:14 +01:00
CrazyMax
aafdd47b20 Merge pull request #993 from crazy-max/eslint-flat
migrate to eslint v9 flat config
2026-02-27 11:37:07 +01:00
CrazyMax
6e348fa8af migrate to eslint v9 flat config
Signed-off-by: CrazyMax <1951866+crazy-max@users.noreply.github.com>
2026-02-27 11:31:18 +01:00
dependabot[bot]
ed4752598a build(deps): bump fast-xml-parser from 5.3.6 to 5.4.1
Bumps [fast-xml-parser](https://github.com/NaturalIntelligence/fast-xml-parser) from 5.3.6 to 5.4.1.
- [Release notes](https://github.com/NaturalIntelligence/fast-xml-parser/releases)
- [Changelog](https://github.com/NaturalIntelligence/fast-xml-parser/blob/master/CHANGELOG.md)
- [Commits](https://github.com/NaturalIntelligence/fast-xml-parser/compare/v5.3.6...v5.4.1)

---
updated-dependencies:
- dependency-name: fast-xml-parser
  dependency-version: 5.4.1
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-02-27 09:51:14 +00:00
CrazyMax
7ad1857b6c Merge pull request #982 from crazy-max/vitest
switch from Jest to Vitest
2026-02-27 10:49:38 +01:00
CrazyMax
0973a1ac76 remove uneeded dev dependencies
Signed-off-by: CrazyMax <1951866+crazy-max@users.noreply.github.com>
2026-02-27 10:28:56 +01:00
CrazyMax
2b2119e051 test: fix docker isAvailable test
Signed-off-by: CrazyMax <1951866+crazy-max@users.noreply.github.com>
2026-02-27 03:02:01 +01:00
CrazyMax
b6a3cad225 test: inline mocks in unit test setup
Signed-off-by: CrazyMax <1951866+crazy-max@users.noreply.github.com>
2026-02-27 03:02:00 +01:00
CrazyMax
260dd0518b test: move git remoteSha api test to integration
Signed-off-by: CrazyMax <1951866+crazy-max@users.noreply.github.com>
2026-02-27 03:01:55 +01:00
CrazyMax
cb8840fbce test: move github repoData api test to integration
Signed-off-by: CrazyMax <1951866+crazy-max@users.noreply.github.com>
2026-02-27 03:01:55 +01:00
CrazyMax
3692a3c56f migrate to vitest/eslint-plugin
Signed-off-by: CrazyMax <1951866+crazy-max@users.noreply.github.com>
2026-02-27 01:45:08 +01:00
dependabot[bot]
8a60689b00 build(deps): bump actions/download-artifact from 7 to 8
Bumps [actions/download-artifact](https://github.com/actions/download-artifact) from 7 to 8.
- [Release notes](https://github.com/actions/download-artifact/releases)
- [Commits](https://github.com/actions/download-artifact/compare/v7...v8)

---
updated-dependencies:
- dependency-name: actions/download-artifact
  dependency-version: '8'
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-02-26 22:52:54 +00:00
CrazyMax
14b5eee617 move to nodenext and simplify TS/ESM config
Signed-off-by: CrazyMax <1951866+crazy-max@users.noreply.github.com>
2026-02-26 23:50:31 +01:00
CrazyMax
fa21647770 switch from Jest to Vitest
Signed-off-by: CrazyMax <1951866+crazy-max@users.noreply.github.com>
2026-02-26 23:50:31 +01:00
CrazyMax
c3c1213116 Merge pull request #983 from docker/dependabot/npm_and_yarn/fast-xml-parser-5.3.6
build(deps): bump fast-xml-parser from 5.3.4 to 5.3.6
2026-02-26 10:39:01 +01:00
CrazyMax
5d1e3079eb Merge pull request #976 from docker/dependabot/npm_and_yarn/isaacs/brace-expansion-5.0.1
build(deps): bump @isaacs/brace-expansion from 5.0.0 to 5.0.1
2026-02-26 10:38:26 +01:00
CrazyMax
ce0510c77f Merge pull request #990 from crazy-max/update-artifact-toolkit
bump @actions/artifact from 5.0.3 to 6.2.0
2026-02-26 10:37:40 +01:00
CrazyMax
c21ad821b8 ci: disable summary for test-coverage build
Signed-off-by: CrazyMax <1951866+crazy-max@users.noreply.github.com>
2026-02-26 09:39:03 +01:00
CrazyMax
5e783cc801 github: use default client and skip archive when uploading artifact
Signed-off-by: CrazyMax <1951866+crazy-max@users.noreply.github.com>
2026-02-26 09:39:03 +01:00
CrazyMax
03628ab393 map @actions/artifact to real entrypoint in Jest configs
Signed-off-by: CrazyMax <1951866+crazy-max@users.noreply.github.com>
2026-02-26 09:32:42 +01:00
CrazyMax
f0766fff61 bump @actions/artifact from 5.0.3 to 6.2.0
Signed-off-by: CrazyMax <1951866+crazy-max@users.noreply.github.com>
2026-02-26 09:06:47 +01:00
CrazyMax
dee27d76a2 Merge pull request #988 from crazy-max/update-buildx-buildkit
update buildkit to 0.28.0-rc1 and buildx to 0.32.0-rc1
2026-02-25 09:47:23 +01:00
CrazyMax
f96fcb3238 update buildkit to 0.28.0-rc1 and buildx to 0.32.0-rc1
Signed-off-by: CrazyMax <1951866+crazy-max@users.noreply.github.com>
2026-02-25 09:35:14 +01:00
dependabot[bot]
91e04f6b63 build(deps): bump @isaacs/brace-expansion from 5.0.0 to 5.0.1
Bumps @isaacs/brace-expansion from 5.0.0 to 5.0.1.

---
updated-dependencies:
- dependency-name: "@isaacs/brace-expansion"
  dependency-version: 5.0.1
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-02-25 08:30:15 +00:00
CrazyMax
56778fba0b Merge pull request #987 from docker/bot/buildx-releases-json
Update `.github/buildx-releases.json`
2026-02-25 09:29:31 +01:00
crazy-max
62ceaab8d4 github: update .github/buildx-releases.json
Signed-off-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2026-02-25 08:28:34 +00:00
CrazyMax
18925ea1d8 Merge pull request #986 from docker/bot/compose-releases-json
Update `.github/compose-releases.json`
2026-02-25 09:28:00 +01:00
CrazyMax
b46fe214a0 Merge pull request #985 from docker/bot/regclient-releases-json
Update `.github/regclient-releases.json`
2026-02-25 09:27:40 +01:00
CrazyMax
d5f2e23c86 Merge pull request #984 from docker/bot/cosign-releases-json
Update `.github/cosign-releases.json`
2026-02-25 09:27:23 +01:00
crazy-max
757ec820d8 github: update .github/compose-releases.json
Signed-off-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2026-02-25 00:50:06 +00:00
crazy-max
bfed47a87c github: update .github/regclient-releases.json
Signed-off-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2026-02-24 00:17:23 +00:00
crazy-max
142e6ec554 github: update .github/cosign-releases.json
Signed-off-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2026-02-20 00:15:40 +00:00
dependabot[bot]
4d312a45da build(deps): bump fast-xml-parser from 5.3.4 to 5.3.6
Bumps [fast-xml-parser](https://github.com/NaturalIntelligence/fast-xml-parser) from 5.3.4 to 5.3.6.
- [Release notes](https://github.com/NaturalIntelligence/fast-xml-parser/releases)
- [Changelog](https://github.com/NaturalIntelligence/fast-xml-parser/blob/master/CHANGELOG.md)
- [Commits](https://github.com/NaturalIntelligence/fast-xml-parser/compare/v5.3.4...v5.3.6)

---
updated-dependencies:
- dependency-name: fast-xml-parser
  dependency-version: 5.3.6
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-02-18 05:44:42 +00:00
CrazyMax
3d7c390e08 Merge pull request #980 from docker/bot/buildx-lab-releases-json
Update `.github/buildx-lab-releases.json`
2026-02-11 19:49:26 +01:00
crazy-max
bb7f6204cb github: update .github/buildx-lab-releases.json
Signed-off-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2026-02-11 18:43:32 +00:00
CrazyMax
517b797fc8 Merge pull request #978 from docker/dependabot/npm_and_yarn/semver-7.7.4
build(deps): bump semver from 7.7.3 to 7.7.4
2026-02-10 17:02:21 +01:00
CrazyMax
c6c363b02a Merge pull request #979 from crazy-max/git-auth-token-domain
buildx(build): handle domain when checking git auth token secret
2026-02-10 15:42:33 +01:00
CrazyMax
c790a5b549 buildx(build): handle domain when checking git auth token secret
Signed-off-by: CrazyMax <1951866+crazy-max@users.noreply.github.com>
2026-02-09 17:18:52 +01:00
dependabot[bot]
148117ec54 build(deps): bump semver from 7.7.3 to 7.7.4
Bumps [semver](https://github.com/npm/node-semver) from 7.7.3 to 7.7.4.
- [Release notes](https://github.com/npm/node-semver/releases)
- [Changelog](https://github.com/npm/node-semver/blob/main/CHANGELOG.md)
- [Commits](https://github.com/npm/node-semver/compare/v7.7.3...v7.7.4)

---
updated-dependencies:
- dependency-name: semver
  dependency-version: 7.7.4
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-02-05 22:54:10 +00:00
CrazyMax
57aacc319c Merge pull request #977 from crazy-max/github-split
github: move artifact and summary logic to dedicated classes
2026-02-05 13:42:13 +01:00
CrazyMax
e169fb346d github: move artifact and summary logic to dedicated classes
Signed-off-by: CrazyMax <1951866+crazy-max@users.noreply.github.com>
2026-02-05 13:31:13 +01:00
CrazyMax
4748d57f98 Merge pull request #974 from crazy-max/vendor-isghes
github: vendor isGhes() func from @actions/artifact module
2026-02-03 17:30:01 +01:00
CrazyMax
61eb950122 Merge pull request #975 from docker/bot/docker-releases-json
Update `.github/docker-releases.json`
2026-02-03 17:02:20 +01:00
crazy-max
ceba4f1fba github: update .github/docker-releases.json
Signed-off-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2026-02-03 00:44:11 +00:00
CrazyMax
386d77d22d github: vendor isGhes() func from @actions/artifact module
Signed-off-by: CrazyMax <1951866+crazy-max@users.noreply.github.com>
2026-02-02 17:58:09 +01:00
CrazyMax
3cd1a9db9b Merge pull request #973 from docker/dependabot/npm_and_yarn/fast-xml-parser-5.3.4
build(deps): bump fast-xml-parser from 5.3.3 to 5.3.4
2026-01-31 01:19:16 +01:00
dependabot[bot]
b4a6b692a6 build(deps): bump fast-xml-parser from 5.3.3 to 5.3.4
Bumps [fast-xml-parser](https://github.com/NaturalIntelligence/fast-xml-parser) from 5.3.3 to 5.3.4.
- [Release notes](https://github.com/NaturalIntelligence/fast-xml-parser/releases)
- [Changelog](https://github.com/NaturalIntelligence/fast-xml-parser/blob/master/CHANGELOG.md)
- [Commits](https://github.com/NaturalIntelligence/fast-xml-parser/compare/v5.3.3...v5.3.4)

---
updated-dependencies:
- dependency-name: fast-xml-parser
  dependency-version: 5.3.4
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-01-30 23:28:48 +00:00
CrazyMax
0484ca443a Merge pull request #971 from docker/dependabot/npm_and_yarn/actions/cache-6.0.0
build(deps): bump @actions/cache from 5.0.5 to 6.0.0
2026-01-30 11:46:06 +01:00
CrazyMax
37d8063bad align @azure/storage-blob version with @action/cache
Signed-off-by: CrazyMax <1951866+crazy-max@users.noreply.github.com>
2026-01-30 11:04:15 +01:00
CrazyMax
7878bd5132 map @actions/glob to real entrypoint in Jest configs
Signed-off-by: CrazyMax <1951866+crazy-max@users.noreply.github.com>
2026-01-30 11:04:15 +01:00
CrazyMax
4d959f4dfa map @actions/cache to real entrypoint in Jest configs
Signed-off-by: CrazyMax <1951866+crazy-max@users.noreply.github.com>
2026-01-30 10:57:24 +01:00
dependabot[bot]
46e9ae7c00 build(deps): bump @actions/cache from 5.0.5 to 6.0.0
Bumps [@actions/cache](https://github.com/actions/toolkit/tree/HEAD/packages/cache) from 5.0.5 to 6.0.0.
- [Changelog](https://github.com/actions/toolkit/blob/main/packages/cache/RELEASES.md)
- [Commits](https://github.com/actions/toolkit/commits/HEAD/packages/cache)

---
updated-dependencies:
- dependency-name: "@actions/cache"
  dependency-version: 6.0.0
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-01-29 23:49:58 +00:00
CrazyMax
a8558c570f Merge pull request #969 from docker/dependabot/npm_and_yarn/actions/tool-cache-4.0.0
build(deps): bump @actions/tool-cache from 3.0.1 to 4.0.0
2026-01-30 00:47:45 +01:00
CrazyMax
0def5befd0 map @actions/tool-cache to real entrypoint in Jest configs
Signed-off-by: CrazyMax <1951866+crazy-max@users.noreply.github.com>
2026-01-30 00:43:29 +01:00
dependabot[bot]
195f819e18 build(deps): bump @actions/tool-cache from 3.0.1 to 4.0.0
Bumps [@actions/tool-cache](https://github.com/actions/toolkit/tree/HEAD/packages/tool-cache) from 3.0.1 to 4.0.0.
- [Changelog](https://github.com/actions/toolkit/blob/main/packages/tool-cache/RELEASES.md)
- [Commits](https://github.com/actions/toolkit/commits/@actions/cache@4.0.0/packages/tool-cache)

---
updated-dependencies:
- dependency-name: "@actions/tool-cache"
  dependency-version: 4.0.0
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-01-29 22:13:42 +00:00
CrazyMax
abcde0b72d Merge pull request #970 from docker/dependabot/npm_and_yarn/actions/core-3.0.0
build(deps): bump @actions/core from 2.0.3 to 3.0.0
2026-01-29 23:11:24 +01:00
CrazyMax
539653d6fd map @actions/core to real entrypoint in Jest configs
Signed-off-by: CrazyMax <1951866+crazy-max@users.noreply.github.com>
2026-01-29 18:09:24 +01:00
dependabot[bot]
3ce99f0184 build(deps): bump @actions/core from 2.0.3 to 3.0.0
Bumps [@actions/core](https://github.com/actions/toolkit/tree/HEAD/packages/core) from 2.0.3 to 3.0.0.
- [Changelog](https://github.com/actions/toolkit/blob/main/packages/core/RELEASES.md)
- [Commits](https://github.com/actions/toolkit/commits/HEAD/packages/core)

---
updated-dependencies:
- dependency-name: "@actions/core"
  dependency-version: 3.0.0
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-01-29 17:05:40 +00:00
CrazyMax
cf27b7414a Merge pull request #929 from crazy-max/buildx-verify
buildx(install): use sigstore module to verify signature
2026-01-29 16:09:39 +01:00
CrazyMax
461be748b1 Merge pull request #967 from crazy-max/update-buildx-buildkit
update buildkit to 0.27.1 and buildx to 0.31.1
2026-01-29 13:42:16 +01:00
CrazyMax
7b49b8764b update buildkit to 0.27.1 and buildx to 0.31.1
Signed-off-by: CrazyMax <1951866+crazy-max@users.noreply.github.com>
2026-01-29 12:37:15 +01:00
CrazyMax
ddf4131723 Merge pull request #965 from docker/dependabot/npm_and_yarn/actions/http-client-4.0.0
build(deps): bump @actions/http-client from 3.0.2 to 4.0.0
2026-01-29 10:05:26 +01:00
CrazyMax
37a6f26c7e map @actions/http-client to real entrypoint in Jest configs
Signed-off-by: CrazyMax <1951866+crazy-max@users.noreply.github.com>
2026-01-29 10:00:11 +01:00
dependabot[bot]
958f42fe37 build(deps): bump @actions/http-client from 3.0.2 to 4.0.0
Bumps [@actions/http-client](https://github.com/actions/toolkit/tree/HEAD/packages/http-client) from 3.0.2 to 4.0.0.
- [Changelog](https://github.com/actions/toolkit/blob/main/packages/http-client/RELEASES.md)
- [Commits](https://github.com/actions/toolkit/commits/@actions/cache@4.0.0/packages/http-client)

---
updated-dependencies:
- dependency-name: "@actions/http-client"
  dependency-version: 4.0.0
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-01-29 08:58:29 +00:00
CrazyMax
dfebb2fe55 Merge pull request #966 from docker/bot/buildx-releases-json
Update `.github/buildx-releases.json`
2026-01-29 09:56:14 +01:00
crazy-max
e3c69a214e github: update .github/buildx-releases.json
Signed-off-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2026-01-29 08:55:09 +00:00
CrazyMax
a1b45a7b5f Merge pull request #963 from docker/dependabot/npm_and_yarn/actions/exec-3.0.0
build(deps): bump @actions/exec from 2.0.0 to 3.0.0
2026-01-29 09:54:46 +01:00
CrazyMax
b7c282e16f map @actions/exec to real entrypoint in Jest configs
Signed-off-by: CrazyMax <1951866+crazy-max@users.noreply.github.com>
2026-01-29 09:46:56 +01:00
dependabot[bot]
2ecd0682d0 build(deps): bump @actions/exec from 2.0.0 to 3.0.0
Bumps [@actions/exec](https://github.com/actions/toolkit/tree/HEAD/packages/exec) from 2.0.0 to 3.0.0.
- [Changelog](https://github.com/actions/toolkit/blob/main/packages/exec/RELEASES.md)
- [Commits](https://github.com/actions/toolkit/commits/HEAD/packages/exec)

---
updated-dependencies:
- dependency-name: "@actions/exec"
  dependency-version: 3.0.0
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-01-29 00:14:21 +00:00
CrazyMax
ac634d2f0a Merge pull request #964 from docker/dependabot/npm_and_yarn/actions/io-3.0.2
build(deps): bump @actions/io from 2.0.0 to 3.0.2
2026-01-29 01:12:27 +01:00
CrazyMax
72bdaca3a5 map @actions/io to real entrypoint in Jest configs
Signed-off-by: CrazyMax <1951866+crazy-max@users.noreply.github.com>
2026-01-29 01:03:38 +01:00
dependabot[bot]
13ca90c5d0 build(deps): bump @actions/io from 2.0.0 to 3.0.2
Bumps [@actions/io](https://github.com/actions/toolkit/tree/HEAD/packages/io) from 2.0.0 to 3.0.2.
- [Changelog](https://github.com/actions/toolkit/blob/main/packages/io/RELEASES.md)
- [Commits](https://github.com/actions/toolkit/commits/HEAD/packages/io)

---
updated-dependencies:
- dependency-name: "@actions/io"
  dependency-version: 3.0.2
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-01-28 22:54:18 +00:00
CrazyMax
17e08b98a8 sigstore: verifyArtifact func to verify arbitrary artifact
Signed-off-by: CrazyMax <1951866+crazy-max@users.noreply.github.com>
2026-01-28 17:25:57 +01:00
CrazyMax
89e14b0d85 buildx(install): workaround to check subjectAlternativeName
Signed-off-by: CrazyMax <1951866+crazy-max@users.noreply.github.com>
2026-01-28 17:24:22 +01:00
CrazyMax
d830716b30 buildx(install): use sigstore module to verify signature
Signed-off-by: CrazyMax <1951866+crazy-max@users.noreply.github.com>
2026-01-28 17:24:21 +01:00
CrazyMax
0969a99659 Merge pull request #960 from docker/dependabot/npm_and_yarn/actions/github-9.0.0
build(deps): bump @actions/github from 7.0.0 to 9.0.0
2026-01-28 17:17:44 +01:00
CrazyMax
ae6b2a8dc9 add repoData API test with per-test mock
Signed-off-by: CrazyMax <1951866+crazy-max@users.noreply.github.com>
2026-01-28 16:35:15 +01:00
CrazyMax
537174131a replace direct octokit deps with @actions/github types
Signed-off-by: CrazyMax <1951866+crazy-max@users.noreply.github.com>
2026-01-28 16:29:39 +01:00
CrazyMax
2806b0ceaf map @actions/github to real entrypoint in Jest configs
Signed-off-by: CrazyMax <1951866+crazy-max@users.noreply.github.com>
2026-01-28 15:31:33 +01:00
CrazyMax
466f0611ff let ts-jest transform JS and allow JS in tests
Signed-off-by: CrazyMax <1951866+crazy-max@users.noreply.github.com>
2026-01-28 15:06:20 +01:00
CrazyMax
13d565c67f transform ESM octokit deps during tests
Signed-off-by: CrazyMax <1951866+crazy-max@users.noreply.github.com>
2026-01-28 14:48:37 +01:00
CrazyMax
4fefc18a15 align octokit modules version with @actions/github v9
Signed-off-by: CrazyMax <1951866+crazy-max@users.noreply.github.com>
2026-01-28 14:24:01 +01:00
dependabot[bot]
66d355cbed build(deps): bump @actions/github from 7.0.0 to 9.0.0
Bumps [@actions/github](https://github.com/actions/toolkit/tree/HEAD/packages/github) from 7.0.0 to 9.0.0.
- [Changelog](https://github.com/actions/toolkit/blob/main/packages/github/RELEASES.md)
- [Commits](https://github.com/actions/toolkit/commits/HEAD/packages/github)

---
updated-dependencies:
- dependency-name: "@actions/github"
  dependency-version: 9.0.0
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-01-28 13:21:41 +00:00
CrazyMax
06cdb9490a Merge pull request #961 from crazy-max/esm
switch to ESM and update config/test wiring
2026-01-28 14:19:10 +01:00
CrazyMax
2617546094 github: derive summary table types from core API
Signed-off-by: CrazyMax <1951866+crazy-max@users.noreply.github.com>
2026-01-28 12:16:41 +01:00
CrazyMax
9348f81855 git: drop types/git and inline GitHub context type
Signed-off-by: CrazyMax <1951866+crazy-max@users.noreply.github.com>
2026-01-28 12:16:40 +01:00
CrazyMax
3f7be6d97d add ESM-safe os test helpers and tsconfig for tests
Signed-off-by: CrazyMax <1951866+crazy-max@users.noreply.github.com>
2026-01-28 11:52:41 +01:00
CrazyMax
8a49a6ea9c remove the mapper entry for csv-parse in jest config
Signed-off-by: CrazyMax <1951866+crazy-max@users.noreply.github.com>
2026-01-28 10:52:08 +01:00
CrazyMax
faa5b5bf22 switch to ESM and update config/test wiring
Signed-off-by: CrazyMax <1951866+crazy-max@users.noreply.github.com>
2026-01-28 10:35:34 +01:00
CrazyMax
f64486ace9 Merge pull request #959 from docker/dependabot/npm_and_yarn/actions/artifact-5.0.3
build(deps): bump @actions/artifact from 5.0.2 to 5.0.3
2026-01-28 10:14:43 +01:00
dependabot[bot]
dd7585591e build(deps): bump @actions/artifact from 5.0.2 to 5.0.3
Bumps [@actions/artifact](https://github.com/actions/toolkit/tree/HEAD/packages/artifact) from 5.0.2 to 5.0.3.
- [Changelog](https://github.com/actions/toolkit/blob/main/packages/artifact/RELEASES.md)
- [Commits](https://github.com/actions/toolkit/commits/HEAD/packages/artifact)

---
updated-dependencies:
- dependency-name: "@actions/artifact"
  dependency-version: 5.0.3
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-01-28 09:04:56 +00:00
CrazyMax
e278a8ff7f Merge pull request #956 from docker/dependabot/npm_and_yarn/actions/cache-5.0.5
build(deps): bump @actions/cache from 5.0.3 to 5.0.5
2026-01-28 09:58:50 +01:00
dependabot[bot]
a8f3950008 build(deps): bump @actions/cache from 5.0.3 to 5.0.5
Bumps [@actions/cache](https://github.com/actions/toolkit/tree/HEAD/packages/cache) from 5.0.3 to 5.0.5.
- [Changelog](https://github.com/actions/toolkit/blob/main/packages/cache/RELEASES.md)
- [Commits](https://github.com/actions/toolkit/commits/HEAD/packages/cache)

---
updated-dependencies:
- dependency-name: "@actions/cache"
  dependency-version: 5.0.5
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-01-28 08:54:01 +00:00
CrazyMax
16a313e50b Merge pull request #958 from docker/dependabot/npm_and_yarn/actions/tool-cache-3.0.1
build(deps): bump @actions/tool-cache from 3.0.0 to 3.0.1
2026-01-28 09:53:16 +01:00
CrazyMax
f57515d812 Merge pull request #957 from docker/dependabot/npm_and_yarn/actions/core-2.0.3
build(deps): bump @actions/core from 2.0.2 to 2.0.3
2026-01-28 09:50:18 +01:00
dependabot[bot]
b2d68b3506 build(deps): bump @actions/core from 2.0.2 to 2.0.3
Bumps [@actions/core](https://github.com/actions/toolkit/tree/HEAD/packages/core) from 2.0.2 to 2.0.3.
- [Changelog](https://github.com/actions/toolkit/blob/main/packages/core/RELEASES.md)
- [Commits](https://github.com/actions/toolkit/commits/HEAD/packages/core)

---
updated-dependencies:
- dependency-name: "@actions/core"
  dependency-version: 2.0.3
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-01-28 08:43:15 +00:00
dependabot[bot]
6785818572 build(deps): bump @actions/tool-cache from 3.0.0 to 3.0.1
Bumps [@actions/tool-cache](https://github.com/actions/toolkit/tree/HEAD/packages/tool-cache) from 3.0.0 to 3.0.1.
- [Changelog](https://github.com/actions/toolkit/blob/main/packages/tool-cache/RELEASES.md)
- [Commits](https://github.com/actions/toolkit/commits/HEAD/packages/tool-cache)

---
updated-dependencies:
- dependency-name: "@actions/tool-cache"
  dependency-version: 3.0.1
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-01-28 08:43:12 +00:00
CrazyMax
ac0e0b50d5 Merge pull request #955 from docker/dependabot/npm_and_yarn/actions/http-client-3.0.2
build(deps): bump @actions/http-client from 3.0.1 to 3.0.2
2026-01-28 09:41:06 +01:00
dependabot[bot]
20a43cb510 build(deps): bump @actions/http-client from 3.0.1 to 3.0.2
Bumps [@actions/http-client](https://github.com/actions/toolkit/tree/HEAD/packages/http-client) from 3.0.1 to 3.0.2.
- [Changelog](https://github.com/actions/toolkit/blob/main/packages/http-client/RELEASES.md)
- [Commits](https://github.com/actions/toolkit/commits/HEAD/packages/http-client)

---
updated-dependencies:
- dependency-name: "@actions/http-client"
  dependency-version: 3.0.2
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-01-27 15:07:35 +00:00
CrazyMax
2359f15647 Merge pull request #954 from docker/bot/docker-releases-json
Some checks failed
publish / publish (push) Has been cancelled
Update `.github/docker-releases.json`
2026-01-27 15:40:44 +01:00
crazy-max
5945e3ce92 github: update .github/docker-releases.json
Signed-off-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2026-01-27 00:38:15 +00:00
CrazyMax
ab52a082b7 Merge pull request #949 from tonistiigi/update-buildkit-v0.27.0
Update buildkit v0.27.0 buildx v0.31.0
2026-01-26 09:18:50 +01:00
CrazyMax
20dcd0ab5d Merge pull request #946 from docker/bot/compose-releases-json
Update `.github/compose-releases.json`
2026-01-26 09:18:24 +01:00
CrazyMax
05e85e2bdc Merge pull request #945 from docker/bot/docker-releases-json
Update `.github/docker-releases.json`
2026-01-26 09:18:06 +01:00
crazy-max
119c41667b github: update .github/compose-releases.json
Signed-off-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2026-01-25 16:33:02 +00:00
crazy-max
410f125810 github: update .github/docker-releases.json
Signed-off-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2026-01-25 16:32:57 +00:00
CrazyMax
715a9004a5 Merge pull request #950 from docker/dependabot/npm_and_yarn/lodash-4.17.23
build(deps): bump lodash from 4.17.21 to 4.17.23
2026-01-25 17:32:32 +01:00
CrazyMax
108eb64bab Merge pull request #940 from docker/dependabot/npm_and_yarn/actions/cache-5.0.3
build(deps): bump @actions/cache from 5.0.2 to 5.0.3
2026-01-25 17:31:51 +01:00
CrazyMax
2a3d026818 Merge pull request #947 from docker/dependabot/github_actions/peter-evans/create-pull-request-8.1.0
build(deps): bump peter-evans/create-pull-request from 8.0.0 to 8.1.0
2026-01-25 16:43:16 +01:00
dependabot[bot]
fda38b8e1a build(deps): bump lodash from 4.17.21 to 4.17.23
Bumps [lodash](https://github.com/lodash/lodash) from 4.17.21 to 4.17.23.
- [Release notes](https://github.com/lodash/lodash/releases)
- [Commits](https://github.com/lodash/lodash/compare/4.17.21...4.17.23)

---
updated-dependencies:
- dependency-name: lodash
  dependency-version: 4.17.23
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-01-22 06:22:14 +00:00
Tonis Tiigi
fe1a39d735 update buildkit v0.27.0
Signed-off-by: Tonis Tiigi <tonistiigi@gmail.com>
2026-01-21 17:00:01 -08:00
Tonis Tiigi
34ce37a841 update buildx v0.31.0
Signed-off-by: Tonis Tiigi <tonistiigi@gmail.com>
2026-01-21 16:59:23 -08:00
Tõnis Tiigi
5e85cd909c Merge pull request #948 from docker/bot/buildx-releases-json
Update `.github/buildx-releases.json`
2026-01-21 16:56:03 -08:00
crazy-max
e4be903f47 github: update .github/buildx-releases.json
Signed-off-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2026-01-22 00:27:49 +00:00
dependabot[bot]
38f5d06496 build(deps): bump peter-evans/create-pull-request from 8.0.0 to 8.1.0
Bumps [peter-evans/create-pull-request](https://github.com/peter-evans/create-pull-request) from 8.0.0 to 8.1.0.
- [Release notes](https://github.com/peter-evans/create-pull-request/releases)
- [Commits](98357b18bf...c0f553fe54)

---
updated-dependencies:
- dependency-name: peter-evans/create-pull-request
  dependency-version: 8.1.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-01-21 22:53:03 +00:00
CrazyMax
1e6bce61a0 Merge pull request #942 from docker/bot/docker-releases-json
Update `.github/docker-releases.json`
2026-01-17 20:22:12 +01:00
CrazyMax
62950e53c4 Merge pull request #941 from docker/bot/buildx-releases-json
Update `.github/buildx-releases.json`
2026-01-17 20:21:48 +01:00
crazy-max
fbfb919592 github: update .github/docker-releases.json
Signed-off-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2026-01-17 00:34:28 +00:00
crazy-max
7853dc580d github: update .github/buildx-releases.json
Signed-off-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2026-01-17 00:24:56 +00:00
dependabot[bot]
e99d5ed6bd build(deps): bump @actions/cache from 5.0.2 to 5.0.3
Bumps [@actions/cache](https://github.com/actions/toolkit/tree/HEAD/packages/cache) from 5.0.2 to 5.0.3.
- [Changelog](https://github.com/actions/toolkit/blob/main/packages/cache/RELEASES.md)
- [Commits](https://github.com/actions/toolkit/commits/HEAD/packages/cache)

---
updated-dependencies:
- dependency-name: "@actions/cache"
  dependency-version: 5.0.3
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-01-16 22:54:11 +00:00
CrazyMax
882907c07b Merge pull request #931 from docker/sigstore-signing-config
sigstore: use signing config with cosign
2026-01-15 17:11:42 +01:00
CrazyMax
d5a1a969a5 Merge pull request #939 from docker/bot/buildx-releases-json
Update `.github/buildx-releases.json`
2026-01-15 09:28:57 +01:00
crazy-max
99d1f39750 github: update .github/buildx-releases.json
Signed-off-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2026-01-15 08:27:12 +00:00
CrazyMax
79a6dd0432 Merge pull request #938 from crazy-max/bake-def-envs
Some checks failed
publish / publish (push) Has been cancelled
buildx(bake): merge existing env vars when parsing definition
2026-01-14 14:03:57 +01:00
CrazyMax
306d954be2 buildx(bake): merge existing env vars when parsing definition
Signed-off-by: CrazyMax <1951866+crazy-max@users.noreply.github.com>
2026-01-14 13:51:42 +01:00
CrazyMax
65261f5a19 Merge pull request #937 from crazy-max/sigstore-platform
sigstore: opt to verify attestation manifest for specific platform
2026-01-14 12:59:10 +01:00
CrazyMax
a5dc8e7614 sigstore: opt to verify attestation manifest for specific platform
Signed-off-by: CrazyMax <1951866+crazy-max@users.noreply.github.com>
2026-01-14 12:23:11 +01:00
CrazyMax
c9ffda6adf Merge pull request #936 from crazy-max/oci-defaultPlatform
oci: defaultPlatform function
2026-01-14 12:01:47 +01:00
CrazyMax
af989cc324 oci: defaultPlatform function
Signed-off-by: CrazyMax <1951866+crazy-max@users.noreply.github.com>
2026-01-14 11:49:45 +01:00
CrazyMax
18f82ba384 Merge pull request #935 from crazy-max/imagetools-filter-platform
buildx(imagetools): opt to filter attestation manifests by platform
2026-01-14 11:12:59 +01:00
CrazyMax
f136d06171 buildx(imagetools): opt to filter attestation manifests by platform
Signed-off-by: CrazyMax <1951866+crazy-max@users.noreply.github.com>
2026-01-14 10:52:51 +01:00
CrazyMax
6e1b0e6179 Merge pull request #934 from docker/sigstore-verify-retry
Some checks failed
publish / publish (push) Has been cancelled
sigstore: make retry on manifest unknown optional
2026-01-13 17:33:53 +01:00
CrazyMax
b4f34ed319 sigstore: make retry on manifest unknown optional
Signed-off-by: CrazyMax <1951866+crazy-max@users.noreply.github.com>
2026-01-13 16:21:46 +01:00
CrazyMax
c47fbe6179 sigstore: use signing config with cosign
Signed-off-by: CrazyMax <1951866+crazy-max@users.noreply.github.com>
2026-01-13 15:14:37 +01:00
CrazyMax
ba992bb822 Merge pull request #933 from crazy-max/sigstore-test-sign
Some checks failed
publish / publish (push) Has been cancelled
sigstore: test signAttestationManifests
2026-01-13 15:07:08 +01:00
CrazyMax
345531d0a4 sigstore: test signAttestationManifests
Signed-off-by: CrazyMax <1951866+crazy-max@users.noreply.github.com>
2026-01-13 14:56:12 +01:00
CrazyMax
2e620f9c90 Merge pull request #932 from crazy-max/sigstore-verifyimage
sigstore: add function to verify image attestations
2026-01-13 14:50:59 +01:00
CrazyMax
0162b2cf8b cosign: clear errors if manifest or bundle payload found
Signed-off-by: CrazyMax <1951866+crazy-max@users.noreply.github.com>
2026-01-13 13:25:39 +01:00
CrazyMax
7397cfe37c sigstore: add function to verify image attestations
Signed-off-by: CrazyMax <1951866+crazy-max@users.noreply.github.com>
2026-01-13 13:21:55 +01:00
CrazyMax
a3d5eee63a Merge pull request #928 from docker/bot/cosign-releases-json
Update `.github/cosign-releases.json`
2026-01-12 14:18:20 +01:00
crazy-max
85c3d8b7f3 github: update .github/cosign-releases.json
Signed-off-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2026-01-10 00:13:01 +00:00
CrazyMax
22773fa848 Merge pull request #927 from docker/bot/docker-releases-json
Update `.github/docker-releases.json`
2026-01-09 13:16:03 +01:00
crazy-max
cbf7323bc1 github: update .github/docker-releases.json
Signed-off-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2026-01-09 12:14:24 +00:00
CrazyMax
382ab4c9ac Merge pull request #924 from docker/dependabot/npm_and_yarn/actions/tool-cache-3.0.0
build(deps): bump @actions/tool-cache from 2.0.2 to 3.0.0
2026-01-08 16:33:06 +01:00
CrazyMax
b0b34198c4 Merge pull request #925 from docker/dependabot/npm_and_yarn/actions/cache-5.0.2
build(deps): bump @actions/cache from 5.0.1 to 5.0.2
2026-01-08 16:30:42 +01:00
dependabot[bot]
842eaf5ac0 build(deps): bump @actions/cache from 5.0.1 to 5.0.2
Bumps [@actions/cache](https://github.com/actions/toolkit/tree/HEAD/packages/cache) from 5.0.1 to 5.0.2.
- [Changelog](https://github.com/actions/toolkit/blob/main/packages/cache/RELEASES.md)
- [Commits](https://github.com/actions/toolkit/commits/HEAD/packages/cache)

---
updated-dependencies:
- dependency-name: "@actions/cache"
  dependency-version: 5.0.2
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-01-08 15:21:39 +00:00
CrazyMax
2f0f57f46e Merge pull request #926 from docker/dependabot/npm_and_yarn/actions/artifact-5.0.2
build(deps): bump @actions/artifact from 5.0.1 to 5.0.2
2026-01-08 16:19:26 +01:00
dependabot[bot]
4f8b9ae301 build(deps): bump @actions/tool-cache from 2.0.2 to 3.0.0
Bumps [@actions/tool-cache](https://github.com/actions/toolkit/tree/HEAD/packages/tool-cache) from 2.0.2 to 3.0.0.
- [Changelog](https://github.com/actions/toolkit/blob/main/packages/tool-cache/RELEASES.md)
- [Commits](https://github.com/actions/toolkit/commits/HEAD/packages/tool-cache)

---
updated-dependencies:
- dependency-name: "@actions/tool-cache"
  dependency-version: 3.0.0
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-01-08 15:12:22 +00:00
dependabot[bot]
0aaa94bdee build(deps): bump @actions/artifact from 5.0.1 to 5.0.2
Bumps [@actions/artifact](https://github.com/actions/toolkit/tree/HEAD/packages/artifact) from 5.0.1 to 5.0.2.
- [Changelog](https://github.com/actions/toolkit/blob/main/packages/artifact/RELEASES.md)
- [Commits](https://github.com/actions/toolkit/commits/HEAD/packages/artifact)

---
updated-dependencies:
- dependency-name: "@actions/artifact"
  dependency-version: 5.0.2
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-01-08 15:12:07 +00:00
CrazyMax
654afbf8c5 Merge pull request #922 from docker/dependabot/npm_and_yarn/actions/core-2.0.2
build(deps): bump @actions/core from 2.0.1 to 2.0.2
2026-01-08 16:09:49 +01:00
CrazyMax
d256fc587d Merge pull request #923 from docker/dependabot/npm_and_yarn/actions/github-7.0.0
build(deps): bump @actions/github from 6.0.1 to 7.0.0
2026-01-08 16:08:23 +01:00
dependabot[bot]
ca8ad9e7ab build(deps): bump @actions/github from 6.0.1 to 7.0.0
Bumps [@actions/github](https://github.com/actions/toolkit/tree/HEAD/packages/github) from 6.0.1 to 7.0.0.
- [Changelog](https://github.com/actions/toolkit/blob/main/packages/github/RELEASES.md)
- [Commits](https://github.com/actions/toolkit/commits/HEAD/packages/github)

---
updated-dependencies:
- dependency-name: "@actions/github"
  dependency-version: 7.0.0
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-01-08 14:53:30 +00:00
dependabot[bot]
53aedd9542 build(deps): bump @actions/core from 2.0.1 to 2.0.2
Bumps [@actions/core](https://github.com/actions/toolkit/tree/HEAD/packages/core) from 2.0.1 to 2.0.2.
- [Changelog](https://github.com/actions/toolkit/blob/main/packages/core/RELEASES.md)
- [Commits](https://github.com/actions/toolkit/commits/HEAD/packages/core)

---
updated-dependencies:
- dependency-name: "@actions/core"
  dependency-version: 2.0.2
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-01-08 14:53:07 +00:00
CrazyMax
01fb6c8d3b Merge pull request #921 from docker/dependabot/npm_and_yarn/actions/http-client-3.0.1
build(deps): bump @actions/http-client from 3.0.0 to 3.0.1
2026-01-08 10:28:17 +01:00
dependabot[bot]
6439a13308 build(deps): bump @actions/http-client from 3.0.0 to 3.0.1
Bumps [@actions/http-client](https://github.com/actions/toolkit/tree/HEAD/packages/http-client) from 3.0.0 to 3.0.1.
- [Changelog](https://github.com/actions/toolkit/blob/main/packages/http-client/RELEASES.md)
- [Commits](https://github.com/actions/toolkit/commits/HEAD/packages/http-client)

---
updated-dependencies:
- dependency-name: "@actions/http-client"
  dependency-version: 3.0.1
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-01-08 01:10:26 +00:00
CrazyMax
a6ccf4cb79 Merge pull request #919 from crazy-max/fix-publish-workflow
ci(publish): fix permissions to create GitHub Release
2026-01-07 17:17:31 +01:00
CrazyMax
333909f560 Merge pull request #920 from crazy-max/buildkit-0.26.3
update buildkit to 0.26.3
2026-01-05 16:08:22 +01:00
CrazyMax
0b7584385a update buildkit to 0.26.3
Signed-off-by: CrazyMax <1951866+crazy-max@users.noreply.github.com>
2026-01-05 14:58:42 +01:00
CrazyMax
3a94f7311f ci(publish): fix permissions to create GitHub Release
Signed-off-by: CrazyMax <1951866+crazy-max@users.noreply.github.com>
2026-01-05 14:47:21 +01:00
CrazyMax
f2404dca2f Merge pull request #918 from crazy-max/isolated-modules
Some checks failed
publish / publish (push) Has been cancelled
set isolatedModules=true to fix ts-jest TS151002 warning
2026-01-05 13:58:14 +01:00
CrazyMax
8bae8c963f Merge pull request #913 from docker/dependabot/npm_and_yarn/sigstore/verify-3.1.0
build(deps): bump @sigstore/verify from 3.0.0 to 3.1.0
2026-01-05 13:46:58 +01:00
CrazyMax
c00b0d2393 set isolatedModules=true to fix ts-jest TS151002 warning
Signed-off-by: CrazyMax <1951866+crazy-max@users.noreply.github.com>
2026-01-05 13:45:55 +01:00
dependabot[bot]
f861f8df56 build(deps): bump @sigstore/verify from 3.0.0 to 3.1.0
Bumps [@sigstore/verify](https://github.com/sigstore/sigstore-js) from 3.0.0 to 3.1.0.
- [Release notes](https://github.com/sigstore/sigstore-js/releases)
- [Commits](https://github.com/sigstore/sigstore-js/compare/@sigstore/verify@3.0.0...sigstore@3.1.0)

---
updated-dependencies:
- dependency-name: "@sigstore/verify"
  dependency-version: 3.1.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-01-05 11:05:33 +00:00
CrazyMax
7b8ae12eb0 Merge pull request #917 from crazy-max/update-sigstore-sign
update @sigstore/sign to 4.1.0
2026-01-05 12:03:24 +01:00
CrazyMax
10fbe0d8d4 update @sigstore/sign to 4.1.0
Signed-off-by: CrazyMax <1951866+crazy-max@users.noreply.github.com>
2026-01-05 10:48:28 +01:00
CrazyMax
8ba5f4ae6f enable Node 16–style ESM resolution
Signed-off-by: CrazyMax <1951866+crazy-max@users.noreply.github.com>
2026-01-05 10:48:28 +01:00
CrazyMax
fcb1e5a298 Merge pull request #914 from docker/dependabot/npm_and_yarn/sigstore/tuf-4.0.1
build(deps): bump @sigstore/tuf from 4.0.0 to 4.0.1
2026-01-05 10:02:48 +01:00
CrazyMax
459eee50e8 Merge pull request #916 from docker/bot/undock-releases-json
Update `.github/undock-releases.json`
2025-12-31 23:47:14 +01:00
crazy-max
9c67bc4427 github: update .github/undock-releases.json
Signed-off-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2025-12-31 13:50:26 +00:00
CrazyMax
d86ab59115 Merge pull request #915 from neilime/feat/handle-detached-head-error
fix: handle detached head error
2025-12-31 14:50:01 +01:00
copilot-swe-agent[bot]
945d269b25 fix: handle detached head error 2025-12-23 18:48:02 +01:00
dependabot[bot]
692b091ac0 build(deps): bump @sigstore/tuf from 4.0.0 to 4.0.1
Bumps [@sigstore/tuf](https://github.com/sigstore/sigstore-js) from 4.0.0 to 4.0.1.
- [Release notes](https://github.com/sigstore/sigstore-js/releases)
- [Commits](https://github.com/sigstore/sigstore-js/compare/@sigstore/tuf@4.0.0...@sigstore/sign@4.0.1)

---
updated-dependencies:
- dependency-name: "@sigstore/tuf"
  dependency-version: 4.0.1
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-12-19 22:06:19 +00:00
CrazyMax
3984b38120 Merge pull request #909 from crazy-max/publish-commitish
ci(publish): no need to set target_commitish
2025-12-18 18:20:18 +01:00
CrazyMax
57c7ba07e5 Merge pull request #908 from docker/bot/compose-releases-json
Update `.github/compose-releases.json`
2025-12-18 16:53:50 +01:00
CrazyMax
73ff711ca0 ci(publish): no need to set target_commitish
Signed-off-by: CrazyMax <1951866+crazy-max@users.noreply.github.com>
2025-12-18 16:52:40 +01:00
crazy-max
ce2ae460d6 github: update .github/compose-releases.json
Signed-off-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2025-12-18 15:51:44 +00:00
CrazyMax
f61800c7a9 Merge pull request #907 from crazy-max/publish-release
ci(publish): create github release
2025-12-18 16:51:15 +01:00
CrazyMax
45b39556af ci(publish): create github release
Signed-off-by: CrazyMax <1951866+crazy-max@users.noreply.github.com>
2025-12-18 13:30:31 +01:00
CrazyMax
5172be8e2f Merge pull request #906 from crazy-max/npm-publish
Some checks failed
publish / publish (push) Has been cancelled
ci: use trusted publishing to publish our package
2025-12-18 13:04:59 +01:00
CrazyMax
1ded416304 ci(publish): generate provenance attestation
Signed-off-by: CrazyMax <1951866+crazy-max@users.noreply.github.com>
2025-12-18 12:05:50 +01:00
CrazyMax
2ea2c9d9ee ci: use trusted publishing to publish our npm package
Signed-off-by: CrazyMax <1951866+crazy-max@users.noreply.github.com>
2025-12-18 12:05:50 +01:00
CrazyMax
9442c70243 Merge pull request #904 from crazy-max/cosign-bin-verify
Some checks failed
publish / publish (push) Has been cancelled
cosign(install): verify binary signature with keyless verification bundle
2025-12-18 09:19:02 +01:00
CrazyMax
36dc518728 Merge pull request #905 from docker/bot/docker-releases-json
Update `.github/docker-releases.json`
2025-12-18 09:18:30 +01:00
crazy-max
a05039c77d github: update .github/docker-releases.json
Signed-off-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2025-12-18 00:31:44 +00:00
CrazyMax
eb8ed6b687 cosign(install): use sigstore module to verify signature
Signed-off-by: CrazyMax <1951866+crazy-max@users.noreply.github.com>
2025-12-16 19:44:45 +01:00
CrazyMax
44e7279490 cosign(install): verify binary signature with keyless verification bundle
Signed-off-by: CrazyMax <1951866+crazy-max@users.noreply.github.com>
2025-12-16 15:02:36 +01:00
CrazyMax
5e6dd63795 Merge pull request #903 from crazy-max/update-tsconfig
chore: update tsconfig
2025-12-16 10:20:25 +01:00
CrazyMax
9ab04625a7 chore: update tsconfig
Signed-off-by: CrazyMax <1951866+crazy-max@users.noreply.github.com>
2025-12-16 10:15:42 +01:00
CrazyMax
974eb14a42 Merge pull request #902 from crazy-max/dev-deps
update dev dependencies
2025-12-16 10:05:22 +01:00
CrazyMax
b13a880f18 update jest config since 30.0
Signed-off-by: CrazyMax <1951866+crazy-max@users.noreply.github.com>
2025-12-15 23:57:24 +01:00
CrazyMax
a198dbc46d migrate eslint config to new format required since 9.0.0
Signed-off-by: CrazyMax <1951866+crazy-max@users.noreply.github.com>
2025-12-15 23:10:13 +01:00
CrazyMax
d82a614b83 update dev dependencies
Signed-off-by: CrazyMax <1951866+crazy-max@users.noreply.github.com>
2025-12-15 22:25:01 +01:00
CrazyMax
945397f145 Merge pull request #892 from docker/dependabot/npm_and_yarn/actions/cache-5.0.1
build(deps): bump @actions/cache from 4.1.0 to 5.0.1
2025-12-15 12:32:33 +01:00
CrazyMax
33cdba4686 github: fix import of TransferProgressEvent
Signed-off-by: CrazyMax <1951866+crazy-max@users.noreply.github.com>
2025-12-15 11:28:24 +01:00
dependabot[bot]
5eeec21377 build(deps): bump @actions/cache from 4.1.0 to 5.0.1
Bumps [@actions/cache](https://github.com/actions/toolkit/tree/HEAD/packages/cache) from 4.1.0 to 5.0.1.
- [Changelog](https://github.com/actions/toolkit/blob/main/packages/cache/RELEASES.md)
- [Commits](https://github.com/actions/toolkit/commits/HEAD/packages/cache)

---
updated-dependencies:
- dependency-name: "@actions/cache"
  dependency-version: 5.0.1
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-12-15 10:08:44 +00:00
CrazyMax
cc10fd84d6 Merge pull request #893 from docker/dependabot/npm_and_yarn/actions/artifact-5.0.1
build(deps): bump @actions/artifact from 4.0.0 to 5.0.1
2025-12-15 11:06:37 +01:00
CrazyMax
48394148f4 Merge pull request #900 from docker/cosign-3.0.3
dockerfile: update cosign to 3.0.3
2025-12-15 11:05:32 +01:00
Paweł Gronowski
3c97831db9 Merge pull request #896 from crazy-max/unpin-qemu
docker(install): unpin QEMU
2025-12-15 10:04:03 +00:00
CrazyMax
2aaf8dc22d bump @azure/storage-blob from 12.15.0 to 12.29.1
Signed-off-by: CrazyMax <1951866+crazy-max@users.noreply.github.com>
2025-12-15 10:41:11 +01:00
dependabot[bot]
d4379528b4 build(deps): bump @actions/artifact from 4.0.0 to 5.0.1
Bumps [@actions/artifact](https://github.com/actions/toolkit/tree/HEAD/packages/artifact) from 4.0.0 to 5.0.1.
- [Changelog](https://github.com/actions/toolkit/blob/main/packages/artifact/RELEASES.md)
- [Commits](https://github.com/actions/toolkit/commits/HEAD/packages/artifact)

---
updated-dependencies:
- dependency-name: "@actions/artifact"
  dependency-version: 5.0.1
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-12-15 09:23:37 +00:00
CrazyMax
8b935c624b Merge pull request #889 from docker/dependabot/npm_and_yarn/actions/core-2.0.1
build(deps): bump @actions/core from 1.11.1 to 2.0.1
2025-12-15 10:21:25 +01:00
CrazyMax
e0deaff943 dockerfile: update cosign to 3.0.3
Signed-off-by: CrazyMax <1951866+crazy-max@users.noreply.github.com>
2025-12-15 10:02:13 +01:00
dependabot[bot]
2149af8d90 build(deps): bump @actions/core from 1.11.1 to 2.0.1
Bumps [@actions/core](https://github.com/actions/toolkit/tree/HEAD/packages/core) from 1.11.1 to 2.0.1.
- [Changelog](https://github.com/actions/toolkit/blob/main/packages/core/RELEASES.md)
- [Commits](https://github.com/actions/toolkit/commits/@actions/artifact@2.0.1/packages/core)

---
updated-dependencies:
- dependency-name: "@actions/core"
  dependency-version: 2.0.1
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-12-15 08:56:39 +00:00
CrazyMax
1e11a6ae9d Merge pull request #885 from docker/dependabot/npm_and_yarn/actions/exec-2.0.0
build(deps): bump @actions/exec from 1.1.1 to 2.0.0
2025-12-15 09:54:31 +01:00
CrazyMax
8ef5b18fcf Merge pull request #886 from docker/dependabot/github_actions/peter-evans/create-pull-request-8.0.0
build(deps): bump peter-evans/create-pull-request from 7.0.9 to 8.0.0
2025-12-15 09:27:41 +01:00
CrazyMax
7d9e85a9da Merge pull request #883 from docker/bot/regclient-releases-json
Update `.github/regclient-releases.json`
2025-12-15 09:27:08 +01:00
CrazyMax
3616f2901b Merge pull request #887 from docker/bot/cosign-releases-json
Update `.github/cosign-releases.json`
2025-12-15 09:26:49 +01:00
crazy-max
b1d718004d github: update .github/regclient-releases.json
Signed-off-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2025-12-15 08:26:49 +00:00
CrazyMax
077fb8ba53 Merge pull request #890 from docker/bot/buildx-lab-releases-json
Update `.github/buildx-lab-releases.json`
2025-12-15 09:26:21 +01:00
CrazyMax
2a71af4445 Merge pull request #891 from docker/dependabot/github_actions/actions/download-artifact-7
build(deps): bump actions/download-artifact from 6 to 7
2025-12-15 09:26:02 +01:00
CrazyMax
4a30d04fe2 docker(install): unpin QEMU
Signed-off-by: CrazyMax <1951866+crazy-max@users.noreply.github.com>
2025-12-15 09:23:27 +01:00
crazy-max
0c34b0e7cf github: update .github/cosign-releases.json
Signed-off-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2025-12-15 06:51:15 +00:00
crazy-max
c447ec0b97 github: update .github/buildx-lab-releases.json
Signed-off-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2025-12-15 06:51:13 +00:00
CrazyMax
7b4504332f Merge pull request #894 from docker/bot/docker-releases-json
Update `.github/docker-releases.json`
2025-12-15 07:50:49 +01:00
crazy-max
a980bcd0c5 github: update .github/docker-releases.json
Signed-off-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2025-12-13 00:33:07 +00:00
dependabot[bot]
7a87dc0d65 build(deps): bump actions/download-artifact from 6 to 7
Bumps [actions/download-artifact](https://github.com/actions/download-artifact) from 6 to 7.
- [Release notes](https://github.com/actions/download-artifact/releases)
- [Commits](https://github.com/actions/download-artifact/compare/v6...v7)

---
updated-dependencies:
- dependency-name: actions/download-artifact
  dependency-version: '7'
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-12-12 22:05:16 +00:00
dependabot[bot]
18946344af build(deps): bump peter-evans/create-pull-request from 7.0.9 to 8.0.0
Bumps [peter-evans/create-pull-request](https://github.com/peter-evans/create-pull-request) from 7.0.9 to 8.0.0.
- [Release notes](https://github.com/peter-evans/create-pull-request/releases)
- [Commits](84ae59a2cd...98357b18bf)

---
updated-dependencies:
- dependency-name: peter-evans/create-pull-request
  dependency-version: 8.0.0
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-12-09 22:08:28 +00:00
dependabot[bot]
3d735ba61a build(deps): bump @actions/exec from 1.1.1 to 2.0.0
Bumps [@actions/exec](https://github.com/actions/toolkit/tree/HEAD/packages/exec) from 1.1.1 to 2.0.0.
- [Changelog](https://github.com/actions/toolkit/blob/main/packages/exec/RELEASES.md)
- [Commits](https://github.com/actions/toolkit/commits/HEAD/packages/exec)

---
updated-dependencies:
- dependency-name: "@actions/exec"
  dependency-version: 2.0.0
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-12-09 22:07:13 +00:00
CrazyMax
14952de7ed Merge pull request #881 from docker/bot/docker-releases-json
Update `.github/docker-releases.json`
2025-12-03 09:34:40 +01:00
crazy-max
12285e1fc3 github: update .github/docker-releases.json
Signed-off-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2025-12-03 00:33:25 +00:00
145 changed files with 8440 additions and 9209 deletions

View File

@@ -1,4 +0,0 @@
/.yarn/**
/lib/**
/coverage/**
/node_modules/**

View File

@@ -1,36 +0,0 @@
{
"env": {
"node": true,
"es6": true,
"mocha": true,
"jest": true
},
"extends": [
"eslint:recommended",
"plugin:@typescript-eslint/eslint-recommended",
"plugin:@typescript-eslint/recommended",
"plugin:import/errors",
"plugin:import/typescript", // this is needed to allow importing typescript files from JS
"plugin:import/warnings",
"plugin:jest/recommended",
"plugin:prettier/recommended"
],
"parser": "@typescript-eslint/parser",
"parserOptions": {
"ecmaVersion": 2023,
"sourceType": "module"
},
"plugins": [
"@typescript-eslint",
"jest",
"prettier"
],
"rules": {
"import/no-unresolved": [
"error", {
"ignore": ["csv-parse/sync", "@octokit/openapi-types"]
}
],
"jest/no-disabled-tests": 0
}
}

View File

@@ -1,61 +1,145 @@
{
"latest": {
"id": 264746294,
"tag_name": "v0.30.1-desktop.1",
"html_url": "https://github.com/docker/buildx-desktop/releases/tag/v0.30.1-desktop.1",
"id": 285373366,
"tag_name": "v0.31.1-desktop.1",
"html_url": "https://github.com/docker/buildx-desktop/releases/tag/v0.31.1-desktop.1",
"assets": [
"https://github.com/docker/buildx-desktop/releases/download/v0.30.1-desktop.1/buildx-v0.30.1-desktop.1.darwin-amd64",
"https://github.com/docker/buildx-desktop/releases/download/v0.30.1-desktop.1/buildx-v0.30.1-desktop.1.darwin-amd64.provenance.json",
"https://github.com/docker/buildx-desktop/releases/download/v0.30.1-desktop.1/buildx-v0.30.1-desktop.1.darwin-amd64.sbom.json",
"https://github.com/docker/buildx-desktop/releases/download/v0.30.1-desktop.1/buildx-v0.30.1-desktop.1.darwin-arm64",
"https://github.com/docker/buildx-desktop/releases/download/v0.30.1-desktop.1/buildx-v0.30.1-desktop.1.darwin-arm64.provenance.json",
"https://github.com/docker/buildx-desktop/releases/download/v0.30.1-desktop.1/buildx-v0.30.1-desktop.1.darwin-arm64.sbom.json",
"https://github.com/docker/buildx-desktop/releases/download/v0.30.1-desktop.1/buildx-v0.30.1-desktop.1.freebsd-amd64",
"https://github.com/docker/buildx-desktop/releases/download/v0.30.1-desktop.1/buildx-v0.30.1-desktop.1.freebsd-amd64.provenance.json",
"https://github.com/docker/buildx-desktop/releases/download/v0.30.1-desktop.1/buildx-v0.30.1-desktop.1.freebsd-amd64.sbom.json",
"https://github.com/docker/buildx-desktop/releases/download/v0.30.1-desktop.1/buildx-v0.30.1-desktop.1.freebsd-arm64",
"https://github.com/docker/buildx-desktop/releases/download/v0.30.1-desktop.1/buildx-v0.30.1-desktop.1.freebsd-arm64.provenance.json",
"https://github.com/docker/buildx-desktop/releases/download/v0.30.1-desktop.1/buildx-v0.30.1-desktop.1.freebsd-arm64.sbom.json",
"https://github.com/docker/buildx-desktop/releases/download/v0.30.1-desktop.1/buildx-v0.30.1-desktop.1.linux-amd64",
"https://github.com/docker/buildx-desktop/releases/download/v0.30.1-desktop.1/buildx-v0.30.1-desktop.1.linux-amd64.provenance.json",
"https://github.com/docker/buildx-desktop/releases/download/v0.30.1-desktop.1/buildx-v0.30.1-desktop.1.linux-amd64.sbom.json",
"https://github.com/docker/buildx-desktop/releases/download/v0.30.1-desktop.1/buildx-v0.30.1-desktop.1.linux-arm-v6",
"https://github.com/docker/buildx-desktop/releases/download/v0.30.1-desktop.1/buildx-v0.30.1-desktop.1.linux-arm-v6.provenance.json",
"https://github.com/docker/buildx-desktop/releases/download/v0.30.1-desktop.1/buildx-v0.30.1-desktop.1.linux-arm-v6.sbom.json",
"https://github.com/docker/buildx-desktop/releases/download/v0.30.1-desktop.1/buildx-v0.30.1-desktop.1.linux-arm-v7",
"https://github.com/docker/buildx-desktop/releases/download/v0.30.1-desktop.1/buildx-v0.30.1-desktop.1.linux-arm-v7.provenance.json",
"https://github.com/docker/buildx-desktop/releases/download/v0.30.1-desktop.1/buildx-v0.30.1-desktop.1.linux-arm-v7.sbom.json",
"https://github.com/docker/buildx-desktop/releases/download/v0.30.1-desktop.1/buildx-v0.30.1-desktop.1.linux-arm64",
"https://github.com/docker/buildx-desktop/releases/download/v0.30.1-desktop.1/buildx-v0.30.1-desktop.1.linux-arm64.provenance.json",
"https://github.com/docker/buildx-desktop/releases/download/v0.30.1-desktop.1/buildx-v0.30.1-desktop.1.linux-arm64.sbom.json",
"https://github.com/docker/buildx-desktop/releases/download/v0.30.1-desktop.1/buildx-v0.30.1-desktop.1.linux-ppc64le",
"https://github.com/docker/buildx-desktop/releases/download/v0.30.1-desktop.1/buildx-v0.30.1-desktop.1.linux-ppc64le.provenance.json",
"https://github.com/docker/buildx-desktop/releases/download/v0.30.1-desktop.1/buildx-v0.30.1-desktop.1.linux-ppc64le.sbom.json",
"https://github.com/docker/buildx-desktop/releases/download/v0.30.1-desktop.1/buildx-v0.30.1-desktop.1.linux-riscv64",
"https://github.com/docker/buildx-desktop/releases/download/v0.30.1-desktop.1/buildx-v0.30.1-desktop.1.linux-riscv64.provenance.json",
"https://github.com/docker/buildx-desktop/releases/download/v0.30.1-desktop.1/buildx-v0.30.1-desktop.1.linux-riscv64.sbom.json",
"https://github.com/docker/buildx-desktop/releases/download/v0.30.1-desktop.1/buildx-v0.30.1-desktop.1.linux-s390x",
"https://github.com/docker/buildx-desktop/releases/download/v0.30.1-desktop.1/buildx-v0.30.1-desktop.1.linux-s390x.provenance.json",
"https://github.com/docker/buildx-desktop/releases/download/v0.30.1-desktop.1/buildx-v0.30.1-desktop.1.linux-s390x.sbom.json",
"https://github.com/docker/buildx-desktop/releases/download/v0.30.1-desktop.1/buildx-v0.30.1-desktop.1.netbsd-amd64",
"https://github.com/docker/buildx-desktop/releases/download/v0.30.1-desktop.1/buildx-v0.30.1-desktop.1.netbsd-amd64.provenance.json",
"https://github.com/docker/buildx-desktop/releases/download/v0.30.1-desktop.1/buildx-v0.30.1-desktop.1.netbsd-amd64.sbom.json",
"https://github.com/docker/buildx-desktop/releases/download/v0.30.1-desktop.1/buildx-v0.30.1-desktop.1.netbsd-arm64",
"https://github.com/docker/buildx-desktop/releases/download/v0.30.1-desktop.1/buildx-v0.30.1-desktop.1.netbsd-arm64.provenance.json",
"https://github.com/docker/buildx-desktop/releases/download/v0.30.1-desktop.1/buildx-v0.30.1-desktop.1.netbsd-arm64.sbom.json",
"https://github.com/docker/buildx-desktop/releases/download/v0.30.1-desktop.1/buildx-v0.30.1-desktop.1.openbsd-amd64",
"https://github.com/docker/buildx-desktop/releases/download/v0.30.1-desktop.1/buildx-v0.30.1-desktop.1.openbsd-amd64.provenance.json",
"https://github.com/docker/buildx-desktop/releases/download/v0.30.1-desktop.1/buildx-v0.30.1-desktop.1.openbsd-amd64.sbom.json",
"https://github.com/docker/buildx-desktop/releases/download/v0.30.1-desktop.1/buildx-v0.30.1-desktop.1.openbsd-arm64",
"https://github.com/docker/buildx-desktop/releases/download/v0.30.1-desktop.1/buildx-v0.30.1-desktop.1.openbsd-arm64.provenance.json",
"https://github.com/docker/buildx-desktop/releases/download/v0.30.1-desktop.1/buildx-v0.30.1-desktop.1.openbsd-arm64.sbom.json",
"https://github.com/docker/buildx-desktop/releases/download/v0.30.1-desktop.1/buildx-v0.30.1-desktop.1.windows-amd64.exe",
"https://github.com/docker/buildx-desktop/releases/download/v0.30.1-desktop.1/buildx-v0.30.1-desktop.1.windows-amd64.provenance.json",
"https://github.com/docker/buildx-desktop/releases/download/v0.30.1-desktop.1/buildx-v0.30.1-desktop.1.windows-amd64.sbom.json",
"https://github.com/docker/buildx-desktop/releases/download/v0.30.1-desktop.1/buildx-v0.30.1-desktop.1.windows-arm64.exe",
"https://github.com/docker/buildx-desktop/releases/download/v0.30.1-desktop.1/buildx-v0.30.1-desktop.1.windows-arm64.provenance.json",
"https://github.com/docker/buildx-desktop/releases/download/v0.30.1-desktop.1/buildx-v0.30.1-desktop.1.windows-arm64.sbom.json",
"https://github.com/docker/buildx-desktop/releases/download/v0.30.1-desktop.1/checksums.txt"
"https://github.com/docker/buildx-desktop/releases/download/v0.31.1-desktop.1/buildx-v0.31.1-desktop.1.darwin-amd64",
"https://github.com/docker/buildx-desktop/releases/download/v0.31.1-desktop.1/buildx-v0.31.1-desktop.1.darwin-amd64.sbom.json",
"https://github.com/docker/buildx-desktop/releases/download/v0.31.1-desktop.1/buildx-v0.31.1-desktop.1.darwin-arm64",
"https://github.com/docker/buildx-desktop/releases/download/v0.31.1-desktop.1/buildx-v0.31.1-desktop.1.darwin-arm64.sbom.json",
"https://github.com/docker/buildx-desktop/releases/download/v0.31.1-desktop.1/buildx-v0.31.1-desktop.1.freebsd-amd64",
"https://github.com/docker/buildx-desktop/releases/download/v0.31.1-desktop.1/buildx-v0.31.1-desktop.1.freebsd-amd64.sbom.json",
"https://github.com/docker/buildx-desktop/releases/download/v0.31.1-desktop.1/buildx-v0.31.1-desktop.1.freebsd-arm64",
"https://github.com/docker/buildx-desktop/releases/download/v0.31.1-desktop.1/buildx-v0.31.1-desktop.1.freebsd-arm64.sbom.json",
"https://github.com/docker/buildx-desktop/releases/download/v0.31.1-desktop.1/buildx-v0.31.1-desktop.1.linux-amd64",
"https://github.com/docker/buildx-desktop/releases/download/v0.31.1-desktop.1/buildx-v0.31.1-desktop.1.linux-amd64.sbom.json",
"https://github.com/docker/buildx-desktop/releases/download/v0.31.1-desktop.1/buildx-v0.31.1-desktop.1.linux-arm-v6",
"https://github.com/docker/buildx-desktop/releases/download/v0.31.1-desktop.1/buildx-v0.31.1-desktop.1.linux-arm-v6.sbom.json",
"https://github.com/docker/buildx-desktop/releases/download/v0.31.1-desktop.1/buildx-v0.31.1-desktop.1.linux-arm-v7",
"https://github.com/docker/buildx-desktop/releases/download/v0.31.1-desktop.1/buildx-v0.31.1-desktop.1.linux-arm-v7.sbom.json",
"https://github.com/docker/buildx-desktop/releases/download/v0.31.1-desktop.1/buildx-v0.31.1-desktop.1.linux-arm64",
"https://github.com/docker/buildx-desktop/releases/download/v0.31.1-desktop.1/buildx-v0.31.1-desktop.1.linux-arm64.sbom.json",
"https://github.com/docker/buildx-desktop/releases/download/v0.31.1-desktop.1/buildx-v0.31.1-desktop.1.linux-ppc64le",
"https://github.com/docker/buildx-desktop/releases/download/v0.31.1-desktop.1/buildx-v0.31.1-desktop.1.linux-ppc64le.sbom.json",
"https://github.com/docker/buildx-desktop/releases/download/v0.31.1-desktop.1/buildx-v0.31.1-desktop.1.linux-riscv64",
"https://github.com/docker/buildx-desktop/releases/download/v0.31.1-desktop.1/buildx-v0.31.1-desktop.1.linux-riscv64.sbom.json",
"https://github.com/docker/buildx-desktop/releases/download/v0.31.1-desktop.1/buildx-v0.31.1-desktop.1.linux-s390x",
"https://github.com/docker/buildx-desktop/releases/download/v0.31.1-desktop.1/buildx-v0.31.1-desktop.1.linux-s390x.sbom.json",
"https://github.com/docker/buildx-desktop/releases/download/v0.31.1-desktop.1/buildx-v0.31.1-desktop.1.netbsd-amd64",
"https://github.com/docker/buildx-desktop/releases/download/v0.31.1-desktop.1/buildx-v0.31.1-desktop.1.netbsd-amd64.sbom.json",
"https://github.com/docker/buildx-desktop/releases/download/v0.31.1-desktop.1/buildx-v0.31.1-desktop.1.netbsd-arm64",
"https://github.com/docker/buildx-desktop/releases/download/v0.31.1-desktop.1/buildx-v0.31.1-desktop.1.netbsd-arm64.sbom.json",
"https://github.com/docker/buildx-desktop/releases/download/v0.31.1-desktop.1/buildx-v0.31.1-desktop.1.openbsd-amd64",
"https://github.com/docker/buildx-desktop/releases/download/v0.31.1-desktop.1/buildx-v0.31.1-desktop.1.openbsd-amd64.sbom.json",
"https://github.com/docker/buildx-desktop/releases/download/v0.31.1-desktop.1/buildx-v0.31.1-desktop.1.openbsd-arm64",
"https://github.com/docker/buildx-desktop/releases/download/v0.31.1-desktop.1/buildx-v0.31.1-desktop.1.openbsd-arm64.sbom.json",
"https://github.com/docker/buildx-desktop/releases/download/v0.31.1-desktop.1/buildx-v0.31.1-desktop.1.windows-amd64.exe",
"https://github.com/docker/buildx-desktop/releases/download/v0.31.1-desktop.1/buildx-v0.31.1-desktop.1.windows-amd64.sbom.json",
"https://github.com/docker/buildx-desktop/releases/download/v0.31.1-desktop.1/buildx-v0.31.1-desktop.1.windows-arm64.exe",
"https://github.com/docker/buildx-desktop/releases/download/v0.31.1-desktop.1/buildx-v0.31.1-desktop.1.windows-arm64.sbom.json",
"https://github.com/docker/buildx-desktop/releases/download/v0.31.1-desktop.1/checksums.txt"
]
},
"v0.31.1-desktop.1": {
"id": 285373366,
"tag_name": "v0.31.1-desktop.1",
"html_url": "https://github.com/docker/buildx-desktop/releases/tag/v0.31.1-desktop.1",
"assets": [
"https://github.com/docker/buildx-desktop/releases/download/v0.31.1-desktop.1/buildx-v0.31.1-desktop.1.darwin-amd64",
"https://github.com/docker/buildx-desktop/releases/download/v0.31.1-desktop.1/buildx-v0.31.1-desktop.1.darwin-amd64.sbom.json",
"https://github.com/docker/buildx-desktop/releases/download/v0.31.1-desktop.1/buildx-v0.31.1-desktop.1.darwin-arm64",
"https://github.com/docker/buildx-desktop/releases/download/v0.31.1-desktop.1/buildx-v0.31.1-desktop.1.darwin-arm64.sbom.json",
"https://github.com/docker/buildx-desktop/releases/download/v0.31.1-desktop.1/buildx-v0.31.1-desktop.1.freebsd-amd64",
"https://github.com/docker/buildx-desktop/releases/download/v0.31.1-desktop.1/buildx-v0.31.1-desktop.1.freebsd-amd64.sbom.json",
"https://github.com/docker/buildx-desktop/releases/download/v0.31.1-desktop.1/buildx-v0.31.1-desktop.1.freebsd-arm64",
"https://github.com/docker/buildx-desktop/releases/download/v0.31.1-desktop.1/buildx-v0.31.1-desktop.1.freebsd-arm64.sbom.json",
"https://github.com/docker/buildx-desktop/releases/download/v0.31.1-desktop.1/buildx-v0.31.1-desktop.1.linux-amd64",
"https://github.com/docker/buildx-desktop/releases/download/v0.31.1-desktop.1/buildx-v0.31.1-desktop.1.linux-amd64.sbom.json",
"https://github.com/docker/buildx-desktop/releases/download/v0.31.1-desktop.1/buildx-v0.31.1-desktop.1.linux-arm-v6",
"https://github.com/docker/buildx-desktop/releases/download/v0.31.1-desktop.1/buildx-v0.31.1-desktop.1.linux-arm-v6.sbom.json",
"https://github.com/docker/buildx-desktop/releases/download/v0.31.1-desktop.1/buildx-v0.31.1-desktop.1.linux-arm-v7",
"https://github.com/docker/buildx-desktop/releases/download/v0.31.1-desktop.1/buildx-v0.31.1-desktop.1.linux-arm-v7.sbom.json",
"https://github.com/docker/buildx-desktop/releases/download/v0.31.1-desktop.1/buildx-v0.31.1-desktop.1.linux-arm64",
"https://github.com/docker/buildx-desktop/releases/download/v0.31.1-desktop.1/buildx-v0.31.1-desktop.1.linux-arm64.sbom.json",
"https://github.com/docker/buildx-desktop/releases/download/v0.31.1-desktop.1/buildx-v0.31.1-desktop.1.linux-ppc64le",
"https://github.com/docker/buildx-desktop/releases/download/v0.31.1-desktop.1/buildx-v0.31.1-desktop.1.linux-ppc64le.sbom.json",
"https://github.com/docker/buildx-desktop/releases/download/v0.31.1-desktop.1/buildx-v0.31.1-desktop.1.linux-riscv64",
"https://github.com/docker/buildx-desktop/releases/download/v0.31.1-desktop.1/buildx-v0.31.1-desktop.1.linux-riscv64.sbom.json",
"https://github.com/docker/buildx-desktop/releases/download/v0.31.1-desktop.1/buildx-v0.31.1-desktop.1.linux-s390x",
"https://github.com/docker/buildx-desktop/releases/download/v0.31.1-desktop.1/buildx-v0.31.1-desktop.1.linux-s390x.sbom.json",
"https://github.com/docker/buildx-desktop/releases/download/v0.31.1-desktop.1/buildx-v0.31.1-desktop.1.netbsd-amd64",
"https://github.com/docker/buildx-desktop/releases/download/v0.31.1-desktop.1/buildx-v0.31.1-desktop.1.netbsd-amd64.sbom.json",
"https://github.com/docker/buildx-desktop/releases/download/v0.31.1-desktop.1/buildx-v0.31.1-desktop.1.netbsd-arm64",
"https://github.com/docker/buildx-desktop/releases/download/v0.31.1-desktop.1/buildx-v0.31.1-desktop.1.netbsd-arm64.sbom.json",
"https://github.com/docker/buildx-desktop/releases/download/v0.31.1-desktop.1/buildx-v0.31.1-desktop.1.openbsd-amd64",
"https://github.com/docker/buildx-desktop/releases/download/v0.31.1-desktop.1/buildx-v0.31.1-desktop.1.openbsd-amd64.sbom.json",
"https://github.com/docker/buildx-desktop/releases/download/v0.31.1-desktop.1/buildx-v0.31.1-desktop.1.openbsd-arm64",
"https://github.com/docker/buildx-desktop/releases/download/v0.31.1-desktop.1/buildx-v0.31.1-desktop.1.openbsd-arm64.sbom.json",
"https://github.com/docker/buildx-desktop/releases/download/v0.31.1-desktop.1/buildx-v0.31.1-desktop.1.windows-amd64.exe",
"https://github.com/docker/buildx-desktop/releases/download/v0.31.1-desktop.1/buildx-v0.31.1-desktop.1.windows-amd64.sbom.json",
"https://github.com/docker/buildx-desktop/releases/download/v0.31.1-desktop.1/buildx-v0.31.1-desktop.1.windows-arm64.exe",
"https://github.com/docker/buildx-desktop/releases/download/v0.31.1-desktop.1/buildx-v0.31.1-desktop.1.windows-arm64.sbom.json",
"https://github.com/docker/buildx-desktop/releases/download/v0.31.1-desktop.1/checksums.txt"
]
},
"v0.30.1-desktop.2": {
"id": 269523829,
"tag_name": "v0.30.1-desktop.2",
"html_url": "https://github.com/docker/buildx-desktop/releases/tag/v0.30.1-desktop.2",
"assets": [
"https://github.com/docker/buildx-desktop/releases/download/v0.30.1-desktop.2/buildx-v0.30.1-desktop.2.darwin-amd64",
"https://github.com/docker/buildx-desktop/releases/download/v0.30.1-desktop.2/buildx-v0.30.1-desktop.2.darwin-amd64.provenance.json",
"https://github.com/docker/buildx-desktop/releases/download/v0.30.1-desktop.2/buildx-v0.30.1-desktop.2.darwin-amd64.sbom.json",
"https://github.com/docker/buildx-desktop/releases/download/v0.30.1-desktop.2/buildx-v0.30.1-desktop.2.darwin-arm64",
"https://github.com/docker/buildx-desktop/releases/download/v0.30.1-desktop.2/buildx-v0.30.1-desktop.2.darwin-arm64.provenance.json",
"https://github.com/docker/buildx-desktop/releases/download/v0.30.1-desktop.2/buildx-v0.30.1-desktop.2.darwin-arm64.sbom.json",
"https://github.com/docker/buildx-desktop/releases/download/v0.30.1-desktop.2/buildx-v0.30.1-desktop.2.freebsd-amd64",
"https://github.com/docker/buildx-desktop/releases/download/v0.30.1-desktop.2/buildx-v0.30.1-desktop.2.freebsd-amd64.provenance.json",
"https://github.com/docker/buildx-desktop/releases/download/v0.30.1-desktop.2/buildx-v0.30.1-desktop.2.freebsd-amd64.sbom.json",
"https://github.com/docker/buildx-desktop/releases/download/v0.30.1-desktop.2/buildx-v0.30.1-desktop.2.freebsd-arm64",
"https://github.com/docker/buildx-desktop/releases/download/v0.30.1-desktop.2/buildx-v0.30.1-desktop.2.freebsd-arm64.provenance.json",
"https://github.com/docker/buildx-desktop/releases/download/v0.30.1-desktop.2/buildx-v0.30.1-desktop.2.freebsd-arm64.sbom.json",
"https://github.com/docker/buildx-desktop/releases/download/v0.30.1-desktop.2/buildx-v0.30.1-desktop.2.linux-amd64",
"https://github.com/docker/buildx-desktop/releases/download/v0.30.1-desktop.2/buildx-v0.30.1-desktop.2.linux-amd64.provenance.json",
"https://github.com/docker/buildx-desktop/releases/download/v0.30.1-desktop.2/buildx-v0.30.1-desktop.2.linux-amd64.sbom.json",
"https://github.com/docker/buildx-desktop/releases/download/v0.30.1-desktop.2/buildx-v0.30.1-desktop.2.linux-arm-v6",
"https://github.com/docker/buildx-desktop/releases/download/v0.30.1-desktop.2/buildx-v0.30.1-desktop.2.linux-arm-v6.provenance.json",
"https://github.com/docker/buildx-desktop/releases/download/v0.30.1-desktop.2/buildx-v0.30.1-desktop.2.linux-arm-v6.sbom.json",
"https://github.com/docker/buildx-desktop/releases/download/v0.30.1-desktop.2/buildx-v0.30.1-desktop.2.linux-arm-v7",
"https://github.com/docker/buildx-desktop/releases/download/v0.30.1-desktop.2/buildx-v0.30.1-desktop.2.linux-arm-v7.provenance.json",
"https://github.com/docker/buildx-desktop/releases/download/v0.30.1-desktop.2/buildx-v0.30.1-desktop.2.linux-arm-v7.sbom.json",
"https://github.com/docker/buildx-desktop/releases/download/v0.30.1-desktop.2/buildx-v0.30.1-desktop.2.linux-arm64",
"https://github.com/docker/buildx-desktop/releases/download/v0.30.1-desktop.2/buildx-v0.30.1-desktop.2.linux-arm64.provenance.json",
"https://github.com/docker/buildx-desktop/releases/download/v0.30.1-desktop.2/buildx-v0.30.1-desktop.2.linux-arm64.sbom.json",
"https://github.com/docker/buildx-desktop/releases/download/v0.30.1-desktop.2/buildx-v0.30.1-desktop.2.linux-ppc64le",
"https://github.com/docker/buildx-desktop/releases/download/v0.30.1-desktop.2/buildx-v0.30.1-desktop.2.linux-ppc64le.provenance.json",
"https://github.com/docker/buildx-desktop/releases/download/v0.30.1-desktop.2/buildx-v0.30.1-desktop.2.linux-ppc64le.sbom.json",
"https://github.com/docker/buildx-desktop/releases/download/v0.30.1-desktop.2/buildx-v0.30.1-desktop.2.linux-riscv64",
"https://github.com/docker/buildx-desktop/releases/download/v0.30.1-desktop.2/buildx-v0.30.1-desktop.2.linux-riscv64.provenance.json",
"https://github.com/docker/buildx-desktop/releases/download/v0.30.1-desktop.2/buildx-v0.30.1-desktop.2.linux-riscv64.sbom.json",
"https://github.com/docker/buildx-desktop/releases/download/v0.30.1-desktop.2/buildx-v0.30.1-desktop.2.linux-s390x",
"https://github.com/docker/buildx-desktop/releases/download/v0.30.1-desktop.2/buildx-v0.30.1-desktop.2.linux-s390x.provenance.json",
"https://github.com/docker/buildx-desktop/releases/download/v0.30.1-desktop.2/buildx-v0.30.1-desktop.2.linux-s390x.sbom.json",
"https://github.com/docker/buildx-desktop/releases/download/v0.30.1-desktop.2/buildx-v0.30.1-desktop.2.netbsd-amd64",
"https://github.com/docker/buildx-desktop/releases/download/v0.30.1-desktop.2/buildx-v0.30.1-desktop.2.netbsd-amd64.provenance.json",
"https://github.com/docker/buildx-desktop/releases/download/v0.30.1-desktop.2/buildx-v0.30.1-desktop.2.netbsd-amd64.sbom.json",
"https://github.com/docker/buildx-desktop/releases/download/v0.30.1-desktop.2/buildx-v0.30.1-desktop.2.netbsd-arm64",
"https://github.com/docker/buildx-desktop/releases/download/v0.30.1-desktop.2/buildx-v0.30.1-desktop.2.netbsd-arm64.provenance.json",
"https://github.com/docker/buildx-desktop/releases/download/v0.30.1-desktop.2/buildx-v0.30.1-desktop.2.netbsd-arm64.sbom.json",
"https://github.com/docker/buildx-desktop/releases/download/v0.30.1-desktop.2/buildx-v0.30.1-desktop.2.openbsd-amd64",
"https://github.com/docker/buildx-desktop/releases/download/v0.30.1-desktop.2/buildx-v0.30.1-desktop.2.openbsd-amd64.provenance.json",
"https://github.com/docker/buildx-desktop/releases/download/v0.30.1-desktop.2/buildx-v0.30.1-desktop.2.openbsd-amd64.sbom.json",
"https://github.com/docker/buildx-desktop/releases/download/v0.30.1-desktop.2/buildx-v0.30.1-desktop.2.openbsd-arm64",
"https://github.com/docker/buildx-desktop/releases/download/v0.30.1-desktop.2/buildx-v0.30.1-desktop.2.openbsd-arm64.provenance.json",
"https://github.com/docker/buildx-desktop/releases/download/v0.30.1-desktop.2/buildx-v0.30.1-desktop.2.openbsd-arm64.sbom.json",
"https://github.com/docker/buildx-desktop/releases/download/v0.30.1-desktop.2/buildx-v0.30.1-desktop.2.windows-amd64.exe",
"https://github.com/docker/buildx-desktop/releases/download/v0.30.1-desktop.2/buildx-v0.30.1-desktop.2.windows-amd64.provenance.json",
"https://github.com/docker/buildx-desktop/releases/download/v0.30.1-desktop.2/buildx-v0.30.1-desktop.2.windows-amd64.sbom.json",
"https://github.com/docker/buildx-desktop/releases/download/v0.30.1-desktop.2/buildx-v0.30.1-desktop.2.windows-arm64.exe",
"https://github.com/docker/buildx-desktop/releases/download/v0.30.1-desktop.2/buildx-v0.30.1-desktop.2.windows-arm64.provenance.json",
"https://github.com/docker/buildx-desktop/releases/download/v0.30.1-desktop.2/buildx-v0.30.1-desktop.2.windows-arm64.sbom.json",
"https://github.com/docker/buildx-desktop/releases/download/v0.30.1-desktop.2/checksums.txt"
]
},
"v0.30.1-desktop.1": {
@@ -118,62 +202,45 @@
]
},
"edge": {
"id": 264746294,
"tag_name": "v0.30.1-desktop.1",
"html_url": "https://github.com/docker/buildx-desktop/releases/tag/v0.30.1-desktop.1",
"id": 285373366,
"tag_name": "v0.31.1-desktop.1",
"html_url": "https://github.com/docker/buildx-desktop/releases/tag/v0.31.1-desktop.1",
"assets": [
"https://github.com/docker/buildx-desktop/releases/download/v0.30.1-desktop.1/buildx-v0.30.1-desktop.1.darwin-amd64",
"https://github.com/docker/buildx-desktop/releases/download/v0.30.1-desktop.1/buildx-v0.30.1-desktop.1.darwin-amd64.provenance.json",
"https://github.com/docker/buildx-desktop/releases/download/v0.30.1-desktop.1/buildx-v0.30.1-desktop.1.darwin-amd64.sbom.json",
"https://github.com/docker/buildx-desktop/releases/download/v0.30.1-desktop.1/buildx-v0.30.1-desktop.1.darwin-arm64",
"https://github.com/docker/buildx-desktop/releases/download/v0.30.1-desktop.1/buildx-v0.30.1-desktop.1.darwin-arm64.provenance.json",
"https://github.com/docker/buildx-desktop/releases/download/v0.30.1-desktop.1/buildx-v0.30.1-desktop.1.darwin-arm64.sbom.json",
"https://github.com/docker/buildx-desktop/releases/download/v0.30.1-desktop.1/buildx-v0.30.1-desktop.1.freebsd-amd64",
"https://github.com/docker/buildx-desktop/releases/download/v0.30.1-desktop.1/buildx-v0.30.1-desktop.1.freebsd-amd64.provenance.json",
"https://github.com/docker/buildx-desktop/releases/download/v0.30.1-desktop.1/buildx-v0.30.1-desktop.1.freebsd-amd64.sbom.json",
"https://github.com/docker/buildx-desktop/releases/download/v0.30.1-desktop.1/buildx-v0.30.1-desktop.1.freebsd-arm64",
"https://github.com/docker/buildx-desktop/releases/download/v0.30.1-desktop.1/buildx-v0.30.1-desktop.1.freebsd-arm64.provenance.json",
"https://github.com/docker/buildx-desktop/releases/download/v0.30.1-desktop.1/buildx-v0.30.1-desktop.1.freebsd-arm64.sbom.json",
"https://github.com/docker/buildx-desktop/releases/download/v0.30.1-desktop.1/buildx-v0.30.1-desktop.1.linux-amd64",
"https://github.com/docker/buildx-desktop/releases/download/v0.30.1-desktop.1/buildx-v0.30.1-desktop.1.linux-amd64.provenance.json",
"https://github.com/docker/buildx-desktop/releases/download/v0.30.1-desktop.1/buildx-v0.30.1-desktop.1.linux-amd64.sbom.json",
"https://github.com/docker/buildx-desktop/releases/download/v0.30.1-desktop.1/buildx-v0.30.1-desktop.1.linux-arm-v6",
"https://github.com/docker/buildx-desktop/releases/download/v0.30.1-desktop.1/buildx-v0.30.1-desktop.1.linux-arm-v6.provenance.json",
"https://github.com/docker/buildx-desktop/releases/download/v0.30.1-desktop.1/buildx-v0.30.1-desktop.1.linux-arm-v6.sbom.json",
"https://github.com/docker/buildx-desktop/releases/download/v0.30.1-desktop.1/buildx-v0.30.1-desktop.1.linux-arm-v7",
"https://github.com/docker/buildx-desktop/releases/download/v0.30.1-desktop.1/buildx-v0.30.1-desktop.1.linux-arm-v7.provenance.json",
"https://github.com/docker/buildx-desktop/releases/download/v0.30.1-desktop.1/buildx-v0.30.1-desktop.1.linux-arm-v7.sbom.json",
"https://github.com/docker/buildx-desktop/releases/download/v0.30.1-desktop.1/buildx-v0.30.1-desktop.1.linux-arm64",
"https://github.com/docker/buildx-desktop/releases/download/v0.30.1-desktop.1/buildx-v0.30.1-desktop.1.linux-arm64.provenance.json",
"https://github.com/docker/buildx-desktop/releases/download/v0.30.1-desktop.1/buildx-v0.30.1-desktop.1.linux-arm64.sbom.json",
"https://github.com/docker/buildx-desktop/releases/download/v0.30.1-desktop.1/buildx-v0.30.1-desktop.1.linux-ppc64le",
"https://github.com/docker/buildx-desktop/releases/download/v0.30.1-desktop.1/buildx-v0.30.1-desktop.1.linux-ppc64le.provenance.json",
"https://github.com/docker/buildx-desktop/releases/download/v0.30.1-desktop.1/buildx-v0.30.1-desktop.1.linux-ppc64le.sbom.json",
"https://github.com/docker/buildx-desktop/releases/download/v0.30.1-desktop.1/buildx-v0.30.1-desktop.1.linux-riscv64",
"https://github.com/docker/buildx-desktop/releases/download/v0.30.1-desktop.1/buildx-v0.30.1-desktop.1.linux-riscv64.provenance.json",
"https://github.com/docker/buildx-desktop/releases/download/v0.30.1-desktop.1/buildx-v0.30.1-desktop.1.linux-riscv64.sbom.json",
"https://github.com/docker/buildx-desktop/releases/download/v0.30.1-desktop.1/buildx-v0.30.1-desktop.1.linux-s390x",
"https://github.com/docker/buildx-desktop/releases/download/v0.30.1-desktop.1/buildx-v0.30.1-desktop.1.linux-s390x.provenance.json",
"https://github.com/docker/buildx-desktop/releases/download/v0.30.1-desktop.1/buildx-v0.30.1-desktop.1.linux-s390x.sbom.json",
"https://github.com/docker/buildx-desktop/releases/download/v0.30.1-desktop.1/buildx-v0.30.1-desktop.1.netbsd-amd64",
"https://github.com/docker/buildx-desktop/releases/download/v0.30.1-desktop.1/buildx-v0.30.1-desktop.1.netbsd-amd64.provenance.json",
"https://github.com/docker/buildx-desktop/releases/download/v0.30.1-desktop.1/buildx-v0.30.1-desktop.1.netbsd-amd64.sbom.json",
"https://github.com/docker/buildx-desktop/releases/download/v0.30.1-desktop.1/buildx-v0.30.1-desktop.1.netbsd-arm64",
"https://github.com/docker/buildx-desktop/releases/download/v0.30.1-desktop.1/buildx-v0.30.1-desktop.1.netbsd-arm64.provenance.json",
"https://github.com/docker/buildx-desktop/releases/download/v0.30.1-desktop.1/buildx-v0.30.1-desktop.1.netbsd-arm64.sbom.json",
"https://github.com/docker/buildx-desktop/releases/download/v0.30.1-desktop.1/buildx-v0.30.1-desktop.1.openbsd-amd64",
"https://github.com/docker/buildx-desktop/releases/download/v0.30.1-desktop.1/buildx-v0.30.1-desktop.1.openbsd-amd64.provenance.json",
"https://github.com/docker/buildx-desktop/releases/download/v0.30.1-desktop.1/buildx-v0.30.1-desktop.1.openbsd-amd64.sbom.json",
"https://github.com/docker/buildx-desktop/releases/download/v0.30.1-desktop.1/buildx-v0.30.1-desktop.1.openbsd-arm64",
"https://github.com/docker/buildx-desktop/releases/download/v0.30.1-desktop.1/buildx-v0.30.1-desktop.1.openbsd-arm64.provenance.json",
"https://github.com/docker/buildx-desktop/releases/download/v0.30.1-desktop.1/buildx-v0.30.1-desktop.1.openbsd-arm64.sbom.json",
"https://github.com/docker/buildx-desktop/releases/download/v0.30.1-desktop.1/buildx-v0.30.1-desktop.1.windows-amd64.exe",
"https://github.com/docker/buildx-desktop/releases/download/v0.30.1-desktop.1/buildx-v0.30.1-desktop.1.windows-amd64.provenance.json",
"https://github.com/docker/buildx-desktop/releases/download/v0.30.1-desktop.1/buildx-v0.30.1-desktop.1.windows-amd64.sbom.json",
"https://github.com/docker/buildx-desktop/releases/download/v0.30.1-desktop.1/buildx-v0.30.1-desktop.1.windows-arm64.exe",
"https://github.com/docker/buildx-desktop/releases/download/v0.30.1-desktop.1/buildx-v0.30.1-desktop.1.windows-arm64.provenance.json",
"https://github.com/docker/buildx-desktop/releases/download/v0.30.1-desktop.1/buildx-v0.30.1-desktop.1.windows-arm64.sbom.json",
"https://github.com/docker/buildx-desktop/releases/download/v0.30.1-desktop.1/checksums.txt"
"https://github.com/docker/buildx-desktop/releases/download/v0.31.1-desktop.1/buildx-v0.31.1-desktop.1.darwin-amd64",
"https://github.com/docker/buildx-desktop/releases/download/v0.31.1-desktop.1/buildx-v0.31.1-desktop.1.darwin-amd64.sbom.json",
"https://github.com/docker/buildx-desktop/releases/download/v0.31.1-desktop.1/buildx-v0.31.1-desktop.1.darwin-arm64",
"https://github.com/docker/buildx-desktop/releases/download/v0.31.1-desktop.1/buildx-v0.31.1-desktop.1.darwin-arm64.sbom.json",
"https://github.com/docker/buildx-desktop/releases/download/v0.31.1-desktop.1/buildx-v0.31.1-desktop.1.freebsd-amd64",
"https://github.com/docker/buildx-desktop/releases/download/v0.31.1-desktop.1/buildx-v0.31.1-desktop.1.freebsd-amd64.sbom.json",
"https://github.com/docker/buildx-desktop/releases/download/v0.31.1-desktop.1/buildx-v0.31.1-desktop.1.freebsd-arm64",
"https://github.com/docker/buildx-desktop/releases/download/v0.31.1-desktop.1/buildx-v0.31.1-desktop.1.freebsd-arm64.sbom.json",
"https://github.com/docker/buildx-desktop/releases/download/v0.31.1-desktop.1/buildx-v0.31.1-desktop.1.linux-amd64",
"https://github.com/docker/buildx-desktop/releases/download/v0.31.1-desktop.1/buildx-v0.31.1-desktop.1.linux-amd64.sbom.json",
"https://github.com/docker/buildx-desktop/releases/download/v0.31.1-desktop.1/buildx-v0.31.1-desktop.1.linux-arm-v6",
"https://github.com/docker/buildx-desktop/releases/download/v0.31.1-desktop.1/buildx-v0.31.1-desktop.1.linux-arm-v6.sbom.json",
"https://github.com/docker/buildx-desktop/releases/download/v0.31.1-desktop.1/buildx-v0.31.1-desktop.1.linux-arm-v7",
"https://github.com/docker/buildx-desktop/releases/download/v0.31.1-desktop.1/buildx-v0.31.1-desktop.1.linux-arm-v7.sbom.json",
"https://github.com/docker/buildx-desktop/releases/download/v0.31.1-desktop.1/buildx-v0.31.1-desktop.1.linux-arm64",
"https://github.com/docker/buildx-desktop/releases/download/v0.31.1-desktop.1/buildx-v0.31.1-desktop.1.linux-arm64.sbom.json",
"https://github.com/docker/buildx-desktop/releases/download/v0.31.1-desktop.1/buildx-v0.31.1-desktop.1.linux-ppc64le",
"https://github.com/docker/buildx-desktop/releases/download/v0.31.1-desktop.1/buildx-v0.31.1-desktop.1.linux-ppc64le.sbom.json",
"https://github.com/docker/buildx-desktop/releases/download/v0.31.1-desktop.1/buildx-v0.31.1-desktop.1.linux-riscv64",
"https://github.com/docker/buildx-desktop/releases/download/v0.31.1-desktop.1/buildx-v0.31.1-desktop.1.linux-riscv64.sbom.json",
"https://github.com/docker/buildx-desktop/releases/download/v0.31.1-desktop.1/buildx-v0.31.1-desktop.1.linux-s390x",
"https://github.com/docker/buildx-desktop/releases/download/v0.31.1-desktop.1/buildx-v0.31.1-desktop.1.linux-s390x.sbom.json",
"https://github.com/docker/buildx-desktop/releases/download/v0.31.1-desktop.1/buildx-v0.31.1-desktop.1.netbsd-amd64",
"https://github.com/docker/buildx-desktop/releases/download/v0.31.1-desktop.1/buildx-v0.31.1-desktop.1.netbsd-amd64.sbom.json",
"https://github.com/docker/buildx-desktop/releases/download/v0.31.1-desktop.1/buildx-v0.31.1-desktop.1.netbsd-arm64",
"https://github.com/docker/buildx-desktop/releases/download/v0.31.1-desktop.1/buildx-v0.31.1-desktop.1.netbsd-arm64.sbom.json",
"https://github.com/docker/buildx-desktop/releases/download/v0.31.1-desktop.1/buildx-v0.31.1-desktop.1.openbsd-amd64",
"https://github.com/docker/buildx-desktop/releases/download/v0.31.1-desktop.1/buildx-v0.31.1-desktop.1.openbsd-amd64.sbom.json",
"https://github.com/docker/buildx-desktop/releases/download/v0.31.1-desktop.1/buildx-v0.31.1-desktop.1.openbsd-arm64",
"https://github.com/docker/buildx-desktop/releases/download/v0.31.1-desktop.1/buildx-v0.31.1-desktop.1.openbsd-arm64.sbom.json",
"https://github.com/docker/buildx-desktop/releases/download/v0.31.1-desktop.1/buildx-v0.31.1-desktop.1.windows-amd64.exe",
"https://github.com/docker/buildx-desktop/releases/download/v0.31.1-desktop.1/buildx-v0.31.1-desktop.1.windows-amd64.sbom.json",
"https://github.com/docker/buildx-desktop/releases/download/v0.31.1-desktop.1/buildx-v0.31.1-desktop.1.windows-arm64.exe",
"https://github.com/docker/buildx-desktop/releases/download/v0.31.1-desktop.1/buildx-v0.31.1-desktop.1.windows-arm64.sbom.json",
"https://github.com/docker/buildx-desktop/releases/download/v0.31.1-desktop.1/checksums.txt"
]
},
"v0.28.0-desktop.1": {

File diff suppressed because it is too large Load Diff

View File

@@ -1,54 +1,421 @@
{
"latest": {
"id": 266660722,
"tag_name": "v5.0.0",
"html_url": "https://github.com/docker/compose/releases/tag/v5.0.0",
"id": 309393346,
"tag_name": "v5.1.3",
"html_url": "https://github.com/docker/compose/releases/tag/v5.1.3",
"assets": [
"https://github.com/docker/compose/releases/download/v5.0.0/checksums.txt",
"https://github.com/docker/compose/releases/download/v5.0.0/docker-compose-darwin-aarch64",
"https://github.com/docker/compose/releases/download/v5.0.0/docker-compose-darwin-aarch64.provenance.json",
"https://github.com/docker/compose/releases/download/v5.0.0/docker-compose-darwin-aarch64.sbom.json",
"https://github.com/docker/compose/releases/download/v5.0.0/docker-compose-darwin-aarch64.sha256",
"https://github.com/docker/compose/releases/download/v5.0.0/docker-compose-darwin-x86_64",
"https://github.com/docker/compose/releases/download/v5.0.0/docker-compose-darwin-x86_64.provenance.json",
"https://github.com/docker/compose/releases/download/v5.0.0/docker-compose-darwin-x86_64.sbom.json",
"https://github.com/docker/compose/releases/download/v5.0.0/docker-compose-darwin-x86_64.sha256",
"https://github.com/docker/compose/releases/download/v5.0.0/docker-compose-linux-aarch64",
"https://github.com/docker/compose/releases/download/v5.0.0/docker-compose-linux-aarch64.provenance.json",
"https://github.com/docker/compose/releases/download/v5.0.0/docker-compose-linux-aarch64.sbom.json",
"https://github.com/docker/compose/releases/download/v5.0.0/docker-compose-linux-aarch64.sha256",
"https://github.com/docker/compose/releases/download/v5.0.0/docker-compose-linux-armv6",
"https://github.com/docker/compose/releases/download/v5.0.0/docker-compose-linux-armv6.provenance.json",
"https://github.com/docker/compose/releases/download/v5.0.0/docker-compose-linux-armv6.sbom.json",
"https://github.com/docker/compose/releases/download/v5.0.0/docker-compose-linux-armv6.sha256",
"https://github.com/docker/compose/releases/download/v5.0.0/docker-compose-linux-armv7",
"https://github.com/docker/compose/releases/download/v5.0.0/docker-compose-linux-armv7.provenance.json",
"https://github.com/docker/compose/releases/download/v5.0.0/docker-compose-linux-armv7.sbom.json",
"https://github.com/docker/compose/releases/download/v5.0.0/docker-compose-linux-armv7.sha256",
"https://github.com/docker/compose/releases/download/v5.0.0/docker-compose-linux-ppc64le",
"https://github.com/docker/compose/releases/download/v5.0.0/docker-compose-linux-ppc64le.provenance.json",
"https://github.com/docker/compose/releases/download/v5.0.0/docker-compose-linux-ppc64le.sbom.json",
"https://github.com/docker/compose/releases/download/v5.0.0/docker-compose-linux-ppc64le.sha256",
"https://github.com/docker/compose/releases/download/v5.0.0/docker-compose-linux-riscv64",
"https://github.com/docker/compose/releases/download/v5.0.0/docker-compose-linux-riscv64.provenance.json",
"https://github.com/docker/compose/releases/download/v5.0.0/docker-compose-linux-riscv64.sbom.json",
"https://github.com/docker/compose/releases/download/v5.0.0/docker-compose-linux-riscv64.sha256",
"https://github.com/docker/compose/releases/download/v5.0.0/docker-compose-linux-s390x",
"https://github.com/docker/compose/releases/download/v5.0.0/docker-compose-linux-s390x.provenance.json",
"https://github.com/docker/compose/releases/download/v5.0.0/docker-compose-linux-s390x.sbom.json",
"https://github.com/docker/compose/releases/download/v5.0.0/docker-compose-linux-s390x.sha256",
"https://github.com/docker/compose/releases/download/v5.0.0/docker-compose-linux-x86_64",
"https://github.com/docker/compose/releases/download/v5.0.0/docker-compose-linux-x86_64.provenance.json",
"https://github.com/docker/compose/releases/download/v5.0.0/docker-compose-linux-x86_64.sbom.json",
"https://github.com/docker/compose/releases/download/v5.0.0/docker-compose-linux-x86_64.sha256",
"https://github.com/docker/compose/releases/download/v5.0.0/docker-compose-windows-aarch64.exe",
"https://github.com/docker/compose/releases/download/v5.0.0/docker-compose-windows-aarch64.exe.sha256",
"https://github.com/docker/compose/releases/download/v5.0.0/docker-compose-windows-aarch64.provenance.json",
"https://github.com/docker/compose/releases/download/v5.0.0/docker-compose-windows-aarch64.sbom.json",
"https://github.com/docker/compose/releases/download/v5.0.0/docker-compose-windows-x86_64.exe",
"https://github.com/docker/compose/releases/download/v5.0.0/docker-compose-windows-x86_64.exe.sha256",
"https://github.com/docker/compose/releases/download/v5.0.0/docker-compose-windows-x86_64.provenance.json",
"https://github.com/docker/compose/releases/download/v5.0.0/docker-compose-windows-x86_64.sbom.json"
"https://github.com/docker/compose/releases/download/v5.1.3/checksums.txt",
"https://github.com/docker/compose/releases/download/v5.1.3/docker-compose-darwin-aarch64",
"https://github.com/docker/compose/releases/download/v5.1.3/docker-compose-darwin-aarch64.provenance.json",
"https://github.com/docker/compose/releases/download/v5.1.3/docker-compose-darwin-aarch64.sbom.json",
"https://github.com/docker/compose/releases/download/v5.1.3/docker-compose-darwin-aarch64.sha256",
"https://github.com/docker/compose/releases/download/v5.1.3/docker-compose-darwin-aarch64.sigstore.json",
"https://github.com/docker/compose/releases/download/v5.1.3/docker-compose-darwin-x86_64",
"https://github.com/docker/compose/releases/download/v5.1.3/docker-compose-darwin-x86_64.provenance.json",
"https://github.com/docker/compose/releases/download/v5.1.3/docker-compose-darwin-x86_64.sbom.json",
"https://github.com/docker/compose/releases/download/v5.1.3/docker-compose-darwin-x86_64.sha256",
"https://github.com/docker/compose/releases/download/v5.1.3/docker-compose-darwin-x86_64.sigstore.json",
"https://github.com/docker/compose/releases/download/v5.1.3/docker-compose-linux-aarch64",
"https://github.com/docker/compose/releases/download/v5.1.3/docker-compose-linux-aarch64.provenance.json",
"https://github.com/docker/compose/releases/download/v5.1.3/docker-compose-linux-aarch64.sbom.json",
"https://github.com/docker/compose/releases/download/v5.1.3/docker-compose-linux-aarch64.sha256",
"https://github.com/docker/compose/releases/download/v5.1.3/docker-compose-linux-aarch64.sigstore.json",
"https://github.com/docker/compose/releases/download/v5.1.3/docker-compose-linux-armv6",
"https://github.com/docker/compose/releases/download/v5.1.3/docker-compose-linux-armv6.provenance.json",
"https://github.com/docker/compose/releases/download/v5.1.3/docker-compose-linux-armv6.sbom.json",
"https://github.com/docker/compose/releases/download/v5.1.3/docker-compose-linux-armv6.sha256",
"https://github.com/docker/compose/releases/download/v5.1.3/docker-compose-linux-armv6.sigstore.json",
"https://github.com/docker/compose/releases/download/v5.1.3/docker-compose-linux-armv7",
"https://github.com/docker/compose/releases/download/v5.1.3/docker-compose-linux-armv7.provenance.json",
"https://github.com/docker/compose/releases/download/v5.1.3/docker-compose-linux-armv7.sbom.json",
"https://github.com/docker/compose/releases/download/v5.1.3/docker-compose-linux-armv7.sha256",
"https://github.com/docker/compose/releases/download/v5.1.3/docker-compose-linux-armv7.sigstore.json",
"https://github.com/docker/compose/releases/download/v5.1.3/docker-compose-linux-ppc64le",
"https://github.com/docker/compose/releases/download/v5.1.3/docker-compose-linux-ppc64le.provenance.json",
"https://github.com/docker/compose/releases/download/v5.1.3/docker-compose-linux-ppc64le.sbom.json",
"https://github.com/docker/compose/releases/download/v5.1.3/docker-compose-linux-ppc64le.sha256",
"https://github.com/docker/compose/releases/download/v5.1.3/docker-compose-linux-ppc64le.sigstore.json",
"https://github.com/docker/compose/releases/download/v5.1.3/docker-compose-linux-riscv64",
"https://github.com/docker/compose/releases/download/v5.1.3/docker-compose-linux-riscv64.provenance.json",
"https://github.com/docker/compose/releases/download/v5.1.3/docker-compose-linux-riscv64.sbom.json",
"https://github.com/docker/compose/releases/download/v5.1.3/docker-compose-linux-riscv64.sha256",
"https://github.com/docker/compose/releases/download/v5.1.3/docker-compose-linux-riscv64.sigstore.json",
"https://github.com/docker/compose/releases/download/v5.1.3/docker-compose-linux-s390x",
"https://github.com/docker/compose/releases/download/v5.1.3/docker-compose-linux-s390x.provenance.json",
"https://github.com/docker/compose/releases/download/v5.1.3/docker-compose-linux-s390x.sbom.json",
"https://github.com/docker/compose/releases/download/v5.1.3/docker-compose-linux-s390x.sha256",
"https://github.com/docker/compose/releases/download/v5.1.3/docker-compose-linux-s390x.sigstore.json",
"https://github.com/docker/compose/releases/download/v5.1.3/docker-compose-linux-x86_64",
"https://github.com/docker/compose/releases/download/v5.1.3/docker-compose-linux-x86_64.provenance.json",
"https://github.com/docker/compose/releases/download/v5.1.3/docker-compose-linux-x86_64.sbom.json",
"https://github.com/docker/compose/releases/download/v5.1.3/docker-compose-linux-x86_64.sha256",
"https://github.com/docker/compose/releases/download/v5.1.3/docker-compose-linux-x86_64.sigstore.json",
"https://github.com/docker/compose/releases/download/v5.1.3/docker-compose-windows-aarch64.exe",
"https://github.com/docker/compose/releases/download/v5.1.3/docker-compose-windows-aarch64.exe.sha256",
"https://github.com/docker/compose/releases/download/v5.1.3/docker-compose-windows-aarch64.provenance.json",
"https://github.com/docker/compose/releases/download/v5.1.3/docker-compose-windows-aarch64.sbom.json",
"https://github.com/docker/compose/releases/download/v5.1.3/docker-compose-windows-aarch64.sigstore.json",
"https://github.com/docker/compose/releases/download/v5.1.3/docker-compose-windows-x86_64.exe",
"https://github.com/docker/compose/releases/download/v5.1.3/docker-compose-windows-x86_64.exe.sha256",
"https://github.com/docker/compose/releases/download/v5.1.3/docker-compose-windows-x86_64.provenance.json",
"https://github.com/docker/compose/releases/download/v5.1.3/docker-compose-windows-x86_64.sbom.json",
"https://github.com/docker/compose/releases/download/v5.1.3/docker-compose-windows-x86_64.sigstore.json"
]
},
"v5.1.3": {
"id": 309393346,
"tag_name": "v5.1.3",
"html_url": "https://github.com/docker/compose/releases/tag/v5.1.3",
"assets": [
"https://github.com/docker/compose/releases/download/v5.1.3/checksums.txt",
"https://github.com/docker/compose/releases/download/v5.1.3/docker-compose-darwin-aarch64",
"https://github.com/docker/compose/releases/download/v5.1.3/docker-compose-darwin-aarch64.provenance.json",
"https://github.com/docker/compose/releases/download/v5.1.3/docker-compose-darwin-aarch64.sbom.json",
"https://github.com/docker/compose/releases/download/v5.1.3/docker-compose-darwin-aarch64.sha256",
"https://github.com/docker/compose/releases/download/v5.1.3/docker-compose-darwin-aarch64.sigstore.json",
"https://github.com/docker/compose/releases/download/v5.1.3/docker-compose-darwin-x86_64",
"https://github.com/docker/compose/releases/download/v5.1.3/docker-compose-darwin-x86_64.provenance.json",
"https://github.com/docker/compose/releases/download/v5.1.3/docker-compose-darwin-x86_64.sbom.json",
"https://github.com/docker/compose/releases/download/v5.1.3/docker-compose-darwin-x86_64.sha256",
"https://github.com/docker/compose/releases/download/v5.1.3/docker-compose-darwin-x86_64.sigstore.json",
"https://github.com/docker/compose/releases/download/v5.1.3/docker-compose-linux-aarch64",
"https://github.com/docker/compose/releases/download/v5.1.3/docker-compose-linux-aarch64.provenance.json",
"https://github.com/docker/compose/releases/download/v5.1.3/docker-compose-linux-aarch64.sbom.json",
"https://github.com/docker/compose/releases/download/v5.1.3/docker-compose-linux-aarch64.sha256",
"https://github.com/docker/compose/releases/download/v5.1.3/docker-compose-linux-aarch64.sigstore.json",
"https://github.com/docker/compose/releases/download/v5.1.3/docker-compose-linux-armv6",
"https://github.com/docker/compose/releases/download/v5.1.3/docker-compose-linux-armv6.provenance.json",
"https://github.com/docker/compose/releases/download/v5.1.3/docker-compose-linux-armv6.sbom.json",
"https://github.com/docker/compose/releases/download/v5.1.3/docker-compose-linux-armv6.sha256",
"https://github.com/docker/compose/releases/download/v5.1.3/docker-compose-linux-armv6.sigstore.json",
"https://github.com/docker/compose/releases/download/v5.1.3/docker-compose-linux-armv7",
"https://github.com/docker/compose/releases/download/v5.1.3/docker-compose-linux-armv7.provenance.json",
"https://github.com/docker/compose/releases/download/v5.1.3/docker-compose-linux-armv7.sbom.json",
"https://github.com/docker/compose/releases/download/v5.1.3/docker-compose-linux-armv7.sha256",
"https://github.com/docker/compose/releases/download/v5.1.3/docker-compose-linux-armv7.sigstore.json",
"https://github.com/docker/compose/releases/download/v5.1.3/docker-compose-linux-ppc64le",
"https://github.com/docker/compose/releases/download/v5.1.3/docker-compose-linux-ppc64le.provenance.json",
"https://github.com/docker/compose/releases/download/v5.1.3/docker-compose-linux-ppc64le.sbom.json",
"https://github.com/docker/compose/releases/download/v5.1.3/docker-compose-linux-ppc64le.sha256",
"https://github.com/docker/compose/releases/download/v5.1.3/docker-compose-linux-ppc64le.sigstore.json",
"https://github.com/docker/compose/releases/download/v5.1.3/docker-compose-linux-riscv64",
"https://github.com/docker/compose/releases/download/v5.1.3/docker-compose-linux-riscv64.provenance.json",
"https://github.com/docker/compose/releases/download/v5.1.3/docker-compose-linux-riscv64.sbom.json",
"https://github.com/docker/compose/releases/download/v5.1.3/docker-compose-linux-riscv64.sha256",
"https://github.com/docker/compose/releases/download/v5.1.3/docker-compose-linux-riscv64.sigstore.json",
"https://github.com/docker/compose/releases/download/v5.1.3/docker-compose-linux-s390x",
"https://github.com/docker/compose/releases/download/v5.1.3/docker-compose-linux-s390x.provenance.json",
"https://github.com/docker/compose/releases/download/v5.1.3/docker-compose-linux-s390x.sbom.json",
"https://github.com/docker/compose/releases/download/v5.1.3/docker-compose-linux-s390x.sha256",
"https://github.com/docker/compose/releases/download/v5.1.3/docker-compose-linux-s390x.sigstore.json",
"https://github.com/docker/compose/releases/download/v5.1.3/docker-compose-linux-x86_64",
"https://github.com/docker/compose/releases/download/v5.1.3/docker-compose-linux-x86_64.provenance.json",
"https://github.com/docker/compose/releases/download/v5.1.3/docker-compose-linux-x86_64.sbom.json",
"https://github.com/docker/compose/releases/download/v5.1.3/docker-compose-linux-x86_64.sha256",
"https://github.com/docker/compose/releases/download/v5.1.3/docker-compose-linux-x86_64.sigstore.json",
"https://github.com/docker/compose/releases/download/v5.1.3/docker-compose-windows-aarch64.exe",
"https://github.com/docker/compose/releases/download/v5.1.3/docker-compose-windows-aarch64.exe.sha256",
"https://github.com/docker/compose/releases/download/v5.1.3/docker-compose-windows-aarch64.provenance.json",
"https://github.com/docker/compose/releases/download/v5.1.3/docker-compose-windows-aarch64.sbom.json",
"https://github.com/docker/compose/releases/download/v5.1.3/docker-compose-windows-aarch64.sigstore.json",
"https://github.com/docker/compose/releases/download/v5.1.3/docker-compose-windows-x86_64.exe",
"https://github.com/docker/compose/releases/download/v5.1.3/docker-compose-windows-x86_64.exe.sha256",
"https://github.com/docker/compose/releases/download/v5.1.3/docker-compose-windows-x86_64.provenance.json",
"https://github.com/docker/compose/releases/download/v5.1.3/docker-compose-windows-x86_64.sbom.json",
"https://github.com/docker/compose/releases/download/v5.1.3/docker-compose-windows-x86_64.sigstore.json"
]
},
"v5.1.2": {
"id": 306957188,
"tag_name": "v5.1.2",
"html_url": "https://github.com/docker/compose/releases/tag/v5.1.2",
"assets": [
"https://github.com/docker/compose/releases/download/v5.1.2/checksums.txt",
"https://github.com/docker/compose/releases/download/v5.1.2/docker-compose-darwin-aarch64",
"https://github.com/docker/compose/releases/download/v5.1.2/docker-compose-darwin-aarch64.provenance.json",
"https://github.com/docker/compose/releases/download/v5.1.2/docker-compose-darwin-aarch64.sbom.json",
"https://github.com/docker/compose/releases/download/v5.1.2/docker-compose-darwin-aarch64.sha256",
"https://github.com/docker/compose/releases/download/v5.1.2/docker-compose-darwin-aarch64.sigstore.json",
"https://github.com/docker/compose/releases/download/v5.1.2/docker-compose-darwin-x86_64",
"https://github.com/docker/compose/releases/download/v5.1.2/docker-compose-darwin-x86_64.provenance.json",
"https://github.com/docker/compose/releases/download/v5.1.2/docker-compose-darwin-x86_64.sbom.json",
"https://github.com/docker/compose/releases/download/v5.1.2/docker-compose-darwin-x86_64.sha256",
"https://github.com/docker/compose/releases/download/v5.1.2/docker-compose-darwin-x86_64.sigstore.json",
"https://github.com/docker/compose/releases/download/v5.1.2/docker-compose-linux-aarch64",
"https://github.com/docker/compose/releases/download/v5.1.2/docker-compose-linux-aarch64.provenance.json",
"https://github.com/docker/compose/releases/download/v5.1.2/docker-compose-linux-aarch64.sbom.json",
"https://github.com/docker/compose/releases/download/v5.1.2/docker-compose-linux-aarch64.sha256",
"https://github.com/docker/compose/releases/download/v5.1.2/docker-compose-linux-aarch64.sigstore.json",
"https://github.com/docker/compose/releases/download/v5.1.2/docker-compose-linux-armv6",
"https://github.com/docker/compose/releases/download/v5.1.2/docker-compose-linux-armv6.provenance.json",
"https://github.com/docker/compose/releases/download/v5.1.2/docker-compose-linux-armv6.sbom.json",
"https://github.com/docker/compose/releases/download/v5.1.2/docker-compose-linux-armv6.sha256",
"https://github.com/docker/compose/releases/download/v5.1.2/docker-compose-linux-armv6.sigstore.json",
"https://github.com/docker/compose/releases/download/v5.1.2/docker-compose-linux-armv7",
"https://github.com/docker/compose/releases/download/v5.1.2/docker-compose-linux-armv7.provenance.json",
"https://github.com/docker/compose/releases/download/v5.1.2/docker-compose-linux-armv7.sbom.json",
"https://github.com/docker/compose/releases/download/v5.1.2/docker-compose-linux-armv7.sha256",
"https://github.com/docker/compose/releases/download/v5.1.2/docker-compose-linux-armv7.sigstore.json",
"https://github.com/docker/compose/releases/download/v5.1.2/docker-compose-linux-ppc64le",
"https://github.com/docker/compose/releases/download/v5.1.2/docker-compose-linux-ppc64le.provenance.json",
"https://github.com/docker/compose/releases/download/v5.1.2/docker-compose-linux-ppc64le.sbom.json",
"https://github.com/docker/compose/releases/download/v5.1.2/docker-compose-linux-ppc64le.sha256",
"https://github.com/docker/compose/releases/download/v5.1.2/docker-compose-linux-ppc64le.sigstore.json",
"https://github.com/docker/compose/releases/download/v5.1.2/docker-compose-linux-riscv64",
"https://github.com/docker/compose/releases/download/v5.1.2/docker-compose-linux-riscv64.provenance.json",
"https://github.com/docker/compose/releases/download/v5.1.2/docker-compose-linux-riscv64.sbom.json",
"https://github.com/docker/compose/releases/download/v5.1.2/docker-compose-linux-riscv64.sha256",
"https://github.com/docker/compose/releases/download/v5.1.2/docker-compose-linux-riscv64.sigstore.json",
"https://github.com/docker/compose/releases/download/v5.1.2/docker-compose-linux-s390x",
"https://github.com/docker/compose/releases/download/v5.1.2/docker-compose-linux-s390x.provenance.json",
"https://github.com/docker/compose/releases/download/v5.1.2/docker-compose-linux-s390x.sbom.json",
"https://github.com/docker/compose/releases/download/v5.1.2/docker-compose-linux-s390x.sha256",
"https://github.com/docker/compose/releases/download/v5.1.2/docker-compose-linux-s390x.sigstore.json",
"https://github.com/docker/compose/releases/download/v5.1.2/docker-compose-linux-x86_64",
"https://github.com/docker/compose/releases/download/v5.1.2/docker-compose-linux-x86_64.provenance.json",
"https://github.com/docker/compose/releases/download/v5.1.2/docker-compose-linux-x86_64.sbom.json",
"https://github.com/docker/compose/releases/download/v5.1.2/docker-compose-linux-x86_64.sha256",
"https://github.com/docker/compose/releases/download/v5.1.2/docker-compose-linux-x86_64.sigstore.json",
"https://github.com/docker/compose/releases/download/v5.1.2/docker-compose-windows-aarch64.exe",
"https://github.com/docker/compose/releases/download/v5.1.2/docker-compose-windows-aarch64.exe.sha256",
"https://github.com/docker/compose/releases/download/v5.1.2/docker-compose-windows-aarch64.provenance.json",
"https://github.com/docker/compose/releases/download/v5.1.2/docker-compose-windows-aarch64.sbom.json",
"https://github.com/docker/compose/releases/download/v5.1.2/docker-compose-windows-aarch64.sigstore.json",
"https://github.com/docker/compose/releases/download/v5.1.2/docker-compose-windows-x86_64.exe",
"https://github.com/docker/compose/releases/download/v5.1.2/docker-compose-windows-x86_64.exe.sha256",
"https://github.com/docker/compose/releases/download/v5.1.2/docker-compose-windows-x86_64.provenance.json",
"https://github.com/docker/compose/releases/download/v5.1.2/docker-compose-windows-x86_64.sbom.json",
"https://github.com/docker/compose/releases/download/v5.1.2/docker-compose-windows-x86_64.sigstore.json"
]
},
"v5.1.1": {
"id": 299261182,
"tag_name": "v5.1.1",
"html_url": "https://github.com/docker/compose/releases/tag/v5.1.1",
"assets": [
"https://github.com/docker/compose/releases/download/v5.1.1/checksums.txt",
"https://github.com/docker/compose/releases/download/v5.1.1/docker-compose-darwin-aarch64",
"https://github.com/docker/compose/releases/download/v5.1.1/docker-compose-darwin-aarch64.provenance.json",
"https://github.com/docker/compose/releases/download/v5.1.1/docker-compose-darwin-aarch64.sbom.json",
"https://github.com/docker/compose/releases/download/v5.1.1/docker-compose-darwin-aarch64.sha256",
"https://github.com/docker/compose/releases/download/v5.1.1/docker-compose-darwin-aarch64.sigstore.json",
"https://github.com/docker/compose/releases/download/v5.1.1/docker-compose-darwin-x86_64",
"https://github.com/docker/compose/releases/download/v5.1.1/docker-compose-darwin-x86_64.provenance.json",
"https://github.com/docker/compose/releases/download/v5.1.1/docker-compose-darwin-x86_64.sbom.json",
"https://github.com/docker/compose/releases/download/v5.1.1/docker-compose-darwin-x86_64.sha256",
"https://github.com/docker/compose/releases/download/v5.1.1/docker-compose-darwin-x86_64.sigstore.json",
"https://github.com/docker/compose/releases/download/v5.1.1/docker-compose-linux-aarch64",
"https://github.com/docker/compose/releases/download/v5.1.1/docker-compose-linux-aarch64.provenance.json",
"https://github.com/docker/compose/releases/download/v5.1.1/docker-compose-linux-aarch64.sbom.json",
"https://github.com/docker/compose/releases/download/v5.1.1/docker-compose-linux-aarch64.sha256",
"https://github.com/docker/compose/releases/download/v5.1.1/docker-compose-linux-aarch64.sigstore.json",
"https://github.com/docker/compose/releases/download/v5.1.1/docker-compose-linux-armv6",
"https://github.com/docker/compose/releases/download/v5.1.1/docker-compose-linux-armv6.provenance.json",
"https://github.com/docker/compose/releases/download/v5.1.1/docker-compose-linux-armv6.sbom.json",
"https://github.com/docker/compose/releases/download/v5.1.1/docker-compose-linux-armv6.sha256",
"https://github.com/docker/compose/releases/download/v5.1.1/docker-compose-linux-armv6.sigstore.json",
"https://github.com/docker/compose/releases/download/v5.1.1/docker-compose-linux-armv7",
"https://github.com/docker/compose/releases/download/v5.1.1/docker-compose-linux-armv7.provenance.json",
"https://github.com/docker/compose/releases/download/v5.1.1/docker-compose-linux-armv7.sbom.json",
"https://github.com/docker/compose/releases/download/v5.1.1/docker-compose-linux-armv7.sha256",
"https://github.com/docker/compose/releases/download/v5.1.1/docker-compose-linux-armv7.sigstore.json",
"https://github.com/docker/compose/releases/download/v5.1.1/docker-compose-linux-ppc64le",
"https://github.com/docker/compose/releases/download/v5.1.1/docker-compose-linux-ppc64le.provenance.json",
"https://github.com/docker/compose/releases/download/v5.1.1/docker-compose-linux-ppc64le.sbom.json",
"https://github.com/docker/compose/releases/download/v5.1.1/docker-compose-linux-ppc64le.sha256",
"https://github.com/docker/compose/releases/download/v5.1.1/docker-compose-linux-ppc64le.sigstore.json",
"https://github.com/docker/compose/releases/download/v5.1.1/docker-compose-linux-riscv64",
"https://github.com/docker/compose/releases/download/v5.1.1/docker-compose-linux-riscv64.provenance.json",
"https://github.com/docker/compose/releases/download/v5.1.1/docker-compose-linux-riscv64.sbom.json",
"https://github.com/docker/compose/releases/download/v5.1.1/docker-compose-linux-riscv64.sha256",
"https://github.com/docker/compose/releases/download/v5.1.1/docker-compose-linux-riscv64.sigstore.json",
"https://github.com/docker/compose/releases/download/v5.1.1/docker-compose-linux-s390x",
"https://github.com/docker/compose/releases/download/v5.1.1/docker-compose-linux-s390x.provenance.json",
"https://github.com/docker/compose/releases/download/v5.1.1/docker-compose-linux-s390x.sbom.json",
"https://github.com/docker/compose/releases/download/v5.1.1/docker-compose-linux-s390x.sha256",
"https://github.com/docker/compose/releases/download/v5.1.1/docker-compose-linux-s390x.sigstore.json",
"https://github.com/docker/compose/releases/download/v5.1.1/docker-compose-linux-x86_64",
"https://github.com/docker/compose/releases/download/v5.1.1/docker-compose-linux-x86_64.provenance.json",
"https://github.com/docker/compose/releases/download/v5.1.1/docker-compose-linux-x86_64.sbom.json",
"https://github.com/docker/compose/releases/download/v5.1.1/docker-compose-linux-x86_64.sha256",
"https://github.com/docker/compose/releases/download/v5.1.1/docker-compose-linux-x86_64.sigstore.json",
"https://github.com/docker/compose/releases/download/v5.1.1/docker-compose-windows-aarch64.exe",
"https://github.com/docker/compose/releases/download/v5.1.1/docker-compose-windows-aarch64.exe.sha256",
"https://github.com/docker/compose/releases/download/v5.1.1/docker-compose-windows-aarch64.provenance.json",
"https://github.com/docker/compose/releases/download/v5.1.1/docker-compose-windows-aarch64.sbom.json",
"https://github.com/docker/compose/releases/download/v5.1.1/docker-compose-windows-aarch64.sigstore.json",
"https://github.com/docker/compose/releases/download/v5.1.1/docker-compose-windows-x86_64.exe",
"https://github.com/docker/compose/releases/download/v5.1.1/docker-compose-windows-x86_64.exe.sha256",
"https://github.com/docker/compose/releases/download/v5.1.1/docker-compose-windows-x86_64.provenance.json",
"https://github.com/docker/compose/releases/download/v5.1.1/docker-compose-windows-x86_64.sbom.json",
"https://github.com/docker/compose/releases/download/v5.1.1/docker-compose-windows-x86_64.sigstore.json"
]
},
"v5.1.0": {
"id": 289948555,
"tag_name": "v5.1.0",
"html_url": "https://github.com/docker/compose/releases/tag/v5.1.0",
"assets": [
"https://github.com/docker/compose/releases/download/v5.1.0/checksums.txt",
"https://github.com/docker/compose/releases/download/v5.1.0/docker-compose-darwin-aarch64",
"https://github.com/docker/compose/releases/download/v5.1.0/docker-compose-darwin-aarch64.provenance.json",
"https://github.com/docker/compose/releases/download/v5.1.0/docker-compose-darwin-aarch64.sbom.json",
"https://github.com/docker/compose/releases/download/v5.1.0/docker-compose-darwin-aarch64.sha256",
"https://github.com/docker/compose/releases/download/v5.1.0/docker-compose-darwin-aarch64.sigstore.json",
"https://github.com/docker/compose/releases/download/v5.1.0/docker-compose-darwin-x86_64",
"https://github.com/docker/compose/releases/download/v5.1.0/docker-compose-darwin-x86_64.provenance.json",
"https://github.com/docker/compose/releases/download/v5.1.0/docker-compose-darwin-x86_64.sbom.json",
"https://github.com/docker/compose/releases/download/v5.1.0/docker-compose-darwin-x86_64.sha256",
"https://github.com/docker/compose/releases/download/v5.1.0/docker-compose-darwin-x86_64.sigstore.json",
"https://github.com/docker/compose/releases/download/v5.1.0/docker-compose-linux-aarch64",
"https://github.com/docker/compose/releases/download/v5.1.0/docker-compose-linux-aarch64.provenance.json",
"https://github.com/docker/compose/releases/download/v5.1.0/docker-compose-linux-aarch64.sbom.json",
"https://github.com/docker/compose/releases/download/v5.1.0/docker-compose-linux-aarch64.sha256",
"https://github.com/docker/compose/releases/download/v5.1.0/docker-compose-linux-aarch64.sigstore.json",
"https://github.com/docker/compose/releases/download/v5.1.0/docker-compose-linux-armv6",
"https://github.com/docker/compose/releases/download/v5.1.0/docker-compose-linux-armv6.provenance.json",
"https://github.com/docker/compose/releases/download/v5.1.0/docker-compose-linux-armv6.sbom.json",
"https://github.com/docker/compose/releases/download/v5.1.0/docker-compose-linux-armv6.sha256",
"https://github.com/docker/compose/releases/download/v5.1.0/docker-compose-linux-armv6.sigstore.json",
"https://github.com/docker/compose/releases/download/v5.1.0/docker-compose-linux-armv7",
"https://github.com/docker/compose/releases/download/v5.1.0/docker-compose-linux-armv7.provenance.json",
"https://github.com/docker/compose/releases/download/v5.1.0/docker-compose-linux-armv7.sbom.json",
"https://github.com/docker/compose/releases/download/v5.1.0/docker-compose-linux-armv7.sha256",
"https://github.com/docker/compose/releases/download/v5.1.0/docker-compose-linux-armv7.sigstore.json",
"https://github.com/docker/compose/releases/download/v5.1.0/docker-compose-linux-ppc64le",
"https://github.com/docker/compose/releases/download/v5.1.0/docker-compose-linux-ppc64le.provenance.json",
"https://github.com/docker/compose/releases/download/v5.1.0/docker-compose-linux-ppc64le.sbom.json",
"https://github.com/docker/compose/releases/download/v5.1.0/docker-compose-linux-ppc64le.sha256",
"https://github.com/docker/compose/releases/download/v5.1.0/docker-compose-linux-ppc64le.sigstore.json",
"https://github.com/docker/compose/releases/download/v5.1.0/docker-compose-linux-riscv64",
"https://github.com/docker/compose/releases/download/v5.1.0/docker-compose-linux-riscv64.provenance.json",
"https://github.com/docker/compose/releases/download/v5.1.0/docker-compose-linux-riscv64.sbom.json",
"https://github.com/docker/compose/releases/download/v5.1.0/docker-compose-linux-riscv64.sha256",
"https://github.com/docker/compose/releases/download/v5.1.0/docker-compose-linux-riscv64.sigstore.json",
"https://github.com/docker/compose/releases/download/v5.1.0/docker-compose-linux-s390x",
"https://github.com/docker/compose/releases/download/v5.1.0/docker-compose-linux-s390x.provenance.json",
"https://github.com/docker/compose/releases/download/v5.1.0/docker-compose-linux-s390x.sbom.json",
"https://github.com/docker/compose/releases/download/v5.1.0/docker-compose-linux-s390x.sha256",
"https://github.com/docker/compose/releases/download/v5.1.0/docker-compose-linux-s390x.sigstore.json",
"https://github.com/docker/compose/releases/download/v5.1.0/docker-compose-linux-x86_64",
"https://github.com/docker/compose/releases/download/v5.1.0/docker-compose-linux-x86_64.provenance.json",
"https://github.com/docker/compose/releases/download/v5.1.0/docker-compose-linux-x86_64.sbom.json",
"https://github.com/docker/compose/releases/download/v5.1.0/docker-compose-linux-x86_64.sha256",
"https://github.com/docker/compose/releases/download/v5.1.0/docker-compose-linux-x86_64.sigstore.json",
"https://github.com/docker/compose/releases/download/v5.1.0/docker-compose-windows-aarch64.exe",
"https://github.com/docker/compose/releases/download/v5.1.0/docker-compose-windows-aarch64.exe.sha256",
"https://github.com/docker/compose/releases/download/v5.1.0/docker-compose-windows-aarch64.provenance.json",
"https://github.com/docker/compose/releases/download/v5.1.0/docker-compose-windows-aarch64.sbom.json",
"https://github.com/docker/compose/releases/download/v5.1.0/docker-compose-windows-aarch64.sigstore.json",
"https://github.com/docker/compose/releases/download/v5.1.0/docker-compose-windows-x86_64.exe",
"https://github.com/docker/compose/releases/download/v5.1.0/docker-compose-windows-x86_64.exe.sha256",
"https://github.com/docker/compose/releases/download/v5.1.0/docker-compose-windows-x86_64.provenance.json",
"https://github.com/docker/compose/releases/download/v5.1.0/docker-compose-windows-x86_64.sbom.json",
"https://github.com/docker/compose/releases/download/v5.1.0/docker-compose-windows-x86_64.sigstore.json"
]
},
"v5.0.2": {
"id": 278255932,
"tag_name": "v5.0.2",
"html_url": "https://github.com/docker/compose/releases/tag/v5.0.2",
"assets": [
"https://github.com/docker/compose/releases/download/v5.0.2/checksums.txt",
"https://github.com/docker/compose/releases/download/v5.0.2/docker-compose-darwin-aarch64",
"https://github.com/docker/compose/releases/download/v5.0.2/docker-compose-darwin-aarch64.provenance.json",
"https://github.com/docker/compose/releases/download/v5.0.2/docker-compose-darwin-aarch64.sbom.json",
"https://github.com/docker/compose/releases/download/v5.0.2/docker-compose-darwin-aarch64.sha256",
"https://github.com/docker/compose/releases/download/v5.0.2/docker-compose-darwin-x86_64",
"https://github.com/docker/compose/releases/download/v5.0.2/docker-compose-darwin-x86_64.provenance.json",
"https://github.com/docker/compose/releases/download/v5.0.2/docker-compose-darwin-x86_64.sbom.json",
"https://github.com/docker/compose/releases/download/v5.0.2/docker-compose-darwin-x86_64.sha256",
"https://github.com/docker/compose/releases/download/v5.0.2/docker-compose-linux-aarch64",
"https://github.com/docker/compose/releases/download/v5.0.2/docker-compose-linux-aarch64.provenance.json",
"https://github.com/docker/compose/releases/download/v5.0.2/docker-compose-linux-aarch64.sbom.json",
"https://github.com/docker/compose/releases/download/v5.0.2/docker-compose-linux-aarch64.sha256",
"https://github.com/docker/compose/releases/download/v5.0.2/docker-compose-linux-armv6",
"https://github.com/docker/compose/releases/download/v5.0.2/docker-compose-linux-armv6.provenance.json",
"https://github.com/docker/compose/releases/download/v5.0.2/docker-compose-linux-armv6.sbom.json",
"https://github.com/docker/compose/releases/download/v5.0.2/docker-compose-linux-armv6.sha256",
"https://github.com/docker/compose/releases/download/v5.0.2/docker-compose-linux-armv7",
"https://github.com/docker/compose/releases/download/v5.0.2/docker-compose-linux-armv7.provenance.json",
"https://github.com/docker/compose/releases/download/v5.0.2/docker-compose-linux-armv7.sbom.json",
"https://github.com/docker/compose/releases/download/v5.0.2/docker-compose-linux-armv7.sha256",
"https://github.com/docker/compose/releases/download/v5.0.2/docker-compose-linux-ppc64le",
"https://github.com/docker/compose/releases/download/v5.0.2/docker-compose-linux-ppc64le.provenance.json",
"https://github.com/docker/compose/releases/download/v5.0.2/docker-compose-linux-ppc64le.sbom.json",
"https://github.com/docker/compose/releases/download/v5.0.2/docker-compose-linux-ppc64le.sha256",
"https://github.com/docker/compose/releases/download/v5.0.2/docker-compose-linux-riscv64",
"https://github.com/docker/compose/releases/download/v5.0.2/docker-compose-linux-riscv64.provenance.json",
"https://github.com/docker/compose/releases/download/v5.0.2/docker-compose-linux-riscv64.sbom.json",
"https://github.com/docker/compose/releases/download/v5.0.2/docker-compose-linux-riscv64.sha256",
"https://github.com/docker/compose/releases/download/v5.0.2/docker-compose-linux-s390x",
"https://github.com/docker/compose/releases/download/v5.0.2/docker-compose-linux-s390x.provenance.json",
"https://github.com/docker/compose/releases/download/v5.0.2/docker-compose-linux-s390x.sbom.json",
"https://github.com/docker/compose/releases/download/v5.0.2/docker-compose-linux-s390x.sha256",
"https://github.com/docker/compose/releases/download/v5.0.2/docker-compose-linux-x86_64",
"https://github.com/docker/compose/releases/download/v5.0.2/docker-compose-linux-x86_64.provenance.json",
"https://github.com/docker/compose/releases/download/v5.0.2/docker-compose-linux-x86_64.sbom.json",
"https://github.com/docker/compose/releases/download/v5.0.2/docker-compose-linux-x86_64.sha256",
"https://github.com/docker/compose/releases/download/v5.0.2/docker-compose-windows-aarch64.exe",
"https://github.com/docker/compose/releases/download/v5.0.2/docker-compose-windows-aarch64.exe.sha256",
"https://github.com/docker/compose/releases/download/v5.0.2/docker-compose-windows-aarch64.provenance.json",
"https://github.com/docker/compose/releases/download/v5.0.2/docker-compose-windows-aarch64.sbom.json",
"https://github.com/docker/compose/releases/download/v5.0.2/docker-compose-windows-x86_64.exe",
"https://github.com/docker/compose/releases/download/v5.0.2/docker-compose-windows-x86_64.exe.sha256",
"https://github.com/docker/compose/releases/download/v5.0.2/docker-compose-windows-x86_64.provenance.json",
"https://github.com/docker/compose/releases/download/v5.0.2/docker-compose-windows-x86_64.sbom.json"
]
},
"v5.0.1": {
"id": 271392988,
"tag_name": "v5.0.1",
"html_url": "https://github.com/docker/compose/releases/tag/v5.0.1",
"assets": [
"https://github.com/docker/compose/releases/download/v5.0.1/checksums.txt",
"https://github.com/docker/compose/releases/download/v5.0.1/docker-compose-darwin-aarch64",
"https://github.com/docker/compose/releases/download/v5.0.1/docker-compose-darwin-aarch64.provenance.json",
"https://github.com/docker/compose/releases/download/v5.0.1/docker-compose-darwin-aarch64.sbom.json",
"https://github.com/docker/compose/releases/download/v5.0.1/docker-compose-darwin-aarch64.sha256",
"https://github.com/docker/compose/releases/download/v5.0.1/docker-compose-darwin-x86_64",
"https://github.com/docker/compose/releases/download/v5.0.1/docker-compose-darwin-x86_64.provenance.json",
"https://github.com/docker/compose/releases/download/v5.0.1/docker-compose-darwin-x86_64.sbom.json",
"https://github.com/docker/compose/releases/download/v5.0.1/docker-compose-darwin-x86_64.sha256",
"https://github.com/docker/compose/releases/download/v5.0.1/docker-compose-linux-aarch64",
"https://github.com/docker/compose/releases/download/v5.0.1/docker-compose-linux-aarch64.provenance.json",
"https://github.com/docker/compose/releases/download/v5.0.1/docker-compose-linux-aarch64.sbom.json",
"https://github.com/docker/compose/releases/download/v5.0.1/docker-compose-linux-aarch64.sha256",
"https://github.com/docker/compose/releases/download/v5.0.1/docker-compose-linux-armv6",
"https://github.com/docker/compose/releases/download/v5.0.1/docker-compose-linux-armv6.provenance.json",
"https://github.com/docker/compose/releases/download/v5.0.1/docker-compose-linux-armv6.sbom.json",
"https://github.com/docker/compose/releases/download/v5.0.1/docker-compose-linux-armv6.sha256",
"https://github.com/docker/compose/releases/download/v5.0.1/docker-compose-linux-armv7",
"https://github.com/docker/compose/releases/download/v5.0.1/docker-compose-linux-armv7.provenance.json",
"https://github.com/docker/compose/releases/download/v5.0.1/docker-compose-linux-armv7.sbom.json",
"https://github.com/docker/compose/releases/download/v5.0.1/docker-compose-linux-armv7.sha256",
"https://github.com/docker/compose/releases/download/v5.0.1/docker-compose-linux-ppc64le",
"https://github.com/docker/compose/releases/download/v5.0.1/docker-compose-linux-ppc64le.provenance.json",
"https://github.com/docker/compose/releases/download/v5.0.1/docker-compose-linux-ppc64le.sbom.json",
"https://github.com/docker/compose/releases/download/v5.0.1/docker-compose-linux-ppc64le.sha256",
"https://github.com/docker/compose/releases/download/v5.0.1/docker-compose-linux-riscv64",
"https://github.com/docker/compose/releases/download/v5.0.1/docker-compose-linux-riscv64.provenance.json",
"https://github.com/docker/compose/releases/download/v5.0.1/docker-compose-linux-riscv64.sbom.json",
"https://github.com/docker/compose/releases/download/v5.0.1/docker-compose-linux-riscv64.sha256",
"https://github.com/docker/compose/releases/download/v5.0.1/docker-compose-linux-s390x",
"https://github.com/docker/compose/releases/download/v5.0.1/docker-compose-linux-s390x.provenance.json",
"https://github.com/docker/compose/releases/download/v5.0.1/docker-compose-linux-s390x.sbom.json",
"https://github.com/docker/compose/releases/download/v5.0.1/docker-compose-linux-s390x.sha256",
"https://github.com/docker/compose/releases/download/v5.0.1/docker-compose-linux-x86_64",
"https://github.com/docker/compose/releases/download/v5.0.1/docker-compose-linux-x86_64.provenance.json",
"https://github.com/docker/compose/releases/download/v5.0.1/docker-compose-linux-x86_64.sbom.json",
"https://github.com/docker/compose/releases/download/v5.0.1/docker-compose-linux-x86_64.sha256",
"https://github.com/docker/compose/releases/download/v5.0.1/docker-compose-windows-aarch64.exe",
"https://github.com/docker/compose/releases/download/v5.0.1/docker-compose-windows-aarch64.exe.sha256",
"https://github.com/docker/compose/releases/download/v5.0.1/docker-compose-windows-aarch64.provenance.json",
"https://github.com/docker/compose/releases/download/v5.0.1/docker-compose-windows-aarch64.sbom.json",
"https://github.com/docker/compose/releases/download/v5.0.1/docker-compose-windows-x86_64.exe",
"https://github.com/docker/compose/releases/download/v5.0.1/docker-compose-windows-x86_64.exe.sha256",
"https://github.com/docker/compose/releases/download/v5.0.1/docker-compose-windows-x86_64.provenance.json",
"https://github.com/docker/compose/releases/download/v5.0.1/docker-compose-windows-x86_64.sbom.json"
]
},
"v5.0.0": {
@@ -104,55 +471,66 @@
]
},
"edge": {
"id": 266660722,
"tag_name": "v5.0.0",
"html_url": "https://github.com/docker/compose/releases/tag/v5.0.0",
"id": 309393346,
"tag_name": "v5.1.3",
"html_url": "https://github.com/docker/compose/releases/tag/v5.1.3",
"assets": [
"https://github.com/docker/compose/releases/download/v5.0.0/checksums.txt",
"https://github.com/docker/compose/releases/download/v5.0.0/docker-compose-darwin-aarch64",
"https://github.com/docker/compose/releases/download/v5.0.0/docker-compose-darwin-aarch64.provenance.json",
"https://github.com/docker/compose/releases/download/v5.0.0/docker-compose-darwin-aarch64.sbom.json",
"https://github.com/docker/compose/releases/download/v5.0.0/docker-compose-darwin-aarch64.sha256",
"https://github.com/docker/compose/releases/download/v5.0.0/docker-compose-darwin-x86_64",
"https://github.com/docker/compose/releases/download/v5.0.0/docker-compose-darwin-x86_64.provenance.json",
"https://github.com/docker/compose/releases/download/v5.0.0/docker-compose-darwin-x86_64.sbom.json",
"https://github.com/docker/compose/releases/download/v5.0.0/docker-compose-darwin-x86_64.sha256",
"https://github.com/docker/compose/releases/download/v5.0.0/docker-compose-linux-aarch64",
"https://github.com/docker/compose/releases/download/v5.0.0/docker-compose-linux-aarch64.provenance.json",
"https://github.com/docker/compose/releases/download/v5.0.0/docker-compose-linux-aarch64.sbom.json",
"https://github.com/docker/compose/releases/download/v5.0.0/docker-compose-linux-aarch64.sha256",
"https://github.com/docker/compose/releases/download/v5.0.0/docker-compose-linux-armv6",
"https://github.com/docker/compose/releases/download/v5.0.0/docker-compose-linux-armv6.provenance.json",
"https://github.com/docker/compose/releases/download/v5.0.0/docker-compose-linux-armv6.sbom.json",
"https://github.com/docker/compose/releases/download/v5.0.0/docker-compose-linux-armv6.sha256",
"https://github.com/docker/compose/releases/download/v5.0.0/docker-compose-linux-armv7",
"https://github.com/docker/compose/releases/download/v5.0.0/docker-compose-linux-armv7.provenance.json",
"https://github.com/docker/compose/releases/download/v5.0.0/docker-compose-linux-armv7.sbom.json",
"https://github.com/docker/compose/releases/download/v5.0.0/docker-compose-linux-armv7.sha256",
"https://github.com/docker/compose/releases/download/v5.0.0/docker-compose-linux-ppc64le",
"https://github.com/docker/compose/releases/download/v5.0.0/docker-compose-linux-ppc64le.provenance.json",
"https://github.com/docker/compose/releases/download/v5.0.0/docker-compose-linux-ppc64le.sbom.json",
"https://github.com/docker/compose/releases/download/v5.0.0/docker-compose-linux-ppc64le.sha256",
"https://github.com/docker/compose/releases/download/v5.0.0/docker-compose-linux-riscv64",
"https://github.com/docker/compose/releases/download/v5.0.0/docker-compose-linux-riscv64.provenance.json",
"https://github.com/docker/compose/releases/download/v5.0.0/docker-compose-linux-riscv64.sbom.json",
"https://github.com/docker/compose/releases/download/v5.0.0/docker-compose-linux-riscv64.sha256",
"https://github.com/docker/compose/releases/download/v5.0.0/docker-compose-linux-s390x",
"https://github.com/docker/compose/releases/download/v5.0.0/docker-compose-linux-s390x.provenance.json",
"https://github.com/docker/compose/releases/download/v5.0.0/docker-compose-linux-s390x.sbom.json",
"https://github.com/docker/compose/releases/download/v5.0.0/docker-compose-linux-s390x.sha256",
"https://github.com/docker/compose/releases/download/v5.0.0/docker-compose-linux-x86_64",
"https://github.com/docker/compose/releases/download/v5.0.0/docker-compose-linux-x86_64.provenance.json",
"https://github.com/docker/compose/releases/download/v5.0.0/docker-compose-linux-x86_64.sbom.json",
"https://github.com/docker/compose/releases/download/v5.0.0/docker-compose-linux-x86_64.sha256",
"https://github.com/docker/compose/releases/download/v5.0.0/docker-compose-windows-aarch64.exe",
"https://github.com/docker/compose/releases/download/v5.0.0/docker-compose-windows-aarch64.exe.sha256",
"https://github.com/docker/compose/releases/download/v5.0.0/docker-compose-windows-aarch64.provenance.json",
"https://github.com/docker/compose/releases/download/v5.0.0/docker-compose-windows-aarch64.sbom.json",
"https://github.com/docker/compose/releases/download/v5.0.0/docker-compose-windows-x86_64.exe",
"https://github.com/docker/compose/releases/download/v5.0.0/docker-compose-windows-x86_64.exe.sha256",
"https://github.com/docker/compose/releases/download/v5.0.0/docker-compose-windows-x86_64.provenance.json",
"https://github.com/docker/compose/releases/download/v5.0.0/docker-compose-windows-x86_64.sbom.json"
"https://github.com/docker/compose/releases/download/v5.1.3/checksums.txt",
"https://github.com/docker/compose/releases/download/v5.1.3/docker-compose-darwin-aarch64",
"https://github.com/docker/compose/releases/download/v5.1.3/docker-compose-darwin-aarch64.provenance.json",
"https://github.com/docker/compose/releases/download/v5.1.3/docker-compose-darwin-aarch64.sbom.json",
"https://github.com/docker/compose/releases/download/v5.1.3/docker-compose-darwin-aarch64.sha256",
"https://github.com/docker/compose/releases/download/v5.1.3/docker-compose-darwin-aarch64.sigstore.json",
"https://github.com/docker/compose/releases/download/v5.1.3/docker-compose-darwin-x86_64",
"https://github.com/docker/compose/releases/download/v5.1.3/docker-compose-darwin-x86_64.provenance.json",
"https://github.com/docker/compose/releases/download/v5.1.3/docker-compose-darwin-x86_64.sbom.json",
"https://github.com/docker/compose/releases/download/v5.1.3/docker-compose-darwin-x86_64.sha256",
"https://github.com/docker/compose/releases/download/v5.1.3/docker-compose-darwin-x86_64.sigstore.json",
"https://github.com/docker/compose/releases/download/v5.1.3/docker-compose-linux-aarch64",
"https://github.com/docker/compose/releases/download/v5.1.3/docker-compose-linux-aarch64.provenance.json",
"https://github.com/docker/compose/releases/download/v5.1.3/docker-compose-linux-aarch64.sbom.json",
"https://github.com/docker/compose/releases/download/v5.1.3/docker-compose-linux-aarch64.sha256",
"https://github.com/docker/compose/releases/download/v5.1.3/docker-compose-linux-aarch64.sigstore.json",
"https://github.com/docker/compose/releases/download/v5.1.3/docker-compose-linux-armv6",
"https://github.com/docker/compose/releases/download/v5.1.3/docker-compose-linux-armv6.provenance.json",
"https://github.com/docker/compose/releases/download/v5.1.3/docker-compose-linux-armv6.sbom.json",
"https://github.com/docker/compose/releases/download/v5.1.3/docker-compose-linux-armv6.sha256",
"https://github.com/docker/compose/releases/download/v5.1.3/docker-compose-linux-armv6.sigstore.json",
"https://github.com/docker/compose/releases/download/v5.1.3/docker-compose-linux-armv7",
"https://github.com/docker/compose/releases/download/v5.1.3/docker-compose-linux-armv7.provenance.json",
"https://github.com/docker/compose/releases/download/v5.1.3/docker-compose-linux-armv7.sbom.json",
"https://github.com/docker/compose/releases/download/v5.1.3/docker-compose-linux-armv7.sha256",
"https://github.com/docker/compose/releases/download/v5.1.3/docker-compose-linux-armv7.sigstore.json",
"https://github.com/docker/compose/releases/download/v5.1.3/docker-compose-linux-ppc64le",
"https://github.com/docker/compose/releases/download/v5.1.3/docker-compose-linux-ppc64le.provenance.json",
"https://github.com/docker/compose/releases/download/v5.1.3/docker-compose-linux-ppc64le.sbom.json",
"https://github.com/docker/compose/releases/download/v5.1.3/docker-compose-linux-ppc64le.sha256",
"https://github.com/docker/compose/releases/download/v5.1.3/docker-compose-linux-ppc64le.sigstore.json",
"https://github.com/docker/compose/releases/download/v5.1.3/docker-compose-linux-riscv64",
"https://github.com/docker/compose/releases/download/v5.1.3/docker-compose-linux-riscv64.provenance.json",
"https://github.com/docker/compose/releases/download/v5.1.3/docker-compose-linux-riscv64.sbom.json",
"https://github.com/docker/compose/releases/download/v5.1.3/docker-compose-linux-riscv64.sha256",
"https://github.com/docker/compose/releases/download/v5.1.3/docker-compose-linux-riscv64.sigstore.json",
"https://github.com/docker/compose/releases/download/v5.1.3/docker-compose-linux-s390x",
"https://github.com/docker/compose/releases/download/v5.1.3/docker-compose-linux-s390x.provenance.json",
"https://github.com/docker/compose/releases/download/v5.1.3/docker-compose-linux-s390x.sbom.json",
"https://github.com/docker/compose/releases/download/v5.1.3/docker-compose-linux-s390x.sha256",
"https://github.com/docker/compose/releases/download/v5.1.3/docker-compose-linux-s390x.sigstore.json",
"https://github.com/docker/compose/releases/download/v5.1.3/docker-compose-linux-x86_64",
"https://github.com/docker/compose/releases/download/v5.1.3/docker-compose-linux-x86_64.provenance.json",
"https://github.com/docker/compose/releases/download/v5.1.3/docker-compose-linux-x86_64.sbom.json",
"https://github.com/docker/compose/releases/download/v5.1.3/docker-compose-linux-x86_64.sha256",
"https://github.com/docker/compose/releases/download/v5.1.3/docker-compose-linux-x86_64.sigstore.json",
"https://github.com/docker/compose/releases/download/v5.1.3/docker-compose-windows-aarch64.exe",
"https://github.com/docker/compose/releases/download/v5.1.3/docker-compose-windows-aarch64.exe.sha256",
"https://github.com/docker/compose/releases/download/v5.1.3/docker-compose-windows-aarch64.provenance.json",
"https://github.com/docker/compose/releases/download/v5.1.3/docker-compose-windows-aarch64.sbom.json",
"https://github.com/docker/compose/releases/download/v5.1.3/docker-compose-windows-aarch64.sigstore.json",
"https://github.com/docker/compose/releases/download/v5.1.3/docker-compose-windows-x86_64.exe",
"https://github.com/docker/compose/releases/download/v5.1.3/docker-compose-windows-x86_64.exe.sha256",
"https://github.com/docker/compose/releases/download/v5.1.3/docker-compose-windows-x86_64.provenance.json",
"https://github.com/docker/compose/releases/download/v5.1.3/docker-compose-windows-x86_64.sbom.json",
"https://github.com/docker/compose/releases/download/v5.1.3/docker-compose-windows-x86_64.sigstore.json"
]
},
"v5.0.0-rc.2": {

View File

@@ -1,92 +1,692 @@
{
"latest": {
"id": 253720294,
"tag_name": "v3.0.2",
"html_url": "https://github.com/sigstore/cosign/releases/tag/v3.0.2",
"id": 305842182,
"tag_name": "v3.0.6",
"html_url": "https://github.com/sigstore/cosign/releases/tag/v3.0.6",
"assets": [
"https://github.com/sigstore/cosign/releases/download/v3.0.2/cosign-3.0.2-1.aarch64.rpm",
"https://github.com/sigstore/cosign/releases/download/v3.0.2/cosign-3.0.2-1.aarch64.rpm.sigstore.json",
"https://github.com/sigstore/cosign/releases/download/v3.0.2/cosign-3.0.2-1.armv7hl.rpm",
"https://github.com/sigstore/cosign/releases/download/v3.0.2/cosign-3.0.2-1.armv7hl.rpm.sigstore.json",
"https://github.com/sigstore/cosign/releases/download/v3.0.2/cosign-3.0.2-1.ppc64le.rpm",
"https://github.com/sigstore/cosign/releases/download/v3.0.2/cosign-3.0.2-1.ppc64le.rpm.sigstore.json",
"https://github.com/sigstore/cosign/releases/download/v3.0.2/cosign-3.0.2-1.riscv64.rpm",
"https://github.com/sigstore/cosign/releases/download/v3.0.2/cosign-3.0.2-1.riscv64.rpm.sigstore.json",
"https://github.com/sigstore/cosign/releases/download/v3.0.2/cosign-3.0.2-1.s390x.rpm",
"https://github.com/sigstore/cosign/releases/download/v3.0.2/cosign-3.0.2-1.s390x.rpm.sigstore.json",
"https://github.com/sigstore/cosign/releases/download/v3.0.2/cosign-3.0.2-1.x86_64.rpm",
"https://github.com/sigstore/cosign/releases/download/v3.0.2/cosign-3.0.2-1.x86_64.rpm.sigstore.json",
"https://github.com/sigstore/cosign/releases/download/v3.0.2/cosign-darwin-amd64",
"https://github.com/sigstore/cosign/releases/download/v3.0.2/cosign-darwin-amd64-kms.sigstore.json",
"https://github.com/sigstore/cosign/releases/download/v3.0.2/cosign-darwin-amd64.sigstore.json",
"https://github.com/sigstore/cosign/releases/download/v3.0.2/cosign-darwin-amd64_3.0.2_darwin_amd64.sbom.json",
"https://github.com/sigstore/cosign/releases/download/v3.0.2/cosign-darwin-arm64",
"https://github.com/sigstore/cosign/releases/download/v3.0.2/cosign-darwin-arm64-kms.sigstore.json",
"https://github.com/sigstore/cosign/releases/download/v3.0.2/cosign-darwin-arm64.sigstore.json",
"https://github.com/sigstore/cosign/releases/download/v3.0.2/cosign-darwin-arm64_3.0.2_darwin_arm64.sbom.json",
"https://github.com/sigstore/cosign/releases/download/v3.0.2/cosign-linux-amd64",
"https://github.com/sigstore/cosign/releases/download/v3.0.2/cosign-linux-amd64-kms.sigstore.json",
"https://github.com/sigstore/cosign/releases/download/v3.0.2/cosign-linux-amd64.sigstore.json",
"https://github.com/sigstore/cosign/releases/download/v3.0.2/cosign-linux-amd64_3.0.2_linux_amd64.sbom.json",
"https://github.com/sigstore/cosign/releases/download/v3.0.2/cosign-linux-arm",
"https://github.com/sigstore/cosign/releases/download/v3.0.2/cosign-linux-arm-kms.sigstore.json",
"https://github.com/sigstore/cosign/releases/download/v3.0.2/cosign-linux-arm.sigstore.json",
"https://github.com/sigstore/cosign/releases/download/v3.0.2/cosign-linux-arm64",
"https://github.com/sigstore/cosign/releases/download/v3.0.2/cosign-linux-arm64-kms.sigstore.json",
"https://github.com/sigstore/cosign/releases/download/v3.0.2/cosign-linux-arm64.sigstore.json",
"https://github.com/sigstore/cosign/releases/download/v3.0.2/cosign-linux-arm64_3.0.2_linux_arm64.sbom.json",
"https://github.com/sigstore/cosign/releases/download/v3.0.2/cosign-linux-arm_3.0.2_linux_arm.sbom.json",
"https://github.com/sigstore/cosign/releases/download/v3.0.2/cosign-linux-pivkey-pkcs11key-amd64",
"https://github.com/sigstore/cosign/releases/download/v3.0.2/cosign-linux-pivkey-pkcs11key-amd64-kms.sigstore.json",
"https://github.com/sigstore/cosign/releases/download/v3.0.2/cosign-linux-pivkey-pkcs11key-amd64.sigstore.json",
"https://github.com/sigstore/cosign/releases/download/v3.0.2/cosign-linux-pivkey-pkcs11key-amd64_3.0.2_linux_amd64.sbom.json",
"https://github.com/sigstore/cosign/releases/download/v3.0.2/cosign-linux-pivkey-pkcs11key-arm64",
"https://github.com/sigstore/cosign/releases/download/v3.0.2/cosign-linux-pivkey-pkcs11key-arm64-kms.sigstore.json",
"https://github.com/sigstore/cosign/releases/download/v3.0.2/cosign-linux-pivkey-pkcs11key-arm64.sigstore.json",
"https://github.com/sigstore/cosign/releases/download/v3.0.2/cosign-linux-pivkey-pkcs11key-arm64_3.0.2_linux_arm64.sbom.json",
"https://github.com/sigstore/cosign/releases/download/v3.0.2/cosign-linux-ppc64le",
"https://github.com/sigstore/cosign/releases/download/v3.0.2/cosign-linux-ppc64le-kms.sigstore.json",
"https://github.com/sigstore/cosign/releases/download/v3.0.2/cosign-linux-ppc64le.sigstore.json",
"https://github.com/sigstore/cosign/releases/download/v3.0.2/cosign-linux-ppc64le_3.0.2_linux_ppc64le.sbom.json",
"https://github.com/sigstore/cosign/releases/download/v3.0.2/cosign-linux-riscv64",
"https://github.com/sigstore/cosign/releases/download/v3.0.2/cosign-linux-riscv64-kms.sigstore.json",
"https://github.com/sigstore/cosign/releases/download/v3.0.2/cosign-linux-riscv64.sigstore.json",
"https://github.com/sigstore/cosign/releases/download/v3.0.2/cosign-linux-riscv64_3.0.2_linux_riscv64.sbom.json",
"https://github.com/sigstore/cosign/releases/download/v3.0.2/cosign-linux-s390x",
"https://github.com/sigstore/cosign/releases/download/v3.0.2/cosign-linux-s390x-kms.sigstore.json",
"https://github.com/sigstore/cosign/releases/download/v3.0.2/cosign-linux-s390x.sigstore.json",
"https://github.com/sigstore/cosign/releases/download/v3.0.2/cosign-linux-s390x_3.0.2_linux_s390x.sbom.json",
"https://github.com/sigstore/cosign/releases/download/v3.0.2/cosign-windows-amd64.exe",
"https://github.com/sigstore/cosign/releases/download/v3.0.2/cosign-windows-amd64.exe-kms.sigstore.json",
"https://github.com/sigstore/cosign/releases/download/v3.0.2/cosign-windows-amd64.exe.sigstore.json",
"https://github.com/sigstore/cosign/releases/download/v3.0.2/cosign-windows-amd64.exe_3.0.2_windows_amd64.sbom.json",
"https://github.com/sigstore/cosign/releases/download/v3.0.2/cosign_3.0.2_aarch64.apk",
"https://github.com/sigstore/cosign/releases/download/v3.0.2/cosign_3.0.2_aarch64.apk.sigstore.json",
"https://github.com/sigstore/cosign/releases/download/v3.0.2/cosign_3.0.2_amd64.deb",
"https://github.com/sigstore/cosign/releases/download/v3.0.2/cosign_3.0.2_amd64.deb.sigstore.json",
"https://github.com/sigstore/cosign/releases/download/v3.0.2/cosign_3.0.2_arm64.deb",
"https://github.com/sigstore/cosign/releases/download/v3.0.2/cosign_3.0.2_arm64.deb.sigstore.json",
"https://github.com/sigstore/cosign/releases/download/v3.0.2/cosign_3.0.2_armhf.deb",
"https://github.com/sigstore/cosign/releases/download/v3.0.2/cosign_3.0.2_armhf.deb.sigstore.json",
"https://github.com/sigstore/cosign/releases/download/v3.0.2/cosign_3.0.2_armv7.apk",
"https://github.com/sigstore/cosign/releases/download/v3.0.2/cosign_3.0.2_armv7.apk.sigstore.json",
"https://github.com/sigstore/cosign/releases/download/v3.0.2/cosign_3.0.2_ppc64el.deb",
"https://github.com/sigstore/cosign/releases/download/v3.0.2/cosign_3.0.2_ppc64el.deb.sigstore.json",
"https://github.com/sigstore/cosign/releases/download/v3.0.2/cosign_3.0.2_ppc64le.apk",
"https://github.com/sigstore/cosign/releases/download/v3.0.2/cosign_3.0.2_ppc64le.apk.sigstore.json",
"https://github.com/sigstore/cosign/releases/download/v3.0.2/cosign_3.0.2_riscv64.apk",
"https://github.com/sigstore/cosign/releases/download/v3.0.2/cosign_3.0.2_riscv64.apk.sigstore.json",
"https://github.com/sigstore/cosign/releases/download/v3.0.2/cosign_3.0.2_riscv64.deb",
"https://github.com/sigstore/cosign/releases/download/v3.0.2/cosign_3.0.2_riscv64.deb.sigstore.json",
"https://github.com/sigstore/cosign/releases/download/v3.0.2/cosign_3.0.2_s390x.apk",
"https://github.com/sigstore/cosign/releases/download/v3.0.2/cosign_3.0.2_s390x.apk.sigstore.json",
"https://github.com/sigstore/cosign/releases/download/v3.0.2/cosign_3.0.2_s390x.deb",
"https://github.com/sigstore/cosign/releases/download/v3.0.2/cosign_3.0.2_s390x.deb.sigstore.json",
"https://github.com/sigstore/cosign/releases/download/v3.0.2/cosign_3.0.2_x86_64.apk",
"https://github.com/sigstore/cosign/releases/download/v3.0.2/cosign_3.0.2_x86_64.apk.sigstore.json",
"https://github.com/sigstore/cosign/releases/download/v3.0.2/cosign_checksums.txt",
"https://github.com/sigstore/cosign/releases/download/v3.0.2/cosign_checksums.txt.sigstore.json",
"https://github.com/sigstore/cosign/releases/download/v3.0.2/release-cosign.pub"
"https://github.com/sigstore/cosign/releases/download/v3.0.6/cosign-3.0.6-1.aarch64.rpm",
"https://github.com/sigstore/cosign/releases/download/v3.0.6/cosign-3.0.6-1.aarch64.rpm.sigstore.json",
"https://github.com/sigstore/cosign/releases/download/v3.0.6/cosign-3.0.6-1.armv7hl.rpm",
"https://github.com/sigstore/cosign/releases/download/v3.0.6/cosign-3.0.6-1.armv7hl.rpm.sigstore.json",
"https://github.com/sigstore/cosign/releases/download/v3.0.6/cosign-3.0.6-1.ppc64le.rpm",
"https://github.com/sigstore/cosign/releases/download/v3.0.6/cosign-3.0.6-1.ppc64le.rpm.sigstore.json",
"https://github.com/sigstore/cosign/releases/download/v3.0.6/cosign-3.0.6-1.riscv64.rpm",
"https://github.com/sigstore/cosign/releases/download/v3.0.6/cosign-3.0.6-1.riscv64.rpm.sigstore.json",
"https://github.com/sigstore/cosign/releases/download/v3.0.6/cosign-3.0.6-1.s390x.rpm",
"https://github.com/sigstore/cosign/releases/download/v3.0.6/cosign-3.0.6-1.s390x.rpm.sigstore.json",
"https://github.com/sigstore/cosign/releases/download/v3.0.6/cosign-3.0.6-1.x86_64.rpm",
"https://github.com/sigstore/cosign/releases/download/v3.0.6/cosign-3.0.6-1.x86_64.rpm.sigstore.json",
"https://github.com/sigstore/cosign/releases/download/v3.0.6/cosign-darwin-amd64",
"https://github.com/sigstore/cosign/releases/download/v3.0.6/cosign-darwin-amd64-kms.sigstore.json",
"https://github.com/sigstore/cosign/releases/download/v3.0.6/cosign-darwin-amd64.sigstore.json",
"https://github.com/sigstore/cosign/releases/download/v3.0.6/cosign-darwin-amd64_3.0.6_darwin_amd64.sbom.json",
"https://github.com/sigstore/cosign/releases/download/v3.0.6/cosign-darwin-arm64",
"https://github.com/sigstore/cosign/releases/download/v3.0.6/cosign-darwin-arm64-kms.sigstore.json",
"https://github.com/sigstore/cosign/releases/download/v3.0.6/cosign-darwin-arm64.sigstore.json",
"https://github.com/sigstore/cosign/releases/download/v3.0.6/cosign-darwin-arm64_3.0.6_darwin_arm64.sbom.json",
"https://github.com/sigstore/cosign/releases/download/v3.0.6/cosign-linux-amd64",
"https://github.com/sigstore/cosign/releases/download/v3.0.6/cosign-linux-amd64-kms.sigstore.json",
"https://github.com/sigstore/cosign/releases/download/v3.0.6/cosign-linux-amd64.sigstore.json",
"https://github.com/sigstore/cosign/releases/download/v3.0.6/cosign-linux-amd64_3.0.6_linux_amd64.sbom.json",
"https://github.com/sigstore/cosign/releases/download/v3.0.6/cosign-linux-arm",
"https://github.com/sigstore/cosign/releases/download/v3.0.6/cosign-linux-arm-kms.sigstore.json",
"https://github.com/sigstore/cosign/releases/download/v3.0.6/cosign-linux-arm.sigstore.json",
"https://github.com/sigstore/cosign/releases/download/v3.0.6/cosign-linux-arm64",
"https://github.com/sigstore/cosign/releases/download/v3.0.6/cosign-linux-arm64-kms.sigstore.json",
"https://github.com/sigstore/cosign/releases/download/v3.0.6/cosign-linux-arm64.sigstore.json",
"https://github.com/sigstore/cosign/releases/download/v3.0.6/cosign-linux-arm64_3.0.6_linux_arm64.sbom.json",
"https://github.com/sigstore/cosign/releases/download/v3.0.6/cosign-linux-arm_3.0.6_linux_arm.sbom.json",
"https://github.com/sigstore/cosign/releases/download/v3.0.6/cosign-linux-pivkey-pkcs11key-amd64",
"https://github.com/sigstore/cosign/releases/download/v3.0.6/cosign-linux-pivkey-pkcs11key-amd64-kms.sigstore.json",
"https://github.com/sigstore/cosign/releases/download/v3.0.6/cosign-linux-pivkey-pkcs11key-amd64.sigstore.json",
"https://github.com/sigstore/cosign/releases/download/v3.0.6/cosign-linux-pivkey-pkcs11key-amd64_3.0.6_linux_amd64.sbom.json",
"https://github.com/sigstore/cosign/releases/download/v3.0.6/cosign-linux-pivkey-pkcs11key-arm64",
"https://github.com/sigstore/cosign/releases/download/v3.0.6/cosign-linux-pivkey-pkcs11key-arm64-kms.sigstore.json",
"https://github.com/sigstore/cosign/releases/download/v3.0.6/cosign-linux-pivkey-pkcs11key-arm64.sigstore.json",
"https://github.com/sigstore/cosign/releases/download/v3.0.6/cosign-linux-pivkey-pkcs11key-arm64_3.0.6_linux_arm64.sbom.json",
"https://github.com/sigstore/cosign/releases/download/v3.0.6/cosign-linux-ppc64le",
"https://github.com/sigstore/cosign/releases/download/v3.0.6/cosign-linux-ppc64le-kms.sigstore.json",
"https://github.com/sigstore/cosign/releases/download/v3.0.6/cosign-linux-ppc64le.sigstore.json",
"https://github.com/sigstore/cosign/releases/download/v3.0.6/cosign-linux-ppc64le_3.0.6_linux_ppc64le.sbom.json",
"https://github.com/sigstore/cosign/releases/download/v3.0.6/cosign-linux-riscv64",
"https://github.com/sigstore/cosign/releases/download/v3.0.6/cosign-linux-riscv64-kms.sigstore.json",
"https://github.com/sigstore/cosign/releases/download/v3.0.6/cosign-linux-riscv64.sigstore.json",
"https://github.com/sigstore/cosign/releases/download/v3.0.6/cosign-linux-riscv64_3.0.6_linux_riscv64.sbom.json",
"https://github.com/sigstore/cosign/releases/download/v3.0.6/cosign-linux-s390x",
"https://github.com/sigstore/cosign/releases/download/v3.0.6/cosign-linux-s390x-kms.sigstore.json",
"https://github.com/sigstore/cosign/releases/download/v3.0.6/cosign-linux-s390x.sigstore.json",
"https://github.com/sigstore/cosign/releases/download/v3.0.6/cosign-linux-s390x_3.0.6_linux_s390x.sbom.json",
"https://github.com/sigstore/cosign/releases/download/v3.0.6/cosign-windows-amd64.exe",
"https://github.com/sigstore/cosign/releases/download/v3.0.6/cosign-windows-amd64.exe-kms.sigstore.json",
"https://github.com/sigstore/cosign/releases/download/v3.0.6/cosign-windows-amd64.exe.sigstore.json",
"https://github.com/sigstore/cosign/releases/download/v3.0.6/cosign-windows-amd64.exe_3.0.6_windows_amd64.sbom.json",
"https://github.com/sigstore/cosign/releases/download/v3.0.6/cosign_3.0.6_aarch64.apk",
"https://github.com/sigstore/cosign/releases/download/v3.0.6/cosign_3.0.6_aarch64.apk.sigstore.json",
"https://github.com/sigstore/cosign/releases/download/v3.0.6/cosign_3.0.6_amd64.deb",
"https://github.com/sigstore/cosign/releases/download/v3.0.6/cosign_3.0.6_amd64.deb.sigstore.json",
"https://github.com/sigstore/cosign/releases/download/v3.0.6/cosign_3.0.6_arm64.deb",
"https://github.com/sigstore/cosign/releases/download/v3.0.6/cosign_3.0.6_arm64.deb.sigstore.json",
"https://github.com/sigstore/cosign/releases/download/v3.0.6/cosign_3.0.6_armhf.deb",
"https://github.com/sigstore/cosign/releases/download/v3.0.6/cosign_3.0.6_armhf.deb.sigstore.json",
"https://github.com/sigstore/cosign/releases/download/v3.0.6/cosign_3.0.6_armv7.apk",
"https://github.com/sigstore/cosign/releases/download/v3.0.6/cosign_3.0.6_armv7.apk.sigstore.json",
"https://github.com/sigstore/cosign/releases/download/v3.0.6/cosign_3.0.6_ppc64el.deb",
"https://github.com/sigstore/cosign/releases/download/v3.0.6/cosign_3.0.6_ppc64el.deb.sigstore.json",
"https://github.com/sigstore/cosign/releases/download/v3.0.6/cosign_3.0.6_ppc64le.apk",
"https://github.com/sigstore/cosign/releases/download/v3.0.6/cosign_3.0.6_ppc64le.apk.sigstore.json",
"https://github.com/sigstore/cosign/releases/download/v3.0.6/cosign_3.0.6_riscv64.apk",
"https://github.com/sigstore/cosign/releases/download/v3.0.6/cosign_3.0.6_riscv64.apk.sigstore.json",
"https://github.com/sigstore/cosign/releases/download/v3.0.6/cosign_3.0.6_riscv64.deb",
"https://github.com/sigstore/cosign/releases/download/v3.0.6/cosign_3.0.6_riscv64.deb.sigstore.json",
"https://github.com/sigstore/cosign/releases/download/v3.0.6/cosign_3.0.6_s390x.apk",
"https://github.com/sigstore/cosign/releases/download/v3.0.6/cosign_3.0.6_s390x.apk.sigstore.json",
"https://github.com/sigstore/cosign/releases/download/v3.0.6/cosign_3.0.6_s390x.deb",
"https://github.com/sigstore/cosign/releases/download/v3.0.6/cosign_3.0.6_s390x.deb.sigstore.json",
"https://github.com/sigstore/cosign/releases/download/v3.0.6/cosign_3.0.6_x86_64.apk",
"https://github.com/sigstore/cosign/releases/download/v3.0.6/cosign_3.0.6_x86_64.apk.sigstore.json",
"https://github.com/sigstore/cosign/releases/download/v3.0.6/cosign_checksums.txt",
"https://github.com/sigstore/cosign/releases/download/v3.0.6/cosign_checksums.txt.sigstore.json",
"https://github.com/sigstore/cosign/releases/download/v3.0.6/release-cosign.pub"
]
},
"v3.0.6": {
"id": 305842182,
"tag_name": "v3.0.6",
"html_url": "https://github.com/sigstore/cosign/releases/tag/v3.0.6",
"assets": [
"https://github.com/sigstore/cosign/releases/download/v3.0.6/cosign-3.0.6-1.aarch64.rpm",
"https://github.com/sigstore/cosign/releases/download/v3.0.6/cosign-3.0.6-1.aarch64.rpm.sigstore.json",
"https://github.com/sigstore/cosign/releases/download/v3.0.6/cosign-3.0.6-1.armv7hl.rpm",
"https://github.com/sigstore/cosign/releases/download/v3.0.6/cosign-3.0.6-1.armv7hl.rpm.sigstore.json",
"https://github.com/sigstore/cosign/releases/download/v3.0.6/cosign-3.0.6-1.ppc64le.rpm",
"https://github.com/sigstore/cosign/releases/download/v3.0.6/cosign-3.0.6-1.ppc64le.rpm.sigstore.json",
"https://github.com/sigstore/cosign/releases/download/v3.0.6/cosign-3.0.6-1.riscv64.rpm",
"https://github.com/sigstore/cosign/releases/download/v3.0.6/cosign-3.0.6-1.riscv64.rpm.sigstore.json",
"https://github.com/sigstore/cosign/releases/download/v3.0.6/cosign-3.0.6-1.s390x.rpm",
"https://github.com/sigstore/cosign/releases/download/v3.0.6/cosign-3.0.6-1.s390x.rpm.sigstore.json",
"https://github.com/sigstore/cosign/releases/download/v3.0.6/cosign-3.0.6-1.x86_64.rpm",
"https://github.com/sigstore/cosign/releases/download/v3.0.6/cosign-3.0.6-1.x86_64.rpm.sigstore.json",
"https://github.com/sigstore/cosign/releases/download/v3.0.6/cosign-darwin-amd64",
"https://github.com/sigstore/cosign/releases/download/v3.0.6/cosign-darwin-amd64-kms.sigstore.json",
"https://github.com/sigstore/cosign/releases/download/v3.0.6/cosign-darwin-amd64.sigstore.json",
"https://github.com/sigstore/cosign/releases/download/v3.0.6/cosign-darwin-amd64_3.0.6_darwin_amd64.sbom.json",
"https://github.com/sigstore/cosign/releases/download/v3.0.6/cosign-darwin-arm64",
"https://github.com/sigstore/cosign/releases/download/v3.0.6/cosign-darwin-arm64-kms.sigstore.json",
"https://github.com/sigstore/cosign/releases/download/v3.0.6/cosign-darwin-arm64.sigstore.json",
"https://github.com/sigstore/cosign/releases/download/v3.0.6/cosign-darwin-arm64_3.0.6_darwin_arm64.sbom.json",
"https://github.com/sigstore/cosign/releases/download/v3.0.6/cosign-linux-amd64",
"https://github.com/sigstore/cosign/releases/download/v3.0.6/cosign-linux-amd64-kms.sigstore.json",
"https://github.com/sigstore/cosign/releases/download/v3.0.6/cosign-linux-amd64.sigstore.json",
"https://github.com/sigstore/cosign/releases/download/v3.0.6/cosign-linux-amd64_3.0.6_linux_amd64.sbom.json",
"https://github.com/sigstore/cosign/releases/download/v3.0.6/cosign-linux-arm",
"https://github.com/sigstore/cosign/releases/download/v3.0.6/cosign-linux-arm-kms.sigstore.json",
"https://github.com/sigstore/cosign/releases/download/v3.0.6/cosign-linux-arm.sigstore.json",
"https://github.com/sigstore/cosign/releases/download/v3.0.6/cosign-linux-arm64",
"https://github.com/sigstore/cosign/releases/download/v3.0.6/cosign-linux-arm64-kms.sigstore.json",
"https://github.com/sigstore/cosign/releases/download/v3.0.6/cosign-linux-arm64.sigstore.json",
"https://github.com/sigstore/cosign/releases/download/v3.0.6/cosign-linux-arm64_3.0.6_linux_arm64.sbom.json",
"https://github.com/sigstore/cosign/releases/download/v3.0.6/cosign-linux-arm_3.0.6_linux_arm.sbom.json",
"https://github.com/sigstore/cosign/releases/download/v3.0.6/cosign-linux-pivkey-pkcs11key-amd64",
"https://github.com/sigstore/cosign/releases/download/v3.0.6/cosign-linux-pivkey-pkcs11key-amd64-kms.sigstore.json",
"https://github.com/sigstore/cosign/releases/download/v3.0.6/cosign-linux-pivkey-pkcs11key-amd64.sigstore.json",
"https://github.com/sigstore/cosign/releases/download/v3.0.6/cosign-linux-pivkey-pkcs11key-amd64_3.0.6_linux_amd64.sbom.json",
"https://github.com/sigstore/cosign/releases/download/v3.0.6/cosign-linux-pivkey-pkcs11key-arm64",
"https://github.com/sigstore/cosign/releases/download/v3.0.6/cosign-linux-pivkey-pkcs11key-arm64-kms.sigstore.json",
"https://github.com/sigstore/cosign/releases/download/v3.0.6/cosign-linux-pivkey-pkcs11key-arm64.sigstore.json",
"https://github.com/sigstore/cosign/releases/download/v3.0.6/cosign-linux-pivkey-pkcs11key-arm64_3.0.6_linux_arm64.sbom.json",
"https://github.com/sigstore/cosign/releases/download/v3.0.6/cosign-linux-ppc64le",
"https://github.com/sigstore/cosign/releases/download/v3.0.6/cosign-linux-ppc64le-kms.sigstore.json",
"https://github.com/sigstore/cosign/releases/download/v3.0.6/cosign-linux-ppc64le.sigstore.json",
"https://github.com/sigstore/cosign/releases/download/v3.0.6/cosign-linux-ppc64le_3.0.6_linux_ppc64le.sbom.json",
"https://github.com/sigstore/cosign/releases/download/v3.0.6/cosign-linux-riscv64",
"https://github.com/sigstore/cosign/releases/download/v3.0.6/cosign-linux-riscv64-kms.sigstore.json",
"https://github.com/sigstore/cosign/releases/download/v3.0.6/cosign-linux-riscv64.sigstore.json",
"https://github.com/sigstore/cosign/releases/download/v3.0.6/cosign-linux-riscv64_3.0.6_linux_riscv64.sbom.json",
"https://github.com/sigstore/cosign/releases/download/v3.0.6/cosign-linux-s390x",
"https://github.com/sigstore/cosign/releases/download/v3.0.6/cosign-linux-s390x-kms.sigstore.json",
"https://github.com/sigstore/cosign/releases/download/v3.0.6/cosign-linux-s390x.sigstore.json",
"https://github.com/sigstore/cosign/releases/download/v3.0.6/cosign-linux-s390x_3.0.6_linux_s390x.sbom.json",
"https://github.com/sigstore/cosign/releases/download/v3.0.6/cosign-windows-amd64.exe",
"https://github.com/sigstore/cosign/releases/download/v3.0.6/cosign-windows-amd64.exe-kms.sigstore.json",
"https://github.com/sigstore/cosign/releases/download/v3.0.6/cosign-windows-amd64.exe.sigstore.json",
"https://github.com/sigstore/cosign/releases/download/v3.0.6/cosign-windows-amd64.exe_3.0.6_windows_amd64.sbom.json",
"https://github.com/sigstore/cosign/releases/download/v3.0.6/cosign_3.0.6_aarch64.apk",
"https://github.com/sigstore/cosign/releases/download/v3.0.6/cosign_3.0.6_aarch64.apk.sigstore.json",
"https://github.com/sigstore/cosign/releases/download/v3.0.6/cosign_3.0.6_amd64.deb",
"https://github.com/sigstore/cosign/releases/download/v3.0.6/cosign_3.0.6_amd64.deb.sigstore.json",
"https://github.com/sigstore/cosign/releases/download/v3.0.6/cosign_3.0.6_arm64.deb",
"https://github.com/sigstore/cosign/releases/download/v3.0.6/cosign_3.0.6_arm64.deb.sigstore.json",
"https://github.com/sigstore/cosign/releases/download/v3.0.6/cosign_3.0.6_armhf.deb",
"https://github.com/sigstore/cosign/releases/download/v3.0.6/cosign_3.0.6_armhf.deb.sigstore.json",
"https://github.com/sigstore/cosign/releases/download/v3.0.6/cosign_3.0.6_armv7.apk",
"https://github.com/sigstore/cosign/releases/download/v3.0.6/cosign_3.0.6_armv7.apk.sigstore.json",
"https://github.com/sigstore/cosign/releases/download/v3.0.6/cosign_3.0.6_ppc64el.deb",
"https://github.com/sigstore/cosign/releases/download/v3.0.6/cosign_3.0.6_ppc64el.deb.sigstore.json",
"https://github.com/sigstore/cosign/releases/download/v3.0.6/cosign_3.0.6_ppc64le.apk",
"https://github.com/sigstore/cosign/releases/download/v3.0.6/cosign_3.0.6_ppc64le.apk.sigstore.json",
"https://github.com/sigstore/cosign/releases/download/v3.0.6/cosign_3.0.6_riscv64.apk",
"https://github.com/sigstore/cosign/releases/download/v3.0.6/cosign_3.0.6_riscv64.apk.sigstore.json",
"https://github.com/sigstore/cosign/releases/download/v3.0.6/cosign_3.0.6_riscv64.deb",
"https://github.com/sigstore/cosign/releases/download/v3.0.6/cosign_3.0.6_riscv64.deb.sigstore.json",
"https://github.com/sigstore/cosign/releases/download/v3.0.6/cosign_3.0.6_s390x.apk",
"https://github.com/sigstore/cosign/releases/download/v3.0.6/cosign_3.0.6_s390x.apk.sigstore.json",
"https://github.com/sigstore/cosign/releases/download/v3.0.6/cosign_3.0.6_s390x.deb",
"https://github.com/sigstore/cosign/releases/download/v3.0.6/cosign_3.0.6_s390x.deb.sigstore.json",
"https://github.com/sigstore/cosign/releases/download/v3.0.6/cosign_3.0.6_x86_64.apk",
"https://github.com/sigstore/cosign/releases/download/v3.0.6/cosign_3.0.6_x86_64.apk.sigstore.json",
"https://github.com/sigstore/cosign/releases/download/v3.0.6/cosign_checksums.txt",
"https://github.com/sigstore/cosign/releases/download/v3.0.6/cosign_checksums.txt.sigstore.json",
"https://github.com/sigstore/cosign/releases/download/v3.0.6/release-cosign.pub"
]
},
"v2.6.3": {
"id": 305838705,
"tag_name": "v2.6.3",
"html_url": "https://github.com/sigstore/cosign/releases/tag/v2.6.3",
"assets": [
"https://github.com/sigstore/cosign/releases/download/v2.6.3/cosign-2.6.3-1.aarch64.rpm",
"https://github.com/sigstore/cosign/releases/download/v2.6.3/cosign-2.6.3-1.aarch64.rpm-keyless.pem",
"https://github.com/sigstore/cosign/releases/download/v2.6.3/cosign-2.6.3-1.aarch64.rpm-keyless.sig",
"https://github.com/sigstore/cosign/releases/download/v2.6.3/cosign-2.6.3-1.armv7hl.rpm",
"https://github.com/sigstore/cosign/releases/download/v2.6.3/cosign-2.6.3-1.armv7hl.rpm-keyless.pem",
"https://github.com/sigstore/cosign/releases/download/v2.6.3/cosign-2.6.3-1.armv7hl.rpm-keyless.sig",
"https://github.com/sigstore/cosign/releases/download/v2.6.3/cosign-2.6.3-1.ppc64le.rpm",
"https://github.com/sigstore/cosign/releases/download/v2.6.3/cosign-2.6.3-1.ppc64le.rpm-keyless.pem",
"https://github.com/sigstore/cosign/releases/download/v2.6.3/cosign-2.6.3-1.ppc64le.rpm-keyless.sig",
"https://github.com/sigstore/cosign/releases/download/v2.6.3/cosign-2.6.3-1.riscv64.rpm",
"https://github.com/sigstore/cosign/releases/download/v2.6.3/cosign-2.6.3-1.riscv64.rpm-keyless.pem",
"https://github.com/sigstore/cosign/releases/download/v2.6.3/cosign-2.6.3-1.riscv64.rpm-keyless.sig",
"https://github.com/sigstore/cosign/releases/download/v2.6.3/cosign-2.6.3-1.s390x.rpm",
"https://github.com/sigstore/cosign/releases/download/v2.6.3/cosign-2.6.3-1.s390x.rpm-keyless.pem",
"https://github.com/sigstore/cosign/releases/download/v2.6.3/cosign-2.6.3-1.s390x.rpm-keyless.sig",
"https://github.com/sigstore/cosign/releases/download/v2.6.3/cosign-2.6.3-1.x86_64.rpm",
"https://github.com/sigstore/cosign/releases/download/v2.6.3/cosign-2.6.3-1.x86_64.rpm-keyless.pem",
"https://github.com/sigstore/cosign/releases/download/v2.6.3/cosign-2.6.3-1.x86_64.rpm-keyless.sig",
"https://github.com/sigstore/cosign/releases/download/v2.6.3/cosign-darwin-amd64",
"https://github.com/sigstore/cosign/releases/download/v2.6.3/cosign-darwin-amd64-keyless.pem",
"https://github.com/sigstore/cosign/releases/download/v2.6.3/cosign-darwin-amd64-keyless.sig",
"https://github.com/sigstore/cosign/releases/download/v2.6.3/cosign-darwin-amd64.sig",
"https://github.com/sigstore/cosign/releases/download/v2.6.3/cosign-darwin-amd64_2.6.3_darwin_amd64.sbom.json",
"https://github.com/sigstore/cosign/releases/download/v2.6.3/cosign-darwin-arm64",
"https://github.com/sigstore/cosign/releases/download/v2.6.3/cosign-darwin-arm64-keyless.pem",
"https://github.com/sigstore/cosign/releases/download/v2.6.3/cosign-darwin-arm64-keyless.sig",
"https://github.com/sigstore/cosign/releases/download/v2.6.3/cosign-darwin-arm64.sig",
"https://github.com/sigstore/cosign/releases/download/v2.6.3/cosign-darwin-arm64_2.6.3_darwin_arm64.sbom.json",
"https://github.com/sigstore/cosign/releases/download/v2.6.3/cosign-linux-amd64",
"https://github.com/sigstore/cosign/releases/download/v2.6.3/cosign-linux-amd64-keyless.pem",
"https://github.com/sigstore/cosign/releases/download/v2.6.3/cosign-linux-amd64-keyless.sig",
"https://github.com/sigstore/cosign/releases/download/v2.6.3/cosign-linux-amd64.sig",
"https://github.com/sigstore/cosign/releases/download/v2.6.3/cosign-linux-amd64_2.6.3_linux_amd64.sbom.json",
"https://github.com/sigstore/cosign/releases/download/v2.6.3/cosign-linux-arm",
"https://github.com/sigstore/cosign/releases/download/v2.6.3/cosign-linux-arm-keyless.pem",
"https://github.com/sigstore/cosign/releases/download/v2.6.3/cosign-linux-arm-keyless.sig",
"https://github.com/sigstore/cosign/releases/download/v2.6.3/cosign-linux-arm.sig",
"https://github.com/sigstore/cosign/releases/download/v2.6.3/cosign-linux-arm64",
"https://github.com/sigstore/cosign/releases/download/v2.6.3/cosign-linux-arm64-keyless.pem",
"https://github.com/sigstore/cosign/releases/download/v2.6.3/cosign-linux-arm64-keyless.sig",
"https://github.com/sigstore/cosign/releases/download/v2.6.3/cosign-linux-arm64.sig",
"https://github.com/sigstore/cosign/releases/download/v2.6.3/cosign-linux-arm64_2.6.3_linux_arm64.sbom.json",
"https://github.com/sigstore/cosign/releases/download/v2.6.3/cosign-linux-arm_2.6.3_linux_arm.sbom.json",
"https://github.com/sigstore/cosign/releases/download/v2.6.3/cosign-linux-pivkey-pkcs11key-amd64",
"https://github.com/sigstore/cosign/releases/download/v2.6.3/cosign-linux-pivkey-pkcs11key-amd64-keyless.pem",
"https://github.com/sigstore/cosign/releases/download/v2.6.3/cosign-linux-pivkey-pkcs11key-amd64-keyless.sig",
"https://github.com/sigstore/cosign/releases/download/v2.6.3/cosign-linux-pivkey-pkcs11key-amd64.sig",
"https://github.com/sigstore/cosign/releases/download/v2.6.3/cosign-linux-pivkey-pkcs11key-amd64_2.6.3_linux_amd64.sbom.json",
"https://github.com/sigstore/cosign/releases/download/v2.6.3/cosign-linux-pivkey-pkcs11key-arm64",
"https://github.com/sigstore/cosign/releases/download/v2.6.3/cosign-linux-pivkey-pkcs11key-arm64-keyless.pem",
"https://github.com/sigstore/cosign/releases/download/v2.6.3/cosign-linux-pivkey-pkcs11key-arm64-keyless.sig",
"https://github.com/sigstore/cosign/releases/download/v2.6.3/cosign-linux-pivkey-pkcs11key-arm64.sig",
"https://github.com/sigstore/cosign/releases/download/v2.6.3/cosign-linux-pivkey-pkcs11key-arm64_2.6.3_linux_arm64.sbom.json",
"https://github.com/sigstore/cosign/releases/download/v2.6.3/cosign-linux-ppc64le",
"https://github.com/sigstore/cosign/releases/download/v2.6.3/cosign-linux-ppc64le-keyless.pem",
"https://github.com/sigstore/cosign/releases/download/v2.6.3/cosign-linux-ppc64le-keyless.sig",
"https://github.com/sigstore/cosign/releases/download/v2.6.3/cosign-linux-ppc64le.sig",
"https://github.com/sigstore/cosign/releases/download/v2.6.3/cosign-linux-ppc64le_2.6.3_linux_ppc64le.sbom.json",
"https://github.com/sigstore/cosign/releases/download/v2.6.3/cosign-linux-riscv64",
"https://github.com/sigstore/cosign/releases/download/v2.6.3/cosign-linux-riscv64-keyless.pem",
"https://github.com/sigstore/cosign/releases/download/v2.6.3/cosign-linux-riscv64-keyless.sig",
"https://github.com/sigstore/cosign/releases/download/v2.6.3/cosign-linux-riscv64.sig",
"https://github.com/sigstore/cosign/releases/download/v2.6.3/cosign-linux-riscv64_2.6.3_linux_riscv64.sbom.json",
"https://github.com/sigstore/cosign/releases/download/v2.6.3/cosign-linux-s390x",
"https://github.com/sigstore/cosign/releases/download/v2.6.3/cosign-linux-s390x-keyless.pem",
"https://github.com/sigstore/cosign/releases/download/v2.6.3/cosign-linux-s390x-keyless.sig",
"https://github.com/sigstore/cosign/releases/download/v2.6.3/cosign-linux-s390x.sig",
"https://github.com/sigstore/cosign/releases/download/v2.6.3/cosign-linux-s390x_2.6.3_linux_s390x.sbom.json",
"https://github.com/sigstore/cosign/releases/download/v2.6.3/cosign-windows-amd64.exe",
"https://github.com/sigstore/cosign/releases/download/v2.6.3/cosign-windows-amd64.exe-keyless.pem",
"https://github.com/sigstore/cosign/releases/download/v2.6.3/cosign-windows-amd64.exe-keyless.sig",
"https://github.com/sigstore/cosign/releases/download/v2.6.3/cosign-windows-amd64.exe.sig",
"https://github.com/sigstore/cosign/releases/download/v2.6.3/cosign-windows-amd64.exe_2.6.3_windows_amd64.sbom.json",
"https://github.com/sigstore/cosign/releases/download/v2.6.3/cosign_2.6.3_aarch64.apk",
"https://github.com/sigstore/cosign/releases/download/v2.6.3/cosign_2.6.3_aarch64.apk-keyless.pem",
"https://github.com/sigstore/cosign/releases/download/v2.6.3/cosign_2.6.3_aarch64.apk-keyless.sig",
"https://github.com/sigstore/cosign/releases/download/v2.6.3/cosign_2.6.3_amd64.deb",
"https://github.com/sigstore/cosign/releases/download/v2.6.3/cosign_2.6.3_amd64.deb-keyless.pem",
"https://github.com/sigstore/cosign/releases/download/v2.6.3/cosign_2.6.3_amd64.deb-keyless.sig",
"https://github.com/sigstore/cosign/releases/download/v2.6.3/cosign_2.6.3_arm64.deb",
"https://github.com/sigstore/cosign/releases/download/v2.6.3/cosign_2.6.3_arm64.deb-keyless.pem",
"https://github.com/sigstore/cosign/releases/download/v2.6.3/cosign_2.6.3_arm64.deb-keyless.sig",
"https://github.com/sigstore/cosign/releases/download/v2.6.3/cosign_2.6.3_armhf.deb",
"https://github.com/sigstore/cosign/releases/download/v2.6.3/cosign_2.6.3_armhf.deb-keyless.pem",
"https://github.com/sigstore/cosign/releases/download/v2.6.3/cosign_2.6.3_armhf.deb-keyless.sig",
"https://github.com/sigstore/cosign/releases/download/v2.6.3/cosign_2.6.3_armv7.apk",
"https://github.com/sigstore/cosign/releases/download/v2.6.3/cosign_2.6.3_armv7.apk-keyless.pem",
"https://github.com/sigstore/cosign/releases/download/v2.6.3/cosign_2.6.3_armv7.apk-keyless.sig",
"https://github.com/sigstore/cosign/releases/download/v2.6.3/cosign_2.6.3_ppc64el.deb",
"https://github.com/sigstore/cosign/releases/download/v2.6.3/cosign_2.6.3_ppc64el.deb-keyless.pem",
"https://github.com/sigstore/cosign/releases/download/v2.6.3/cosign_2.6.3_ppc64el.deb-keyless.sig",
"https://github.com/sigstore/cosign/releases/download/v2.6.3/cosign_2.6.3_ppc64le.apk",
"https://github.com/sigstore/cosign/releases/download/v2.6.3/cosign_2.6.3_ppc64le.apk-keyless.pem",
"https://github.com/sigstore/cosign/releases/download/v2.6.3/cosign_2.6.3_ppc64le.apk-keyless.sig",
"https://github.com/sigstore/cosign/releases/download/v2.6.3/cosign_2.6.3_riscv64.apk",
"https://github.com/sigstore/cosign/releases/download/v2.6.3/cosign_2.6.3_riscv64.apk-keyless.pem",
"https://github.com/sigstore/cosign/releases/download/v2.6.3/cosign_2.6.3_riscv64.apk-keyless.sig",
"https://github.com/sigstore/cosign/releases/download/v2.6.3/cosign_2.6.3_riscv64.deb",
"https://github.com/sigstore/cosign/releases/download/v2.6.3/cosign_2.6.3_riscv64.deb-keyless.pem",
"https://github.com/sigstore/cosign/releases/download/v2.6.3/cosign_2.6.3_riscv64.deb-keyless.sig",
"https://github.com/sigstore/cosign/releases/download/v2.6.3/cosign_2.6.3_s390x.apk",
"https://github.com/sigstore/cosign/releases/download/v2.6.3/cosign_2.6.3_s390x.apk-keyless.pem",
"https://github.com/sigstore/cosign/releases/download/v2.6.3/cosign_2.6.3_s390x.apk-keyless.sig",
"https://github.com/sigstore/cosign/releases/download/v2.6.3/cosign_2.6.3_s390x.deb",
"https://github.com/sigstore/cosign/releases/download/v2.6.3/cosign_2.6.3_s390x.deb-keyless.pem",
"https://github.com/sigstore/cosign/releases/download/v2.6.3/cosign_2.6.3_s390x.deb-keyless.sig",
"https://github.com/sigstore/cosign/releases/download/v2.6.3/cosign_2.6.3_x86_64.apk",
"https://github.com/sigstore/cosign/releases/download/v2.6.3/cosign_2.6.3_x86_64.apk-keyless.pem",
"https://github.com/sigstore/cosign/releases/download/v2.6.3/cosign_2.6.3_x86_64.apk-keyless.sig",
"https://github.com/sigstore/cosign/releases/download/v2.6.3/cosign_checksums.txt",
"https://github.com/sigstore/cosign/releases/download/v2.6.3/cosign_checksums.txt-keyless.pem",
"https://github.com/sigstore/cosign/releases/download/v2.6.3/cosign_checksums.txt-keyless.sig",
"https://github.com/sigstore/cosign/releases/download/v2.6.3/release-cosign.pub"
]
},
"v3.0.5": {
"id": 288413621,
"tag_name": "v3.0.5",
"html_url": "https://github.com/sigstore/cosign/releases/tag/v3.0.5",
"assets": [
"https://github.com/sigstore/cosign/releases/download/v3.0.5/cosign-3.0.5-1.aarch64.rpm",
"https://github.com/sigstore/cosign/releases/download/v3.0.5/cosign-3.0.5-1.aarch64.rpm.sigstore.json",
"https://github.com/sigstore/cosign/releases/download/v3.0.5/cosign-3.0.5-1.armv7hl.rpm",
"https://github.com/sigstore/cosign/releases/download/v3.0.5/cosign-3.0.5-1.armv7hl.rpm.sigstore.json",
"https://github.com/sigstore/cosign/releases/download/v3.0.5/cosign-3.0.5-1.ppc64le.rpm",
"https://github.com/sigstore/cosign/releases/download/v3.0.5/cosign-3.0.5-1.ppc64le.rpm.sigstore.json",
"https://github.com/sigstore/cosign/releases/download/v3.0.5/cosign-3.0.5-1.riscv64.rpm",
"https://github.com/sigstore/cosign/releases/download/v3.0.5/cosign-3.0.5-1.riscv64.rpm.sigstore.json",
"https://github.com/sigstore/cosign/releases/download/v3.0.5/cosign-3.0.5-1.s390x.rpm",
"https://github.com/sigstore/cosign/releases/download/v3.0.5/cosign-3.0.5-1.s390x.rpm.sigstore.json",
"https://github.com/sigstore/cosign/releases/download/v3.0.5/cosign-3.0.5-1.x86_64.rpm",
"https://github.com/sigstore/cosign/releases/download/v3.0.5/cosign-3.0.5-1.x86_64.rpm.sigstore.json",
"https://github.com/sigstore/cosign/releases/download/v3.0.5/cosign-darwin-amd64",
"https://github.com/sigstore/cosign/releases/download/v3.0.5/cosign-darwin-amd64-kms.sigstore.json",
"https://github.com/sigstore/cosign/releases/download/v3.0.5/cosign-darwin-amd64.sigstore.json",
"https://github.com/sigstore/cosign/releases/download/v3.0.5/cosign-darwin-amd64_3.0.5_darwin_amd64.sbom.json",
"https://github.com/sigstore/cosign/releases/download/v3.0.5/cosign-darwin-arm64",
"https://github.com/sigstore/cosign/releases/download/v3.0.5/cosign-darwin-arm64-kms.sigstore.json",
"https://github.com/sigstore/cosign/releases/download/v3.0.5/cosign-darwin-arm64.sigstore.json",
"https://github.com/sigstore/cosign/releases/download/v3.0.5/cosign-darwin-arm64_3.0.5_darwin_arm64.sbom.json",
"https://github.com/sigstore/cosign/releases/download/v3.0.5/cosign-linux-amd64",
"https://github.com/sigstore/cosign/releases/download/v3.0.5/cosign-linux-amd64-kms.sigstore.json",
"https://github.com/sigstore/cosign/releases/download/v3.0.5/cosign-linux-amd64.sigstore.json",
"https://github.com/sigstore/cosign/releases/download/v3.0.5/cosign-linux-amd64_3.0.5_linux_amd64.sbom.json",
"https://github.com/sigstore/cosign/releases/download/v3.0.5/cosign-linux-arm",
"https://github.com/sigstore/cosign/releases/download/v3.0.5/cosign-linux-arm-kms.sigstore.json",
"https://github.com/sigstore/cosign/releases/download/v3.0.5/cosign-linux-arm.sigstore.json",
"https://github.com/sigstore/cosign/releases/download/v3.0.5/cosign-linux-arm64",
"https://github.com/sigstore/cosign/releases/download/v3.0.5/cosign-linux-arm64-kms.sigstore.json",
"https://github.com/sigstore/cosign/releases/download/v3.0.5/cosign-linux-arm64.sigstore.json",
"https://github.com/sigstore/cosign/releases/download/v3.0.5/cosign-linux-arm64_3.0.5_linux_arm64.sbom.json",
"https://github.com/sigstore/cosign/releases/download/v3.0.5/cosign-linux-arm_3.0.5_linux_arm.sbom.json",
"https://github.com/sigstore/cosign/releases/download/v3.0.5/cosign-linux-pivkey-pkcs11key-amd64",
"https://github.com/sigstore/cosign/releases/download/v3.0.5/cosign-linux-pivkey-pkcs11key-amd64-kms.sigstore.json",
"https://github.com/sigstore/cosign/releases/download/v3.0.5/cosign-linux-pivkey-pkcs11key-amd64.sigstore.json",
"https://github.com/sigstore/cosign/releases/download/v3.0.5/cosign-linux-pivkey-pkcs11key-amd64_3.0.5_linux_amd64.sbom.json",
"https://github.com/sigstore/cosign/releases/download/v3.0.5/cosign-linux-pivkey-pkcs11key-arm64",
"https://github.com/sigstore/cosign/releases/download/v3.0.5/cosign-linux-pivkey-pkcs11key-arm64-kms.sigstore.json",
"https://github.com/sigstore/cosign/releases/download/v3.0.5/cosign-linux-pivkey-pkcs11key-arm64.sigstore.json",
"https://github.com/sigstore/cosign/releases/download/v3.0.5/cosign-linux-pivkey-pkcs11key-arm64_3.0.5_linux_arm64.sbom.json",
"https://github.com/sigstore/cosign/releases/download/v3.0.5/cosign-linux-ppc64le",
"https://github.com/sigstore/cosign/releases/download/v3.0.5/cosign-linux-ppc64le-kms.sigstore.json",
"https://github.com/sigstore/cosign/releases/download/v3.0.5/cosign-linux-ppc64le.sigstore.json",
"https://github.com/sigstore/cosign/releases/download/v3.0.5/cosign-linux-ppc64le_3.0.5_linux_ppc64le.sbom.json",
"https://github.com/sigstore/cosign/releases/download/v3.0.5/cosign-linux-riscv64",
"https://github.com/sigstore/cosign/releases/download/v3.0.5/cosign-linux-riscv64-kms.sigstore.json",
"https://github.com/sigstore/cosign/releases/download/v3.0.5/cosign-linux-riscv64.sigstore.json",
"https://github.com/sigstore/cosign/releases/download/v3.0.5/cosign-linux-riscv64_3.0.5_linux_riscv64.sbom.json",
"https://github.com/sigstore/cosign/releases/download/v3.0.5/cosign-linux-s390x",
"https://github.com/sigstore/cosign/releases/download/v3.0.5/cosign-linux-s390x-kms.sigstore.json",
"https://github.com/sigstore/cosign/releases/download/v3.0.5/cosign-linux-s390x.sigstore.json",
"https://github.com/sigstore/cosign/releases/download/v3.0.5/cosign-linux-s390x_3.0.5_linux_s390x.sbom.json",
"https://github.com/sigstore/cosign/releases/download/v3.0.5/cosign-windows-amd64.exe",
"https://github.com/sigstore/cosign/releases/download/v3.0.5/cosign-windows-amd64.exe-kms.sigstore.json",
"https://github.com/sigstore/cosign/releases/download/v3.0.5/cosign-windows-amd64.exe.sigstore.json",
"https://github.com/sigstore/cosign/releases/download/v3.0.5/cosign-windows-amd64.exe_3.0.5_windows_amd64.sbom.json",
"https://github.com/sigstore/cosign/releases/download/v3.0.5/cosign_3.0.5_aarch64.apk",
"https://github.com/sigstore/cosign/releases/download/v3.0.5/cosign_3.0.5_aarch64.apk.sigstore.json",
"https://github.com/sigstore/cosign/releases/download/v3.0.5/cosign_3.0.5_amd64.deb",
"https://github.com/sigstore/cosign/releases/download/v3.0.5/cosign_3.0.5_amd64.deb.sigstore.json",
"https://github.com/sigstore/cosign/releases/download/v3.0.5/cosign_3.0.5_arm64.deb",
"https://github.com/sigstore/cosign/releases/download/v3.0.5/cosign_3.0.5_arm64.deb.sigstore.json",
"https://github.com/sigstore/cosign/releases/download/v3.0.5/cosign_3.0.5_armhf.deb",
"https://github.com/sigstore/cosign/releases/download/v3.0.5/cosign_3.0.5_armhf.deb.sigstore.json",
"https://github.com/sigstore/cosign/releases/download/v3.0.5/cosign_3.0.5_armv7.apk",
"https://github.com/sigstore/cosign/releases/download/v3.0.5/cosign_3.0.5_armv7.apk.sigstore.json",
"https://github.com/sigstore/cosign/releases/download/v3.0.5/cosign_3.0.5_ppc64el.deb",
"https://github.com/sigstore/cosign/releases/download/v3.0.5/cosign_3.0.5_ppc64el.deb.sigstore.json",
"https://github.com/sigstore/cosign/releases/download/v3.0.5/cosign_3.0.5_ppc64le.apk",
"https://github.com/sigstore/cosign/releases/download/v3.0.5/cosign_3.0.5_ppc64le.apk.sigstore.json",
"https://github.com/sigstore/cosign/releases/download/v3.0.5/cosign_3.0.5_riscv64.apk",
"https://github.com/sigstore/cosign/releases/download/v3.0.5/cosign_3.0.5_riscv64.apk.sigstore.json",
"https://github.com/sigstore/cosign/releases/download/v3.0.5/cosign_3.0.5_riscv64.deb",
"https://github.com/sigstore/cosign/releases/download/v3.0.5/cosign_3.0.5_riscv64.deb.sigstore.json",
"https://github.com/sigstore/cosign/releases/download/v3.0.5/cosign_3.0.5_s390x.apk",
"https://github.com/sigstore/cosign/releases/download/v3.0.5/cosign_3.0.5_s390x.apk.sigstore.json",
"https://github.com/sigstore/cosign/releases/download/v3.0.5/cosign_3.0.5_s390x.deb",
"https://github.com/sigstore/cosign/releases/download/v3.0.5/cosign_3.0.5_s390x.deb.sigstore.json",
"https://github.com/sigstore/cosign/releases/download/v3.0.5/cosign_3.0.5_x86_64.apk",
"https://github.com/sigstore/cosign/releases/download/v3.0.5/cosign_3.0.5_x86_64.apk.sigstore.json",
"https://github.com/sigstore/cosign/releases/download/v3.0.5/cosign_checksums.txt",
"https://github.com/sigstore/cosign/releases/download/v3.0.5/cosign_checksums.txt.sigstore.json",
"https://github.com/sigstore/cosign/releases/download/v3.0.5/release-cosign.pub"
]
},
"v3.0.4": {
"id": 275625037,
"tag_name": "v3.0.4",
"html_url": "https://github.com/sigstore/cosign/releases/tag/v3.0.4",
"assets": [
"https://github.com/sigstore/cosign/releases/download/v3.0.4/cosign-3.0.4-1.aarch64.rpm",
"https://github.com/sigstore/cosign/releases/download/v3.0.4/cosign-3.0.4-1.aarch64.rpm.sigstore.json",
"https://github.com/sigstore/cosign/releases/download/v3.0.4/cosign-3.0.4-1.armv7hl.rpm",
"https://github.com/sigstore/cosign/releases/download/v3.0.4/cosign-3.0.4-1.armv7hl.rpm.sigstore.json",
"https://github.com/sigstore/cosign/releases/download/v3.0.4/cosign-3.0.4-1.ppc64le.rpm",
"https://github.com/sigstore/cosign/releases/download/v3.0.4/cosign-3.0.4-1.ppc64le.rpm.sigstore.json",
"https://github.com/sigstore/cosign/releases/download/v3.0.4/cosign-3.0.4-1.riscv64.rpm",
"https://github.com/sigstore/cosign/releases/download/v3.0.4/cosign-3.0.4-1.riscv64.rpm.sigstore.json",
"https://github.com/sigstore/cosign/releases/download/v3.0.4/cosign-3.0.4-1.s390x.rpm",
"https://github.com/sigstore/cosign/releases/download/v3.0.4/cosign-3.0.4-1.s390x.rpm.sigstore.json",
"https://github.com/sigstore/cosign/releases/download/v3.0.4/cosign-3.0.4-1.x86_64.rpm",
"https://github.com/sigstore/cosign/releases/download/v3.0.4/cosign-3.0.4-1.x86_64.rpm.sigstore.json",
"https://github.com/sigstore/cosign/releases/download/v3.0.4/cosign-darwin-amd64",
"https://github.com/sigstore/cosign/releases/download/v3.0.4/cosign-darwin-amd64-kms.sigstore.json",
"https://github.com/sigstore/cosign/releases/download/v3.0.4/cosign-darwin-amd64.sigstore.json",
"https://github.com/sigstore/cosign/releases/download/v3.0.4/cosign-darwin-amd64_3.0.4_darwin_amd64.sbom.json",
"https://github.com/sigstore/cosign/releases/download/v3.0.4/cosign-darwin-arm64",
"https://github.com/sigstore/cosign/releases/download/v3.0.4/cosign-darwin-arm64-kms.sigstore.json",
"https://github.com/sigstore/cosign/releases/download/v3.0.4/cosign-darwin-arm64.sigstore.json",
"https://github.com/sigstore/cosign/releases/download/v3.0.4/cosign-darwin-arm64_3.0.4_darwin_arm64.sbom.json",
"https://github.com/sigstore/cosign/releases/download/v3.0.4/cosign-linux-amd64",
"https://github.com/sigstore/cosign/releases/download/v3.0.4/cosign-linux-amd64-kms.sigstore.json",
"https://github.com/sigstore/cosign/releases/download/v3.0.4/cosign-linux-amd64.sigstore.json",
"https://github.com/sigstore/cosign/releases/download/v3.0.4/cosign-linux-amd64_3.0.4_linux_amd64.sbom.json",
"https://github.com/sigstore/cosign/releases/download/v3.0.4/cosign-linux-arm",
"https://github.com/sigstore/cosign/releases/download/v3.0.4/cosign-linux-arm-kms.sigstore.json",
"https://github.com/sigstore/cosign/releases/download/v3.0.4/cosign-linux-arm.sigstore.json",
"https://github.com/sigstore/cosign/releases/download/v3.0.4/cosign-linux-arm64",
"https://github.com/sigstore/cosign/releases/download/v3.0.4/cosign-linux-arm64-kms.sigstore.json",
"https://github.com/sigstore/cosign/releases/download/v3.0.4/cosign-linux-arm64.sigstore.json",
"https://github.com/sigstore/cosign/releases/download/v3.0.4/cosign-linux-arm64_3.0.4_linux_arm64.sbom.json",
"https://github.com/sigstore/cosign/releases/download/v3.0.4/cosign-linux-arm_3.0.4_linux_arm.sbom.json",
"https://github.com/sigstore/cosign/releases/download/v3.0.4/cosign-linux-pivkey-pkcs11key-amd64",
"https://github.com/sigstore/cosign/releases/download/v3.0.4/cosign-linux-pivkey-pkcs11key-amd64-kms.sigstore.json",
"https://github.com/sigstore/cosign/releases/download/v3.0.4/cosign-linux-pivkey-pkcs11key-amd64.sigstore.json",
"https://github.com/sigstore/cosign/releases/download/v3.0.4/cosign-linux-pivkey-pkcs11key-amd64_3.0.4_linux_amd64.sbom.json",
"https://github.com/sigstore/cosign/releases/download/v3.0.4/cosign-linux-pivkey-pkcs11key-arm64",
"https://github.com/sigstore/cosign/releases/download/v3.0.4/cosign-linux-pivkey-pkcs11key-arm64-kms.sigstore.json",
"https://github.com/sigstore/cosign/releases/download/v3.0.4/cosign-linux-pivkey-pkcs11key-arm64.sigstore.json",
"https://github.com/sigstore/cosign/releases/download/v3.0.4/cosign-linux-pivkey-pkcs11key-arm64_3.0.4_linux_arm64.sbom.json",
"https://github.com/sigstore/cosign/releases/download/v3.0.4/cosign-linux-ppc64le",
"https://github.com/sigstore/cosign/releases/download/v3.0.4/cosign-linux-ppc64le-kms.sigstore.json",
"https://github.com/sigstore/cosign/releases/download/v3.0.4/cosign-linux-ppc64le.sigstore.json",
"https://github.com/sigstore/cosign/releases/download/v3.0.4/cosign-linux-ppc64le_3.0.4_linux_ppc64le.sbom.json",
"https://github.com/sigstore/cosign/releases/download/v3.0.4/cosign-linux-riscv64",
"https://github.com/sigstore/cosign/releases/download/v3.0.4/cosign-linux-riscv64-kms.sigstore.json",
"https://github.com/sigstore/cosign/releases/download/v3.0.4/cosign-linux-riscv64.sigstore.json",
"https://github.com/sigstore/cosign/releases/download/v3.0.4/cosign-linux-riscv64_3.0.4_linux_riscv64.sbom.json",
"https://github.com/sigstore/cosign/releases/download/v3.0.4/cosign-linux-s390x",
"https://github.com/sigstore/cosign/releases/download/v3.0.4/cosign-linux-s390x-kms.sigstore.json",
"https://github.com/sigstore/cosign/releases/download/v3.0.4/cosign-linux-s390x.sigstore.json",
"https://github.com/sigstore/cosign/releases/download/v3.0.4/cosign-linux-s390x_3.0.4_linux_s390x.sbom.json",
"https://github.com/sigstore/cosign/releases/download/v3.0.4/cosign-windows-amd64.exe",
"https://github.com/sigstore/cosign/releases/download/v3.0.4/cosign-windows-amd64.exe-kms.sigstore.json",
"https://github.com/sigstore/cosign/releases/download/v3.0.4/cosign-windows-amd64.exe.sigstore.json",
"https://github.com/sigstore/cosign/releases/download/v3.0.4/cosign-windows-amd64.exe_3.0.4_windows_amd64.sbom.json",
"https://github.com/sigstore/cosign/releases/download/v3.0.4/cosign_3.0.4_aarch64.apk",
"https://github.com/sigstore/cosign/releases/download/v3.0.4/cosign_3.0.4_aarch64.apk.sigstore.json",
"https://github.com/sigstore/cosign/releases/download/v3.0.4/cosign_3.0.4_amd64.deb",
"https://github.com/sigstore/cosign/releases/download/v3.0.4/cosign_3.0.4_amd64.deb.sigstore.json",
"https://github.com/sigstore/cosign/releases/download/v3.0.4/cosign_3.0.4_arm64.deb",
"https://github.com/sigstore/cosign/releases/download/v3.0.4/cosign_3.0.4_arm64.deb.sigstore.json",
"https://github.com/sigstore/cosign/releases/download/v3.0.4/cosign_3.0.4_armhf.deb",
"https://github.com/sigstore/cosign/releases/download/v3.0.4/cosign_3.0.4_armhf.deb.sigstore.json",
"https://github.com/sigstore/cosign/releases/download/v3.0.4/cosign_3.0.4_armv7.apk",
"https://github.com/sigstore/cosign/releases/download/v3.0.4/cosign_3.0.4_armv7.apk.sigstore.json",
"https://github.com/sigstore/cosign/releases/download/v3.0.4/cosign_3.0.4_ppc64el.deb",
"https://github.com/sigstore/cosign/releases/download/v3.0.4/cosign_3.0.4_ppc64el.deb.sigstore.json",
"https://github.com/sigstore/cosign/releases/download/v3.0.4/cosign_3.0.4_ppc64le.apk",
"https://github.com/sigstore/cosign/releases/download/v3.0.4/cosign_3.0.4_ppc64le.apk.sigstore.json",
"https://github.com/sigstore/cosign/releases/download/v3.0.4/cosign_3.0.4_riscv64.apk",
"https://github.com/sigstore/cosign/releases/download/v3.0.4/cosign_3.0.4_riscv64.apk.sigstore.json",
"https://github.com/sigstore/cosign/releases/download/v3.0.4/cosign_3.0.4_riscv64.deb",
"https://github.com/sigstore/cosign/releases/download/v3.0.4/cosign_3.0.4_riscv64.deb.sigstore.json",
"https://github.com/sigstore/cosign/releases/download/v3.0.4/cosign_3.0.4_s390x.apk",
"https://github.com/sigstore/cosign/releases/download/v3.0.4/cosign_3.0.4_s390x.apk.sigstore.json",
"https://github.com/sigstore/cosign/releases/download/v3.0.4/cosign_3.0.4_s390x.deb",
"https://github.com/sigstore/cosign/releases/download/v3.0.4/cosign_3.0.4_s390x.deb.sigstore.json",
"https://github.com/sigstore/cosign/releases/download/v3.0.4/cosign_3.0.4_x86_64.apk",
"https://github.com/sigstore/cosign/releases/download/v3.0.4/cosign_3.0.4_x86_64.apk.sigstore.json",
"https://github.com/sigstore/cosign/releases/download/v3.0.4/cosign_checksums.txt",
"https://github.com/sigstore/cosign/releases/download/v3.0.4/cosign_checksums.txt.sigstore.json",
"https://github.com/sigstore/cosign/releases/download/v3.0.4/release-cosign.pub"
]
},
"v2.6.2": {
"id": 275620649,
"tag_name": "v2.6.2",
"html_url": "https://github.com/sigstore/cosign/releases/tag/v2.6.2",
"assets": [
"https://github.com/sigstore/cosign/releases/download/v2.6.2/cosign-2.6.2-1.aarch64.rpm",
"https://github.com/sigstore/cosign/releases/download/v2.6.2/cosign-2.6.2-1.aarch64.rpm-keyless.pem",
"https://github.com/sigstore/cosign/releases/download/v2.6.2/cosign-2.6.2-1.aarch64.rpm-keyless.sig",
"https://github.com/sigstore/cosign/releases/download/v2.6.2/cosign-2.6.2-1.armv7hl.rpm",
"https://github.com/sigstore/cosign/releases/download/v2.6.2/cosign-2.6.2-1.armv7hl.rpm-keyless.pem",
"https://github.com/sigstore/cosign/releases/download/v2.6.2/cosign-2.6.2-1.armv7hl.rpm-keyless.sig",
"https://github.com/sigstore/cosign/releases/download/v2.6.2/cosign-2.6.2-1.ppc64le.rpm",
"https://github.com/sigstore/cosign/releases/download/v2.6.2/cosign-2.6.2-1.ppc64le.rpm-keyless.pem",
"https://github.com/sigstore/cosign/releases/download/v2.6.2/cosign-2.6.2-1.ppc64le.rpm-keyless.sig",
"https://github.com/sigstore/cosign/releases/download/v2.6.2/cosign-2.6.2-1.riscv64.rpm",
"https://github.com/sigstore/cosign/releases/download/v2.6.2/cosign-2.6.2-1.riscv64.rpm-keyless.pem",
"https://github.com/sigstore/cosign/releases/download/v2.6.2/cosign-2.6.2-1.riscv64.rpm-keyless.sig",
"https://github.com/sigstore/cosign/releases/download/v2.6.2/cosign-2.6.2-1.s390x.rpm",
"https://github.com/sigstore/cosign/releases/download/v2.6.2/cosign-2.6.2-1.s390x.rpm-keyless.pem",
"https://github.com/sigstore/cosign/releases/download/v2.6.2/cosign-2.6.2-1.s390x.rpm-keyless.sig",
"https://github.com/sigstore/cosign/releases/download/v2.6.2/cosign-2.6.2-1.x86_64.rpm",
"https://github.com/sigstore/cosign/releases/download/v2.6.2/cosign-2.6.2-1.x86_64.rpm-keyless.pem",
"https://github.com/sigstore/cosign/releases/download/v2.6.2/cosign-2.6.2-1.x86_64.rpm-keyless.sig",
"https://github.com/sigstore/cosign/releases/download/v2.6.2/cosign-darwin-amd64",
"https://github.com/sigstore/cosign/releases/download/v2.6.2/cosign-darwin-amd64-keyless.pem",
"https://github.com/sigstore/cosign/releases/download/v2.6.2/cosign-darwin-amd64-keyless.sig",
"https://github.com/sigstore/cosign/releases/download/v2.6.2/cosign-darwin-amd64.sig",
"https://github.com/sigstore/cosign/releases/download/v2.6.2/cosign-darwin-amd64_2.6.2_darwin_amd64.sbom.json",
"https://github.com/sigstore/cosign/releases/download/v2.6.2/cosign-darwin-arm64",
"https://github.com/sigstore/cosign/releases/download/v2.6.2/cosign-darwin-arm64-keyless.pem",
"https://github.com/sigstore/cosign/releases/download/v2.6.2/cosign-darwin-arm64-keyless.sig",
"https://github.com/sigstore/cosign/releases/download/v2.6.2/cosign-darwin-arm64.sig",
"https://github.com/sigstore/cosign/releases/download/v2.6.2/cosign-darwin-arm64_2.6.2_darwin_arm64.sbom.json",
"https://github.com/sigstore/cosign/releases/download/v2.6.2/cosign-linux-amd64",
"https://github.com/sigstore/cosign/releases/download/v2.6.2/cosign-linux-amd64-keyless.pem",
"https://github.com/sigstore/cosign/releases/download/v2.6.2/cosign-linux-amd64-keyless.sig",
"https://github.com/sigstore/cosign/releases/download/v2.6.2/cosign-linux-amd64.sig",
"https://github.com/sigstore/cosign/releases/download/v2.6.2/cosign-linux-amd64_2.6.2_linux_amd64.sbom.json",
"https://github.com/sigstore/cosign/releases/download/v2.6.2/cosign-linux-arm",
"https://github.com/sigstore/cosign/releases/download/v2.6.2/cosign-linux-arm-keyless.pem",
"https://github.com/sigstore/cosign/releases/download/v2.6.2/cosign-linux-arm-keyless.sig",
"https://github.com/sigstore/cosign/releases/download/v2.6.2/cosign-linux-arm.sig",
"https://github.com/sigstore/cosign/releases/download/v2.6.2/cosign-linux-arm64",
"https://github.com/sigstore/cosign/releases/download/v2.6.2/cosign-linux-arm64-keyless.pem",
"https://github.com/sigstore/cosign/releases/download/v2.6.2/cosign-linux-arm64-keyless.sig",
"https://github.com/sigstore/cosign/releases/download/v2.6.2/cosign-linux-arm64.sig",
"https://github.com/sigstore/cosign/releases/download/v2.6.2/cosign-linux-arm64_2.6.2_linux_arm64.sbom.json",
"https://github.com/sigstore/cosign/releases/download/v2.6.2/cosign-linux-arm_2.6.2_linux_arm.sbom.json",
"https://github.com/sigstore/cosign/releases/download/v2.6.2/cosign-linux-pivkey-pkcs11key-amd64",
"https://github.com/sigstore/cosign/releases/download/v2.6.2/cosign-linux-pivkey-pkcs11key-amd64-keyless.pem",
"https://github.com/sigstore/cosign/releases/download/v2.6.2/cosign-linux-pivkey-pkcs11key-amd64-keyless.sig",
"https://github.com/sigstore/cosign/releases/download/v2.6.2/cosign-linux-pivkey-pkcs11key-amd64.sig",
"https://github.com/sigstore/cosign/releases/download/v2.6.2/cosign-linux-pivkey-pkcs11key-amd64_2.6.2_linux_amd64.sbom.json",
"https://github.com/sigstore/cosign/releases/download/v2.6.2/cosign-linux-pivkey-pkcs11key-arm64",
"https://github.com/sigstore/cosign/releases/download/v2.6.2/cosign-linux-pivkey-pkcs11key-arm64-keyless.pem",
"https://github.com/sigstore/cosign/releases/download/v2.6.2/cosign-linux-pivkey-pkcs11key-arm64-keyless.sig",
"https://github.com/sigstore/cosign/releases/download/v2.6.2/cosign-linux-pivkey-pkcs11key-arm64.sig",
"https://github.com/sigstore/cosign/releases/download/v2.6.2/cosign-linux-pivkey-pkcs11key-arm64_2.6.2_linux_arm64.sbom.json",
"https://github.com/sigstore/cosign/releases/download/v2.6.2/cosign-linux-ppc64le",
"https://github.com/sigstore/cosign/releases/download/v2.6.2/cosign-linux-ppc64le-keyless.pem",
"https://github.com/sigstore/cosign/releases/download/v2.6.2/cosign-linux-ppc64le-keyless.sig",
"https://github.com/sigstore/cosign/releases/download/v2.6.2/cosign-linux-ppc64le.sig",
"https://github.com/sigstore/cosign/releases/download/v2.6.2/cosign-linux-ppc64le_2.6.2_linux_ppc64le.sbom.json",
"https://github.com/sigstore/cosign/releases/download/v2.6.2/cosign-linux-riscv64",
"https://github.com/sigstore/cosign/releases/download/v2.6.2/cosign-linux-riscv64-keyless.pem",
"https://github.com/sigstore/cosign/releases/download/v2.6.2/cosign-linux-riscv64-keyless.sig",
"https://github.com/sigstore/cosign/releases/download/v2.6.2/cosign-linux-riscv64.sig",
"https://github.com/sigstore/cosign/releases/download/v2.6.2/cosign-linux-riscv64_2.6.2_linux_riscv64.sbom.json",
"https://github.com/sigstore/cosign/releases/download/v2.6.2/cosign-linux-s390x",
"https://github.com/sigstore/cosign/releases/download/v2.6.2/cosign-linux-s390x-keyless.pem",
"https://github.com/sigstore/cosign/releases/download/v2.6.2/cosign-linux-s390x-keyless.sig",
"https://github.com/sigstore/cosign/releases/download/v2.6.2/cosign-linux-s390x.sig",
"https://github.com/sigstore/cosign/releases/download/v2.6.2/cosign-linux-s390x_2.6.2_linux_s390x.sbom.json",
"https://github.com/sigstore/cosign/releases/download/v2.6.2/cosign-windows-amd64.exe",
"https://github.com/sigstore/cosign/releases/download/v2.6.2/cosign-windows-amd64.exe-keyless.pem",
"https://github.com/sigstore/cosign/releases/download/v2.6.2/cosign-windows-amd64.exe-keyless.sig",
"https://github.com/sigstore/cosign/releases/download/v2.6.2/cosign-windows-amd64.exe.sig",
"https://github.com/sigstore/cosign/releases/download/v2.6.2/cosign-windows-amd64.exe_2.6.2_windows_amd64.sbom.json",
"https://github.com/sigstore/cosign/releases/download/v2.6.2/cosign_2.6.2_aarch64.apk",
"https://github.com/sigstore/cosign/releases/download/v2.6.2/cosign_2.6.2_aarch64.apk-keyless.pem",
"https://github.com/sigstore/cosign/releases/download/v2.6.2/cosign_2.6.2_aarch64.apk-keyless.sig",
"https://github.com/sigstore/cosign/releases/download/v2.6.2/cosign_2.6.2_amd64.deb",
"https://github.com/sigstore/cosign/releases/download/v2.6.2/cosign_2.6.2_amd64.deb-keyless.pem",
"https://github.com/sigstore/cosign/releases/download/v2.6.2/cosign_2.6.2_amd64.deb-keyless.sig",
"https://github.com/sigstore/cosign/releases/download/v2.6.2/cosign_2.6.2_arm64.deb",
"https://github.com/sigstore/cosign/releases/download/v2.6.2/cosign_2.6.2_arm64.deb-keyless.pem",
"https://github.com/sigstore/cosign/releases/download/v2.6.2/cosign_2.6.2_arm64.deb-keyless.sig",
"https://github.com/sigstore/cosign/releases/download/v2.6.2/cosign_2.6.2_armhf.deb",
"https://github.com/sigstore/cosign/releases/download/v2.6.2/cosign_2.6.2_armhf.deb-keyless.pem",
"https://github.com/sigstore/cosign/releases/download/v2.6.2/cosign_2.6.2_armhf.deb-keyless.sig",
"https://github.com/sigstore/cosign/releases/download/v2.6.2/cosign_2.6.2_armv7.apk",
"https://github.com/sigstore/cosign/releases/download/v2.6.2/cosign_2.6.2_armv7.apk-keyless.pem",
"https://github.com/sigstore/cosign/releases/download/v2.6.2/cosign_2.6.2_armv7.apk-keyless.sig",
"https://github.com/sigstore/cosign/releases/download/v2.6.2/cosign_2.6.2_ppc64el.deb",
"https://github.com/sigstore/cosign/releases/download/v2.6.2/cosign_2.6.2_ppc64el.deb-keyless.pem",
"https://github.com/sigstore/cosign/releases/download/v2.6.2/cosign_2.6.2_ppc64el.deb-keyless.sig",
"https://github.com/sigstore/cosign/releases/download/v2.6.2/cosign_2.6.2_ppc64le.apk",
"https://github.com/sigstore/cosign/releases/download/v2.6.2/cosign_2.6.2_ppc64le.apk-keyless.pem",
"https://github.com/sigstore/cosign/releases/download/v2.6.2/cosign_2.6.2_ppc64le.apk-keyless.sig",
"https://github.com/sigstore/cosign/releases/download/v2.6.2/cosign_2.6.2_riscv64.apk",
"https://github.com/sigstore/cosign/releases/download/v2.6.2/cosign_2.6.2_riscv64.apk-keyless.pem",
"https://github.com/sigstore/cosign/releases/download/v2.6.2/cosign_2.6.2_riscv64.apk-keyless.sig",
"https://github.com/sigstore/cosign/releases/download/v2.6.2/cosign_2.6.2_riscv64.deb",
"https://github.com/sigstore/cosign/releases/download/v2.6.2/cosign_2.6.2_riscv64.deb-keyless.pem",
"https://github.com/sigstore/cosign/releases/download/v2.6.2/cosign_2.6.2_riscv64.deb-keyless.sig",
"https://github.com/sigstore/cosign/releases/download/v2.6.2/cosign_2.6.2_s390x.apk",
"https://github.com/sigstore/cosign/releases/download/v2.6.2/cosign_2.6.2_s390x.apk-keyless.pem",
"https://github.com/sigstore/cosign/releases/download/v2.6.2/cosign_2.6.2_s390x.apk-keyless.sig",
"https://github.com/sigstore/cosign/releases/download/v2.6.2/cosign_2.6.2_s390x.deb",
"https://github.com/sigstore/cosign/releases/download/v2.6.2/cosign_2.6.2_s390x.deb-keyless.pem",
"https://github.com/sigstore/cosign/releases/download/v2.6.2/cosign_2.6.2_s390x.deb-keyless.sig",
"https://github.com/sigstore/cosign/releases/download/v2.6.2/cosign_2.6.2_x86_64.apk",
"https://github.com/sigstore/cosign/releases/download/v2.6.2/cosign_2.6.2_x86_64.apk-keyless.pem",
"https://github.com/sigstore/cosign/releases/download/v2.6.2/cosign_2.6.2_x86_64.apk-keyless.sig",
"https://github.com/sigstore/cosign/releases/download/v2.6.2/cosign_checksums.txt",
"https://github.com/sigstore/cosign/releases/download/v2.6.2/cosign_checksums.txt-keyless.pem",
"https://github.com/sigstore/cosign/releases/download/v2.6.2/cosign_checksums.txt-keyless.sig",
"https://github.com/sigstore/cosign/releases/download/v2.6.2/release-cosign.pub"
]
},
"v3.0.3": {
"id": 268935494,
"tag_name": "v3.0.3",
"html_url": "https://github.com/sigstore/cosign/releases/tag/v3.0.3",
"assets": [
"https://github.com/sigstore/cosign/releases/download/v3.0.3/cosign-3.0.3-1.aarch64.rpm",
"https://github.com/sigstore/cosign/releases/download/v3.0.3/cosign-3.0.3-1.aarch64.rpm.sigstore.json",
"https://github.com/sigstore/cosign/releases/download/v3.0.3/cosign-3.0.3-1.armv7hl.rpm",
"https://github.com/sigstore/cosign/releases/download/v3.0.3/cosign-3.0.3-1.armv7hl.rpm.sigstore.json",
"https://github.com/sigstore/cosign/releases/download/v3.0.3/cosign-3.0.3-1.ppc64le.rpm",
"https://github.com/sigstore/cosign/releases/download/v3.0.3/cosign-3.0.3-1.ppc64le.rpm.sigstore.json",
"https://github.com/sigstore/cosign/releases/download/v3.0.3/cosign-3.0.3-1.riscv64.rpm",
"https://github.com/sigstore/cosign/releases/download/v3.0.3/cosign-3.0.3-1.riscv64.rpm.sigstore.json",
"https://github.com/sigstore/cosign/releases/download/v3.0.3/cosign-3.0.3-1.s390x.rpm",
"https://github.com/sigstore/cosign/releases/download/v3.0.3/cosign-3.0.3-1.s390x.rpm.sigstore.json",
"https://github.com/sigstore/cosign/releases/download/v3.0.3/cosign-3.0.3-1.x86_64.rpm",
"https://github.com/sigstore/cosign/releases/download/v3.0.3/cosign-3.0.3-1.x86_64.rpm.sigstore.json",
"https://github.com/sigstore/cosign/releases/download/v3.0.3/cosign-darwin-amd64",
"https://github.com/sigstore/cosign/releases/download/v3.0.3/cosign-darwin-amd64-kms.sigstore.json",
"https://github.com/sigstore/cosign/releases/download/v3.0.3/cosign-darwin-amd64.sigstore.json",
"https://github.com/sigstore/cosign/releases/download/v3.0.3/cosign-darwin-amd64_3.0.3_darwin_amd64.sbom.json",
"https://github.com/sigstore/cosign/releases/download/v3.0.3/cosign-darwin-arm64",
"https://github.com/sigstore/cosign/releases/download/v3.0.3/cosign-darwin-arm64-kms.sigstore.json",
"https://github.com/sigstore/cosign/releases/download/v3.0.3/cosign-darwin-arm64.sigstore.json",
"https://github.com/sigstore/cosign/releases/download/v3.0.3/cosign-darwin-arm64_3.0.3_darwin_arm64.sbom.json",
"https://github.com/sigstore/cosign/releases/download/v3.0.3/cosign-linux-amd64",
"https://github.com/sigstore/cosign/releases/download/v3.0.3/cosign-linux-amd64-kms.sigstore.json",
"https://github.com/sigstore/cosign/releases/download/v3.0.3/cosign-linux-amd64.sigstore.json",
"https://github.com/sigstore/cosign/releases/download/v3.0.3/cosign-linux-amd64_3.0.3_linux_amd64.sbom.json",
"https://github.com/sigstore/cosign/releases/download/v3.0.3/cosign-linux-arm",
"https://github.com/sigstore/cosign/releases/download/v3.0.3/cosign-linux-arm-kms.sigstore.json",
"https://github.com/sigstore/cosign/releases/download/v3.0.3/cosign-linux-arm.sigstore.json",
"https://github.com/sigstore/cosign/releases/download/v3.0.3/cosign-linux-arm64",
"https://github.com/sigstore/cosign/releases/download/v3.0.3/cosign-linux-arm64-kms.sigstore.json",
"https://github.com/sigstore/cosign/releases/download/v3.0.3/cosign-linux-arm64.sigstore.json",
"https://github.com/sigstore/cosign/releases/download/v3.0.3/cosign-linux-arm64_3.0.3_linux_arm64.sbom.json",
"https://github.com/sigstore/cosign/releases/download/v3.0.3/cosign-linux-arm_3.0.3_linux_arm.sbom.json",
"https://github.com/sigstore/cosign/releases/download/v3.0.3/cosign-linux-pivkey-pkcs11key-amd64",
"https://github.com/sigstore/cosign/releases/download/v3.0.3/cosign-linux-pivkey-pkcs11key-amd64-kms.sigstore.json",
"https://github.com/sigstore/cosign/releases/download/v3.0.3/cosign-linux-pivkey-pkcs11key-amd64.sigstore.json",
"https://github.com/sigstore/cosign/releases/download/v3.0.3/cosign-linux-pivkey-pkcs11key-amd64_3.0.3_linux_amd64.sbom.json",
"https://github.com/sigstore/cosign/releases/download/v3.0.3/cosign-linux-pivkey-pkcs11key-arm64",
"https://github.com/sigstore/cosign/releases/download/v3.0.3/cosign-linux-pivkey-pkcs11key-arm64-kms.sigstore.json",
"https://github.com/sigstore/cosign/releases/download/v3.0.3/cosign-linux-pivkey-pkcs11key-arm64.sigstore.json",
"https://github.com/sigstore/cosign/releases/download/v3.0.3/cosign-linux-pivkey-pkcs11key-arm64_3.0.3_linux_arm64.sbom.json",
"https://github.com/sigstore/cosign/releases/download/v3.0.3/cosign-linux-ppc64le",
"https://github.com/sigstore/cosign/releases/download/v3.0.3/cosign-linux-ppc64le-kms.sigstore.json",
"https://github.com/sigstore/cosign/releases/download/v3.0.3/cosign-linux-ppc64le.sigstore.json",
"https://github.com/sigstore/cosign/releases/download/v3.0.3/cosign-linux-ppc64le_3.0.3_linux_ppc64le.sbom.json",
"https://github.com/sigstore/cosign/releases/download/v3.0.3/cosign-linux-riscv64",
"https://github.com/sigstore/cosign/releases/download/v3.0.3/cosign-linux-riscv64-kms.sigstore.json",
"https://github.com/sigstore/cosign/releases/download/v3.0.3/cosign-linux-riscv64.sigstore.json",
"https://github.com/sigstore/cosign/releases/download/v3.0.3/cosign-linux-riscv64_3.0.3_linux_riscv64.sbom.json",
"https://github.com/sigstore/cosign/releases/download/v3.0.3/cosign-linux-s390x",
"https://github.com/sigstore/cosign/releases/download/v3.0.3/cosign-linux-s390x-kms.sigstore.json",
"https://github.com/sigstore/cosign/releases/download/v3.0.3/cosign-linux-s390x.sigstore.json",
"https://github.com/sigstore/cosign/releases/download/v3.0.3/cosign-linux-s390x_3.0.3_linux_s390x.sbom.json",
"https://github.com/sigstore/cosign/releases/download/v3.0.3/cosign-windows-amd64.exe",
"https://github.com/sigstore/cosign/releases/download/v3.0.3/cosign-windows-amd64.exe-kms.sigstore.json",
"https://github.com/sigstore/cosign/releases/download/v3.0.3/cosign-windows-amd64.exe.sigstore.json",
"https://github.com/sigstore/cosign/releases/download/v3.0.3/cosign-windows-amd64.exe_3.0.3_windows_amd64.sbom.json",
"https://github.com/sigstore/cosign/releases/download/v3.0.3/cosign_3.0.3_aarch64.apk",
"https://github.com/sigstore/cosign/releases/download/v3.0.3/cosign_3.0.3_aarch64.apk.sigstore.json",
"https://github.com/sigstore/cosign/releases/download/v3.0.3/cosign_3.0.3_amd64.deb",
"https://github.com/sigstore/cosign/releases/download/v3.0.3/cosign_3.0.3_amd64.deb.sigstore.json",
"https://github.com/sigstore/cosign/releases/download/v3.0.3/cosign_3.0.3_arm64.deb",
"https://github.com/sigstore/cosign/releases/download/v3.0.3/cosign_3.0.3_arm64.deb.sigstore.json",
"https://github.com/sigstore/cosign/releases/download/v3.0.3/cosign_3.0.3_armhf.deb",
"https://github.com/sigstore/cosign/releases/download/v3.0.3/cosign_3.0.3_armhf.deb.sigstore.json",
"https://github.com/sigstore/cosign/releases/download/v3.0.3/cosign_3.0.3_armv7.apk",
"https://github.com/sigstore/cosign/releases/download/v3.0.3/cosign_3.0.3_armv7.apk.sigstore.json",
"https://github.com/sigstore/cosign/releases/download/v3.0.3/cosign_3.0.3_ppc64el.deb",
"https://github.com/sigstore/cosign/releases/download/v3.0.3/cosign_3.0.3_ppc64el.deb.sigstore.json",
"https://github.com/sigstore/cosign/releases/download/v3.0.3/cosign_3.0.3_ppc64le.apk",
"https://github.com/sigstore/cosign/releases/download/v3.0.3/cosign_3.0.3_ppc64le.apk.sigstore.json",
"https://github.com/sigstore/cosign/releases/download/v3.0.3/cosign_3.0.3_riscv64.apk",
"https://github.com/sigstore/cosign/releases/download/v3.0.3/cosign_3.0.3_riscv64.apk.sigstore.json",
"https://github.com/sigstore/cosign/releases/download/v3.0.3/cosign_3.0.3_riscv64.deb",
"https://github.com/sigstore/cosign/releases/download/v3.0.3/cosign_3.0.3_riscv64.deb.sigstore.json",
"https://github.com/sigstore/cosign/releases/download/v3.0.3/cosign_3.0.3_s390x.apk",
"https://github.com/sigstore/cosign/releases/download/v3.0.3/cosign_3.0.3_s390x.apk.sigstore.json",
"https://github.com/sigstore/cosign/releases/download/v3.0.3/cosign_3.0.3_s390x.deb",
"https://github.com/sigstore/cosign/releases/download/v3.0.3/cosign_3.0.3_s390x.deb.sigstore.json",
"https://github.com/sigstore/cosign/releases/download/v3.0.3/cosign_3.0.3_x86_64.apk",
"https://github.com/sigstore/cosign/releases/download/v3.0.3/cosign_3.0.3_x86_64.apk.sigstore.json",
"https://github.com/sigstore/cosign/releases/download/v3.0.3/cosign_checksums.txt",
"https://github.com/sigstore/cosign/releases/download/v3.0.3/cosign_checksums.txt.sigstore.json",
"https://github.com/sigstore/cosign/releases/download/v3.0.3/release-cosign.pub"
]
},
"v3.0.2": {
@@ -3106,93 +3706,93 @@
]
},
"edge": {
"id": 253720294,
"tag_name": "v3.0.2",
"html_url": "https://github.com/sigstore/cosign/releases/tag/v3.0.2",
"id": 305842182,
"tag_name": "v3.0.6",
"html_url": "https://github.com/sigstore/cosign/releases/tag/v3.0.6",
"assets": [
"https://github.com/sigstore/cosign/releases/download/v3.0.2/cosign-3.0.2-1.aarch64.rpm",
"https://github.com/sigstore/cosign/releases/download/v3.0.2/cosign-3.0.2-1.aarch64.rpm.sigstore.json",
"https://github.com/sigstore/cosign/releases/download/v3.0.2/cosign-3.0.2-1.armv7hl.rpm",
"https://github.com/sigstore/cosign/releases/download/v3.0.2/cosign-3.0.2-1.armv7hl.rpm.sigstore.json",
"https://github.com/sigstore/cosign/releases/download/v3.0.2/cosign-3.0.2-1.ppc64le.rpm",
"https://github.com/sigstore/cosign/releases/download/v3.0.2/cosign-3.0.2-1.ppc64le.rpm.sigstore.json",
"https://github.com/sigstore/cosign/releases/download/v3.0.2/cosign-3.0.2-1.riscv64.rpm",
"https://github.com/sigstore/cosign/releases/download/v3.0.2/cosign-3.0.2-1.riscv64.rpm.sigstore.json",
"https://github.com/sigstore/cosign/releases/download/v3.0.2/cosign-3.0.2-1.s390x.rpm",
"https://github.com/sigstore/cosign/releases/download/v3.0.2/cosign-3.0.2-1.s390x.rpm.sigstore.json",
"https://github.com/sigstore/cosign/releases/download/v3.0.2/cosign-3.0.2-1.x86_64.rpm",
"https://github.com/sigstore/cosign/releases/download/v3.0.2/cosign-3.0.2-1.x86_64.rpm.sigstore.json",
"https://github.com/sigstore/cosign/releases/download/v3.0.2/cosign-darwin-amd64",
"https://github.com/sigstore/cosign/releases/download/v3.0.2/cosign-darwin-amd64-kms.sigstore.json",
"https://github.com/sigstore/cosign/releases/download/v3.0.2/cosign-darwin-amd64.sigstore.json",
"https://github.com/sigstore/cosign/releases/download/v3.0.2/cosign-darwin-amd64_3.0.2_darwin_amd64.sbom.json",
"https://github.com/sigstore/cosign/releases/download/v3.0.2/cosign-darwin-arm64",
"https://github.com/sigstore/cosign/releases/download/v3.0.2/cosign-darwin-arm64-kms.sigstore.json",
"https://github.com/sigstore/cosign/releases/download/v3.0.2/cosign-darwin-arm64.sigstore.json",
"https://github.com/sigstore/cosign/releases/download/v3.0.2/cosign-darwin-arm64_3.0.2_darwin_arm64.sbom.json",
"https://github.com/sigstore/cosign/releases/download/v3.0.2/cosign-linux-amd64",
"https://github.com/sigstore/cosign/releases/download/v3.0.2/cosign-linux-amd64-kms.sigstore.json",
"https://github.com/sigstore/cosign/releases/download/v3.0.2/cosign-linux-amd64.sigstore.json",
"https://github.com/sigstore/cosign/releases/download/v3.0.2/cosign-linux-amd64_3.0.2_linux_amd64.sbom.json",
"https://github.com/sigstore/cosign/releases/download/v3.0.2/cosign-linux-arm",
"https://github.com/sigstore/cosign/releases/download/v3.0.2/cosign-linux-arm-kms.sigstore.json",
"https://github.com/sigstore/cosign/releases/download/v3.0.2/cosign-linux-arm.sigstore.json",
"https://github.com/sigstore/cosign/releases/download/v3.0.2/cosign-linux-arm64",
"https://github.com/sigstore/cosign/releases/download/v3.0.2/cosign-linux-arm64-kms.sigstore.json",
"https://github.com/sigstore/cosign/releases/download/v3.0.2/cosign-linux-arm64.sigstore.json",
"https://github.com/sigstore/cosign/releases/download/v3.0.2/cosign-linux-arm64_3.0.2_linux_arm64.sbom.json",
"https://github.com/sigstore/cosign/releases/download/v3.0.2/cosign-linux-arm_3.0.2_linux_arm.sbom.json",
"https://github.com/sigstore/cosign/releases/download/v3.0.2/cosign-linux-pivkey-pkcs11key-amd64",
"https://github.com/sigstore/cosign/releases/download/v3.0.2/cosign-linux-pivkey-pkcs11key-amd64-kms.sigstore.json",
"https://github.com/sigstore/cosign/releases/download/v3.0.2/cosign-linux-pivkey-pkcs11key-amd64.sigstore.json",
"https://github.com/sigstore/cosign/releases/download/v3.0.2/cosign-linux-pivkey-pkcs11key-amd64_3.0.2_linux_amd64.sbom.json",
"https://github.com/sigstore/cosign/releases/download/v3.0.2/cosign-linux-pivkey-pkcs11key-arm64",
"https://github.com/sigstore/cosign/releases/download/v3.0.2/cosign-linux-pivkey-pkcs11key-arm64-kms.sigstore.json",
"https://github.com/sigstore/cosign/releases/download/v3.0.2/cosign-linux-pivkey-pkcs11key-arm64.sigstore.json",
"https://github.com/sigstore/cosign/releases/download/v3.0.2/cosign-linux-pivkey-pkcs11key-arm64_3.0.2_linux_arm64.sbom.json",
"https://github.com/sigstore/cosign/releases/download/v3.0.2/cosign-linux-ppc64le",
"https://github.com/sigstore/cosign/releases/download/v3.0.2/cosign-linux-ppc64le-kms.sigstore.json",
"https://github.com/sigstore/cosign/releases/download/v3.0.2/cosign-linux-ppc64le.sigstore.json",
"https://github.com/sigstore/cosign/releases/download/v3.0.2/cosign-linux-ppc64le_3.0.2_linux_ppc64le.sbom.json",
"https://github.com/sigstore/cosign/releases/download/v3.0.2/cosign-linux-riscv64",
"https://github.com/sigstore/cosign/releases/download/v3.0.2/cosign-linux-riscv64-kms.sigstore.json",
"https://github.com/sigstore/cosign/releases/download/v3.0.2/cosign-linux-riscv64.sigstore.json",
"https://github.com/sigstore/cosign/releases/download/v3.0.2/cosign-linux-riscv64_3.0.2_linux_riscv64.sbom.json",
"https://github.com/sigstore/cosign/releases/download/v3.0.2/cosign-linux-s390x",
"https://github.com/sigstore/cosign/releases/download/v3.0.2/cosign-linux-s390x-kms.sigstore.json",
"https://github.com/sigstore/cosign/releases/download/v3.0.2/cosign-linux-s390x.sigstore.json",
"https://github.com/sigstore/cosign/releases/download/v3.0.2/cosign-linux-s390x_3.0.2_linux_s390x.sbom.json",
"https://github.com/sigstore/cosign/releases/download/v3.0.2/cosign-windows-amd64.exe",
"https://github.com/sigstore/cosign/releases/download/v3.0.2/cosign-windows-amd64.exe-kms.sigstore.json",
"https://github.com/sigstore/cosign/releases/download/v3.0.2/cosign-windows-amd64.exe.sigstore.json",
"https://github.com/sigstore/cosign/releases/download/v3.0.2/cosign-windows-amd64.exe_3.0.2_windows_amd64.sbom.json",
"https://github.com/sigstore/cosign/releases/download/v3.0.2/cosign_3.0.2_aarch64.apk",
"https://github.com/sigstore/cosign/releases/download/v3.0.2/cosign_3.0.2_aarch64.apk.sigstore.json",
"https://github.com/sigstore/cosign/releases/download/v3.0.2/cosign_3.0.2_amd64.deb",
"https://github.com/sigstore/cosign/releases/download/v3.0.2/cosign_3.0.2_amd64.deb.sigstore.json",
"https://github.com/sigstore/cosign/releases/download/v3.0.2/cosign_3.0.2_arm64.deb",
"https://github.com/sigstore/cosign/releases/download/v3.0.2/cosign_3.0.2_arm64.deb.sigstore.json",
"https://github.com/sigstore/cosign/releases/download/v3.0.2/cosign_3.0.2_armhf.deb",
"https://github.com/sigstore/cosign/releases/download/v3.0.2/cosign_3.0.2_armhf.deb.sigstore.json",
"https://github.com/sigstore/cosign/releases/download/v3.0.2/cosign_3.0.2_armv7.apk",
"https://github.com/sigstore/cosign/releases/download/v3.0.2/cosign_3.0.2_armv7.apk.sigstore.json",
"https://github.com/sigstore/cosign/releases/download/v3.0.2/cosign_3.0.2_ppc64el.deb",
"https://github.com/sigstore/cosign/releases/download/v3.0.2/cosign_3.0.2_ppc64el.deb.sigstore.json",
"https://github.com/sigstore/cosign/releases/download/v3.0.2/cosign_3.0.2_ppc64le.apk",
"https://github.com/sigstore/cosign/releases/download/v3.0.2/cosign_3.0.2_ppc64le.apk.sigstore.json",
"https://github.com/sigstore/cosign/releases/download/v3.0.2/cosign_3.0.2_riscv64.apk",
"https://github.com/sigstore/cosign/releases/download/v3.0.2/cosign_3.0.2_riscv64.apk.sigstore.json",
"https://github.com/sigstore/cosign/releases/download/v3.0.2/cosign_3.0.2_riscv64.deb",
"https://github.com/sigstore/cosign/releases/download/v3.0.2/cosign_3.0.2_riscv64.deb.sigstore.json",
"https://github.com/sigstore/cosign/releases/download/v3.0.2/cosign_3.0.2_s390x.apk",
"https://github.com/sigstore/cosign/releases/download/v3.0.2/cosign_3.0.2_s390x.apk.sigstore.json",
"https://github.com/sigstore/cosign/releases/download/v3.0.2/cosign_3.0.2_s390x.deb",
"https://github.com/sigstore/cosign/releases/download/v3.0.2/cosign_3.0.2_s390x.deb.sigstore.json",
"https://github.com/sigstore/cosign/releases/download/v3.0.2/cosign_3.0.2_x86_64.apk",
"https://github.com/sigstore/cosign/releases/download/v3.0.2/cosign_3.0.2_x86_64.apk.sigstore.json",
"https://github.com/sigstore/cosign/releases/download/v3.0.2/cosign_checksums.txt",
"https://github.com/sigstore/cosign/releases/download/v3.0.2/cosign_checksums.txt.sigstore.json",
"https://github.com/sigstore/cosign/releases/download/v3.0.2/release-cosign.pub"
"https://github.com/sigstore/cosign/releases/download/v3.0.6/cosign-3.0.6-1.aarch64.rpm",
"https://github.com/sigstore/cosign/releases/download/v3.0.6/cosign-3.0.6-1.aarch64.rpm.sigstore.json",
"https://github.com/sigstore/cosign/releases/download/v3.0.6/cosign-3.0.6-1.armv7hl.rpm",
"https://github.com/sigstore/cosign/releases/download/v3.0.6/cosign-3.0.6-1.armv7hl.rpm.sigstore.json",
"https://github.com/sigstore/cosign/releases/download/v3.0.6/cosign-3.0.6-1.ppc64le.rpm",
"https://github.com/sigstore/cosign/releases/download/v3.0.6/cosign-3.0.6-1.ppc64le.rpm.sigstore.json",
"https://github.com/sigstore/cosign/releases/download/v3.0.6/cosign-3.0.6-1.riscv64.rpm",
"https://github.com/sigstore/cosign/releases/download/v3.0.6/cosign-3.0.6-1.riscv64.rpm.sigstore.json",
"https://github.com/sigstore/cosign/releases/download/v3.0.6/cosign-3.0.6-1.s390x.rpm",
"https://github.com/sigstore/cosign/releases/download/v3.0.6/cosign-3.0.6-1.s390x.rpm.sigstore.json",
"https://github.com/sigstore/cosign/releases/download/v3.0.6/cosign-3.0.6-1.x86_64.rpm",
"https://github.com/sigstore/cosign/releases/download/v3.0.6/cosign-3.0.6-1.x86_64.rpm.sigstore.json",
"https://github.com/sigstore/cosign/releases/download/v3.0.6/cosign-darwin-amd64",
"https://github.com/sigstore/cosign/releases/download/v3.0.6/cosign-darwin-amd64-kms.sigstore.json",
"https://github.com/sigstore/cosign/releases/download/v3.0.6/cosign-darwin-amd64.sigstore.json",
"https://github.com/sigstore/cosign/releases/download/v3.0.6/cosign-darwin-amd64_3.0.6_darwin_amd64.sbom.json",
"https://github.com/sigstore/cosign/releases/download/v3.0.6/cosign-darwin-arm64",
"https://github.com/sigstore/cosign/releases/download/v3.0.6/cosign-darwin-arm64-kms.sigstore.json",
"https://github.com/sigstore/cosign/releases/download/v3.0.6/cosign-darwin-arm64.sigstore.json",
"https://github.com/sigstore/cosign/releases/download/v3.0.6/cosign-darwin-arm64_3.0.6_darwin_arm64.sbom.json",
"https://github.com/sigstore/cosign/releases/download/v3.0.6/cosign-linux-amd64",
"https://github.com/sigstore/cosign/releases/download/v3.0.6/cosign-linux-amd64-kms.sigstore.json",
"https://github.com/sigstore/cosign/releases/download/v3.0.6/cosign-linux-amd64.sigstore.json",
"https://github.com/sigstore/cosign/releases/download/v3.0.6/cosign-linux-amd64_3.0.6_linux_amd64.sbom.json",
"https://github.com/sigstore/cosign/releases/download/v3.0.6/cosign-linux-arm",
"https://github.com/sigstore/cosign/releases/download/v3.0.6/cosign-linux-arm-kms.sigstore.json",
"https://github.com/sigstore/cosign/releases/download/v3.0.6/cosign-linux-arm.sigstore.json",
"https://github.com/sigstore/cosign/releases/download/v3.0.6/cosign-linux-arm64",
"https://github.com/sigstore/cosign/releases/download/v3.0.6/cosign-linux-arm64-kms.sigstore.json",
"https://github.com/sigstore/cosign/releases/download/v3.0.6/cosign-linux-arm64.sigstore.json",
"https://github.com/sigstore/cosign/releases/download/v3.0.6/cosign-linux-arm64_3.0.6_linux_arm64.sbom.json",
"https://github.com/sigstore/cosign/releases/download/v3.0.6/cosign-linux-arm_3.0.6_linux_arm.sbom.json",
"https://github.com/sigstore/cosign/releases/download/v3.0.6/cosign-linux-pivkey-pkcs11key-amd64",
"https://github.com/sigstore/cosign/releases/download/v3.0.6/cosign-linux-pivkey-pkcs11key-amd64-kms.sigstore.json",
"https://github.com/sigstore/cosign/releases/download/v3.0.6/cosign-linux-pivkey-pkcs11key-amd64.sigstore.json",
"https://github.com/sigstore/cosign/releases/download/v3.0.6/cosign-linux-pivkey-pkcs11key-amd64_3.0.6_linux_amd64.sbom.json",
"https://github.com/sigstore/cosign/releases/download/v3.0.6/cosign-linux-pivkey-pkcs11key-arm64",
"https://github.com/sigstore/cosign/releases/download/v3.0.6/cosign-linux-pivkey-pkcs11key-arm64-kms.sigstore.json",
"https://github.com/sigstore/cosign/releases/download/v3.0.6/cosign-linux-pivkey-pkcs11key-arm64.sigstore.json",
"https://github.com/sigstore/cosign/releases/download/v3.0.6/cosign-linux-pivkey-pkcs11key-arm64_3.0.6_linux_arm64.sbom.json",
"https://github.com/sigstore/cosign/releases/download/v3.0.6/cosign-linux-ppc64le",
"https://github.com/sigstore/cosign/releases/download/v3.0.6/cosign-linux-ppc64le-kms.sigstore.json",
"https://github.com/sigstore/cosign/releases/download/v3.0.6/cosign-linux-ppc64le.sigstore.json",
"https://github.com/sigstore/cosign/releases/download/v3.0.6/cosign-linux-ppc64le_3.0.6_linux_ppc64le.sbom.json",
"https://github.com/sigstore/cosign/releases/download/v3.0.6/cosign-linux-riscv64",
"https://github.com/sigstore/cosign/releases/download/v3.0.6/cosign-linux-riscv64-kms.sigstore.json",
"https://github.com/sigstore/cosign/releases/download/v3.0.6/cosign-linux-riscv64.sigstore.json",
"https://github.com/sigstore/cosign/releases/download/v3.0.6/cosign-linux-riscv64_3.0.6_linux_riscv64.sbom.json",
"https://github.com/sigstore/cosign/releases/download/v3.0.6/cosign-linux-s390x",
"https://github.com/sigstore/cosign/releases/download/v3.0.6/cosign-linux-s390x-kms.sigstore.json",
"https://github.com/sigstore/cosign/releases/download/v3.0.6/cosign-linux-s390x.sigstore.json",
"https://github.com/sigstore/cosign/releases/download/v3.0.6/cosign-linux-s390x_3.0.6_linux_s390x.sbom.json",
"https://github.com/sigstore/cosign/releases/download/v3.0.6/cosign-windows-amd64.exe",
"https://github.com/sigstore/cosign/releases/download/v3.0.6/cosign-windows-amd64.exe-kms.sigstore.json",
"https://github.com/sigstore/cosign/releases/download/v3.0.6/cosign-windows-amd64.exe.sigstore.json",
"https://github.com/sigstore/cosign/releases/download/v3.0.6/cosign-windows-amd64.exe_3.0.6_windows_amd64.sbom.json",
"https://github.com/sigstore/cosign/releases/download/v3.0.6/cosign_3.0.6_aarch64.apk",
"https://github.com/sigstore/cosign/releases/download/v3.0.6/cosign_3.0.6_aarch64.apk.sigstore.json",
"https://github.com/sigstore/cosign/releases/download/v3.0.6/cosign_3.0.6_amd64.deb",
"https://github.com/sigstore/cosign/releases/download/v3.0.6/cosign_3.0.6_amd64.deb.sigstore.json",
"https://github.com/sigstore/cosign/releases/download/v3.0.6/cosign_3.0.6_arm64.deb",
"https://github.com/sigstore/cosign/releases/download/v3.0.6/cosign_3.0.6_arm64.deb.sigstore.json",
"https://github.com/sigstore/cosign/releases/download/v3.0.6/cosign_3.0.6_armhf.deb",
"https://github.com/sigstore/cosign/releases/download/v3.0.6/cosign_3.0.6_armhf.deb.sigstore.json",
"https://github.com/sigstore/cosign/releases/download/v3.0.6/cosign_3.0.6_armv7.apk",
"https://github.com/sigstore/cosign/releases/download/v3.0.6/cosign_3.0.6_armv7.apk.sigstore.json",
"https://github.com/sigstore/cosign/releases/download/v3.0.6/cosign_3.0.6_ppc64el.deb",
"https://github.com/sigstore/cosign/releases/download/v3.0.6/cosign_3.0.6_ppc64el.deb.sigstore.json",
"https://github.com/sigstore/cosign/releases/download/v3.0.6/cosign_3.0.6_ppc64le.apk",
"https://github.com/sigstore/cosign/releases/download/v3.0.6/cosign_3.0.6_ppc64le.apk.sigstore.json",
"https://github.com/sigstore/cosign/releases/download/v3.0.6/cosign_3.0.6_riscv64.apk",
"https://github.com/sigstore/cosign/releases/download/v3.0.6/cosign_3.0.6_riscv64.apk.sigstore.json",
"https://github.com/sigstore/cosign/releases/download/v3.0.6/cosign_3.0.6_riscv64.deb",
"https://github.com/sigstore/cosign/releases/download/v3.0.6/cosign_3.0.6_riscv64.deb.sigstore.json",
"https://github.com/sigstore/cosign/releases/download/v3.0.6/cosign_3.0.6_s390x.apk",
"https://github.com/sigstore/cosign/releases/download/v3.0.6/cosign_3.0.6_s390x.apk.sigstore.json",
"https://github.com/sigstore/cosign/releases/download/v3.0.6/cosign_3.0.6_s390x.deb",
"https://github.com/sigstore/cosign/releases/download/v3.0.6/cosign_3.0.6_s390x.deb.sigstore.json",
"https://github.com/sigstore/cosign/releases/download/v3.0.6/cosign_3.0.6_x86_64.apk",
"https://github.com/sigstore/cosign/releases/download/v3.0.6/cosign_3.0.6_x86_64.apk.sigstore.json",
"https://github.com/sigstore/cosign/releases/download/v3.0.6/cosign_checksums.txt",
"https://github.com/sigstore/cosign/releases/download/v3.0.6/cosign_checksums.txt.sigstore.json",
"https://github.com/sigstore/cosign/releases/download/v3.0.6/release-cosign.pub"
]
},
"v2.0.0-rc.3": {

View File

@@ -5,6 +5,12 @@ updates:
directory: "/"
schedule:
interval: "daily"
groups:
crazy-max-dot-github:
patterns:
- "crazy-max/.github/*"
cooldown:
default-days: 2
labels:
- "dependencies"
- "bot"
@@ -13,13 +19,11 @@ updates:
directory: "/"
schedule:
interval: "daily"
cooldown:
default-days: 2
versioning-strategy: "increase"
allow:
- dependency-type: "production"
ignore:
- # we want to match the same version as the one used by @actions/artifact
# https://github.com/actions/toolkit/blob/ae38557bb0dba824cdda26ce787bd6b66cf07a83/packages/artifact/package.json#L46
dependency-name: "@azure/storage-blob"
labels:
- "dependencies"
- "bot"

View File

@@ -1,8 +1,98 @@
{
"latest": {
"id": 265971746,
"tag_name": "docker-v29.1.1",
"html_url": "https://github.com/moby/moby/releases/tag/docker-v29.1.1",
"id": 311295981,
"tag_name": "docker-v29.4.1",
"html_url": "https://github.com/moby/moby/releases/tag/docker-v29.4.1",
"assets": []
},
"v29.4.1": {
"id": 311295981,
"tag_name": "docker-v29.4.1",
"html_url": "https://github.com/moby/moby/releases/tag/docker-v29.4.1",
"assets": []
},
"v29.4.0": {
"id": 305984249,
"tag_name": "docker-v29.4.0",
"html_url": "https://github.com/moby/moby/releases/tag/docker-v29.4.0",
"assets": []
},
"edge": {
"id": 311295981,
"tag_name": "docker-v29.4.1",
"html_url": "https://github.com/moby/moby/releases/tag/docker-v29.4.1",
"assets": []
},
"v29.4.0-rc.1": {
"id": 305082087,
"tag_name": "docker-v29.4.0-rc.1",
"html_url": "https://github.com/moby/moby/releases/tag/docker-v29.4.0-rc.1",
"assets": []
},
"v29.3.1": {
"id": 301291796,
"tag_name": "docker-v29.3.1",
"html_url": "https://github.com/moby/moby/releases/tag/docker-v29.3.1",
"assets": []
},
"v29.3.0": {
"id": 293527283,
"tag_name": "docker-v29.3.0",
"html_url": "https://github.com/moby/moby/releases/tag/docker-v29.3.0",
"assets": []
},
"v29.3.0-rc.1": {
"id": 291481223,
"tag_name": "docker-v29.3.0-rc.1",
"html_url": "https://github.com/moby/moby/releases/tag/docker-v29.3.0-rc.1",
"assets": []
},
"v29.2.1": {
"id": 282275652,
"tag_name": "docker-v29.2.1",
"html_url": "https://github.com/moby/moby/releases/tag/docker-v29.2.1",
"assets": []
},
"v29.2.0": {
"id": 280041206,
"tag_name": "docker-v29.2.0",
"html_url": "https://github.com/moby/moby/releases/tag/docker-v29.2.0",
"assets": []
},
"v29.2.0-rc.2": {
"id": 277933908,
"tag_name": "docker-v29.2.0-rc.2",
"html_url": "https://github.com/moby/moby/releases/tag/docker-v29.2.0-rc.2",
"assets": []
},
"v29.1.5": {
"id": 277389559,
"tag_name": "docker-v29.1.5",
"html_url": "https://github.com/moby/moby/releases/tag/docker-v29.1.5",
"assets": []
},
"v29.1.4": {
"id": 275290406,
"tag_name": "docker-v29.1.4",
"html_url": "https://github.com/moby/moby/releases/tag/docker-v29.1.4",
"assets": []
},
"v29.2.0-rc.1": {
"id": 271147963,
"tag_name": "docker-v29.2.0-rc.1",
"html_url": "https://github.com/moby/moby/releases/tag/docker-v29.2.0-rc.1",
"assets": []
},
"v29.1.3": {
"id": 269884470,
"tag_name": "docker-v29.1.3",
"html_url": "https://github.com/moby/moby/releases/tag/docker-v29.1.3",
"assets": []
},
"v29.1.2": {
"id": 266898070,
"tag_name": "docker-v29.1.2",
"html_url": "https://github.com/moby/moby/releases/tag/docker-v29.1.2",
"assets": []
},
"v29.1.1": {
@@ -35,12 +125,6 @@
"html_url": "https://github.com/moby/moby/releases/tag/docker-v29.0.2",
"assets": []
},
"edge": {
"id": 265971746,
"tag_name": "docker-v29.1.1",
"html_url": "https://github.com/moby/moby/releases/tag/docker-v29.1.1",
"assets": []
},
"v29.1.0-rc.1": {
"id": 263125085,
"tag_name": "docker-v29.1.0-rc.1",

View File

@@ -1,37 +1,142 @@
{
"latest": {
"id": 266508831,
"tag_name": "v0.11.0",
"html_url": "https://github.com/regclient/regclient/releases/tag/v0.11.0",
"id": 308364025,
"tag_name": "v0.11.3",
"html_url": "https://github.com/regclient/regclient/releases/tag/v0.11.3",
"assets": [
"https://github.com/regclient/regclient/releases/download/v0.11.0/metadata.tgz",
"https://github.com/regclient/regclient/releases/download/v0.11.0/regbot-darwin-amd64",
"https://github.com/regclient/regclient/releases/download/v0.11.0/regbot-darwin-arm64",
"https://github.com/regclient/regclient/releases/download/v0.11.0/regbot-freebsd-amd64",
"https://github.com/regclient/regclient/releases/download/v0.11.0/regbot-linux-amd64",
"https://github.com/regclient/regclient/releases/download/v0.11.0/regbot-linux-arm64",
"https://github.com/regclient/regclient/releases/download/v0.11.0/regbot-linux-ppc64le",
"https://github.com/regclient/regclient/releases/download/v0.11.0/regbot-linux-riscv64",
"https://github.com/regclient/regclient/releases/download/v0.11.0/regbot-linux-s390x",
"https://github.com/regclient/regclient/releases/download/v0.11.0/regbot-windows-amd64.exe",
"https://github.com/regclient/regclient/releases/download/v0.11.0/regctl-darwin-amd64",
"https://github.com/regclient/regclient/releases/download/v0.11.0/regctl-darwin-arm64",
"https://github.com/regclient/regclient/releases/download/v0.11.0/regctl-freebsd-amd64",
"https://github.com/regclient/regclient/releases/download/v0.11.0/regctl-linux-amd64",
"https://github.com/regclient/regclient/releases/download/v0.11.0/regctl-linux-arm64",
"https://github.com/regclient/regclient/releases/download/v0.11.0/regctl-linux-ppc64le",
"https://github.com/regclient/regclient/releases/download/v0.11.0/regctl-linux-riscv64",
"https://github.com/regclient/regclient/releases/download/v0.11.0/regctl-linux-s390x",
"https://github.com/regclient/regclient/releases/download/v0.11.0/regctl-windows-amd64.exe",
"https://github.com/regclient/regclient/releases/download/v0.11.0/regsync-darwin-amd64",
"https://github.com/regclient/regclient/releases/download/v0.11.0/regsync-darwin-arm64",
"https://github.com/regclient/regclient/releases/download/v0.11.0/regsync-freebsd-amd64",
"https://github.com/regclient/regclient/releases/download/v0.11.0/regsync-linux-amd64",
"https://github.com/regclient/regclient/releases/download/v0.11.0/regsync-linux-arm64",
"https://github.com/regclient/regclient/releases/download/v0.11.0/regsync-linux-ppc64le",
"https://github.com/regclient/regclient/releases/download/v0.11.0/regsync-linux-riscv64",
"https://github.com/regclient/regclient/releases/download/v0.11.0/regsync-linux-s390x",
"https://github.com/regclient/regclient/releases/download/v0.11.0/regsync-windows-amd64.exe"
"https://github.com/regclient/regclient/releases/download/v0.11.3/metadata.tgz",
"https://github.com/regclient/regclient/releases/download/v0.11.3/regbot-darwin-amd64",
"https://github.com/regclient/regclient/releases/download/v0.11.3/regbot-darwin-arm64",
"https://github.com/regclient/regclient/releases/download/v0.11.3/regbot-freebsd-amd64",
"https://github.com/regclient/regclient/releases/download/v0.11.3/regbot-linux-amd64",
"https://github.com/regclient/regclient/releases/download/v0.11.3/regbot-linux-arm64",
"https://github.com/regclient/regclient/releases/download/v0.11.3/regbot-linux-ppc64le",
"https://github.com/regclient/regclient/releases/download/v0.11.3/regbot-linux-riscv64",
"https://github.com/regclient/regclient/releases/download/v0.11.3/regbot-linux-s390x",
"https://github.com/regclient/regclient/releases/download/v0.11.3/regbot-windows-amd64.exe",
"https://github.com/regclient/regclient/releases/download/v0.11.3/regctl-darwin-amd64",
"https://github.com/regclient/regclient/releases/download/v0.11.3/regctl-darwin-arm64",
"https://github.com/regclient/regclient/releases/download/v0.11.3/regctl-freebsd-amd64",
"https://github.com/regclient/regclient/releases/download/v0.11.3/regctl-linux-amd64",
"https://github.com/regclient/regclient/releases/download/v0.11.3/regctl-linux-arm64",
"https://github.com/regclient/regclient/releases/download/v0.11.3/regctl-linux-ppc64le",
"https://github.com/regclient/regclient/releases/download/v0.11.3/regctl-linux-riscv64",
"https://github.com/regclient/regclient/releases/download/v0.11.3/regctl-linux-s390x",
"https://github.com/regclient/regclient/releases/download/v0.11.3/regctl-windows-amd64.exe",
"https://github.com/regclient/regclient/releases/download/v0.11.3/regsync-darwin-amd64",
"https://github.com/regclient/regclient/releases/download/v0.11.3/regsync-darwin-arm64",
"https://github.com/regclient/regclient/releases/download/v0.11.3/regsync-freebsd-amd64",
"https://github.com/regclient/regclient/releases/download/v0.11.3/regsync-linux-amd64",
"https://github.com/regclient/regclient/releases/download/v0.11.3/regsync-linux-arm64",
"https://github.com/regclient/regclient/releases/download/v0.11.3/regsync-linux-ppc64le",
"https://github.com/regclient/regclient/releases/download/v0.11.3/regsync-linux-riscv64",
"https://github.com/regclient/regclient/releases/download/v0.11.3/regsync-linux-s390x",
"https://github.com/regclient/regclient/releases/download/v0.11.3/regsync-windows-amd64.exe"
]
},
"v0.11.3": {
"id": 308364025,
"tag_name": "v0.11.3",
"html_url": "https://github.com/regclient/regclient/releases/tag/v0.11.3",
"assets": [
"https://github.com/regclient/regclient/releases/download/v0.11.3/metadata.tgz",
"https://github.com/regclient/regclient/releases/download/v0.11.3/regbot-darwin-amd64",
"https://github.com/regclient/regclient/releases/download/v0.11.3/regbot-darwin-arm64",
"https://github.com/regclient/regclient/releases/download/v0.11.3/regbot-freebsd-amd64",
"https://github.com/regclient/regclient/releases/download/v0.11.3/regbot-linux-amd64",
"https://github.com/regclient/regclient/releases/download/v0.11.3/regbot-linux-arm64",
"https://github.com/regclient/regclient/releases/download/v0.11.3/regbot-linux-ppc64le",
"https://github.com/regclient/regclient/releases/download/v0.11.3/regbot-linux-riscv64",
"https://github.com/regclient/regclient/releases/download/v0.11.3/regbot-linux-s390x",
"https://github.com/regclient/regclient/releases/download/v0.11.3/regbot-windows-amd64.exe",
"https://github.com/regclient/regclient/releases/download/v0.11.3/regctl-darwin-amd64",
"https://github.com/regclient/regclient/releases/download/v0.11.3/regctl-darwin-arm64",
"https://github.com/regclient/regclient/releases/download/v0.11.3/regctl-freebsd-amd64",
"https://github.com/regclient/regclient/releases/download/v0.11.3/regctl-linux-amd64",
"https://github.com/regclient/regclient/releases/download/v0.11.3/regctl-linux-arm64",
"https://github.com/regclient/regclient/releases/download/v0.11.3/regctl-linux-ppc64le",
"https://github.com/regclient/regclient/releases/download/v0.11.3/regctl-linux-riscv64",
"https://github.com/regclient/regclient/releases/download/v0.11.3/regctl-linux-s390x",
"https://github.com/regclient/regclient/releases/download/v0.11.3/regctl-windows-amd64.exe",
"https://github.com/regclient/regclient/releases/download/v0.11.3/regsync-darwin-amd64",
"https://github.com/regclient/regclient/releases/download/v0.11.3/regsync-darwin-arm64",
"https://github.com/regclient/regclient/releases/download/v0.11.3/regsync-freebsd-amd64",
"https://github.com/regclient/regclient/releases/download/v0.11.3/regsync-linux-amd64",
"https://github.com/regclient/regclient/releases/download/v0.11.3/regsync-linux-arm64",
"https://github.com/regclient/regclient/releases/download/v0.11.3/regsync-linux-ppc64le",
"https://github.com/regclient/regclient/releases/download/v0.11.3/regsync-linux-riscv64",
"https://github.com/regclient/regclient/releases/download/v0.11.3/regsync-linux-s390x",
"https://github.com/regclient/regclient/releases/download/v0.11.3/regsync-windows-amd64.exe"
]
},
"v0.11.2": {
"id": 289583033,
"tag_name": "v0.11.2",
"html_url": "https://github.com/regclient/regclient/releases/tag/v0.11.2",
"assets": [
"https://github.com/regclient/regclient/releases/download/v0.11.2/metadata.tgz",
"https://github.com/regclient/regclient/releases/download/v0.11.2/regbot-darwin-amd64",
"https://github.com/regclient/regclient/releases/download/v0.11.2/regbot-darwin-arm64",
"https://github.com/regclient/regclient/releases/download/v0.11.2/regbot-freebsd-amd64",
"https://github.com/regclient/regclient/releases/download/v0.11.2/regbot-linux-amd64",
"https://github.com/regclient/regclient/releases/download/v0.11.2/regbot-linux-arm64",
"https://github.com/regclient/regclient/releases/download/v0.11.2/regbot-linux-ppc64le",
"https://github.com/regclient/regclient/releases/download/v0.11.2/regbot-linux-riscv64",
"https://github.com/regclient/regclient/releases/download/v0.11.2/regbot-linux-s390x",
"https://github.com/regclient/regclient/releases/download/v0.11.2/regbot-windows-amd64.exe",
"https://github.com/regclient/regclient/releases/download/v0.11.2/regctl-darwin-amd64",
"https://github.com/regclient/regclient/releases/download/v0.11.2/regctl-darwin-arm64",
"https://github.com/regclient/regclient/releases/download/v0.11.2/regctl-freebsd-amd64",
"https://github.com/regclient/regclient/releases/download/v0.11.2/regctl-linux-amd64",
"https://github.com/regclient/regclient/releases/download/v0.11.2/regctl-linux-arm64",
"https://github.com/regclient/regclient/releases/download/v0.11.2/regctl-linux-ppc64le",
"https://github.com/regclient/regclient/releases/download/v0.11.2/regctl-linux-riscv64",
"https://github.com/regclient/regclient/releases/download/v0.11.2/regctl-linux-s390x",
"https://github.com/regclient/regclient/releases/download/v0.11.2/regctl-windows-amd64.exe",
"https://github.com/regclient/regclient/releases/download/v0.11.2/regsync-darwin-amd64",
"https://github.com/regclient/regclient/releases/download/v0.11.2/regsync-darwin-arm64",
"https://github.com/regclient/regclient/releases/download/v0.11.2/regsync-freebsd-amd64",
"https://github.com/regclient/regclient/releases/download/v0.11.2/regsync-linux-amd64",
"https://github.com/regclient/regclient/releases/download/v0.11.2/regsync-linux-arm64",
"https://github.com/regclient/regclient/releases/download/v0.11.2/regsync-linux-ppc64le",
"https://github.com/regclient/regclient/releases/download/v0.11.2/regsync-linux-riscv64",
"https://github.com/regclient/regclient/releases/download/v0.11.2/regsync-linux-s390x",
"https://github.com/regclient/regclient/releases/download/v0.11.2/regsync-windows-amd64.exe"
]
},
"v0.11.1": {
"id": 268115419,
"tag_name": "v0.11.1",
"html_url": "https://github.com/regclient/regclient/releases/tag/v0.11.1",
"assets": [
"https://github.com/regclient/regclient/releases/download/v0.11.1/metadata.tgz",
"https://github.com/regclient/regclient/releases/download/v0.11.1/regbot-darwin-amd64",
"https://github.com/regclient/regclient/releases/download/v0.11.1/regbot-darwin-arm64",
"https://github.com/regclient/regclient/releases/download/v0.11.1/regbot-freebsd-amd64",
"https://github.com/regclient/regclient/releases/download/v0.11.1/regbot-linux-amd64",
"https://github.com/regclient/regclient/releases/download/v0.11.1/regbot-linux-arm64",
"https://github.com/regclient/regclient/releases/download/v0.11.1/regbot-linux-ppc64le",
"https://github.com/regclient/regclient/releases/download/v0.11.1/regbot-linux-riscv64",
"https://github.com/regclient/regclient/releases/download/v0.11.1/regbot-linux-s390x",
"https://github.com/regclient/regclient/releases/download/v0.11.1/regbot-windows-amd64.exe",
"https://github.com/regclient/regclient/releases/download/v0.11.1/regctl-darwin-amd64",
"https://github.com/regclient/regclient/releases/download/v0.11.1/regctl-darwin-arm64",
"https://github.com/regclient/regclient/releases/download/v0.11.1/regctl-freebsd-amd64",
"https://github.com/regclient/regclient/releases/download/v0.11.1/regctl-linux-amd64",
"https://github.com/regclient/regclient/releases/download/v0.11.1/regctl-linux-arm64",
"https://github.com/regclient/regclient/releases/download/v0.11.1/regctl-linux-ppc64le",
"https://github.com/regclient/regclient/releases/download/v0.11.1/regctl-linux-riscv64",
"https://github.com/regclient/regclient/releases/download/v0.11.1/regctl-linux-s390x",
"https://github.com/regclient/regclient/releases/download/v0.11.1/regctl-windows-amd64.exe",
"https://github.com/regclient/regclient/releases/download/v0.11.1/regsync-darwin-amd64",
"https://github.com/regclient/regclient/releases/download/v0.11.1/regsync-darwin-arm64",
"https://github.com/regclient/regclient/releases/download/v0.11.1/regsync-freebsd-amd64",
"https://github.com/regclient/regclient/releases/download/v0.11.1/regsync-linux-amd64",
"https://github.com/regclient/regclient/releases/download/v0.11.1/regsync-linux-arm64",
"https://github.com/regclient/regclient/releases/download/v0.11.1/regsync-linux-ppc64le",
"https://github.com/regclient/regclient/releases/download/v0.11.1/regsync-linux-riscv64",
"https://github.com/regclient/regclient/releases/download/v0.11.1/regsync-linux-s390x",
"https://github.com/regclient/regclient/releases/download/v0.11.1/regsync-windows-amd64.exe"
]
},
"v0.11.0": {

View File

@@ -1,46 +1,134 @@
{
"latest": {
"id": 213293369,
"tag_name": "v0.10.0",
"html_url": "https://github.com/crazy-max/undock/releases/tag/v0.10.0",
"id": 307426692,
"tag_name": "v0.12.0",
"html_url": "https://github.com/crazy-max/undock/releases/tag/v0.12.0",
"assets": [
"https://github.com/crazy-max/undock/releases/download/v0.10.0/checksums.txt",
"https://github.com/crazy-max/undock/releases/download/v0.10.0/undock_0.10.0_darwin_amd64.provenance.json",
"https://github.com/crazy-max/undock/releases/download/v0.10.0/undock_0.10.0_darwin_amd64.sbom.json",
"https://github.com/crazy-max/undock/releases/download/v0.10.0/undock_0.10.0_darwin_amd64.tar.gz",
"https://github.com/crazy-max/undock/releases/download/v0.10.0/undock_0.10.0_darwin_arm64.provenance.json",
"https://github.com/crazy-max/undock/releases/download/v0.10.0/undock_0.10.0_darwin_arm64.sbom.json",
"https://github.com/crazy-max/undock/releases/download/v0.10.0/undock_0.10.0_darwin_arm64.tar.gz",
"https://github.com/crazy-max/undock/releases/download/v0.10.0/undock_0.10.0_linux_amd64.provenance.json",
"https://github.com/crazy-max/undock/releases/download/v0.10.0/undock_0.10.0_linux_amd64.sbom.json",
"https://github.com/crazy-max/undock/releases/download/v0.10.0/undock_0.10.0_linux_amd64.tar.gz",
"https://github.com/crazy-max/undock/releases/download/v0.10.0/undock_0.10.0_linux_arm64.provenance.json",
"https://github.com/crazy-max/undock/releases/download/v0.10.0/undock_0.10.0_linux_arm64.sbom.json",
"https://github.com/crazy-max/undock/releases/download/v0.10.0/undock_0.10.0_linux_arm64.tar.gz",
"https://github.com/crazy-max/undock/releases/download/v0.10.0/undock_0.10.0_linux_armv5.provenance.json",
"https://github.com/crazy-max/undock/releases/download/v0.10.0/undock_0.10.0_linux_armv5.sbom.json",
"https://github.com/crazy-max/undock/releases/download/v0.10.0/undock_0.10.0_linux_armv5.tar.gz",
"https://github.com/crazy-max/undock/releases/download/v0.10.0/undock_0.10.0_linux_armv6.provenance.json",
"https://github.com/crazy-max/undock/releases/download/v0.10.0/undock_0.10.0_linux_armv6.sbom.json",
"https://github.com/crazy-max/undock/releases/download/v0.10.0/undock_0.10.0_linux_armv6.tar.gz",
"https://github.com/crazy-max/undock/releases/download/v0.10.0/undock_0.10.0_linux_armv7.provenance.json",
"https://github.com/crazy-max/undock/releases/download/v0.10.0/undock_0.10.0_linux_armv7.sbom.json",
"https://github.com/crazy-max/undock/releases/download/v0.10.0/undock_0.10.0_linux_armv7.tar.gz",
"https://github.com/crazy-max/undock/releases/download/v0.10.0/undock_0.10.0_linux_ppc64le.provenance.json",
"https://github.com/crazy-max/undock/releases/download/v0.10.0/undock_0.10.0_linux_ppc64le.sbom.json",
"https://github.com/crazy-max/undock/releases/download/v0.10.0/undock_0.10.0_linux_ppc64le.tar.gz",
"https://github.com/crazy-max/undock/releases/download/v0.10.0/undock_0.10.0_linux_riscv64.provenance.json",
"https://github.com/crazy-max/undock/releases/download/v0.10.0/undock_0.10.0_linux_riscv64.sbom.json",
"https://github.com/crazy-max/undock/releases/download/v0.10.0/undock_0.10.0_linux_riscv64.tar.gz",
"https://github.com/crazy-max/undock/releases/download/v0.10.0/undock_0.10.0_linux_s390x.provenance.json",
"https://github.com/crazy-max/undock/releases/download/v0.10.0/undock_0.10.0_linux_s390x.sbom.json",
"https://github.com/crazy-max/undock/releases/download/v0.10.0/undock_0.10.0_linux_s390x.tar.gz",
"https://github.com/crazy-max/undock/releases/download/v0.10.0/undock_0.10.0_windows_amd64.provenance.json",
"https://github.com/crazy-max/undock/releases/download/v0.10.0/undock_0.10.0_windows_amd64.sbom.json",
"https://github.com/crazy-max/undock/releases/download/v0.10.0/undock_0.10.0_windows_amd64.zip",
"https://github.com/crazy-max/undock/releases/download/v0.10.0/undock_0.10.0_windows_arm64.provenance.json",
"https://github.com/crazy-max/undock/releases/download/v0.10.0/undock_0.10.0_windows_arm64.sbom.json",
"https://github.com/crazy-max/undock/releases/download/v0.10.0/undock_0.10.0_windows_arm64.zip"
"https://github.com/crazy-max/undock/releases/download/v0.12.0/checksums.txt",
"https://github.com/crazy-max/undock/releases/download/v0.12.0/undock_0.12.0_darwin_amd64.provenance.json",
"https://github.com/crazy-max/undock/releases/download/v0.12.0/undock_0.12.0_darwin_amd64.sbom.json",
"https://github.com/crazy-max/undock/releases/download/v0.12.0/undock_0.12.0_darwin_amd64.tar.gz",
"https://github.com/crazy-max/undock/releases/download/v0.12.0/undock_0.12.0_darwin_arm64.provenance.json",
"https://github.com/crazy-max/undock/releases/download/v0.12.0/undock_0.12.0_darwin_arm64.sbom.json",
"https://github.com/crazy-max/undock/releases/download/v0.12.0/undock_0.12.0_darwin_arm64.tar.gz",
"https://github.com/crazy-max/undock/releases/download/v0.12.0/undock_0.12.0_linux_amd64.provenance.json",
"https://github.com/crazy-max/undock/releases/download/v0.12.0/undock_0.12.0_linux_amd64.sbom.json",
"https://github.com/crazy-max/undock/releases/download/v0.12.0/undock_0.12.0_linux_amd64.tar.gz",
"https://github.com/crazy-max/undock/releases/download/v0.12.0/undock_0.12.0_linux_arm64.provenance.json",
"https://github.com/crazy-max/undock/releases/download/v0.12.0/undock_0.12.0_linux_arm64.sbom.json",
"https://github.com/crazy-max/undock/releases/download/v0.12.0/undock_0.12.0_linux_arm64.tar.gz",
"https://github.com/crazy-max/undock/releases/download/v0.12.0/undock_0.12.0_linux_armv5.provenance.json",
"https://github.com/crazy-max/undock/releases/download/v0.12.0/undock_0.12.0_linux_armv5.sbom.json",
"https://github.com/crazy-max/undock/releases/download/v0.12.0/undock_0.12.0_linux_armv5.tar.gz",
"https://github.com/crazy-max/undock/releases/download/v0.12.0/undock_0.12.0_linux_armv6.provenance.json",
"https://github.com/crazy-max/undock/releases/download/v0.12.0/undock_0.12.0_linux_armv6.sbom.json",
"https://github.com/crazy-max/undock/releases/download/v0.12.0/undock_0.12.0_linux_armv6.tar.gz",
"https://github.com/crazy-max/undock/releases/download/v0.12.0/undock_0.12.0_linux_armv7.provenance.json",
"https://github.com/crazy-max/undock/releases/download/v0.12.0/undock_0.12.0_linux_armv7.sbom.json",
"https://github.com/crazy-max/undock/releases/download/v0.12.0/undock_0.12.0_linux_armv7.tar.gz",
"https://github.com/crazy-max/undock/releases/download/v0.12.0/undock_0.12.0_linux_ppc64le.provenance.json",
"https://github.com/crazy-max/undock/releases/download/v0.12.0/undock_0.12.0_linux_ppc64le.sbom.json",
"https://github.com/crazy-max/undock/releases/download/v0.12.0/undock_0.12.0_linux_ppc64le.tar.gz",
"https://github.com/crazy-max/undock/releases/download/v0.12.0/undock_0.12.0_linux_riscv64.provenance.json",
"https://github.com/crazy-max/undock/releases/download/v0.12.0/undock_0.12.0_linux_riscv64.sbom.json",
"https://github.com/crazy-max/undock/releases/download/v0.12.0/undock_0.12.0_linux_riscv64.tar.gz",
"https://github.com/crazy-max/undock/releases/download/v0.12.0/undock_0.12.0_linux_s390x.provenance.json",
"https://github.com/crazy-max/undock/releases/download/v0.12.0/undock_0.12.0_linux_s390x.sbom.json",
"https://github.com/crazy-max/undock/releases/download/v0.12.0/undock_0.12.0_linux_s390x.tar.gz",
"https://github.com/crazy-max/undock/releases/download/v0.12.0/undock_0.12.0_windows_amd64.provenance.json",
"https://github.com/crazy-max/undock/releases/download/v0.12.0/undock_0.12.0_windows_amd64.sbom.json",
"https://github.com/crazy-max/undock/releases/download/v0.12.0/undock_0.12.0_windows_amd64.zip",
"https://github.com/crazy-max/undock/releases/download/v0.12.0/undock_0.12.0_windows_arm64.provenance.json",
"https://github.com/crazy-max/undock/releases/download/v0.12.0/undock_0.12.0_windows_arm64.sbom.json",
"https://github.com/crazy-max/undock/releases/download/v0.12.0/undock_0.12.0_windows_arm64.zip"
]
},
"v0.12.0": {
"id": 307426692,
"tag_name": "v0.12.0",
"html_url": "https://github.com/crazy-max/undock/releases/tag/v0.12.0",
"assets": [
"https://github.com/crazy-max/undock/releases/download/v0.12.0/checksums.txt",
"https://github.com/crazy-max/undock/releases/download/v0.12.0/undock_0.12.0_darwin_amd64.provenance.json",
"https://github.com/crazy-max/undock/releases/download/v0.12.0/undock_0.12.0_darwin_amd64.sbom.json",
"https://github.com/crazy-max/undock/releases/download/v0.12.0/undock_0.12.0_darwin_amd64.tar.gz",
"https://github.com/crazy-max/undock/releases/download/v0.12.0/undock_0.12.0_darwin_arm64.provenance.json",
"https://github.com/crazy-max/undock/releases/download/v0.12.0/undock_0.12.0_darwin_arm64.sbom.json",
"https://github.com/crazy-max/undock/releases/download/v0.12.0/undock_0.12.0_darwin_arm64.tar.gz",
"https://github.com/crazy-max/undock/releases/download/v0.12.0/undock_0.12.0_linux_amd64.provenance.json",
"https://github.com/crazy-max/undock/releases/download/v0.12.0/undock_0.12.0_linux_amd64.sbom.json",
"https://github.com/crazy-max/undock/releases/download/v0.12.0/undock_0.12.0_linux_amd64.tar.gz",
"https://github.com/crazy-max/undock/releases/download/v0.12.0/undock_0.12.0_linux_arm64.provenance.json",
"https://github.com/crazy-max/undock/releases/download/v0.12.0/undock_0.12.0_linux_arm64.sbom.json",
"https://github.com/crazy-max/undock/releases/download/v0.12.0/undock_0.12.0_linux_arm64.tar.gz",
"https://github.com/crazy-max/undock/releases/download/v0.12.0/undock_0.12.0_linux_armv5.provenance.json",
"https://github.com/crazy-max/undock/releases/download/v0.12.0/undock_0.12.0_linux_armv5.sbom.json",
"https://github.com/crazy-max/undock/releases/download/v0.12.0/undock_0.12.0_linux_armv5.tar.gz",
"https://github.com/crazy-max/undock/releases/download/v0.12.0/undock_0.12.0_linux_armv6.provenance.json",
"https://github.com/crazy-max/undock/releases/download/v0.12.0/undock_0.12.0_linux_armv6.sbom.json",
"https://github.com/crazy-max/undock/releases/download/v0.12.0/undock_0.12.0_linux_armv6.tar.gz",
"https://github.com/crazy-max/undock/releases/download/v0.12.0/undock_0.12.0_linux_armv7.provenance.json",
"https://github.com/crazy-max/undock/releases/download/v0.12.0/undock_0.12.0_linux_armv7.sbom.json",
"https://github.com/crazy-max/undock/releases/download/v0.12.0/undock_0.12.0_linux_armv7.tar.gz",
"https://github.com/crazy-max/undock/releases/download/v0.12.0/undock_0.12.0_linux_ppc64le.provenance.json",
"https://github.com/crazy-max/undock/releases/download/v0.12.0/undock_0.12.0_linux_ppc64le.sbom.json",
"https://github.com/crazy-max/undock/releases/download/v0.12.0/undock_0.12.0_linux_ppc64le.tar.gz",
"https://github.com/crazy-max/undock/releases/download/v0.12.0/undock_0.12.0_linux_riscv64.provenance.json",
"https://github.com/crazy-max/undock/releases/download/v0.12.0/undock_0.12.0_linux_riscv64.sbom.json",
"https://github.com/crazy-max/undock/releases/download/v0.12.0/undock_0.12.0_linux_riscv64.tar.gz",
"https://github.com/crazy-max/undock/releases/download/v0.12.0/undock_0.12.0_linux_s390x.provenance.json",
"https://github.com/crazy-max/undock/releases/download/v0.12.0/undock_0.12.0_linux_s390x.sbom.json",
"https://github.com/crazy-max/undock/releases/download/v0.12.0/undock_0.12.0_linux_s390x.tar.gz",
"https://github.com/crazy-max/undock/releases/download/v0.12.0/undock_0.12.0_windows_amd64.provenance.json",
"https://github.com/crazy-max/undock/releases/download/v0.12.0/undock_0.12.0_windows_amd64.sbom.json",
"https://github.com/crazy-max/undock/releases/download/v0.12.0/undock_0.12.0_windows_amd64.zip",
"https://github.com/crazy-max/undock/releases/download/v0.12.0/undock_0.12.0_windows_arm64.provenance.json",
"https://github.com/crazy-max/undock/releases/download/v0.12.0/undock_0.12.0_windows_arm64.sbom.json",
"https://github.com/crazy-max/undock/releases/download/v0.12.0/undock_0.12.0_windows_arm64.zip"
]
},
"v0.11.0": {
"id": 273439938,
"tag_name": "v0.11.0",
"html_url": "https://github.com/crazy-max/undock/releases/tag/v0.11.0",
"assets": [
"https://github.com/crazy-max/undock/releases/download/v0.11.0/checksums.txt",
"https://github.com/crazy-max/undock/releases/download/v0.11.0/undock_0.11.0_darwin_amd64.provenance.json",
"https://github.com/crazy-max/undock/releases/download/v0.11.0/undock_0.11.0_darwin_amd64.sbom.json",
"https://github.com/crazy-max/undock/releases/download/v0.11.0/undock_0.11.0_darwin_amd64.tar.gz",
"https://github.com/crazy-max/undock/releases/download/v0.11.0/undock_0.11.0_darwin_arm64.provenance.json",
"https://github.com/crazy-max/undock/releases/download/v0.11.0/undock_0.11.0_darwin_arm64.sbom.json",
"https://github.com/crazy-max/undock/releases/download/v0.11.0/undock_0.11.0_darwin_arm64.tar.gz",
"https://github.com/crazy-max/undock/releases/download/v0.11.0/undock_0.11.0_linux_amd64.provenance.json",
"https://github.com/crazy-max/undock/releases/download/v0.11.0/undock_0.11.0_linux_amd64.sbom.json",
"https://github.com/crazy-max/undock/releases/download/v0.11.0/undock_0.11.0_linux_amd64.tar.gz",
"https://github.com/crazy-max/undock/releases/download/v0.11.0/undock_0.11.0_linux_arm64.provenance.json",
"https://github.com/crazy-max/undock/releases/download/v0.11.0/undock_0.11.0_linux_arm64.sbom.json",
"https://github.com/crazy-max/undock/releases/download/v0.11.0/undock_0.11.0_linux_arm64.tar.gz",
"https://github.com/crazy-max/undock/releases/download/v0.11.0/undock_0.11.0_linux_armv5.provenance.json",
"https://github.com/crazy-max/undock/releases/download/v0.11.0/undock_0.11.0_linux_armv5.sbom.json",
"https://github.com/crazy-max/undock/releases/download/v0.11.0/undock_0.11.0_linux_armv5.tar.gz",
"https://github.com/crazy-max/undock/releases/download/v0.11.0/undock_0.11.0_linux_armv6.provenance.json",
"https://github.com/crazy-max/undock/releases/download/v0.11.0/undock_0.11.0_linux_armv6.sbom.json",
"https://github.com/crazy-max/undock/releases/download/v0.11.0/undock_0.11.0_linux_armv6.tar.gz",
"https://github.com/crazy-max/undock/releases/download/v0.11.0/undock_0.11.0_linux_armv7.provenance.json",
"https://github.com/crazy-max/undock/releases/download/v0.11.0/undock_0.11.0_linux_armv7.sbom.json",
"https://github.com/crazy-max/undock/releases/download/v0.11.0/undock_0.11.0_linux_armv7.tar.gz",
"https://github.com/crazy-max/undock/releases/download/v0.11.0/undock_0.11.0_linux_ppc64le.provenance.json",
"https://github.com/crazy-max/undock/releases/download/v0.11.0/undock_0.11.0_linux_ppc64le.sbom.json",
"https://github.com/crazy-max/undock/releases/download/v0.11.0/undock_0.11.0_linux_ppc64le.tar.gz",
"https://github.com/crazy-max/undock/releases/download/v0.11.0/undock_0.11.0_linux_riscv64.provenance.json",
"https://github.com/crazy-max/undock/releases/download/v0.11.0/undock_0.11.0_linux_riscv64.sbom.json",
"https://github.com/crazy-max/undock/releases/download/v0.11.0/undock_0.11.0_linux_riscv64.tar.gz",
"https://github.com/crazy-max/undock/releases/download/v0.11.0/undock_0.11.0_linux_s390x.provenance.json",
"https://github.com/crazy-max/undock/releases/download/v0.11.0/undock_0.11.0_linux_s390x.sbom.json",
"https://github.com/crazy-max/undock/releases/download/v0.11.0/undock_0.11.0_linux_s390x.tar.gz",
"https://github.com/crazy-max/undock/releases/download/v0.11.0/undock_0.11.0_windows_amd64.provenance.json",
"https://github.com/crazy-max/undock/releases/download/v0.11.0/undock_0.11.0_windows_amd64.sbom.json",
"https://github.com/crazy-max/undock/releases/download/v0.11.0/undock_0.11.0_windows_amd64.zip",
"https://github.com/crazy-max/undock/releases/download/v0.11.0/undock_0.11.0_windows_arm64.provenance.json",
"https://github.com/crazy-max/undock/releases/download/v0.11.0/undock_0.11.0_windows_arm64.sbom.json",
"https://github.com/crazy-max/undock/releases/download/v0.11.0/undock_0.11.0_windows_arm64.zip"
]
},
"v0.10.0": {
@@ -197,47 +285,47 @@
]
},
"edge": {
"id": 213293369,
"tag_name": "v0.10.0",
"html_url": "https://github.com/crazy-max/undock/releases/tag/v0.10.0",
"id": 307426692,
"tag_name": "v0.12.0",
"html_url": "https://github.com/crazy-max/undock/releases/tag/v0.12.0",
"assets": [
"https://github.com/crazy-max/undock/releases/download/v0.10.0/checksums.txt",
"https://github.com/crazy-max/undock/releases/download/v0.10.0/undock_0.10.0_darwin_amd64.provenance.json",
"https://github.com/crazy-max/undock/releases/download/v0.10.0/undock_0.10.0_darwin_amd64.sbom.json",
"https://github.com/crazy-max/undock/releases/download/v0.10.0/undock_0.10.0_darwin_amd64.tar.gz",
"https://github.com/crazy-max/undock/releases/download/v0.10.0/undock_0.10.0_darwin_arm64.provenance.json",
"https://github.com/crazy-max/undock/releases/download/v0.10.0/undock_0.10.0_darwin_arm64.sbom.json",
"https://github.com/crazy-max/undock/releases/download/v0.10.0/undock_0.10.0_darwin_arm64.tar.gz",
"https://github.com/crazy-max/undock/releases/download/v0.10.0/undock_0.10.0_linux_amd64.provenance.json",
"https://github.com/crazy-max/undock/releases/download/v0.10.0/undock_0.10.0_linux_amd64.sbom.json",
"https://github.com/crazy-max/undock/releases/download/v0.10.0/undock_0.10.0_linux_amd64.tar.gz",
"https://github.com/crazy-max/undock/releases/download/v0.10.0/undock_0.10.0_linux_arm64.provenance.json",
"https://github.com/crazy-max/undock/releases/download/v0.10.0/undock_0.10.0_linux_arm64.sbom.json",
"https://github.com/crazy-max/undock/releases/download/v0.10.0/undock_0.10.0_linux_arm64.tar.gz",
"https://github.com/crazy-max/undock/releases/download/v0.10.0/undock_0.10.0_linux_armv5.provenance.json",
"https://github.com/crazy-max/undock/releases/download/v0.10.0/undock_0.10.0_linux_armv5.sbom.json",
"https://github.com/crazy-max/undock/releases/download/v0.10.0/undock_0.10.0_linux_armv5.tar.gz",
"https://github.com/crazy-max/undock/releases/download/v0.10.0/undock_0.10.0_linux_armv6.provenance.json",
"https://github.com/crazy-max/undock/releases/download/v0.10.0/undock_0.10.0_linux_armv6.sbom.json",
"https://github.com/crazy-max/undock/releases/download/v0.10.0/undock_0.10.0_linux_armv6.tar.gz",
"https://github.com/crazy-max/undock/releases/download/v0.10.0/undock_0.10.0_linux_armv7.provenance.json",
"https://github.com/crazy-max/undock/releases/download/v0.10.0/undock_0.10.0_linux_armv7.sbom.json",
"https://github.com/crazy-max/undock/releases/download/v0.10.0/undock_0.10.0_linux_armv7.tar.gz",
"https://github.com/crazy-max/undock/releases/download/v0.10.0/undock_0.10.0_linux_ppc64le.provenance.json",
"https://github.com/crazy-max/undock/releases/download/v0.10.0/undock_0.10.0_linux_ppc64le.sbom.json",
"https://github.com/crazy-max/undock/releases/download/v0.10.0/undock_0.10.0_linux_ppc64le.tar.gz",
"https://github.com/crazy-max/undock/releases/download/v0.10.0/undock_0.10.0_linux_riscv64.provenance.json",
"https://github.com/crazy-max/undock/releases/download/v0.10.0/undock_0.10.0_linux_riscv64.sbom.json",
"https://github.com/crazy-max/undock/releases/download/v0.10.0/undock_0.10.0_linux_riscv64.tar.gz",
"https://github.com/crazy-max/undock/releases/download/v0.10.0/undock_0.10.0_linux_s390x.provenance.json",
"https://github.com/crazy-max/undock/releases/download/v0.10.0/undock_0.10.0_linux_s390x.sbom.json",
"https://github.com/crazy-max/undock/releases/download/v0.10.0/undock_0.10.0_linux_s390x.tar.gz",
"https://github.com/crazy-max/undock/releases/download/v0.10.0/undock_0.10.0_windows_amd64.provenance.json",
"https://github.com/crazy-max/undock/releases/download/v0.10.0/undock_0.10.0_windows_amd64.sbom.json",
"https://github.com/crazy-max/undock/releases/download/v0.10.0/undock_0.10.0_windows_amd64.zip",
"https://github.com/crazy-max/undock/releases/download/v0.10.0/undock_0.10.0_windows_arm64.provenance.json",
"https://github.com/crazy-max/undock/releases/download/v0.10.0/undock_0.10.0_windows_arm64.sbom.json",
"https://github.com/crazy-max/undock/releases/download/v0.10.0/undock_0.10.0_windows_arm64.zip"
"https://github.com/crazy-max/undock/releases/download/v0.12.0/checksums.txt",
"https://github.com/crazy-max/undock/releases/download/v0.12.0/undock_0.12.0_darwin_amd64.provenance.json",
"https://github.com/crazy-max/undock/releases/download/v0.12.0/undock_0.12.0_darwin_amd64.sbom.json",
"https://github.com/crazy-max/undock/releases/download/v0.12.0/undock_0.12.0_darwin_amd64.tar.gz",
"https://github.com/crazy-max/undock/releases/download/v0.12.0/undock_0.12.0_darwin_arm64.provenance.json",
"https://github.com/crazy-max/undock/releases/download/v0.12.0/undock_0.12.0_darwin_arm64.sbom.json",
"https://github.com/crazy-max/undock/releases/download/v0.12.0/undock_0.12.0_darwin_arm64.tar.gz",
"https://github.com/crazy-max/undock/releases/download/v0.12.0/undock_0.12.0_linux_amd64.provenance.json",
"https://github.com/crazy-max/undock/releases/download/v0.12.0/undock_0.12.0_linux_amd64.sbom.json",
"https://github.com/crazy-max/undock/releases/download/v0.12.0/undock_0.12.0_linux_amd64.tar.gz",
"https://github.com/crazy-max/undock/releases/download/v0.12.0/undock_0.12.0_linux_arm64.provenance.json",
"https://github.com/crazy-max/undock/releases/download/v0.12.0/undock_0.12.0_linux_arm64.sbom.json",
"https://github.com/crazy-max/undock/releases/download/v0.12.0/undock_0.12.0_linux_arm64.tar.gz",
"https://github.com/crazy-max/undock/releases/download/v0.12.0/undock_0.12.0_linux_armv5.provenance.json",
"https://github.com/crazy-max/undock/releases/download/v0.12.0/undock_0.12.0_linux_armv5.sbom.json",
"https://github.com/crazy-max/undock/releases/download/v0.12.0/undock_0.12.0_linux_armv5.tar.gz",
"https://github.com/crazy-max/undock/releases/download/v0.12.0/undock_0.12.0_linux_armv6.provenance.json",
"https://github.com/crazy-max/undock/releases/download/v0.12.0/undock_0.12.0_linux_armv6.sbom.json",
"https://github.com/crazy-max/undock/releases/download/v0.12.0/undock_0.12.0_linux_armv6.tar.gz",
"https://github.com/crazy-max/undock/releases/download/v0.12.0/undock_0.12.0_linux_armv7.provenance.json",
"https://github.com/crazy-max/undock/releases/download/v0.12.0/undock_0.12.0_linux_armv7.sbom.json",
"https://github.com/crazy-max/undock/releases/download/v0.12.0/undock_0.12.0_linux_armv7.tar.gz",
"https://github.com/crazy-max/undock/releases/download/v0.12.0/undock_0.12.0_linux_ppc64le.provenance.json",
"https://github.com/crazy-max/undock/releases/download/v0.12.0/undock_0.12.0_linux_ppc64le.sbom.json",
"https://github.com/crazy-max/undock/releases/download/v0.12.0/undock_0.12.0_linux_ppc64le.tar.gz",
"https://github.com/crazy-max/undock/releases/download/v0.12.0/undock_0.12.0_linux_riscv64.provenance.json",
"https://github.com/crazy-max/undock/releases/download/v0.12.0/undock_0.12.0_linux_riscv64.sbom.json",
"https://github.com/crazy-max/undock/releases/download/v0.12.0/undock_0.12.0_linux_riscv64.tar.gz",
"https://github.com/crazy-max/undock/releases/download/v0.12.0/undock_0.12.0_linux_s390x.provenance.json",
"https://github.com/crazy-max/undock/releases/download/v0.12.0/undock_0.12.0_linux_s390x.sbom.json",
"https://github.com/crazy-max/undock/releases/download/v0.12.0/undock_0.12.0_linux_s390x.tar.gz",
"https://github.com/crazy-max/undock/releases/download/v0.12.0/undock_0.12.0_windows_amd64.provenance.json",
"https://github.com/crazy-max/undock/releases/download/v0.12.0/undock_0.12.0_windows_amd64.sbom.json",
"https://github.com/crazy-max/undock/releases/download/v0.12.0/undock_0.12.0_windows_amd64.zip",
"https://github.com/crazy-max/undock/releases/download/v0.12.0/undock_0.12.0_windows_arm64.provenance.json",
"https://github.com/crazy-max/undock/releases/download/v0.12.0/undock_0.12.0_windows_arm64.sbom.json",
"https://github.com/crazy-max/undock/releases/download/v0.12.0/undock_0.12.0_windows_arm64.zip"
]
},
"v0.7.0-rc.1": {

View File

@@ -4,6 +4,9 @@ concurrency:
group: ${{ github.workflow }}-${{ github.ref }}
cancel-in-progress: true
permissions:
contents: read
on:
push:
branches:
@@ -21,11 +24,10 @@ jobs:
node_version:
- 24
- 20
- 18
steps:
-
name: Build
uses: docker/bake-action@v6
uses: docker/bake-action@a66e1c87e2eca0503c343edf1d208c716d54b8a8 # v7.1.0
with:
targets: build
env:

View File

@@ -4,6 +4,9 @@ concurrency:
group: ${{ github.workflow }}-${{ github.ref }}
cancel-in-progress: true
permissions:
contents: read
on:
workflow_dispatch:
schedule:
@@ -17,25 +20,27 @@ on:
jobs:
generate:
uses: crazy-max/.github/.github/workflows/releases-json.yml@2842b806167c9dbacf5f972e0fcf47204a99d987
uses: crazy-max/.github/.github/workflows/releases-json.yml@64a0bfaf6e6bb1c448d6e4c42b11034ee7094f16 # v1.7.1
with:
repository: docker/buildx-desktop
artifact_name: buildx-lab-releases-json
filename: buildx-lab-releases.json
secrets: inherit
open-pr:
runs-on: ubuntu-24.04
if: github.event_name != 'pull_request'
permissions:
contents: write
pull-requests: write
needs:
- generate
steps:
-
name: Checkout
uses: actions/checkout@v6
uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
-
name: Download
uses: actions/download-artifact@v6
uses: actions/download-artifact@3e5f45b2cfb9172054b4087a40e8e0b5a5461e7c # v8.0.1
with:
name: buildx-lab-releases-json
path: .github
@@ -45,7 +50,7 @@ jobs:
git add -A .
-
name: Create PR
uses: peter-evans/create-pull-request@84ae59a2cdc2258d6fa0732dd66352dddae2a412 # v7.0.9
uses: peter-evans/create-pull-request@5f6978faf089d4d20b00c7766989d076bb2fc7f1 # v8.1.1
with:
base: main
branch: bot/buildx-lab-releases-json

View File

@@ -4,6 +4,9 @@ concurrency:
group: ${{ github.workflow }}-${{ github.ref }}
cancel-in-progress: true
permissions:
contents: read
on:
workflow_dispatch:
schedule:
@@ -17,25 +20,27 @@ on:
jobs:
generate:
uses: crazy-max/.github/.github/workflows/releases-json.yml@2842b806167c9dbacf5f972e0fcf47204a99d987
uses: crazy-max/.github/.github/workflows/releases-json.yml@64a0bfaf6e6bb1c448d6e4c42b11034ee7094f16 # v1.7.1
with:
repository: docker/buildx
artifact_name: buildx-releases-json
filename: buildx-releases.json
secrets: inherit
open-pr:
runs-on: ubuntu-24.04
if: github.event_name != 'pull_request'
permissions:
contents: write
pull-requests: write
needs:
- generate
steps:
-
name: Checkout
uses: actions/checkout@v6
uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
-
name: Download
uses: actions/download-artifact@v6
uses: actions/download-artifact@3e5f45b2cfb9172054b4087a40e8e0b5a5461e7c # v8.0.1
with:
name: buildx-releases-json
path: .github
@@ -45,7 +50,7 @@ jobs:
git add -A .
-
name: Create PR
uses: peter-evans/create-pull-request@84ae59a2cdc2258d6fa0732dd66352dddae2a412 # v7.0.9
uses: peter-evans/create-pull-request@5f6978faf089d4d20b00c7766989d076bb2fc7f1 # v8.1.1
with:
base: main
branch: bot/buildx-releases-json

View File

@@ -7,20 +7,21 @@ on:
pull_request:
permissions:
actions: read
contents: read
security-events: write
env:
NODE_VERSION: 20
NODE_VERSION: "24"
jobs:
analyze:
runs-on: ubuntu-latest
permissions:
contents: read
security-events: write
steps:
-
name: Checkout
uses: actions/checkout@v6
uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
-
name: Enable corepack
run: |
@@ -28,19 +29,19 @@ jobs:
yarn --version
-
name: Set up Node
uses: actions/setup-node@v6
uses: actions/setup-node@48b55a011bda9f5d6aeb4c2d9c7362e8dae4041e # v6.4.0
with:
node-version: ${{ env.NODE_VERSION }}
-
name: Initialize CodeQL
uses: github/codeql-action/init@v4
uses: github/codeql-action/init@95e58e9a2cdfd71adc6e0353d5c52f41a045d225 # v4.35.2
with:
languages: javascript-typescript
-
name: Autobuild
uses: github/codeql-action/autobuild@v4
uses: github/codeql-action/autobuild@95e58e9a2cdfd71adc6e0353d5c52f41a045d225 # v4.35.2
-
name: Perform CodeQL Analysis
uses: github/codeql-action/analyze@v4
uses: github/codeql-action/analyze@95e58e9a2cdfd71adc6e0353d5c52f41a045d225 # v4.35.2
with:
category: "/language:javascript-typescript"

View File

@@ -4,6 +4,9 @@ concurrency:
group: ${{ github.workflow }}-${{ github.ref }}
cancel-in-progress: true
permissions:
contents: read
on:
workflow_dispatch:
schedule:
@@ -17,25 +20,27 @@ on:
jobs:
generate:
uses: crazy-max/.github/.github/workflows/releases-json.yml@2842b806167c9dbacf5f972e0fcf47204a99d987
uses: crazy-max/.github/.github/workflows/releases-json.yml@64a0bfaf6e6bb1c448d6e4c42b11034ee7094f16 # v1.7.1
with:
repository: docker/compose-desktop
artifact_name: compose-lab-releases-json
filename: compose-lab-releases.json
secrets: inherit
open-pr:
runs-on: ubuntu-24.04
if: github.event_name != 'pull_request'
permissions:
contents: write
pull-requests: write
needs:
- generate
steps:
-
name: Checkout
uses: actions/checkout@v6
uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
-
name: Download
uses: actions/download-artifact@v6
uses: actions/download-artifact@3e5f45b2cfb9172054b4087a40e8e0b5a5461e7c # v8.0.1
with:
name: compose-lab-releases-json
path: .github
@@ -45,7 +50,7 @@ jobs:
git add -A .
-
name: Create PR
uses: peter-evans/create-pull-request@84ae59a2cdc2258d6fa0732dd66352dddae2a412 # v7.0.9
uses: peter-evans/create-pull-request@5f6978faf089d4d20b00c7766989d076bb2fc7f1 # v8.1.1
with:
base: main
branch: bot/compose-lab-releases-json

View File

@@ -4,6 +4,9 @@ concurrency:
group: ${{ github.workflow }}-${{ github.ref }}
cancel-in-progress: true
permissions:
contents: read
on:
workflow_dispatch:
schedule:
@@ -17,25 +20,27 @@ on:
jobs:
generate:
uses: crazy-max/.github/.github/workflows/releases-json.yml@2842b806167c9dbacf5f972e0fcf47204a99d987
uses: crazy-max/.github/.github/workflows/releases-json.yml@64a0bfaf6e6bb1c448d6e4c42b11034ee7094f16 # v1.7.1
with:
repository: docker/compose
artifact_name: compose-releases-json
filename: compose-releases.json
secrets: inherit
open-pr:
runs-on: ubuntu-24.04
if: github.event_name != 'pull_request'
permissions:
contents: write
pull-requests: write
needs:
- generate
steps:
-
name: Checkout
uses: actions/checkout@v6
uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
-
name: Download
uses: actions/download-artifact@v6
uses: actions/download-artifact@3e5f45b2cfb9172054b4087a40e8e0b5a5461e7c # v8.0.1
with:
name: compose-releases-json
path: .github
@@ -45,7 +50,7 @@ jobs:
git add -A .
-
name: Create PR
uses: peter-evans/create-pull-request@84ae59a2cdc2258d6fa0732dd66352dddae2a412 # v7.0.9
uses: peter-evans/create-pull-request@5f6978faf089d4d20b00c7766989d076bb2fc7f1 # v8.1.1
with:
base: main
branch: bot/compose-releases-json

View File

@@ -4,6 +4,9 @@ concurrency:
group: ${{ github.workflow }}-${{ github.ref }}
cancel-in-progress: true
permissions:
contents: read
on:
workflow_dispatch:
schedule:
@@ -17,25 +20,27 @@ on:
jobs:
generate:
uses: crazy-max/.github/.github/workflows/releases-json.yml@2842b806167c9dbacf5f972e0fcf47204a99d987
uses: crazy-max/.github/.github/workflows/releases-json.yml@64a0bfaf6e6bb1c448d6e4c42b11034ee7094f16 # v1.7.1
with:
repository: sigstore/cosign
artifact_name: cosign-releases-json
filename: cosign-releases.json
secrets: inherit
open-pr:
runs-on: ubuntu-24.04
if: github.event_name != 'pull_request'
permissions:
contents: write
pull-requests: write
needs:
- generate
steps:
-
name: Checkout
uses: actions/checkout@v6
uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
-
name: Download
uses: actions/download-artifact@v6
uses: actions/download-artifact@3e5f45b2cfb9172054b4087a40e8e0b5a5461e7c # v8.0.1
with:
name: cosign-releases-json
path: .github
@@ -45,7 +50,7 @@ jobs:
git add -A .
-
name: Create PR
uses: peter-evans/create-pull-request@84ae59a2cdc2258d6fa0732dd66352dddae2a412 # v7.0.9
uses: peter-evans/create-pull-request@5f6978faf089d4d20b00c7766989d076bb2fc7f1 # v8.1.1
with:
base: main
branch: bot/cosign-releases-json

View File

@@ -4,6 +4,9 @@ concurrency:
group: ${{ github.workflow }}-${{ github.ref }}
cancel-in-progress: true
permissions:
contents: read
on:
workflow_dispatch:
schedule:
@@ -17,7 +20,7 @@ on:
jobs:
generate:
uses: crazy-max/.github/.github/workflows/releases-json.yml@2842b806167c9dbacf5f972e0fcf47204a99d987
uses: crazy-max/.github/.github/workflows/releases-json.yml@64a0bfaf6e6bb1c448d6e4c42b11034ee7094f16 # v1.7.1
with:
repository: moby/moby
artifact_name: docker-releases-json
@@ -25,20 +28,22 @@ jobs:
tag_patterns: |
^docker-(.*)$
^(v.*)$
secrets: inherit
open-pr:
runs-on: ubuntu-24.04
if: github.event_name != 'pull_request'
permissions:
contents: write
pull-requests: write
needs:
- generate
steps:
-
name: Checkout
uses: actions/checkout@v6
uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
-
name: Download
uses: actions/download-artifact@v6
uses: actions/download-artifact@3e5f45b2cfb9172054b4087a40e8e0b5a5461e7c # v8.0.1
with:
name: docker-releases-json
path: .github
@@ -48,7 +53,7 @@ jobs:
git add -A .
-
name: Create PR
uses: peter-evans/create-pull-request@84ae59a2cdc2258d6fa0732dd66352dddae2a412 # v7.0.9
uses: peter-evans/create-pull-request@5f6978faf089d4d20b00c7766989d076bb2fc7f1 # v8.1.1
with:
base: main
branch: bot/docker-releases-json

View File

@@ -4,14 +4,14 @@ permissions:
contents: read
on:
pull_request_target:
pull_request_target: # zizmor: ignore[dangerous-triggers] does not checkout, safe to use pull_request_target
types:
- opened
- reopened
jobs:
run:
uses: crazy-max/.github/.github/workflows/pr-assign-author.yml@1b673f36fad86812f538c1df9794904038a23cbf
uses: crazy-max/.github/.github/workflows/pr-assign-author.yml@64a0bfaf6e6bb1c448d6e4c42b11034ee7094f16 # v1.7.1
permissions:
contents: read
pull-requests: write

View File

@@ -4,22 +4,52 @@ concurrency:
group: ${{ github.workflow }}-${{ github.ref }}
cancel-in-progress: true
permissions:
contents: read
on:
push:
tags:
- 'v*'
env:
NODE_VERSION: "24"
jobs:
publish:
runs-on: ubuntu-latest
permissions:
contents: read
id-token: write # required for OIDC
steps:
-
name: Set up Docker Buildx
uses: docker/setup-buildx-action@v3
name: Checkout
uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
-
name: Enable corepack
run: |
corepack enable
yarn --version
-
name: Setup Node
uses: actions/setup-node@48b55a011bda9f5d6aeb4c2d9c7362e8dae4041e # v6.4.0
with:
node-version: ${{ env.NODE_VERSION }}
cache: 'yarn'
package-manager-cache: false
-
name: Print versions
run: |
node --version
npm --version
yarn --version
-
name: Build
run: |
yarn install
yarn run build
-
name: Publish
uses: docker/bake-action@v6
with:
targets: publish
env:
NODE_AUTH_TOKEN: ${{ secrets.NODE_AUTH_TOKEN }}
run: |
npm version --no-git-tag-version ${GITHUB_REF#refs/tags/v}
npm publish --provenance --access public

View File

@@ -4,6 +4,9 @@ concurrency:
group: ${{ github.workflow }}-${{ github.ref }}
cancel-in-progress: true
permissions:
contents: read
on:
workflow_dispatch:
schedule:
@@ -17,25 +20,27 @@ on:
jobs:
generate:
uses: crazy-max/.github/.github/workflows/releases-json.yml@2842b806167c9dbacf5f972e0fcf47204a99d987
uses: crazy-max/.github/.github/workflows/releases-json.yml@64a0bfaf6e6bb1c448d6e4c42b11034ee7094f16 # v1.7.1
with:
repository: regclient/regclient
artifact_name: regclient-releases-json
filename: regclient-releases.json
secrets: inherit
open-pr:
runs-on: ubuntu-latest
if: github.event_name != 'pull_request'
permissions:
contents: write
pull-requests: write
needs:
- generate
steps:
-
name: Checkout
uses: actions/checkout@v6
uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
-
name: Download
uses: actions/download-artifact@v6
uses: actions/download-artifact@3e5f45b2cfb9172054b4087a40e8e0b5a5461e7c # v8.0.1
with:
name: regclient-releases-json
path: .github
@@ -45,7 +50,7 @@ jobs:
git add -A .
-
name: Create PR
uses: peter-evans/create-pull-request@84ae59a2cdc2258d6fa0732dd66352dddae2a412 # v7.0.9
uses: peter-evans/create-pull-request@5f6978faf089d4d20b00c7766989d076bb2fc7f1 # v8.1.1
with:
base: main
branch: bot/regclient-releases-json

View File

@@ -4,6 +4,9 @@ concurrency:
group: ${{ github.workflow }}-${{ github.ref }}
cancel-in-progress: true
permissions:
contents: read
on:
workflow_dispatch:
push:
@@ -14,9 +17,9 @@ on:
- '.github/*-releases.json'
env:
NODE_VERSION: "20"
BUILDX_VERSION: "edge"
BUILDKIT_IMAGE: "moby/buildkit:v0.26.2"
NODE_VERSION: "24"
BUILDX_VERSION: "v0.33.0"
BUILDKIT_IMAGE: "moby/buildkit:v0.29.0"
jobs:
test:
@@ -30,20 +33,20 @@ jobs:
node_version:
- 24
- 20
- 18
steps:
-
name: Checkout
uses: actions/checkout@v6
uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
-
name: Test
uses: docker/bake-action@v6
uses: docker/bake-action@a66e1c87e2eca0503c343edf1d208c716d54b8a8 # v7.1.0
with:
source: .
targets: test-coverage
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
NODE_VERSION: ${{ matrix.node_version }}
DOCKER_BUILD_SUMMARY: false
-
name: Check coverage
run: |
@@ -55,7 +58,7 @@ jobs:
shell: bash
-
name: Upload coverage
uses: codecov/codecov-action@v5
uses: codecov/codecov-action@57e3a136b779b570ffcdbf80b3bdc90e7fab3de2 # v6.0.0
if: env.RUN_CODECOV == 'true' && matrix.node_version == env.NODE_VERSION
with:
files: ./coverage/clover.xml
@@ -69,7 +72,7 @@ jobs:
steps:
-
name: Checkout
uses: actions/checkout@v6
uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
-
name: Enable corepack
run: |
@@ -77,7 +80,7 @@ jobs:
yarn --version
-
name: Setup Node
uses: actions/setup-node@v6
uses: actions/setup-node@48b55a011bda9f5d6aeb4c2d9c7362e8dae4041e # v6.4.0
with:
node-version: ${{ env.NODE_VERSION }}
cache: 'yarn'
@@ -87,7 +90,7 @@ jobs:
-
name: Create includes
id: set
uses: actions/github-script@v8
uses: actions/github-script@3a2844b7e9c422d3c10d287c895573f7108da1b3 # v9.0.0
with:
script: |
let tests = [];
@@ -106,7 +109,7 @@ jobs:
});
await core.group(`Set includes`, async () => {
let includes = [];
for (const os of ['ubuntu-latest', 'ubuntu-24.04-arm', 'macos-15-intel', 'windows-latest']) {
for (const os of ['ubuntu-latest', 'ubuntu-24.04-arm', 'macos-26-large', 'windows-latest']) {
for (const test of tests) {
if (test === 'docker/install.test.itg.ts') {
if (os !== 'windows-latest') {
@@ -149,18 +152,19 @@ jobs:
permissions:
contents: read
id-token: write # needed for signing with GitHub OIDC Token
packages: write # needed for pushing to GitHub Container Registry
steps:
-
name: Checkout
uses: actions/checkout@v6
uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
-
name: Expose GitHub Runtime
uses: crazy-max/ghaction-github-runtime@v3
uses: crazy-max/ghaction-github-runtime@04d248b84655b509d8c44dc1d6f990c879747487 # v4.0.0
-
# FIXME: Needs to setup node twice on Windows: https://github.com/actions/setup-node/issues/1357#issuecomment-3254613964
name: Setup Node
if: startsWith(matrix.os, 'windows')
uses: actions/setup-node@v6
uses: actions/setup-node@48b55a011bda9f5d6aeb4c2d9c7362e8dae4041e # v6.4.0
with:
node-version: ${{ env.NODE_VERSION }}
package-manager-cache: false
@@ -171,14 +175,14 @@ jobs:
yarn --version
-
name: Setup Node
uses: actions/setup-node@v6
uses: actions/setup-node@48b55a011bda9f5d6aeb4c2d9c7362e8dae4041e # v6.4.0
with:
node-version: ${{ env.NODE_VERSION }}
cache: 'yarn'
-
name: Set up Docker Buildx
if: startsWith(matrix.os, 'ubuntu')
uses: docker/setup-buildx-action@v3
uses: docker/setup-buildx-action@4d04d5d9486b7bd6fa91e7baf45bbb4f8b9deedd # v4.0.0
with:
version: ${{ env.BUILDX_VERSION }}
driver: docker
@@ -186,7 +190,7 @@ jobs:
name: Set up container builder
if: startsWith(matrix.os, 'ubuntu')
id: builder
uses: docker/setup-buildx-action@v3
uses: docker/setup-buildx-action@4d04d5d9486b7bd6fa91e7baf45bbb4f8b9deedd # v4.0.0
with:
version: ${{ env.BUILDX_VERSION }}
driver-opts: image=${{ env.BUILDKIT_IMAGE }}
@@ -196,7 +200,7 @@ jobs:
run: yarn install
-
name: Test
uses: actions/github-script@v8
uses: actions/github-script@3a2844b7e9c422d3c10d287c895573f7108da1b3 # v9.0.0
with:
script: |
const testName = `${{ matrix.test_name }}`;
@@ -204,7 +208,7 @@ jobs:
if (testName) {
args.push(`--testNamePattern=^${testName} `);
}
args.push(`--runTestsByPath`, `__tests__/${{ matrix.test }}`, `--coverageDirectory=./coverage`);
args.push(`__tests__/${{ matrix.test }}`, `--coverage.reportsDirectory=./coverage`);
await exec.exec('yarn', args);
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
@@ -224,7 +228,7 @@ jobs:
shell: bash
-
name: Upload coverage
uses: codecov/codecov-action@v5
uses: codecov/codecov-action@57e3a136b779b570ffcdbf80b3bdc90e7fab3de2 # v6.0.0
if: env.RUN_CODECOV == 'true'
with:
files: ./coverage/clover.xml

View File

@@ -4,6 +4,9 @@ concurrency:
group: ${{ github.workflow }}-${{ github.ref }}
cancel-in-progress: true
permissions:
contents: read
on:
workflow_dispatch:
schedule:
@@ -17,25 +20,27 @@ on:
jobs:
generate:
uses: crazy-max/.github/.github/workflows/releases-json.yml@2842b806167c9dbacf5f972e0fcf47204a99d987
uses: crazy-max/.github/.github/workflows/releases-json.yml@64a0bfaf6e6bb1c448d6e4c42b11034ee7094f16 # v1.7.1
with:
repository: crazy-max/undock
artifact_name: undock-releases-json
filename: undock-releases.json
secrets: inherit
open-pr:
runs-on: ubuntu-24.04
if: github.event_name != 'pull_request'
permissions:
contents: write
pull-requests: write
needs:
- generate
steps:
-
name: Checkout
uses: actions/checkout@v6
uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
-
name: Download
uses: actions/download-artifact@v6
uses: actions/download-artifact@3e5f45b2cfb9172054b4087a40e8e0b5a5461e7c # v8.0.1
with:
name: undock-releases-json
path: .github
@@ -45,7 +50,7 @@ jobs:
git add -A .
-
name: Create PR
uses: peter-evans/create-pull-request@84ae59a2cdc2258d6fa0732dd66352dddae2a412 # v7.0.9
uses: peter-evans/create-pull-request@5f6978faf089d4d20b00c7766989d076bb2fc7f1 # v8.1.1
with:
base: main
branch: bot/undock-releases-json

327
.github/workflows/update-deps.yml vendored Normal file
View File

@@ -0,0 +1,327 @@
name: update-deps
concurrency:
group: ${{ github.workflow }}-${{ github.ref }}
cancel-in-progress: true
permissions:
contents: read
on:
workflow_dispatch:
schedule:
- cron: '0 9 * * *'
push:
branches:
- 'main'
jobs:
update:
runs-on: ubuntu-24.04
environment: update-deps # secrets are gated by this environment
timeout-minutes: 10
permissions:
contents: write
pull-requests: write
strategy:
fail-fast: false
matrix:
dep:
- docker
- buildx
- buildkit
- compose
- cosign
- regctl
- undock
steps:
-
name: GitHub auth token from GitHub App
id: write-app
uses: actions/create-github-app-token@1b10c78c7865c340bc4f6099eb2f838309f1e8c3 # v3.1.1
with:
client-id: ${{ vars.GHACTIONS_REPO_WRITE_CLIENT_ID }}
private-key: ${{ secrets.GHACTIONS_REPO_WRITE_PRIVATE_KEY }}
owner: docker
repositories: actions-toolkit
-
name: Checkout
uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
with:
token: ${{ steps.write-app.outputs.token }}
fetch-depth: 0
persist-credentials: false
-
name: Update dependency
id: update
uses: actions/github-script@3a2844b7e9c422d3c10d287c895573f7108da1b3 # v9.0.0
env:
INPUT_DEP: ${{ matrix.dep }}
with:
script: |
const fs = require('fs');
const path = require('path');
const dep = core.getInput('dep');
function escapeRegExp(value) {
return value.replace(/[.*+?^${}()|[\]\\]/g, '\\$&');
}
function formatList(values) {
const quoted = values.map(value => `\`${value}\``);
if (quoted.length === 1) {
return quoted[0];
}
if (quoted.length === 2) {
return `${quoted[0]} and ${quoted[1]}`;
}
return `${quoted.slice(0, -1).join(', ')}, and ${quoted.at(-1)}`;
}
function unique(values) {
return [...new Set(values)];
}
function stripLeadingV(value) {
return value.startsWith('v') ? value.slice(1) : value;
}
function stripDockerTag(value) {
return value.replace(/^docker-v/, '').replace(/^v/, '');
}
function majorMinor(value) {
const match = value.match(/^(\d+\.\d+)/);
if (!match) {
throw new Error(`Unable to derive major.minor version from ${value}`);
}
return match[1];
}
function readJson(relativePath) {
const absolutePath = path.join(process.env.GITHUB_WORKSPACE, relativePath);
return JSON.parse(fs.readFileSync(absolutePath, 'utf8'));
}
function readLatestTag(relativePath) {
const tag = readJson(relativePath)?.latest?.tag_name;
if (!tag) {
throw new Error(`Unable to resolve latest tag from ${relativePath}`);
}
return tag;
}
function dockerfileArgPattern(key) {
return new RegExp(`^(ARG ${escapeRegExp(key)}=)(.+)$`, 'm');
}
function workflowEnvPattern(key) {
return new RegExp(`^( ${escapeRegExp(key)}: ")([^"]*)(")$`, 'm');
}
const dependencyConfigs = {
docker: {
name: 'Docker version',
branch: 'deps/docker-version',
sourceUrl: 'https://github.com/docker/actions-toolkit/blob/main/.github/docker-releases.json',
async resolve() {
const tag = readLatestTag('.github/docker-releases.json');
const version = majorMinor(stripDockerTag(tag));
return {
titleValue: version,
targets: [
{
path: 'dev.Dockerfile',
key: 'DOCKER_VERSION',
value: version,
pattern: dockerfileArgPattern('DOCKER_VERSION')
}
]
};
}
},
buildx: {
name: 'Buildx version',
branch: 'deps/buildx-version',
sourceUrl: 'https://github.com/docker/actions-toolkit/blob/main/.github/buildx-releases.json',
async resolve() {
const tag = readLatestTag('.github/buildx-releases.json');
return {
titleValue: tag,
targets: [
{
path: 'dev.Dockerfile',
key: 'BUILDX_VERSION',
value: stripLeadingV(tag),
pattern: dockerfileArgPattern('BUILDX_VERSION')
},
{
path: '.github/workflows/test.yml',
key: 'BUILDX_VERSION',
value: tag,
pattern: workflowEnvPattern('BUILDX_VERSION')
}
]
};
}
},
buildkit: {
name: 'BuildKit image',
branch: 'deps/buildkit-image',
sourceUrl: 'https://github.com/moby/buildkit/releases/latest',
async resolve({github}) {
const release = await github.rest.repos.getLatestRelease({
owner: 'moby',
repo: 'buildkit'
});
const image = `moby/buildkit:${release.data.tag_name}`;
return {
titleValue: image,
targets: [
{
path: '.github/workflows/test.yml',
key: 'BUILDKIT_IMAGE',
value: image,
pattern: workflowEnvPattern('BUILDKIT_IMAGE')
}
]
};
}
},
compose: {
name: 'Compose version',
branch: 'deps/compose-version',
sourceUrl: 'https://github.com/docker/actions-toolkit/blob/main/.github/compose-releases.json',
async resolve() {
const tag = readLatestTag('.github/compose-releases.json');
return {
titleValue: tag,
targets: [
{
path: 'dev.Dockerfile',
key: 'COMPOSE_VERSION',
value: stripLeadingV(tag),
pattern: dockerfileArgPattern('COMPOSE_VERSION')
}
]
};
}
},
undock: {
name: 'Undock version',
branch: 'deps/undock-version',
sourceUrl: 'https://github.com/docker/actions-toolkit/blob/main/.github/undock-releases.json',
async resolve() {
const tag = readLatestTag('.github/undock-releases.json');
return {
titleValue: tag,
targets: [
{
path: 'dev.Dockerfile',
key: 'UNDOCK_VERSION',
value: stripLeadingV(tag),
pattern: dockerfileArgPattern('UNDOCK_VERSION')
}
]
};
}
},
regctl: {
name: 'Regctl version',
branch: 'deps/regctl-version',
sourceUrl: 'https://github.com/docker/actions-toolkit/blob/main/.github/regclient-releases.json',
async resolve() {
const tag = readLatestTag('.github/regclient-releases.json');
return {
titleValue: tag,
targets: [
{
path: 'dev.Dockerfile',
key: 'REGCTL_VERSION',
value: tag,
pattern: dockerfileArgPattern('REGCTL_VERSION')
}
]
};
}
},
cosign: {
name: 'Cosign version',
branch: 'deps/cosign-version',
sourceUrl: 'https://github.com/docker/actions-toolkit/blob/main/.github/cosign-releases.json',
async resolve() {
const tag = readLatestTag('.github/cosign-releases.json');
return {
titleValue: tag,
targets: [
{
path: 'dev.Dockerfile',
key: 'COSIGN_VERSION',
value: tag,
pattern: dockerfileArgPattern('COSIGN_VERSION')
}
]
};
}
}
};
const config = dependencyConfigs[dep];
if (!config) {
core.setFailed(`Unknown dependency ${dep}`);
return;
}
const resolved = await config.resolve({github});
const currentValues = [];
const changedFiles = [];
for (const target of resolved.targets) {
const absolutePath = path.join(process.env.GITHUB_WORKSPACE, target.path);
const content = fs.readFileSync(absolutePath, 'utf8');
const match = content.match(target.pattern);
if (!match) {
throw new Error(`Missing ${target.key} in ${target.path}`);
}
currentValues.push(match[2]);
if (match[2] === target.value) {
continue;
}
const updatedContent = content.replace(target.pattern, (...args) => {
const groups = args.slice(1, -2);
const prefix = groups[0];
const suffix = groups[2] || '';
return `${prefix}${target.value}${suffix}`;
});
fs.writeFileSync(absolutePath, updatedContent, 'utf8');
changedFiles.push(target.path);
}
core.info(`Resolved ${config.name} from ${config.sourceUrl}`);
if (changedFiles.length === 0) {
core.info(`No workspace changes needed for ${config.name}`);
} else {
core.info(`New ${config.name} ${resolved.titleValue} found`);
}
core.setOutput('branch', config.branch);
core.setOutput('title', `chore(deps): update ${config.name} to ${resolved.titleValue}`);
core.setOutput('before', formatList(unique(currentValues)));
core.setOutput('files', formatList(unique(changedFiles)));
core.setOutput('source-url', config.sourceUrl);
-
name: Create pull request
uses: peter-evans/create-pull-request@5f6978faf089d4d20b00c7766989d076bb2fc7f1 # v8.1.1
with:
base: main
branch: ${{ steps.update.outputs.branch }}
token: ${{ steps.write-app.outputs.token }}
commit-message: ${{ steps.update.outputs.title }}
title: ${{ steps.update.outputs.title }}
signoff: true
delete-branch: true
body: |
This updates the pinned value from ${{ steps.update.outputs.before }} in ${{ steps.update.outputs.files }}.
The source of truth for this update is ${{ steps.update.outputs.source-url }}.

View File

@@ -4,6 +4,9 @@ concurrency:
group: ${{ github.workflow }}-${{ github.ref }}
cancel-in-progress: true
permissions:
contents: read
on:
workflow_dispatch:
push:
@@ -17,15 +20,15 @@ jobs:
prepare:
runs-on: ubuntu-latest
outputs:
targets: ${{ steps.generate.outputs.targets }}
matrix: ${{ steps.generate.outputs.matrix }}
steps:
-
name: Checkout
uses: actions/checkout@v6
uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
-
name: List targets
name: Generate matrix
id: generate
uses: docker/bake-action/subaction/list-targets@v6
uses: docker/bake-action/subaction/matrix@a66e1c87e2eca0503c343edf1d208c716d54b8a8 # v7.1.0
with:
target: validate
@@ -36,10 +39,10 @@ jobs:
strategy:
fail-fast: false
matrix:
target: ${{ fromJson(needs.prepare.outputs.targets) }}
include: ${{ fromJson(needs.prepare.outputs.matrix) }}
steps:
-
name: Validate
uses: docker/bake-action@v6
uses: docker/bake-action@a66e1c87e2eca0503c343edf1d208c716d54b8a8 # v7.1.0
with:
targets: ${{ matrix.target }}

View File

@@ -1,5 +1,12 @@
name: virtual-env
concurrency:
group: ${{ github.workflow }}-${{ github.ref }}
cancel-in-progress: true
permissions:
contents: read
on:
workflow_dispatch:
schedule:
@@ -68,4 +75,4 @@ jobs:
-
name: Dump context
if: always()
uses: crazy-max/ghaction-dump-context@v2
uses: crazy-max/ghaction-dump-context@5d2753e7076f4568c7729971e25231f32147e2d8 # v3.0.0

26
.github/workflows/zizmor.yml vendored Normal file
View File

@@ -0,0 +1,26 @@
name: zizmor
concurrency:
group: ${{ github.workflow }}-${{ github.ref }}
cancel-in-progress: true
permissions:
contents: read
on:
workflow_dispatch:
push:
branches:
- 'main'
pull_request:
jobs:
run:
uses: crazy-max/.github/.github/workflows/zizmor.yml@64a0bfaf6e6bb1c448d6e4c42b11034ee7094f16 # v1.7.1
permissions:
contents: read
security-events: write
with:
min-severity: medium
min-confidence: medium
persona: pedantic

7
.gitignore vendored
View File

@@ -38,13 +38,6 @@ jspm_packages/
# Yarn Integrity file
.yarn-integrity
# dotenv environment variable files
.env
.env.development.local
.env.test.local
.env.production.local
.env.local
# yarn v2
.yarn/cache
.yarn/unplugged

View File

@@ -6,6 +6,5 @@
"singleQuote": true,
"trailingComma": "none",
"bracketSpacing": false,
"arrowParens": "avoid",
"parser": "typescript"
"arrowParens": "avoid"
}

View File

@@ -1,224 +0,0 @@
/**
* Copyright 2023 actions-toolkit authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
import {jest} from '@jest/globals';
export const context = {
repo: {
owner: 'docker',
repo: 'actions-toolkit'
},
ref: 'refs/heads/master',
runId: 2188748038,
runNumber: 15,
payload: {
after: '860c1904a1ce19322e91ac35af1ab07466440c37',
base_ref: null,
before: '5f3331d7f7044c18ca9f12c77d961c4d7cf3276a',
commits: [
{
author: {
email: 'crazy-max@users.noreply.github.com',
name: 'CrazyMax',
username: 'crazy-max'
},
committer: {
email: 'crazy-max@users.noreply.github.com',
name: 'CrazyMax',
username: 'crazy-max'
},
distinct: true,
id: '860c1904a1ce19322e91ac35af1ab07466440c37',
message: 'hello dev',
timestamp: '2022-04-19T11:27:24+02:00',
tree_id: 'd2c60af597e863787d2d27f569e30495b0b92820',
url: 'https://github.com/docker/test-docker-action/commit/860c1904a1ce19322e91ac35af1ab07466440c37'
}
],
compare: 'https://github.com/docker/test-docker-action/compare/5f3331d7f704...860c1904a1ce',
created: false,
deleted: false,
forced: false,
head_commit: {
author: {
email: 'crazy-max@users.noreply.github.com',
name: 'CrazyMax',
username: 'crazy-max'
},
committer: {
email: 'crazy-max@users.noreply.github.com',
name: 'CrazyMax',
username: 'crazy-max'
},
distinct: true,
id: '860c1904a1ce19322e91ac35af1ab07466440c37',
message: 'hello dev',
timestamp: '2022-04-19T11:27:24+02:00',
tree_id: 'd2c60af597e863787d2d27f569e30495b0b92820',
url: 'https://github.com/docker/test-docker-action/commit/860c1904a1ce19322e91ac35af1ab07466440c37'
},
organization: {
avatar_url: 'https://avatars.githubusercontent.com/u/5429470?v=4',
description: 'Docker helps developers bring their ideas to life by conquering the complexity of app development.',
events_url: 'https://api.github.com/orgs/docker/events',
hooks_url: 'https://api.github.com/orgs/docker/hooks',
id: 5429470,
issues_url: 'https://api.github.com/orgs/docker/issues',
login: 'docker',
members_url: 'https://api.github.com/orgs/docker/members{/member}',
node_id: 'MDEyOk9yZ2FuaXphdGlvbjU0Mjk0NzA=',
public_members_url: 'https://api.github.com/orgs/docker/public_members{/member}',
repos_url: 'https://api.github.com/orgs/docker/repos',
url: 'https://api.github.com/orgs/docker'
},
pusher: {
email: 'github@crazymax.dev',
name: 'crazy-max'
},
ref: 'refs/heads/dev',
repository: {
allow_forking: true,
archive_url: 'https://api.github.com/repos/docker/test-docker-action/{archive_format}{/ref}',
archived: false,
assignees_url: 'https://api.github.com/repos/docker/test-docker-action/assignees{/user}',
blobs_url: 'https://api.github.com/repos/docker/test-docker-action/git/blobs{/sha}',
branches_url: 'https://api.github.com/repos/docker/test-docker-action/branches{/branch}',
clone_url: 'https://github.com/docker/test-docker-action.git',
collaborators_url: 'https://api.github.com/repos/docker/test-docker-action/collaborators{/collaborator}',
comments_url: 'https://api.github.com/repos/docker/test-docker-action/comments{/number}',
commits_url: 'https://api.github.com/repos/docker/test-docker-action/commits{/sha}',
compare_url: 'https://api.github.com/repos/docker/test-docker-action/compare/{base}...{head}',
contents_url: 'https://api.github.com/repos/docker/test-docker-action/contents/{+path}',
contributors_url: 'https://api.github.com/repos/docker/test-docker-action/contributors',
created_at: 1596792180,
default_branch: 'master',
deployments_url: 'https://api.github.com/repos/docker/test-docker-action/deployments',
description: 'Test "Docker" Actions',
disabled: false,
downloads_url: 'https://api.github.com/repos/docker/test-docker-action/downloads',
events_url: 'https://api.github.com/repos/docker/test-docker-action/events',
fork: false,
forks: 1,
forks_count: 1,
forks_url: 'https://api.github.com/repos/docker/test-docker-action/forks',
full_name: 'docker/test-docker-action',
git_commits_url: 'https://api.github.com/repos/docker/test-docker-action/git/commits{/sha}',
git_refs_url: 'https://api.github.com/repos/docker/test-docker-action/git/refs{/sha}',
git_tags_url: 'https://api.github.com/repos/docker/test-docker-action/git/tags{/sha}',
git_url: 'git://github.com/docker/test-docker-action.git',
has_downloads: true,
has_issues: true,
has_pages: false,
has_projects: true,
has_wiki: true,
homepage: '',
hooks_url: 'https://api.github.com/repos/docker/test-docker-action/hooks',
html_url: 'https://github.com/docker/test-docker-action',
id: 285789493,
is_template: false,
issue_comment_url: 'https://api.github.com/repos/docker/test-docker-action/issues/comments{/number}',
issue_events_url: 'https://api.github.com/repos/docker/test-docker-action/issues/events{/number}',
issues_url: 'https://api.github.com/repos/docker/test-docker-action/issues{/number}',
keys_url: 'https://api.github.com/repos/docker/test-docker-action/keys{/key_id}',
labels_url: 'https://api.github.com/repos/docker/test-docker-action/labels{/name}',
language: 'JavaScript',
languages_url: 'https://api.github.com/repos/docker/test-docker-action/languages',
license: {
key: 'mit',
name: 'MIT License',
node_id: 'MDc6TGljZW5zZTEz',
spdx_id: 'MIT',
url: 'https://api.github.com/licenses/mit'
},
master_branch: 'master',
merges_url: 'https://api.github.com/repos/docker/test-docker-action/merges',
milestones_url: 'https://api.github.com/repos/docker/test-docker-action/milestones{/number}',
mirror_url: null,
name: 'test-docker-action',
node_id: 'MDEwOlJlcG9zaXRvcnkyODU3ODk0OTM=',
notifications_url: 'https://api.github.com/repos/docker/test-docker-action/notifications{?since,all,participating}',
open_issues: 6,
open_issues_count: 6,
organization: 'docker',
owner: {
avatar_url: 'https://avatars.githubusercontent.com/u/5429470?v=4',
email: 'info@docker.com',
events_url: 'https://api.github.com/users/docker/events{/privacy}',
followers_url: 'https://api.github.com/users/docker/followers',
following_url: 'https://api.github.com/users/docker/following{/other_user}',
gists_url: 'https://api.github.com/users/docker/gists{/gist_id}',
gravatar_id: '',
html_url: 'https://github.com/docker',
id: 5429470,
login: 'docker',
name: 'docker',
node_id: 'MDEyOk9yZ2FuaXphdGlvbjU0Mjk0NzA=',
organizations_url: 'https://api.github.com/users/docker/orgs',
received_events_url: 'https://api.github.com/users/docker/received_events',
repos_url: 'https://api.github.com/users/docker/repos',
site_admin: false,
starred_url: 'https://api.github.com/users/docker/starred{/owner}{/repo}',
subscriptions_url: 'https://api.github.com/users/docker/subscriptions',
type: 'Organization',
url: 'https://api.github.com/users/docker'
},
private: true,
pulls_url: 'https://api.github.com/repos/docker/test-docker-action/pulls{/number}',
pushed_at: 1650360446,
releases_url: 'https://api.github.com/repos/docker/test-docker-action/releases{/id}',
size: 796,
ssh_url: 'git@github.com:docker/test-docker-action.git',
stargazers: 0,
stargazers_count: 0,
stargazers_url: 'https://api.github.com/repos/docker/test-docker-action/stargazers',
statuses_url: 'https://api.github.com/repos/docker/test-docker-action/statuses/{sha}',
subscribers_url: 'https://api.github.com/repos/docker/test-docker-action/subscribers',
subscription_url: 'https://api.github.com/repos/docker/test-docker-action/subscription',
svn_url: 'https://github.com/docker/test-docker-action',
tags_url: 'https://api.github.com/repos/docker/test-docker-action/tags',
teams_url: 'https://api.github.com/repos/docker/test-docker-action/teams',
topics: [],
trees_url: 'https://api.github.com/repos/docker/test-docker-action/git/trees{/sha}',
updated_at: '2022-04-19T09:05:09Z',
url: 'https://github.com/docker/test-docker-action',
visibility: 'private',
watchers: 0,
watchers_count: 0
},
sender: {
avatar_url: 'https://avatars.githubusercontent.com/u/1951866?v=4',
events_url: 'https://api.github.com/users/crazy-max/events{/privacy}',
followers_url: 'https://api.github.com/users/crazy-max/followers',
following_url: 'https://api.github.com/users/crazy-max/following{/other_user}',
gists_url: 'https://api.github.com/users/crazy-max/gists{/gist_id}',
gravatar_id: '',
html_url: 'https://github.com/crazy-max',
id: 1951866,
login: 'crazy-max',
node_id: 'MDQ6VXNlcjE5NTE4NjY=',
organizations_url: 'https://api.github.com/users/crazy-max/orgs',
received_events_url: 'https://api.github.com/users/crazy-max/received_events',
repos_url: 'https://api.github.com/users/crazy-max/repos',
site_admin: false,
starred_url: 'https://api.github.com/users/crazy-max/starred{/owner}{/repo}',
subscriptions_url: 'https://api.github.com/users/crazy-max/subscriptions',
type: 'User',
url: 'https://api.github.com/users/crazy-max'
}
}
};
export const getOctokit = jest.fn();

View File

@@ -0,0 +1,15 @@
[
{
"mediaType":"application/vnd.oci.image.manifest.v1+json",
"digest":"sha256:2ba4ad6eae1efcafee73a971953093c7c32b6938f2f9fd4998c8bf4d0fbe76f2",
"size":1113,
"annotations":{
"vnd.docker.reference.digest":"sha256:dccc69dd895968c4f21aa9e43e715f25f0cedfce4b17f1014c88c307928e22fc",
"vnd.docker.reference.type":"attestation-manifest"
},
"platform":{
"architecture":"unknown",
"os":"unknown"
}
}
]

View File

@@ -0,0 +1,15 @@
[
{
"mediaType": "application/vnd.oci.image.manifest.v1+json",
"digest": "sha256:0709528fae1747ce17638ad2978ee7936b38a294136eaadaf692e415f64b1e03",
"size": 1113,
"annotations": {
"vnd.docker.reference.digest": "sha256:1b6bce668653f08e2d0f9f7c9b646675b2cbce94ce8abdf4eb0eabaef4353045",
"vnd.docker.reference.type": "attestation-manifest"
},
"platform": {
"architecture": "unknown",
"os": "unknown"
}
}
]

View File

@@ -1,5 +1,5 @@
/**
* Copyright 2023 actions-toolkit authors
* Copyright 2025 actions-toolkit authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
@@ -14,18 +14,17 @@
* limitations under the License.
*/
module.exports = {
testEnvironment: 'node',
moduleFileExtensions: ['js', 'ts'],
setupFiles: ['dotenv/config'],
testMatch: ['**/*.test.itg.ts'],
testTimeout: 1800000, // 30 minutes
transform: {
'^.+\\.ts$': 'ts-jest'
},
moduleNameMapper: {
'^csv-parse/sync': '<rootDir>/node_modules/csv-parse/dist/cjs/sync.cjs'
},
testResultsProcessor: './__tests__/testResultsProcessor.ts',
verbose: false
import {vi} from 'vitest';
import os from 'os';
export const mockPlatform = (platform: NodeJS.Platform) => {
return vi.spyOn(os, 'platform').mockImplementation(() => platform);
};
export const mockArch = (arch: string) => {
return vi.spyOn(os, 'arch').mockImplementation(() => arch);
};
export const mockHomedir = (dir: string) => {
return vi.spyOn(os, 'homedir').mockImplementation(() => dir);
};

View File

@@ -0,0 +1,38 @@
/**
* Copyright 2026 actions-toolkit authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
import fs from 'node:fs';
import path from 'node:path';
const testsRoot = path.resolve('__tests__');
const results = [];
const walk = dir => {
for (const entry of fs.readdirSync(dir, {withFileTypes: true})) {
const fullPath = path.join(dir, entry.name);
if (entry.isDirectory()) {
walk(fullPath);
continue;
}
if (entry.isFile() && entry.name.endsWith('.test.itg.ts')) {
results.push(fullPath.replaceAll(path.sep, '/'));
}
}
};
walk(testsRoot);
results.sort((a, b) => a.localeCompare(b));
process.stdout.write(`${results.join('\n')}\n`);

View File

@@ -0,0 +1,242 @@
/**
* Copyright 2026 actions-toolkit authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
import fs from 'node:fs';
import os from 'node:os';
import path from 'node:path';
import {vi} from 'vitest';
const envTmpDir = process.env.DOCKER_ACTIONS_TOOLKIT_TMPDIR;
const tmpDir = envTmpDir || fs.mkdtempSync(path.join(os.tmpdir(), 'docker-actions-toolkit-'));
process.env = Object.assign({}, process.env, {
DOCKER_ACTIONS_TOOLKIT_TMPDIR: tmpDir,
TEMP: tmpDir,
GITHUB_REPOSITORY: 'docker/actions-toolkit',
GITHUB_RUN_ATTEMPT: '2',
GITHUB_RUN_ID: '2188748038',
GITHUB_RUN_NUMBER: '15',
RUNNER_TEMP: path.join(tmpDir, 'runner-temp'),
RUNNER_TOOL_CACHE: path.join(tmpDir, 'runner-tool-cache')
});
vi.mock('@actions/github', () => ({
context: {
repo: {
owner: 'docker',
repo: 'actions-toolkit'
},
ref: 'refs/heads/master',
runId: 2188748038,
runNumber: 15,
payload: {
after: '860c1904a1ce19322e91ac35af1ab07466440c37',
base_ref: null,
before: '5f3331d7f7044c18ca9f12c77d961c4d7cf3276a',
commits: [
{
author: {
email: 'crazy-max@users.noreply.github.com',
name: 'CrazyMax',
username: 'crazy-max'
},
committer: {
email: 'crazy-max@users.noreply.github.com',
name: 'CrazyMax',
username: 'crazy-max'
},
distinct: true,
id: '860c1904a1ce19322e91ac35af1ab07466440c37',
message: 'hello dev',
timestamp: '2022-04-19T11:27:24+02:00',
tree_id: 'd2c60af597e863787d2d27f569e30495b0b92820',
url: 'https://github.com/docker/test-docker-action/commit/860c1904a1ce19322e91ac35af1ab07466440c37'
}
],
compare: 'https://github.com/docker/test-docker-action/compare/5f3331d7f704...860c1904a1ce',
created: false,
deleted: false,
forced: false,
head_commit: {
author: {
email: 'crazy-max@users.noreply.github.com',
name: 'CrazyMax',
username: 'crazy-max'
},
committer: {
email: 'crazy-max@users.noreply.github.com',
name: 'CrazyMax',
username: 'crazy-max'
},
distinct: true,
id: '860c1904a1ce19322e91ac35af1ab07466440c37',
message: 'hello dev',
timestamp: '2022-04-19T11:27:24+02:00',
tree_id: 'd2c60af597e863787d2d27f569e30495b0b92820',
url: 'https://github.com/docker/test-docker-action/commit/860c1904a1ce19322e91ac35af1ab07466440c37'
},
organization: {
avatar_url: 'https://avatars.githubusercontent.com/u/5429470?v=4',
description: 'Docker helps developers bring their ideas to life by conquering the complexity of app development.',
events_url: 'https://api.github.com/orgs/docker/events',
hooks_url: 'https://api.github.com/orgs/docker/hooks',
id: 5429470,
issues_url: 'https://api.github.com/orgs/docker/issues',
login: 'docker',
members_url: 'https://api.github.com/orgs/docker/members{/member}',
node_id: 'MDEyOk9yZ2FuaXphdGlvbjU0Mjk0NzA=',
public_members_url: 'https://api.github.com/orgs/docker/public_members{/member}',
repos_url: 'https://api.github.com/orgs/docker/repos',
url: 'https://api.github.com/orgs/docker'
},
pusher: {
email: 'github@crazymax.dev',
name: 'crazy-max'
},
ref: 'refs/heads/dev',
repository: {
allow_forking: true,
archive_url: 'https://api.github.com/repos/docker/test-docker-action/{archive_format}{/ref}',
archived: false,
assignees_url: 'https://api.github.com/repos/docker/test-docker-action/assignees{/user}',
blobs_url: 'https://api.github.com/repos/docker/test-docker-action/git/blobs{/sha}',
branches_url: 'https://api.github.com/repos/docker/test-docker-action/branches{/branch}',
clone_url: 'https://github.com/docker/test-docker-action.git',
collaborators_url: 'https://api.github.com/repos/docker/test-docker-action/collaborators{/collaborator}',
comments_url: 'https://api.github.com/repos/docker/test-docker-action/comments{/number}',
commits_url: 'https://api.github.com/repos/docker/test-docker-action/commits{/sha}',
compare_url: 'https://api.github.com/repos/docker/test-docker-action/compare/{base}...{head}',
contents_url: 'https://api.github.com/repos/docker/test-docker-action/contents/{+path}',
contributors_url: 'https://api.github.com/repos/docker/test-docker-action/contributors',
created_at: 1596792180,
default_branch: 'master',
deployments_url: 'https://api.github.com/repos/docker/test-docker-action/deployments',
description: 'Test "Docker" Actions',
disabled: false,
downloads_url: 'https://api.github.com/repos/docker/test-docker-action/downloads',
events_url: 'https://api.github.com/repos/docker/test-docker-action/events',
fork: false,
forks: 1,
forks_count: 1,
forks_url: 'https://api.github.com/repos/docker/test-docker-action/forks',
full_name: 'docker/test-docker-action',
git_commits_url: 'https://api.github.com/repos/docker/test-docker-action/git/commits{/sha}',
git_refs_url: 'https://api.github.com/repos/docker/test-docker-action/git/refs{/sha}',
git_tags_url: 'https://api.github.com/repos/docker/test-docker-action/git/tags{/sha}',
git_url: 'git://github.com/docker/test-docker-action.git',
has_downloads: true,
has_issues: true,
has_pages: false,
has_projects: true,
has_wiki: true,
homepage: '',
hooks_url: 'https://api.github.com/repos/docker/test-docker-action/hooks',
html_url: 'https://github.com/docker/test-docker-action',
id: 285789493,
is_template: false,
issue_comment_url: 'https://api.github.com/repos/docker/test-docker-action/issues/comments{/number}',
issue_events_url: 'https://api.github.com/repos/docker/test-docker-action/issues/events{/number}',
issues_url: 'https://api.github.com/repos/docker/test-docker-action/issues{/number}',
keys_url: 'https://api.github.com/repos/docker/test-docker-action/keys{/key_id}',
labels_url: 'https://api.github.com/repos/docker/test-docker-action/labels{/name}',
language: 'JavaScript',
languages_url: 'https://api.github.com/repos/docker/test-docker-action/languages',
license: {
key: 'mit',
name: 'MIT License',
node_id: 'MDc6TGljZW5zZTEz',
spdx_id: 'MIT',
url: 'https://api.github.com/licenses/mit'
},
master_branch: 'master',
merges_url: 'https://api.github.com/repos/docker/test-docker-action/merges',
milestones_url: 'https://api.github.com/repos/docker/test-docker-action/milestones{/number}',
mirror_url: null,
name: 'test-docker-action',
node_id: 'MDEwOlJlcG9zaXRvcnkyODU3ODk0OTM=',
notifications_url: 'https://api.github.com/repos/docker/test-docker-action/notifications{?since,all,participating}',
open_issues: 6,
open_issues_count: 6,
organization: 'docker',
owner: {
avatar_url: 'https://avatars.githubusercontent.com/u/5429470?v=4',
email: 'info@docker.com',
events_url: 'https://api.github.com/users/docker/events{/privacy}',
followers_url: 'https://api.github.com/users/docker/followers',
following_url: 'https://api.github.com/users/docker/following{/other_user}',
gists_url: 'https://api.github.com/users/docker/gists{/gist_id}',
gravatar_id: '',
html_url: 'https://github.com/docker',
id: 5429470,
login: 'docker',
name: 'docker',
node_id: 'MDEyOk9yZ2FuaXphdGlvbjU0Mjk0NzA=',
organizations_url: 'https://api.github.com/users/docker/orgs',
received_events_url: 'https://api.github.com/users/docker/received_events',
repos_url: 'https://api.github.com/users/docker/repos',
site_admin: false,
starred_url: 'https://api.github.com/users/docker/starred{/owner}{/repo}',
subscriptions_url: 'https://api.github.com/users/docker/subscriptions',
type: 'Organization',
url: 'https://api.github.com/users/docker'
},
private: true,
pulls_url: 'https://api.github.com/repos/docker/test-docker-action/pulls{/number}',
pushed_at: 1650360446,
releases_url: 'https://api.github.com/repos/docker/test-docker-action/releases{/id}',
size: 796,
ssh_url: 'git@github.com:docker/test-docker-action.git',
stargazers: 0,
stargazers_count: 0,
stargazers_url: 'https://api.github.com/repos/docker/test-docker-action/stargazers',
statuses_url: 'https://api.github.com/repos/docker/test-docker-action/statuses/{sha}',
subscribers_url: 'https://api.github.com/repos/docker/test-docker-action/subscribers',
subscription_url: 'https://api.github.com/repos/docker/test-docker-action/subscription',
svn_url: 'https://github.com/docker/test-docker-action',
tags_url: 'https://api.github.com/repos/docker/test-docker-action/tags',
teams_url: 'https://api.github.com/repos/docker/test-docker-action/teams',
topics: [],
trees_url: 'https://api.github.com/repos/docker/test-docker-action/git/trees{/sha}',
updated_at: '2022-04-19T09:05:09Z',
url: 'https://github.com/docker/test-docker-action',
visibility: 'private',
watchers: 0,
watchers_count: 0
},
sender: {
avatar_url: 'https://avatars.githubusercontent.com/u/1951866?v=4',
events_url: 'https://api.github.com/users/crazy-max/events{/privacy}',
followers_url: 'https://api.github.com/users/crazy-max/followers',
following_url: 'https://api.github.com/users/crazy-max/following{/other_user}',
gists_url: 'https://api.github.com/users/crazy-max/gists{/gist_id}',
gravatar_id: '',
html_url: 'https://github.com/crazy-max',
id: 1951866,
login: 'crazy-max',
node_id: 'MDQ6VXNlcjE5NTE4NjY=',
organizations_url: 'https://api.github.com/users/crazy-max/orgs',
received_events_url: 'https://api.github.com/users/crazy-max/received_events',
repos_url: 'https://api.github.com/users/crazy-max/repos',
site_admin: false,
starred_url: 'https://api.github.com/users/crazy-max/starred{/owner}{/repo}',
subscriptions_url: 'https://api.github.com/users/crazy-max/subscriptions',
type: 'User',
url: 'https://api.github.com/users/crazy-max'
}
}
},
getOctokit: vi.fn()
}));

View File

@@ -1,5 +1,5 @@
/**
* Copyright 2023 actions-toolkit authors
* Copyright 2026 actions-toolkit authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
@@ -14,6 +14,6 @@
* limitations under the License.
*/
import {Context as GitHubContext} from '@actions/github/lib/context';
import type {Reporter} from 'vitest/node';
export type Context = GitHubContext;
export declare const vitestAllSkippedReporter: () => Reporter;

View File

@@ -0,0 +1,59 @@
/**
* Copyright 2026 actions-toolkit authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
import fs from 'node:fs';
import path from 'node:path';
export const vitestAllSkippedReporter = () => {
let vitest;
let hasExecutedTest;
let hasAnyCollectedTest;
const getFlagPath = () => {
const reportsDirectory = vitest?.config?.coverage?.reportsDirectory ?? 'coverage';
return path.join(reportsDirectory, 'allSkipped.txt');
};
return {
onInit(ctx) {
vitest = ctx;
hasExecutedTest = false;
hasAnyCollectedTest = false;
},
onTestCaseReady() {
hasAnyCollectedTest = true;
},
onTestCaseResult(testCase) {
const state = testCase.result()?.state;
if (state === 'passed' || state === 'failed') {
hasExecutedTest = true;
}
},
onTestRunEnd() {
if (!vitest?.config?.coverage?.enabled) {
return;
}
const allSkipped = hasAnyCollectedTest && !hasExecutedTest;
const flagPath = getFlagPath();
if (allSkipped) {
fs.mkdirSync(path.dirname(flagPath), {recursive: true});
fs.writeFileSync(flagPath, '');
} else if (fs.existsSync(flagPath)) {
fs.rmSync(flagPath);
}
}
};
};

View File

@@ -14,14 +14,14 @@
* limitations under the License.
*/
import {describe, expect, it, jest, test} from '@jest/globals';
import {describe, expect, it, vi, test} from 'vitest';
import {BuildKit} from '../../src/buildkit/buildkit';
import {Builder} from '../../src/buildx/builder';
import {BuildKit} from '../../src/buildkit/buildkit.js';
import {Builder} from '../../src/buildx/builder.js';
import {BuilderInfo} from '../../src/types/buildx/builder';
import {BuilderInfo} from '../../src/types/buildx/builder.js';
jest.spyOn(Builder.prototype, 'inspect').mockImplementation(async (): Promise<BuilderInfo> => {
vi.spyOn(Builder.prototype, 'inspect').mockImplementation(async (): Promise<BuilderInfo> => {
return {
name: 'builder2',
driver: 'docker-container',
@@ -54,7 +54,7 @@ describe('satisfies', () => {
test.each([
['builder2', '>=0.10.0', true],
['builder2', '>0.11.0', false]
])('given %p', async (builderName, range, expected) => {
])('given %o', async (builderName, range, expected) => {
const buildkit = new BuildKit();
expect(await buildkit.versionSatisfies(builderName, range)).toBe(expected);
});

View File

@@ -14,25 +14,25 @@
* limitations under the License.
*/
import {describe, expect, jest, test, afterEach} from '@jest/globals';
import {describe, expect, vi, test, afterEach} from 'vitest';
import fs from 'fs';
import os from 'os';
import path from 'path';
import * as rimraf from 'rimraf';
import {BuildKit} from '../../src/buildkit/buildkit';
import {Context} from '../../src/context';
import {BuildKit} from '../../src/buildkit/buildkit.js';
import {Context} from '../../src/context.js';
const fixturesDir = path.join(__dirname, '..', '.fixtures');
const tmpDir = fs.mkdtempSync(path.join(process.env.TEMP || os.tmpdir(), 'buildkit-config-'));
const tmpName = path.join(tmpDir, '.tmpname-jest');
const tmpName = path.join(tmpDir, '.tmpname-vi');
jest.spyOn(Context, 'tmpDir').mockImplementation((): string => {
vi.spyOn(Context, 'tmpDir').mockImplementation((): string => {
fs.mkdirSync(tmpDir, {recursive: true});
return tmpDir;
});
jest.spyOn(Context, 'tmpName').mockImplementation((): string => {
vi.spyOn(Context, 'tmpName').mockImplementation((): string => {
return tmpName;
});
@@ -53,7 +53,7 @@ describe('resolve', () => {
`,
null
]
])('given %p config', async (val: string, file: boolean, exValue: string, error: Error | null) => {
])('given %o config', async (val: string, file: boolean, exValue: string, error: Error | null) => {
try {
const buildkit = new BuildKit();
let config: string;
@@ -66,7 +66,7 @@ describe('resolve', () => {
const configValue = fs.readFileSync(tmpName, 'utf-8');
expect(configValue).toEqual(exValue);
} catch (e) {
// eslint-disable-next-line jest/no-conditional-expect
// eslint-disable-next-line vitest/no-conditional-expect
expect(e.message).toEqual(error?.message);
}
});

View File

@@ -14,14 +14,14 @@
* limitations under the License.
*/
import {beforeEach, describe, expect, jest, test} from '@jest/globals';
import {beforeEach, describe, expect, vi, test} from 'vitest';
import {Git} from '../../src/buildkit/git';
import {Git} from '../../src/buildkit/git.js';
import {GitRef, GitURL} from '../../src/types/buildkit/git';
import {GitRef, GitURL} from '../../src/types/buildkit/git.js';
beforeEach(() => {
jest.restoreAllMocks();
vi.restoreAllMocks();
});
describe('parseURL', () => {
@@ -181,7 +181,7 @@ describe('parseURL', () => {
} as GitURL,
false
],
])('given %p', async (ref: string, expected: GitURL, expectedErr: boolean) => {
])('given %o', async (ref: string, expected: GitURL, expectedErr: boolean) => {
try {
const got = Git.parseURL(ref);
expect(got.scheme).toEqual(expected.scheme);
@@ -195,7 +195,7 @@ describe('parseURL', () => {
if (!expectedErr) {
console.log(err);
}
// eslint-disable-next-line jest/no-conditional-expect
// eslint-disable-next-line vitest/no-conditional-expect
expect(expectedErr).toBeTruthy();
}
});
@@ -329,7 +329,7 @@ describe('parseRef', () => {
'.git',
undefined
],
])('given %p', async (ref: string, expected: GitRef | undefined) => {
])('given %o', async (ref: string, expected: GitRef | undefined) => {
try {
const got = Git.parseRef(ref);
expect(got).toEqual(expected);
@@ -337,7 +337,7 @@ describe('parseRef', () => {
if (expected) {
console.log(err);
}
// eslint-disable-next-line jest/no-conditional-expect
// eslint-disable-next-line vitest/no-conditional-expect
expect(expected).toBeUndefined();
}
});

View File

@@ -14,12 +14,12 @@
* limitations under the License.
*/
import {describe, expect, test} from '@jest/globals';
import {describe, expect, test} from 'vitest';
import * as fs from 'fs';
import * as path from 'path';
import {Bake} from '../../src/buildx/bake';
import {BakeDefinition} from '../../src/types/buildx/bake';
import {Bake} from '../../src/buildx/bake.js';
import {BakeDefinition} from '../../src/types/buildx/bake.js';
const fixturesDir = path.join(__dirname, '..', '.fixtures');
@@ -41,7 +41,7 @@ maybe('getDefinition', () => {
// path.join(fixturesDir, 'bake-test-docker-action-remote-private.json'),
// true,
// ]
])('given %p', async (source: string, targets: string[], out: string, auth) => {
])('given %o', async (source: string, targets: string[], out: string, auth) => {
const gitAuthToken = process.env.GITHUB_TOKEN || '';
if (auth && !gitAuthToken) {
console.log(`Git auth token not available, skipping test`);

View File

@@ -14,30 +14,30 @@
* limitations under the License.
*/
import {afterEach, describe, expect, it, jest, test} from '@jest/globals';
import {afterEach, describe, expect, it, vi, test} from 'vitest';
import fs from 'fs';
import os from 'os';
import path from 'path';
import * as rimraf from 'rimraf';
import {Bake} from '../../src/buildx/bake';
import {Context} from '../../src/context';
import {Bake} from '../../src/buildx/bake.js';
import {Context} from '../../src/context.js';
import {ExecOptions} from '@actions/exec';
import {BakeDefinition} from '../../src/types/buildx/bake';
import {BuildMetadata} from '../../src/types/buildx/build';
import {BakeDefinition} from '../../src/types/buildx/bake.js';
import {BuildMetadata} from '../../src/types/buildx/build.js';
const fixturesDir = path.join(__dirname, '..', '.fixtures');
const tmpDir = fs.mkdtempSync(path.join(process.env.TEMP || os.tmpdir(), 'buildx-bake-'));
const tmpName = path.join(tmpDir, '.tmpname-jest');
const tmpName = path.join(tmpDir, '.tmpname-vi');
const metadata = JSON.parse(fs.readFileSync(path.join(fixturesDir, 'metadata-bake.json'), 'utf-8'));
jest.spyOn(Context, 'tmpDir').mockImplementation((): string => {
vi.spyOn(Context, 'tmpDir').mockImplementation((): string => {
fs.mkdirSync(tmpDir, {recursive: true});
return tmpDir;
});
jest.spyOn(Context, 'tmpName').mockImplementation((): string => {
vi.spyOn(Context, 'tmpName').mockImplementation((): string => {
return tmpName;
});
@@ -102,7 +102,7 @@ describe('getDefinition', () => {
undefined,
path.join(fixturesDir, 'bake-03-default.json')
],
])('given %p', async (files: string[], targets: string[], overrides: string[], execOptions: ExecOptions | undefined, out: string) => {
])('given %o', async (files: string[], targets: string[], overrides: string[], execOptions: ExecOptions | undefined, out: string) => {
const bake = new Bake();
const expectedDef = <BakeDefinition>JSON.parse(fs.readFileSync(out, {encoding: 'utf-8'}).trim())
expect(await bake.getDefinition({
@@ -185,7 +185,7 @@ describe('hasLocalExporter', () => {
} as unknown as BakeDefinition,
true
]
])('given %o returns %p', async (def: BakeDefinition, expected: boolean) => {
])('given %o returns %o', async (def: BakeDefinition, expected: boolean) => {
expect(Bake.hasLocalExporter(def)).toEqual(expected);
});
});
@@ -285,7 +285,7 @@ describe('hasTarExporter', () => {
} as unknown as BakeDefinition,
false
],
])('given %o returns %p', async (def: BakeDefinition, expected: boolean) => {
])('given %o returns %o', async (def: BakeDefinition, expected: boolean) => {
expect(Bake.hasTarExporter(def)).toEqual(expected);
});
});
@@ -440,7 +440,7 @@ describe('hasDockerExporter', () => {
true,
true
],
])('given %o and load:%p returns %p', async (def: BakeDefinition, expected: boolean, load: boolean | undefined) => {
])('given %o and load: %o returns %o', async (def: BakeDefinition, expected: boolean, load: boolean | undefined) => {
expect(Bake.hasDockerExporter(def, load)).toEqual(expected);
});
});
@@ -481,7 +481,7 @@ describe('hasGitAuthTokenSecret', () => {
} as unknown as BakeDefinition,
true
],
])('given %o returns %p', async (def: BakeDefinition, expected: boolean) => {
])('given %o returns %o', async (def: BakeDefinition, expected: boolean) => {
expect(Bake.hasGitAuthTokenSecret(def)).toEqual(expected);
});
});
@@ -536,7 +536,7 @@ describe('hasProvenanceAttestation', () => {
} as unknown as BakeDefinition,
true
]
])('given %o returns %p', async (def: BakeDefinition, expected: boolean) => {
])('given %o returns %o', async (def: BakeDefinition, expected: boolean) => {
expect(Bake.hasProvenanceAttestation(def)).toEqual(expected);
});
});
@@ -591,7 +591,7 @@ describe('hasSBOMAttestation', () => {
} as unknown as BakeDefinition,
true
]
])('given %o returns %p', async (def: BakeDefinition, expected: boolean) => {
])('given %o returns %o', async (def: BakeDefinition, expected: boolean) => {
expect(Bake.hasSBOMAttestation(def)).toEqual(expected);
});
});

View File

@@ -14,26 +14,30 @@
* limitations under the License.
*/
import {afterEach, beforeEach, describe, expect, it, jest, test} from '@jest/globals';
import {afterEach, beforeEach, describe, expect, it, vi, test} from 'vitest';
import fs from 'fs';
import os from 'os';
import path from 'path';
import * as github from '@actions/github';
import * as rimraf from 'rimraf';
import {Context} from '../../src/context';
import {Build} from '../../src/buildx/build';
import {Context} from '../../src/context.js';
import {Build} from '../../src/buildx/build.js';
import {Buildx} from '../../src/buildx/buildx.js';
import {GitContextFormat} from '../../src/types/buildx/build.js';
const fixturesDir = path.join(__dirname, '..', '.fixtures');
const tmpDir = fs.mkdtempSync(path.join(process.env.TEMP || os.tmpdir(), 'buildx-build-'));
const tmpName = path.join(tmpDir, '.tmpname-jest');
const tmpName = path.join(tmpDir, '.tmpname-vi');
const metadata = JSON.parse(fs.readFileSync(path.join(fixturesDir, 'metadata-build.json'), 'utf-8'));
jest.spyOn(Context, 'tmpDir').mockImplementation((): string => {
vi.spyOn(Context, 'tmpDir').mockImplementation((): string => {
fs.mkdirSync(tmpDir, {recursive: true});
return tmpDir;
});
jest.spyOn(Context, 'tmpName').mockImplementation((): string => {
vi.spyOn(Context, 'tmpName').mockImplementation((): string => {
return tmpName;
});
@@ -41,6 +45,111 @@ afterEach(() => {
rimraf.sync(tmpDir);
});
describe('gitContext', () => {
const originalEnv = process.env;
const githubContextSha = '860c1904a1ce19322e91ac35af1ab07466440c37';
const pullRequestHeadSha = 'f11797113e5a9b86bd976329c5dbb8a8bfdfadfa';
beforeEach(() => {
vi.resetModules();
process.env = {
...originalEnv,
DOCKER_DEFAULT_GIT_CONTEXT_PR_HEAD_REF: '',
BUILDX_SEND_GIT_QUERY_AS_INPUT: ''
};
github.context.sha = githubContextSha;
github.context.payload.pull_request = {
number: 15,
head: {
sha: pullRequestHeadSha
}
};
});
afterEach(() => {
process.env = originalEnv;
delete github.context.payload.pull_request;
});
type GitContextTestCase = {
ref: string;
checksum?: string;
subdir?: string;
attrs?: Record<string, string>;
format: GitContextFormat | undefined;
prHeadRef: boolean;
sendGitQueryAsInput: boolean;
buildxQuerySupport: boolean;
};
// prettier-ignore
const gitContextCases: [GitContextTestCase, string][] = [
// no format set (defaults to fragment)
[{ref: 'refs/heads/master', format: undefined, prHeadRef: false, sendGitQueryAsInput: false, buildxQuerySupport: true}, 'https://github.com/docker/actions-toolkit.git#860c1904a1ce19322e91ac35af1ab07466440c37'],
[{ref: 'master', format: undefined, prHeadRef: false, sendGitQueryAsInput: false, buildxQuerySupport: true}, 'https://github.com/docker/actions-toolkit.git#860c1904a1ce19322e91ac35af1ab07466440c37'],
[{ref: 'refs/pull/15/merge', checksum: undefined, format: undefined, prHeadRef: false, sendGitQueryAsInput: false, buildxQuerySupport: true}, 'https://github.com/docker/actions-toolkit.git#860c1904a1ce19322e91ac35af1ab07466440c37'],
[{ref: 'refs/tags/v1.0.0', format: undefined, prHeadRef: false, sendGitQueryAsInput: false, buildxQuerySupport: true}, 'https://github.com/docker/actions-toolkit.git#860c1904a1ce19322e91ac35af1ab07466440c37'],
[{ref: 'refs/pull/15/merge', checksum: undefined, format: undefined, prHeadRef: true, sendGitQueryAsInput: false, buildxQuerySupport: true}, 'https://github.com/docker/actions-toolkit.git#f11797113e5a9b86bd976329c5dbb8a8bfdfadfa'],
// no format set (defaults to query only when client-side query resolution is enabled and supported)
[{ref: 'refs/heads/master', format: undefined, prHeadRef: false, sendGitQueryAsInput: true, buildxQuerySupport: true}, 'https://github.com/docker/actions-toolkit.git?ref=refs/heads/master&checksum=860c1904a1ce19322e91ac35af1ab07466440c37'],
[{ref: 'refs/pull/15/merge', checksum: undefined, format: undefined, prHeadRef: false, sendGitQueryAsInput: true, buildxQuerySupport: true}, 'https://github.com/docker/actions-toolkit.git?ref=860c1904a1ce19322e91ac35af1ab07466440c37'],
[{ref: 'refs/pull/15/merge', checksum: undefined, format: undefined, prHeadRef: true, sendGitQueryAsInput: true, buildxQuerySupport: true}, 'https://github.com/docker/actions-toolkit.git?ref=f11797113e5a9b86bd976329c5dbb8a8bfdfadfa'],
[{ref: 'refs/heads/master', format: undefined, prHeadRef: false, sendGitQueryAsInput: true, buildxQuerySupport: false}, 'https://github.com/docker/actions-toolkit.git#860c1904a1ce19322e91ac35af1ab07466440c37'],
[{ref: 'refs/heads/master', format: undefined, prHeadRef: false, sendGitQueryAsInput: false, buildxQuerySupport: true, attrs: {}}, 'https://github.com/docker/actions-toolkit.git#860c1904a1ce19322e91ac35af1ab07466440c37'],
[{ref: 'refs/heads/master', checksum: undefined, format: undefined, prHeadRef: false, sendGitQueryAsInput: false, buildxQuerySupport: true, attrs: {checksum: 'cafebabe'}}, 'https://github.com/docker/actions-toolkit.git#cafebabe'],
[{ref: 'refs/heads/master', format: undefined, prHeadRef: false, sendGitQueryAsInput: false, buildxQuerySupport: true, attrs: {subdir: 'subdir'}}, 'https://github.com/docker/actions-toolkit.git#860c1904a1ce19322e91ac35af1ab07466440c37:subdir'],
[{ref: 'refs/heads/master', format: undefined, prHeadRef: false, sendGitQueryAsInput: false, buildxQuerySupport: true, attrs: {ref: 'refs/tags/v1.0.0'}}, 'https://github.com/docker/actions-toolkit.git#860c1904a1ce19322e91ac35af1ab07466440c37'],
[{ref: 'refs/heads/master', format: undefined, prHeadRef: false, sendGitQueryAsInput: false, buildxQuerySupport: true, attrs: {'keep-git-dir': 'true'}}, 'https://github.com/docker/actions-toolkit.git?ref=refs/heads/master&checksum=860c1904a1ce19322e91ac35af1ab07466440c37&keep-git-dir=true'],
[{ref: 'refs/heads/master', format: undefined, prHeadRef: false, sendGitQueryAsInput: false, buildxQuerySupport: false, attrs: {'keep-git-dir': 'true'}}, 'https://github.com/docker/actions-toolkit.git?ref=refs/heads/master&checksum=860c1904a1ce19322e91ac35af1ab07466440c37&keep-git-dir=true'],
[{ref: 'refs/heads/master', checksum: undefined, format: undefined, prHeadRef: false, sendGitQueryAsInput: false, buildxQuerySupport: true, attrs: {checksum: 'cafebabe', 'keep-git-dir': 'true'}}, 'https://github.com/docker/actions-toolkit.git?ref=refs/heads/master&checksum=cafebabe&keep-git-dir=true'],
[{ref: 'refs/heads/master', format: undefined, prHeadRef: false, sendGitQueryAsInput: false, buildxQuerySupport: true, attrs: {submodules: 'false'}}, 'https://github.com/docker/actions-toolkit.git?ref=refs/heads/master&checksum=860c1904a1ce19322e91ac35af1ab07466440c37&submodules=false'],
[{ref: 'refs/heads/master', format: undefined, prHeadRef: false, sendGitQueryAsInput: false, buildxQuerySupport: false, attrs: {submodules: 'false'}}, 'https://github.com/docker/actions-toolkit.git?ref=refs/heads/master&checksum=860c1904a1ce19322e91ac35af1ab07466440c37&submodules=false'],
// query format
[{ref: 'refs/heads/master', format: 'query', prHeadRef: false, sendGitQueryAsInput: false, buildxQuerySupport: true}, 'https://github.com/docker/actions-toolkit.git?ref=refs/heads/master&checksum=860c1904a1ce19322e91ac35af1ab07466440c37'],
[{ref: 'master', format: 'query', prHeadRef: false, sendGitQueryAsInput: false, buildxQuerySupport: true}, 'https://github.com/docker/actions-toolkit.git?ref=refs/heads/master&checksum=860c1904a1ce19322e91ac35af1ab07466440c37'],
[{ref: 'refs/pull/15/merge', checksum: undefined, format: 'query', prHeadRef: false, sendGitQueryAsInput: false, buildxQuerySupport: true}, 'https://github.com/docker/actions-toolkit.git?ref=860c1904a1ce19322e91ac35af1ab07466440c37'],
[{ref: 'refs/tags/v1.0.0', format: 'query', prHeadRef: false, sendGitQueryAsInput: false, buildxQuerySupport: true}, 'https://github.com/docker/actions-toolkit.git?ref=refs/tags/v1.0.0&checksum=860c1904a1ce19322e91ac35af1ab07466440c37'],
[{ref: 'refs/pull/15/merge', checksum: undefined, format: 'query', prHeadRef: true, sendGitQueryAsInput: false, buildxQuerySupport: true}, 'https://github.com/docker/actions-toolkit.git?ref=f11797113e5a9b86bd976329c5dbb8a8bfdfadfa'],
[{ref: 'refs/pull/15/merge', checksum: undefined, format: 'query', prHeadRef: false, sendGitQueryAsInput: false, buildxQuerySupport: true, attrs: {checksum: 'cafebabe'}}, 'https://github.com/docker/actions-toolkit.git?ref=refs/pull/15/merge&checksum=cafebabe'],
[{ref: 'refs/heads/master', format: 'query', prHeadRef: false, sendGitQueryAsInput: false, buildxQuerySupport: true, subdir: 'subdir'}, 'https://github.com/docker/actions-toolkit.git?ref=refs/heads/master&checksum=860c1904a1ce19322e91ac35af1ab07466440c37&subdir=subdir'],
[{ref: 'refs/heads/master', format: 'query', prHeadRef: false, sendGitQueryAsInput: false, buildxQuerySupport: true, subdir: '.'}, 'https://github.com/docker/actions-toolkit.git?ref=refs/heads/master&checksum=860c1904a1ce19322e91ac35af1ab07466440c37'],
[{ref: 'refs/heads/master', checksum: undefined, format: 'query', prHeadRef: false, sendGitQueryAsInput: false, buildxQuerySupport: true, attrs: {ref: 'refs/tags/v1.0.0', checksum: 'cafebabe', subdir: 'subdir', submodules: 'false'}}, 'https://github.com/docker/actions-toolkit.git?ref=refs/heads/master&checksum=cafebabe&subdir=subdir&submodules=false'],
[{ref: 'refs/heads/master', format: 'query', prHeadRef: false, sendGitQueryAsInput: false, buildxQuerySupport: true, subdir: 'subdir', attrs: {'keep-git-dir': 'true'}}, 'https://github.com/docker/actions-toolkit.git?ref=refs/heads/master&checksum=860c1904a1ce19322e91ac35af1ab07466440c37&subdir=subdir&keep-git-dir=true'],
[{ref: 'refs/heads/master', format: 'query', prHeadRef: false, sendGitQueryAsInput: false, buildxQuerySupport: true, attrs: {submodules: 'true'}}, 'https://github.com/docker/actions-toolkit.git?ref=refs/heads/master&checksum=860c1904a1ce19322e91ac35af1ab07466440c37&submodules=true'],
[{ref: 'refs/heads/master', format: 'query', prHeadRef: false, sendGitQueryAsInput: false, buildxQuerySupport: true, attrs: {submodules: 'false'}}, 'https://github.com/docker/actions-toolkit.git?ref=refs/heads/master&checksum=860c1904a1ce19322e91ac35af1ab07466440c37&submodules=false'],
[{ref: 'refs/heads/master', format: 'query', prHeadRef: false, sendGitQueryAsInput: false, buildxQuerySupport: true, attrs: {'keep-git-dir': 'true', submodules: 'false'}}, 'https://github.com/docker/actions-toolkit.git?ref=refs/heads/master&checksum=860c1904a1ce19322e91ac35af1ab07466440c37&keep-git-dir=true&submodules=false'],
// fragment format
[{ref: 'refs/heads/master', format: 'fragment', prHeadRef: false, sendGitQueryAsInput: false, buildxQuerySupport: true}, 'https://github.com/docker/actions-toolkit.git#860c1904a1ce19322e91ac35af1ab07466440c37'],
[{ref: 'master', format: 'fragment', prHeadRef: false, sendGitQueryAsInput: false, buildxQuerySupport: true}, 'https://github.com/docker/actions-toolkit.git#860c1904a1ce19322e91ac35af1ab07466440c37'],
[{ref: 'refs/pull/15/merge', checksum: undefined, format: 'fragment', prHeadRef: false, sendGitQueryAsInput: false, buildxQuerySupport: true}, 'https://github.com/docker/actions-toolkit.git#860c1904a1ce19322e91ac35af1ab07466440c37'],
[{ref: 'refs/tags/v1.0.0', format: 'fragment', prHeadRef: false, sendGitQueryAsInput: false, buildxQuerySupport: true}, 'https://github.com/docker/actions-toolkit.git#860c1904a1ce19322e91ac35af1ab07466440c37'],
[{ref: 'refs/pull/15/merge', checksum: undefined, format: 'fragment', prHeadRef: true, sendGitQueryAsInput: false, buildxQuerySupport: true}, 'https://github.com/docker/actions-toolkit.git#f11797113e5a9b86bd976329c5dbb8a8bfdfadfa'],
[{ref: 'refs/pull/15/merge', checksum: undefined, format: 'fragment', prHeadRef: false, sendGitQueryAsInput: false, buildxQuerySupport: true, attrs: {checksum: 'cafebabe'}}, 'https://github.com/docker/actions-toolkit.git#refs/pull/15/merge'],
[{ref: 'refs/heads/master', checksum: undefined, format: 'fragment', prHeadRef: false, sendGitQueryAsInput: false, buildxQuerySupport: true, attrs: {checksum: 'cafebabe', subdir: 'subdir', ref: 'refs/tags/v1.0.0'}}, 'https://github.com/docker/actions-toolkit.git#cafebabe:subdir'],
[{ref: 'refs/heads/master', format: 'fragment', prHeadRef: false, sendGitQueryAsInput: false, buildxQuerySupport: true, attrs: {'keep-git-dir': 'true'}}, 'https://github.com/docker/actions-toolkit.git#860c1904a1ce19322e91ac35af1ab07466440c37'],
[{ref: 'refs/heads/master', format: 'fragment', prHeadRef: false, sendGitQueryAsInput: false, buildxQuerySupport: true, subdir: 'subdir'}, 'https://github.com/docker/actions-toolkit.git#860c1904a1ce19322e91ac35af1ab07466440c37:subdir'],
[{ref: 'refs/heads/master', format: 'fragment', prHeadRef: false, sendGitQueryAsInput: false, buildxQuerySupport: true, subdir: '.'}, 'https://github.com/docker/actions-toolkit.git#860c1904a1ce19322e91ac35af1ab07466440c37'],
[{ref: 'refs/pull/15/merge', checksum: undefined, format: 'fragment', prHeadRef: true, sendGitQueryAsInput: false, buildxQuerySupport: true, subdir: 'subdir'}, 'https://github.com/docker/actions-toolkit.git#f11797113e5a9b86bd976329c5dbb8a8bfdfadfa:subdir'],
];
test.each(gitContextCases)('given %o should return %o', async (input: GitContextTestCase, expected: string) => {
const {ref, checksum, format, prHeadRef, sendGitQueryAsInput, buildxQuerySupport, subdir, attrs} = input;
process.env.DOCKER_DEFAULT_GIT_CONTEXT_PR_HEAD_REF = prHeadRef ? 'true' : '';
process.env.BUILDX_SEND_GIT_QUERY_AS_INPUT = sendGitQueryAsInput ? 'true' : '';
const buildx = new Buildx();
vi.spyOn(buildx, 'versionSatisfies').mockResolvedValue(buildxQuerySupport);
const build = new Build({buildx});
expect(
await build.gitContext({
ref,
...('checksum' in input ? {checksum} : {checksum: '860c1904a1ce19322e91ac35af1ab07466440c37'}),
format,
subdir,
attrs
})
).toEqual(expected);
});
});
describe('resolveImageID', () => {
it('matches', async () => {
const imageID = 'sha256:bfb45ab72e46908183546477a08f8867fc40cebadd00af54b071b097aed127a9';
@@ -136,7 +245,7 @@ describe('getProvenanceInput', () => {
'',
''
],
])('given input %p', async (input: string, expected: string) => {
])('given input %o', async (input: string, expected: string) => {
setInput('provenance', input);
expect(Build.getProvenanceInput('provenance')).toEqual(expected);
});
@@ -165,50 +274,69 @@ describe('resolveProvenanceAttrs', () => {
'',
'builder-id=https://github.com/docker/actions-toolkit/actions/runs/2188748038/attempts/2'
],
])('given %p', async (input: string, expected: string) => {
])('given %o', async (input: string, expected: string) => {
expect(Build.resolveProvenanceAttrs(input)).toEqual(expected);
});
});
describe('resolveSecret', () => {
// prettier-ignore
test.each([
['A_SECRET=abcdef0123456789', false, 'A_SECRET', 'abcdef0123456789', null],
['GIT_AUTH_TOKEN=abcdefghijklmno=0123456789', false, 'GIT_AUTH_TOKEN', 'abcdefghijklmno=0123456789', null],
['MY_KEY=c3RyaW5nLXdpdGgtZXF1YWxzCg==', false, 'MY_KEY', 'c3RyaW5nLXdpdGgtZXF1YWxzCg==', null],
['aaaaaaaa', false, '', '', new Error('aaaaaaaa is not a valid secret')],
['aaaaaaaa=', false, '', '', new Error('aaaaaaaa= is not a valid secret')],
['=bbbbbbb', false, '', '', new Error('=bbbbbbb is not a valid secret')],
[`foo=${path.join(fixturesDir, 'secret.txt')}`, true, 'foo', 'bar', null],
[`notfound=secret`, true, '', '', new Error('secret file secret not found')]
])('given %p key and %p secret', async (kvp: string, file: boolean, exKey: string, exValue: string, error: Error | null) => {
try {
let secret: string;
if (file) {
secret = Build.resolveSecretFile(kvp);
} else {
secret = Build.resolveSecretString(kvp);
}
expect(secret).toEqual(`id=${exKey},src=${tmpName}`);
expect(fs.readFileSync(tmpName, 'utf-8')).toEqual(exValue);
} catch (e) {
// eslint-disable-next-line jest/no-conditional-expect
expect(e.message).toEqual(error?.message);
}
['A_SECRET=abcdef0123456789', 'A_SECRET', 'abcdef0123456789'],
['GIT_AUTH_TOKEN=abcdefghijklmno=0123456789', 'GIT_AUTH_TOKEN', 'abcdefghijklmno=0123456789'],
['MY_KEY=c3RyaW5nLXdpdGgtZXF1YWxzCg==', 'MY_KEY', 'c3RyaW5nLXdpdGgtZXF1YWxzCg==']
])('given %o key and string secret', (kvp: string, exKey: string, exValue: string) => {
const secret = Build.resolveSecretString(kvp);
expect(secret).toEqual(`id=${exKey},src=${tmpName}`);
expect(fs.readFileSync(tmpName, 'utf-8')).toEqual(exValue);
});
// prettier-ignore
test.each([
['FOO=bar', 'FOO', 'bar', null],
['FOO=', 'FOO', '', new Error('FOO= is not a valid secret')],
['=bar', '', '', new Error('=bar is not a valid secret')],
['FOO=bar=baz', 'FOO', 'bar=baz', null]
])('given %p key and %p env', async (kvp: string, exKey: string, exValue: string, error: Error | null) => {
try {
const secret = Build.resolveSecretEnv(kvp);
expect(secret).toEqual(`id=${exKey},env=${exValue}`);
} catch (e) {
// eslint-disable-next-line jest/no-conditional-expect
expect(e.message).toEqual(error?.message);
}
[`foo=${path.join(fixturesDir, 'secret.txt')}`, 'foo', path.join(fixturesDir, 'secret.txt')]
])('given %o key and file secret', (kvp: string, exKey: string, exSrc: string) => {
const secret = Build.resolveSecretFile(kvp);
expect(secret).toEqual(`id=${exKey},src=${exSrc}`);
});
// prettier-ignore
test.each([
['aaaaaaaa', false, 'aaaaaaaa is not a valid secret'],
['aaaaaaaa=', false, 'aaaaaaaa= is not a valid secret'],
['=bbbbbbb', false, '=bbbbbbb is not a valid secret'],
['notfound=secret', true, 'secret file secret not found']
])('given %o key and %o secret throws', (kvp: string, file: boolean, errorMessage: string) => {
const resolve = (): string => (file ? Build.resolveSecretFile(kvp) : Build.resolveSecretString(kvp));
expect(resolve).toThrow(errorMessage);
});
// prettier-ignore
test('preserves file-backed secret path and bytes', async () => {
fs.mkdirSync(tmpDir, {recursive: true});
const sourceFile = path.join(tmpDir, 'secret.bin');
const sourceBytes = Buffer.from([0x50, 0x4b, 0x03, 0x04, 0x00, 0xff, 0x41, 0x42, 0x43, 0x0a, 0x80]);
fs.writeFileSync(sourceFile, sourceBytes);
const secret = Build.resolveSecretFile(`foo=${sourceFile}`);
expect(secret).toEqual(`id=foo,src=${sourceFile}`);
expect(fs.readFileSync(sourceFile)).toEqual(sourceBytes);
expect(fs.existsSync(tmpName)).toBeFalsy();
});
// prettier-ignore
test.each([
['FOO=bar', 'FOO', 'bar'],
['FOO=bar=baz', 'FOO', 'bar=baz']
])('given %o key and %o env', (kvp: string, exKey: string, exValue: string) => {
const secret = Build.resolveSecretEnv(kvp);
expect(secret).toEqual(`id=${exKey},env=${exValue}`);
});
// prettier-ignore
test.each([
['FOO=', 'FOO= is not a valid secret'],
['=bar', '=bar is not a valid secret']
])('given %o key and %o env throws', (kvp: string, errorMessage: string) => {
expect(() => Build.resolveSecretEnv(kvp)).toThrow(errorMessage);
});
});
@@ -255,7 +383,7 @@ describe('resolveCacheToAttrs', () => {
'abcd1234',
'type=gha,repository=foo/bar,mode=max,ghtoken=abcd1234',
],
])('given %p', async (input: string, githubToken: string | undefined, expected: string) => {
])('given %o', async (input: string, githubToken: string | undefined, expected: string) => {
expect(Build.resolveCacheToAttrs(input, githubToken)).toEqual(expected);
});
});
@@ -271,7 +399,7 @@ describe('hasLocalExporter', () => {
[['"type=tar","dest=/tmp/image.tar"'], false],
[['" type= local" , dest=./release-out'], true],
[['.'], true]
])('given %p returns %p', async (exporters: Array<string>, expected: boolean) => {
])('given %o returns %o', async (exporters: Array<string>, expected: boolean) => {
expect(Build.hasLocalExporter(exporters)).toEqual(expected);
});
});
@@ -287,7 +415,7 @@ describe('hasTarExporter', () => {
[['"type=tar","dest=/tmp/image.tar"'], true],
[['" type= local" , dest=./release-out'], false],
[['.'], false]
])('given %p returns %p', async (exporters: Array<string>, expected: boolean) => {
])('given %o returns %o', async (exporters: Array<string>, expected: boolean) => {
expect(Build.hasTarExporter(exporters)).toEqual(expected);
});
});
@@ -305,7 +433,7 @@ describe('hasDockerExporter', () => {
[['type=docker'], true, false],
[['type=docker'], true, true],
[['.'], true, true],
])('given %p returns %p', async (exporters: Array<string>, expected: boolean, load: boolean | undefined) => {
])('given %o returns %o', async (exporters: Array<string>, expected: boolean, load: boolean | undefined) => {
expect(Build.hasDockerExporter(exporters, load)).toEqual(expected);
});
});
@@ -316,7 +444,7 @@ describe('hasAttestationType', () => {
['type=provenance,mode=min', 'provenance', true],
['type=sbom,true', 'sbom', true],
['type=foo,bar', 'provenance', false],
])('given %p for %p returns %p', async (attrs: string, name: string, expected: boolean) => {
])('given %o for %o returns %o', async (attrs: string, name: string, expected: boolean) => {
expect(Build.hasAttestationType(name, attrs)).toEqual(expected);
});
});
@@ -340,7 +468,7 @@ describe('resolveAttestationAttrs', () => {
'',
''
],
])('given %p', async (input: string, expected: string) => {
])('given %o', async (input: string, expected: string) => {
expect(Build.resolveAttestationAttrs(input)).toEqual(expected);
});
});
@@ -348,10 +476,11 @@ describe('resolveAttestationAttrs', () => {
describe('hasGitAuthTokenSecret', () => {
// prettier-ignore
test.each([
[['A_SECRET=abcdef0123456789'], false],
[['GIT_AUTH_TOKEN=abcdefghijklmno=0123456789'], true],
])('given %p secret', async (kvp: Array<string>, expected: boolean) => {
expect(Build.hasGitAuthTokenSecret(kvp)).toBe(expected);
[['A_SECRET=abcdef0123456789'], undefined, false],
[['GIT_AUTH_TOKEN=abcdefghijklmno=0123456789'], undefined, true],
[['GIT_AUTH_TOKEN.github.com=abcdefghijklmno=0123456789'], 'github.com', true],
])('given %o secret', async (kvp: Array<string>, domain: string | undefined, expected: boolean) => {
expect(Build.hasGitAuthTokenSecret(kvp, domain)).toBe(expected);
});
});

View File

@@ -14,18 +14,18 @@
* limitations under the License.
*/
import {describe, expect, it, jest, test} from '@jest/globals';
import {describe, expect, it, vi, test} from 'vitest';
import * as fs from 'fs';
import * as path from 'path';
import {Builder} from '../../src/buildx/builder';
import {Exec} from '../../src/exec';
import {Builder} from '../../src/buildx/builder.js';
import {Exec} from '../../src/exec.js';
import {BuilderInfo} from '../../src/types/buildx/builder';
import {BuilderInfo} from '../../src/types/buildx/builder.js';
const fixturesDir = path.join(__dirname, '..', '.fixtures');
jest.spyOn(Builder.prototype, 'inspect').mockImplementation(async (): Promise<BuilderInfo> => {
vi.spyOn(Builder.prototype, 'inspect').mockImplementation(async (): Promise<BuilderInfo> => {
return {
name: 'builder2',
driver: 'docker-container',
@@ -46,10 +46,9 @@ jest.spyOn(Builder.prototype, 'inspect').mockImplementation(async (): Promise<Bu
describe('exists', () => {
it('valid', async () => {
const execSpy = jest.spyOn(Exec, 'getExecOutput');
const execSpy = vi.spyOn(Exec, 'getExecOutput');
const builder = new Builder();
await builder.exists('foo');
// eslint-disable-next-line jest/no-standalone-expect
expect(execSpy).toHaveBeenCalledWith(`docker`, ['buildx', 'inspect', 'foo'], {
silent: true,
ignoreReturnCode: true
@@ -549,7 +548,7 @@ baz = qux
]
}
],
])('given %p', async (inspectFile, expected) => {
])('given %o', async (inspectFile, expected) => {
expect(await Builder.parseInspect(fs.readFileSync(path.join(fixturesDir, inspectFile)).toString())).toEqual(expected);
});
});

View File

@@ -14,16 +14,16 @@
* limitations under the License.
*/
import {describe, expect, it} from '@jest/globals';
import {describe, expect, it} from 'vitest';
import fs from 'fs';
import os from 'os';
import path from 'path';
import * as core from '@actions/core';
import {Buildx} from '../../src/buildx/buildx';
import {Build} from '../../src/buildx/build';
import {Bake} from '../../src/buildx/bake';
import {Exec} from '../../src/exec';
import {Buildx} from '../../src/buildx/buildx.js';
import {Build} from '../../src/buildx/build.js';
import {Bake} from '../../src/buildx/bake.js';
import {Exec} from '../../src/exec.js';
const fixturesDir = path.join(__dirname, '..', '.fixtures');
const tmpDir = fs.mkdtempSync(path.join(process.env.TEMP || os.tmpdir(), 'buildx-buildx-itg-'));

View File

@@ -14,29 +14,29 @@
* limitations under the License.
*/
import {describe, expect, it, jest, test, beforeEach, afterEach} from '@jest/globals';
import {describe, expect, it, vi, test, beforeEach, afterEach} from 'vitest';
import fs from 'fs';
import os from 'os';
import path from 'path';
import * as rimraf from 'rimraf';
import * as semver from 'semver';
import {Buildx} from '../../src/buildx/buildx';
import {Context} from '../../src/context';
import {Exec} from '../../src/exec';
import {Buildx} from '../../src/buildx/buildx.js';
import {Context} from '../../src/context.js';
import {Exec} from '../../src/exec.js';
import {Cert, LocalState} from '../../src/types/buildx/buildx';
import {Cert, LocalState} from '../../src/types/buildx/buildx.js';
const fixturesDir = path.join(__dirname, '..', '.fixtures');
const tmpDir = fs.mkdtempSync(path.join(process.env.TEMP || os.tmpdir(), 'buildx-buildx-'));
const tmpName = path.join(tmpDir, '.tmpname-jest');
const tmpName = path.join(tmpDir, '.tmpname-vi');
jest.spyOn(Context, 'tmpDir').mockImplementation((): string => {
vi.spyOn(Context, 'tmpDir').mockImplementation((): string => {
fs.mkdirSync(tmpDir, {recursive: true});
return tmpDir;
});
jest.spyOn(Context, 'tmpName').mockImplementation((): string => {
vi.spyOn(Context, 'tmpName').mockImplementation((): string => {
return tmpName;
});
@@ -47,7 +47,7 @@ afterEach(() => {
describe('configDir', () => {
const originalEnv = process.env;
beforeEach(() => {
jest.resetModules();
vi.resetModules();
process.env = {
...originalEnv,
BUILDX_CONFIG: '/var/docker/buildx',
@@ -69,7 +69,7 @@ describe('configDir', () => {
describe('certsDir', () => {
const originalEnv = process.env;
beforeEach(() => {
jest.resetModules();
vi.resetModules();
process.env = {
...originalEnv,
BUILDX_CONFIG: '/var/docker/buildx'
@@ -86,24 +86,22 @@ describe('certsDir', () => {
describe('isAvailable', () => {
it('docker cli', async () => {
const execSpy = jest.spyOn(Exec, 'getExecOutput');
const execSpy = vi.spyOn(Exec, 'getExecOutput');
const buildx = new Buildx({
standalone: false
});
await buildx.isAvailable();
// eslint-disable-next-line jest/no-standalone-expect
expect(execSpy).toHaveBeenCalledWith(`docker`, ['buildx'], {
silent: true,
ignoreReturnCode: true
});
});
it('standalone', async () => {
const execSpy = jest.spyOn(Exec, 'getExecOutput');
const execSpy = vi.spyOn(Exec, 'getExecOutput');
const buildx = new Buildx({
standalone: true
});
await buildx.isAvailable();
// eslint-disable-next-line jest/no-standalone-expect
expect(execSpy).toHaveBeenCalledWith(`buildx`, [], {
silent: true,
ignoreReturnCode: true
@@ -113,7 +111,7 @@ describe('isAvailable', () => {
describe('printVersion', () => {
it('docker cli', async () => {
const execSpy = jest.spyOn(Exec, 'exec');
const execSpy = vi.spyOn(Exec, 'exec');
const buildx = new Buildx({
standalone: false
});
@@ -123,7 +121,7 @@ describe('printVersion', () => {
});
});
it('standalone', async () => {
const execSpy = jest.spyOn(Exec, 'exec');
const execSpy = vi.spyOn(Exec, 'exec');
const buildx = new Buildx({
standalone: true
});
@@ -147,7 +145,7 @@ describe('parseVersion', () => {
['github.com/docker/buildx v0.4.1 bda4882a65349ca359216b135896bddc1d92461c', '0.4.1'],
['github.com/docker/buildx v0.4.2 fb7b670b764764dc4716df3eba07ffdae4cc47b2', '0.4.2'],
['github.com/docker/buildx f117971 f11797113e5a9b86bd976329c5dbb8a8bfdfadfa', 'f117971']
])('given %p', async (stdout, expected) => {
])('given %o', async (stdout, expected) => {
expect(Buildx.parseVersion(stdout)).toEqual(expected);
});
});
@@ -157,7 +155,7 @@ describe('versionSatisfies', () => {
['0.4.1', '>=0.3.2', true],
['bda4882a65349ca359216b135896bddc1d92461c', '>0.1.0', false],
['f117971', '>0.6.0', true]
])('given %p', async (version, range, expected) => {
])('given %o', async (version, range, expected) => {
const buildx = new Buildx();
expect(await buildx.versionSatisfies(range, version)).toBe(expected);
});
@@ -166,7 +164,7 @@ describe('versionSatisfies', () => {
describe('resolveCertsDriverOpts', () => {
const originalEnv = process.env;
beforeEach(() => {
jest.resetModules();
vi.resetModules();
process.env = {
...originalEnv,
BUILDX_CONFIG: path.join(tmpDir, 'resolveCertsDriverOpts', 'buildx')
@@ -238,7 +236,7 @@ describe('resolveCertsDriverOpts', () => {
],
[]
],
])('%p. given %p endpoint, %p driver', async (id: number, endpoint: string, driver: string, cert: Cert, expectedFiles: Array<string>, expectedOpts: Array<string>) => {
])('%o. given %o endpoint, %o driver', async (id: number, endpoint: string, driver: string, cert: Cert, expectedFiles: Array<string>, expectedOpts: Array<string>) => {
fs.mkdirSync(Buildx.certsDir, {recursive: true});
expect(Buildx.resolveCertsDriverOpts(driver, endpoint, cert)).toEqual(expectedOpts);
for (const k in expectedFiles) {
@@ -300,7 +298,7 @@ describe('localState', () => {
DockerfilePath: '-'
} as LocalState,
]
])('given %p', async (ref: string, expected: LocalState) => {
])('given %o', async (ref: string, expected: LocalState) => {
const localState = Buildx.localState(ref, path.join(fixturesDir, 'buildx-refs'));
expect(localState).toEqual(expected);
});

View File

@@ -14,16 +14,16 @@
* limitations under the License.
*/
import {describe, expect, it, test} from '@jest/globals';
import {describe, expect, it, test} from 'vitest';
import fs from 'fs';
import os from 'os';
import path from 'path';
import {Buildx} from '../../src/buildx/buildx';
import {Bake} from '../../src/buildx/bake';
import {Build} from '../../src/buildx/build';
import {History} from '../../src/buildx/history';
import {Exec} from '../../src/exec';
import {Buildx} from '../../src/buildx/buildx.js';
import {Bake} from '../../src/buildx/bake.js';
import {Build} from '../../src/buildx/build.js';
import {History} from '../../src/buildx/history.js';
import {Exec} from '../../src/exec.js';
const fixturesDir = path.join(__dirname, '..', '.fixtures');
const tmpDir = fs.mkdtempSync(path.join(process.env.TEMP || os.tmpdir(), 'buildx-history-itg-'));
@@ -187,40 +187,4 @@ maybe('export', () => {
expect(fs.existsSync(exportRes?.dockerbuildFilename)).toBe(true);
expect(exportRes?.summaries).toBeDefined();
});
it('export using container', async () => {
const buildx = new Buildx();
const build = new Build({buildx: buildx});
fs.mkdirSync(tmpDir, {recursive: true});
await expect(
(async () => {
// prettier-ignore
const buildCmd = await buildx.getCommand([
'--builder', process.env.CTN_BUILDER_NAME ?? 'default',
'build', '-f', path.join(fixturesDir, 'hello.Dockerfile'),
'--metadata-file', build.getMetadataFilePath(),
fixturesDir
]);
await Exec.exec(buildCmd.command, buildCmd.args);
})()
).resolves.not.toThrow();
const metadata = build.resolveMetadata();
expect(metadata).toBeDefined();
const buildRef = build.resolveRef(metadata);
expect(buildRef).toBeDefined();
const history = new History({buildx: buildx});
const exportRes = await history.export({
refs: [buildRef ?? ''],
useContainer: true
});
expect(exportRes).toBeDefined();
expect(exportRes?.dockerbuildFilename).toBeDefined();
expect(exportRes?.dockerbuildSize).toBeDefined();
expect(fs.existsSync(exportRes?.dockerbuildFilename)).toBe(true);
expect(exportRes?.summaries).toBeDefined();
});
});

View File

@@ -14,15 +14,15 @@
* limitations under the License.
*/
import {describe, expect, it} from '@jest/globals';
import {describe, expect, it} from 'vitest';
import * as fs from 'fs';
import * as path from 'path';
import {ImageTools} from '../../src/buildx/imagetools';
import {ImageTools} from '../../src/buildx/imagetools.js';
import {Manifest as ImageToolsManifest} from '../../src/types/buildx/imagetools';
import {Image} from '../../src/types/oci/config';
import {Descriptor} from '../../src/types/oci/descriptor';
import {Manifest as ImageToolsManifest} from '../../src/types/buildx/imagetools.js';
import {Image} from '../../src/types/oci/config.js';
import {Descriptor} from '../../src/types/oci/descriptor.js';
const fixturesDir = path.join(__dirname, '..', '.fixtures');
@@ -30,12 +30,12 @@ const maybe = !process.env.GITHUB_ACTIONS || (process.env.GITHUB_ACTIONS === 'tr
maybe('inspectImage', () => {
it('inspect single platform', async () => {
const image = await new ImageTools().inspectImage('moby/buildkit:latest@sha256:5769c54b98840147b74128f38fb0b0a049e24b11a75bd81664131edd2854593f');
const image = await new ImageTools().inspectImage({name: 'moby/buildkit:latest@sha256:5769c54b98840147b74128f38fb0b0a049e24b11a75bd81664131edd2854593f'});
const expectedImage = <Image>JSON.parse(fs.readFileSync(path.join(fixturesDir, 'imagetools-01.json'), {encoding: 'utf-8'}).trim());
expect(image).toEqual(expectedImage);
});
it('inspect multi platform', async () => {
const image = await new ImageTools().inspectImage('moby/buildkit:latest@sha256:86c0ad9d1137c186e9d455912167df20e530bdf7f7c19de802e892bb8ca16552');
const image = await new ImageTools().inspectImage({name: 'moby/buildkit:latest@sha256:86c0ad9d1137c186e9d455912167df20e530bdf7f7c19de802e892bb8ca16552'});
const expectedImage = <Record<string, Image>>JSON.parse(fs.readFileSync(path.join(fixturesDir, 'imagetools-02.json'), {encoding: 'utf-8'}).trim());
expect(image).toEqual(expectedImage);
});
@@ -43,12 +43,12 @@ maybe('inspectImage', () => {
maybe('inspectManifest', () => {
it('inspect descriptor', async () => {
const manifest = await new ImageTools().inspectManifest('moby/buildkit:latest@sha256:dccc69dd895968c4f21aa9e43e715f25f0cedfce4b17f1014c88c307928e22fc');
const manifest = await new ImageTools().inspectManifest({name: 'moby/buildkit:latest@sha256:dccc69dd895968c4f21aa9e43e715f25f0cedfce4b17f1014c88c307928e22fc'});
const expectedManifest = <Descriptor>JSON.parse(fs.readFileSync(path.join(fixturesDir, 'imagetools-03.json'), {encoding: 'utf-8'}).trim());
expect(manifest).toEqual(expectedManifest);
});
it('inspect index', async () => {
const manifest = await new ImageTools().inspectManifest('moby/buildkit:latest@sha256:79cc6476ab1a3371c9afd8b44e7c55610057c43e18d9b39b68e2b0c2475cc1b6');
const manifest = await new ImageTools().inspectManifest({name: 'moby/buildkit:latest@sha256:79cc6476ab1a3371c9afd8b44e7c55610057c43e18d9b39b68e2b0c2475cc1b6'});
const expectedManifest = <ImageToolsManifest>JSON.parse(fs.readFileSync(path.join(fixturesDir, 'imagetools-04.json'), {encoding: 'utf-8'}).trim());
expect(manifest).toEqual(expectedManifest);
});
@@ -56,15 +56,25 @@ maybe('inspectManifest', () => {
maybe('attestationDescriptors', () => {
it('returns buildkit attestations descriptors', async () => {
const attestations = await new ImageTools().attestationDescriptors('moby/buildkit:latest@sha256:79cc6476ab1a3371c9afd8b44e7c55610057c43e18d9b39b68e2b0c2475cc1b6');
const attestations = await new ImageTools().attestationDescriptors({name: 'moby/buildkit:latest@sha256:79cc6476ab1a3371c9afd8b44e7c55610057c43e18d9b39b68e2b0c2475cc1b6'});
const expectedAttestations = <Array<Descriptor>>JSON.parse(fs.readFileSync(path.join(fixturesDir, 'imagetools-05.json'), {encoding: 'utf-8'}).trim());
expect(attestations).toEqual(expectedAttestations);
});
it('returns buildkit attestations descriptors for linux/amd64', async () => {
const attestations = await new ImageTools().attestationDescriptors({name: 'moby/buildkit:latest@sha256:79cc6476ab1a3371c9afd8b44e7c55610057c43e18d9b39b68e2b0c2475cc1b6', platform: {os: 'linux', architecture: 'amd64'}});
const expectedAttestations = <Array<Descriptor>>JSON.parse(fs.readFileSync(path.join(fixturesDir, 'imagetools-06.json'), {encoding: 'utf-8'}).trim());
expect(attestations).toEqual(expectedAttestations);
});
it('returns buildkit attestations descriptors for linux/arm/v7', async () => {
const attestations = await new ImageTools().attestationDescriptors({name: 'moby/buildkit:latest@sha256:79cc6476ab1a3371c9afd8b44e7c55610057c43e18d9b39b68e2b0c2475cc1b6', platform: {os: 'linux', architecture: 'arm', variant: 'v7'}});
const expectedAttestations = <Array<Descriptor>>JSON.parse(fs.readFileSync(path.join(fixturesDir, 'imagetools-07.json'), {encoding: 'utf-8'}).trim());
expect(attestations).toEqual(expectedAttestations);
});
});
maybe('attestationDigests', () => {
it('returns buildkit attestations digests', async () => {
const digests = await new ImageTools().attestationDigests('moby/buildkit:latest@sha256:79cc6476ab1a3371c9afd8b44e7c55610057c43e18d9b39b68e2b0c2475cc1b6');
const digests = await new ImageTools().attestationDigests({name: 'moby/buildkit:latest@sha256:79cc6476ab1a3371c9afd8b44e7c55610057c43e18d9b39b68e2b0c2475cc1b6'});
// prettier-ignore
expect(digests).toEqual([
'sha256:2ba4ad6eae1efcafee73a971953093c7c32b6938f2f9fd4998c8bf4d0fbe76f2',
@@ -75,4 +85,23 @@ maybe('attestationDigests', () => {
'sha256:d95ca72d4f2a6bc416d4b2f3003b2af9d5f4dea99acec6ad3ab0c2082000a98c'
]);
});
it('returns buildkit attestations digests for linux/amd64', async () => {
const digests = await new ImageTools().attestationDigests({name: 'moby/buildkit:latest@sha256:79cc6476ab1a3371c9afd8b44e7c55610057c43e18d9b39b68e2b0c2475cc1b6', platform: {os: 'linux', architecture: 'amd64'}});
expect(digests).toEqual(['sha256:2ba4ad6eae1efcafee73a971953093c7c32b6938f2f9fd4998c8bf4d0fbe76f2']);
});
it('returns buildkit attestations digests for linux/arm/v7', async () => {
const digests = await new ImageTools().attestationDigests({name: 'moby/buildkit:latest@sha256:79cc6476ab1a3371c9afd8b44e7c55610057c43e18d9b39b68e2b0c2475cc1b6', platform: {os: 'linux', architecture: 'arm', variant: 'v7'}});
expect(digests).toEqual(['sha256:0709528fae1747ce17638ad2978ee7936b38a294136eaadaf692e415f64b1e03']);
});
});
maybe('create', () => {
it('skips create command execution when skipExec is set', async () => {
const result = await new ImageTools().create({
sources: ['sha256:0709528fae1747ce17638ad2978ee7936b38a294136eaadaf692e415f64b1e03'],
tags: ['docker.io/user/app', 'docker.io/user/app2'],
skipExec: true
});
expect(result).toBeUndefined();
});
});

View File

@@ -0,0 +1,301 @@
/**
* Copyright 2026 actions-toolkit authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
import {afterEach, beforeEach, describe, expect, it, vi} from 'vitest';
import fs from 'fs';
import os from 'os';
import path from 'path';
import * as rimraf from 'rimraf';
import {Buildx} from '../../src/buildx/buildx.js';
import {ImageTools} from '../../src/buildx/imagetools.js';
import {Context} from '../../src/context.js';
import {Exec} from '../../src/exec.js';
const tmpDir = fs.mkdtempSync(path.join(process.env.TEMP || os.tmpdir(), 'buildx-imagetools-'));
const metadataFile = path.join(tmpDir, 'imagetools-metadata.json');
vi.spyOn(Context, 'tmpDir').mockImplementation((): string => {
fs.mkdirSync(tmpDir, {recursive: true});
return tmpDir;
});
vi.spyOn(Context, 'tmpName').mockImplementation((): string => {
return metadataFile;
});
afterEach(() => {
vi.useRealTimers();
vi.clearAllMocks();
rimraf.sync(tmpDir);
});
beforeEach(() => {
vi.useRealTimers();
fs.mkdirSync(tmpDir, {recursive: true});
});
describe('inspectManifest', () => {
it('retries transient manifest unknown errors when requested', async () => {
vi.useFakeTimers();
const getCommand = vi.fn().mockResolvedValue({
command: 'docker',
args: ['buildx', 'imagetools', 'inspect']
});
const buildx = {getCommand} as unknown as Buildx;
const execSpy = vi
.spyOn(Exec, 'getExecOutput')
.mockResolvedValueOnce({
exitCode: 1,
stdout: '',
stderr: 'ERROR: MANIFEST_UNKNOWN: manifest unknown'
})
.mockResolvedValueOnce({
exitCode: 0,
stdout: JSON.stringify({
schemaVersion: 2,
mediaType: 'application/vnd.oci.image.index.v1+json',
manifests: []
}),
stderr: ''
});
const inspectPromise = new ImageTools({buildx}).inspectManifest({
name: 'docker.io/library/alpine:latest',
retryOnManifestUnknown: true,
retryLimit: 2
});
await vi.runAllTimersAsync();
expect(await inspectPromise).toEqual({
schemaVersion: 2,
mediaType: 'application/vnd.oci.image.index.v1+json',
manifests: []
});
expect(getCommand).toHaveBeenCalledWith(['imagetools', 'inspect', 'docker.io/library/alpine:latest', '--format', '{{json .Manifest}}']);
expect(execSpy).toHaveBeenCalledTimes(2);
});
it('does not retry non-manifest errors', async () => {
const getCommand = vi.fn().mockResolvedValue({
command: 'docker',
args: ['buildx', 'imagetools', 'inspect']
});
const buildx = {getCommand} as unknown as Buildx;
const execSpy = vi.spyOn(Exec, 'getExecOutput').mockResolvedValue({
exitCode: 1,
stdout: '',
stderr: 'ERROR: unauthorized'
});
const result = await new ImageTools({buildx})
.inspectManifest({
name: 'docker.io/library/alpine:latest',
retryOnManifestUnknown: true
})
.then(
value => ({value, error: undefined}),
error => ({value: undefined, error: error as Error})
);
expect(result.value).toBeUndefined();
expect(result.error).toBeInstanceOf(Error);
expect(result.error?.message).toContain('ERROR: unauthorized');
expect(execSpy).toHaveBeenCalledTimes(1);
});
});
describe('inspectImage', () => {
it('retries transient manifest unknown errors when requested', async () => {
vi.useFakeTimers();
const getCommand = vi.fn().mockResolvedValue({
command: 'docker',
args: ['buildx', 'imagetools', 'inspect']
});
const buildx = {getCommand} as unknown as Buildx;
const execSpy = vi
.spyOn(Exec, 'getExecOutput')
.mockResolvedValueOnce({
exitCode: 1,
stdout: '',
stderr: 'ERROR: MANIFEST_UNKNOWN: manifest unknown'
})
.mockResolvedValueOnce({
exitCode: 0,
stdout: JSON.stringify({
config: {
digest: 'sha256:test'
}
}),
stderr: ''
});
const inspectPromise = new ImageTools({buildx}).inspectImage({
name: 'docker.io/library/alpine:latest',
retryOnManifestUnknown: true,
retryLimit: 2
});
await vi.runAllTimersAsync();
expect(await inspectPromise).toEqual({
config: {
digest: 'sha256:test'
}
});
expect(getCommand).toHaveBeenCalledWith(['imagetools', 'inspect', 'docker.io/library/alpine:latest', '--format', '{{json .Image}}']);
expect(execSpy).toHaveBeenCalledTimes(2);
});
});
describe('create', () => {
it('parses metadata and supports cwd sources', async () => {
const getCommand = vi.fn().mockResolvedValue({
command: 'docker',
args: ['buildx', 'imagetools', 'create']
});
const buildx = {getCommand} as unknown as Buildx;
fs.writeFileSync(
metadataFile,
JSON.stringify({
'containerimage.descriptor': {
mediaType: 'application/vnd.oci.image.index.v1+json',
digest: 'sha256:19ffeab6f8bc9293ac2c3fdf94ebe28396254c993aea0b5a542cfb02e0883fa3',
size: 4654
},
'image.name': 'docker.io/user/app,docker.io/user/app2'
})
);
const execSpy = vi.spyOn(Exec, 'getExecOutput').mockResolvedValue({
exitCode: 0,
stdout: '',
stderr: ''
});
const result = await new ImageTools({buildx}).create({
sources: ['cwd://descriptor.json', 'docker.io/library/alpine:latest'],
tags: ['docker.io/user/app:latest'],
silent: true
});
expect(getCommand).toHaveBeenCalledWith(['imagetools', 'create', '--tag', 'docker.io/user/app:latest', '--metadata-file', metadataFile, '--file', 'descriptor.json', 'docker.io/library/alpine:latest']);
expect(execSpy).toHaveBeenCalledWith('docker', ['buildx', 'imagetools', 'create'], {
ignoreReturnCode: true,
silent: true
});
expect(result).toEqual({
digest: 'sha256:19ffeab6f8bc9293ac2c3fdf94ebe28396254c993aea0b5a542cfb02e0883fa3',
descriptor: {
mediaType: 'application/vnd.oci.image.index.v1+json',
digest: 'sha256:19ffeab6f8bc9293ac2c3fdf94ebe28396254c993aea0b5a542cfb02e0883fa3',
size: 4654
},
imageNames: ['docker.io/user/app', 'docker.io/user/app2']
});
});
it('does not parse metadata in dry-run mode', async () => {
const getCommand = vi.fn().mockResolvedValue({
command: 'docker',
args: ['buildx', 'imagetools', 'create']
});
const buildx = {getCommand} as unknown as Buildx;
const execSpy = vi.spyOn(Exec, 'getExecOutput').mockResolvedValue({
exitCode: 0,
stdout: '',
stderr: ''
});
const result = await new ImageTools({buildx}).create({
sources: ['docker.io/library/alpine:latest'],
dryRun: true,
silent: true
});
expect(getCommand).toHaveBeenCalledWith(['imagetools', 'create', '--dry-run', 'docker.io/library/alpine:latest']);
expect(execSpy).toHaveBeenCalledWith('docker', ['buildx', 'imagetools', 'create'], {
ignoreReturnCode: true,
silent: true
});
expect(result).toBeUndefined();
});
it('passes annotations to imagetools create', async () => {
const getCommand = vi.fn().mockResolvedValue({
command: 'docker',
args: ['buildx', 'imagetools', 'create']
});
const buildx = {getCommand} as unknown as Buildx;
const execSpy = vi.spyOn(Exec, 'getExecOutput').mockResolvedValue({
exitCode: 0,
stdout: '',
stderr: ''
});
const result = await new ImageTools({buildx}).create({
sources: ['docker.io/library/alpine:latest'],
annotations: ['index:org.opencontainers.image.title=Alpine', 'manifest-descriptor:org.opencontainers.image.description=Base image'],
silent: true
});
expect(getCommand).toHaveBeenCalledWith([
'imagetools',
'create',
'--annotation',
'index:org.opencontainers.image.title=Alpine',
'--annotation',
'manifest-descriptor:org.opencontainers.image.description=Base image',
'--metadata-file',
metadataFile,
'docker.io/library/alpine:latest'
]);
expect(execSpy).toHaveBeenCalledWith('docker', ['buildx', 'imagetools', 'create'], {
ignoreReturnCode: true,
silent: true
});
expect(result).toBeUndefined();
});
it('skips command execution when skipExec is enabled', async () => {
const getCommand = vi.fn().mockResolvedValue({
command: 'docker',
args: ['buildx', 'imagetools', 'create']
});
const buildx = {getCommand} as unknown as Buildx;
const execSpy = vi.spyOn(Exec, 'getExecOutput').mockResolvedValue({
exitCode: 0,
stdout: '',
stderr: ''
});
const result = await new ImageTools({buildx}).create({
sources: ['docker.io/library/alpine:latest'],
skipExec: true
});
expect(getCommand).toHaveBeenCalledWith(['imagetools', 'create', '--metadata-file', metadataFile, 'docker.io/library/alpine:latest']);
expect(execSpy).not.toHaveBeenCalled();
expect(result).toBeUndefined();
});
});

View File

@@ -14,10 +14,10 @@
* limitations under the License.
*/
import {describe, expect, test} from '@jest/globals';
import {describe, expect, test} from 'vitest';
import * as fs from 'fs';
import {Install} from '../../src/buildx/install';
import {Install} from '../../src/buildx/install.js';
const maybe = !process.env.GITHUB_ACTIONS || (process.env.GITHUB_ACTIONS === 'true' && process.env.ImageOS && process.env.ImageOS.startsWith('ubuntu')) ? describe : describe.skip;
@@ -29,7 +29,12 @@ maybe('download', () => {
const install = new Install({
standalone: true
});
const toolPath = await install.download(version);
const toolPath = await install.download({
version: version,
verifySignature: true,
ghaNoCache: true,
disableHtc: true
});
if (!fs.existsSync(toolPath)) {
throw new Error('toolPath does not exist');
}

View File

@@ -14,14 +14,15 @@
* limitations under the License.
*/
import {describe, expect, it, jest, test, afterEach} from '@jest/globals';
import {describe, expect, it, test, afterEach} from 'vitest';
import fs from 'fs';
import os from 'os';
import path from 'path';
import * as rimraf from 'rimraf';
import osm = require('os');
import {Install} from '../../src/buildx/install';
import {mockArch, mockPlatform} from '../.helpers/os.js';
import {Install} from '../../src/buildx/install.js';
const tmpDir = fs.mkdtempSync(path.join(process.env.TEMP || os.tmpdir(), 'buildx-install-'));
@@ -36,9 +37,9 @@ describe('download', () => {
['v0.10.5', true],
['latest', true]
])(
'acquires %p of buildx (standalone: %p)', async (version, standalone) => {
'acquires %o of buildx (standalone: %o)', async (version, standalone) => {
const install = new Install({standalone: standalone});
const toolPath = await install.download(version);
const toolPath = await install.download({version});
expect(fs.existsSync(toolPath)).toBe(true);
let buildxBin: string;
if (standalone) {
@@ -55,9 +56,9 @@ describe('download', () => {
['v0.9.0'],
['v0.10.5'],
])(
'acquires %p of buildx with cache', async (version) => {
'acquires %o of buildx with cache', async (version) => {
const install = new Install({standalone: false});
const toolPath = await install.download(version);
const toolPath = await install.download({version});
expect(fs.existsSync(toolPath)).toBe(true);
}, 100000);
@@ -66,9 +67,9 @@ describe('download', () => {
['v0.11.2'],
['v0.12.0'],
])(
'acquires %p of buildx without cache', async (version) => {
'acquires %o of buildx without cache', async (version) => {
const install = new Install({standalone: false});
const toolPath = await install.download(version, true);
const toolPath = await install.download({version: version, ghaNoCache: true});
expect(fs.existsSync(toolPath)).toBe(true);
}, 100000);
@@ -85,16 +86,15 @@ describe('download', () => {
['linux', 's390x'],
])(
'acquires buildx for %s/%s', async (os, arch) => {
jest.spyOn(osm, 'platform').mockImplementation(() => os as NodeJS.Platform);
jest.spyOn(osm, 'arch').mockImplementation(() => arch);
mockPlatform(os as NodeJS.Platform);
mockArch(arch);
const install = new Install();
const buildxBin = await install.download('latest');
const buildxBin = await install.download({version: 'latest'});
expect(fs.existsSync(buildxBin)).toBe(true);
}, 100000);
});
describe('build', () => {
// eslint-disable-next-line jest/no-disabled-tests
it.skip('builds refs/pull/648/head', async () => {
const install = new Install();
const toolPath = await install.build('https://github.com/docker/buildx.git#refs/pull/648/head');
@@ -103,7 +103,6 @@ describe('build', () => {
expect(fs.existsSync(buildxBin)).toBe(true);
}, 100000);
// eslint-disable-next-line jest/no-disabled-tests
it.skip('builds 67bd6f4dc82a9cd96f34133dab3f6f7af803bb14', async () => {
const install = new Install();
const toolPath = await install.build('https://github.com/docker/buildx.git#67bd6f4dc82a9cd96f34133dab3f6f7af803bb14');

View File

@@ -14,13 +14,13 @@
* limitations under the License.
*/
import {describe, expect, it} from '@jest/globals';
import {describe, expect, it} from 'vitest';
import fs from 'fs';
import os from 'os';
import path from 'path';
import {Cache} from '../src/cache';
import {Util} from '../src/util';
import {Cache} from '../src/cache.js';
import {Util} from '../src/util.js';
const fixturesDir = path.join(__dirname, '.fixtures');
const tmpDir = fs.mkdtempSync(path.join(process.env.TEMP || os.tmpdir(), 'cache-itg-'));

View File

@@ -14,27 +14,27 @@
* limitations under the License.
*/
import {describe, expect, it, jest, test, afterEach} from '@jest/globals';
import {describe, expect, it, vi, test, afterEach} from 'vitest';
import fs from 'fs';
import os from 'os';
import path from 'path';
import * as rimraf from 'rimraf';
import * as semver from 'semver';
import {Context} from '../../src/context';
import {Exec} from '../../src/exec';
import {Context} from '../../src/context.js';
import {Exec} from '../../src/exec.js';
import {Compose} from '../../src/compose/compose';
import {Compose} from '../../src/compose/compose.js';
const tmpDir = fs.mkdtempSync(path.join(process.env.TEMP || os.tmpdir(), 'compose-compose-'));
const tmpName = path.join(tmpDir, '.tmpname-jest');
const tmpName = path.join(tmpDir, '.tmpname-vi');
jest.spyOn(Context, 'tmpDir').mockImplementation((): string => {
vi.spyOn(Context, 'tmpDir').mockImplementation((): string => {
fs.mkdirSync(tmpDir, {recursive: true});
return tmpDir;
});
jest.spyOn(Context, 'tmpName').mockImplementation((): string => {
vi.spyOn(Context, 'tmpName').mockImplementation((): string => {
return tmpName;
});
@@ -44,24 +44,22 @@ afterEach(() => {
describe('isAvailable', () => {
it('docker cli', async () => {
const execSpy = jest.spyOn(Exec, 'getExecOutput');
const execSpy = vi.spyOn(Exec, 'getExecOutput');
const compose = new Compose({
standalone: false
});
await compose.isAvailable();
// eslint-disable-next-line jest/no-standalone-expect
expect(execSpy).toHaveBeenCalledWith(`docker`, ['compose'], {
silent: true,
ignoreReturnCode: true
});
});
it('standalone', async () => {
const execSpy = jest.spyOn(Exec, 'getExecOutput');
const execSpy = vi.spyOn(Exec, 'getExecOutput');
const compose = new Compose({
standalone: true
});
await compose.isAvailable();
// eslint-disable-next-line jest/no-standalone-expect
expect(execSpy).toHaveBeenCalledWith(`compose`, [], {
silent: true,
ignoreReturnCode: true
@@ -71,7 +69,7 @@ describe('isAvailable', () => {
describe('printVersion', () => {
it('docker cli', async () => {
const execSpy = jest.spyOn(Exec, 'exec');
const execSpy = vi.spyOn(Exec, 'exec');
const compose = new Compose({
standalone: false
});
@@ -81,7 +79,7 @@ describe('printVersion', () => {
});
});
it('standalone', async () => {
const execSpy = jest.spyOn(Exec, 'exec');
const execSpy = vi.spyOn(Exec, 'exec');
const compose = new Compose({
standalone: true
});
@@ -103,7 +101,7 @@ describe('parseVersion', () => {
// prettier-ignore
test.each([
['Docker Compose version v2.31.0', '2.31.0'],
])('given %p', async (stdout, expected) => {
])('given %o', async (stdout, expected) => {
expect(Compose.parseVersion(stdout)).toEqual(expected);
});
});

View File

@@ -14,10 +14,10 @@
* limitations under the License.
*/
import {describe, expect, test} from '@jest/globals';
import {describe, expect, test} from 'vitest';
import * as fs from 'fs';
import {Install} from '../../src/compose/install';
import {Install} from '../../src/compose/install.js';
const maybe = !process.env.GITHUB_ACTIONS || (process.env.GITHUB_ACTIONS === 'true' && process.env.ImageOS && process.env.ImageOS.startsWith('ubuntu')) ? describe : describe.skip;

View File

@@ -14,14 +14,15 @@
* limitations under the License.
*/
import {describe, expect, it, jest, test, afterEach} from '@jest/globals';
import {describe, expect, it, test, afterEach} from 'vitest';
import fs from 'fs';
import os from 'os';
import path from 'path';
import * as rimraf from 'rimraf';
import osm = require('os');
import {Install} from '../../src/compose/install';
import {mockArch, mockPlatform} from '../.helpers/os.js';
import {Install} from '../../src/compose/install.js';
const tmpDir = fs.mkdtempSync(path.join(process.env.TEMP || os.tmpdir(), 'compose-install-'));
@@ -36,7 +37,7 @@ describe('download', () => {
['v2.32.4', true],
['latest', true]
])(
'acquires %p of compose (standalone: %p)', async (version, standalone) => {
'acquires %o of compose (standalone: %o)', async (version, standalone) => {
const install = new Install({standalone: standalone});
const toolPath = await install.download(version);
expect(fs.existsSync(toolPath)).toBe(true);
@@ -55,7 +56,7 @@ describe('download', () => {
['v2.31.0'],
['v2.32.4'],
])(
'acquires %p of compose with cache', async (version) => {
'acquires %o of compose with cache', async (version) => {
const install = new Install({standalone: false});
const toolPath = await install.download(version);
expect(fs.existsSync(toolPath)).toBe(true);
@@ -66,7 +67,7 @@ describe('download', () => {
['v2.27.1'],
['v2.28.0'],
])(
'acquires %p of compose without cache', async (version) => {
'acquires %o of compose without cache', async (version) => {
const install = new Install({standalone: false});
const toolPath = await install.download(version, true);
expect(fs.existsSync(toolPath)).toBe(true);
@@ -85,8 +86,8 @@ describe('download', () => {
['linux', 's390x'],
])(
'acquires compose for %s/%s', async (os, arch) => {
jest.spyOn(osm, 'platform').mockImplementation(() => os as NodeJS.Platform);
jest.spyOn(osm, 'arch').mockImplementation(() => arch);
mockPlatform(os as NodeJS.Platform);
mockArch(arch);
const install = new Install();
const composeBin = await install.download('latest');
expect(fs.existsSync(composeBin)).toBe(true);

View File

@@ -14,66 +14,44 @@
* limitations under the License.
*/
import {describe, expect, jest, it, afterEach, beforeEach, test} from '@jest/globals';
import {describe, expect, it, afterEach} from 'vitest';
import fs from 'fs';
import os from 'os';
import path from 'path';
import * as rimraf from 'rimraf';
import {Context} from '../src/context';
import {Context} from '../src/context.js';
const tmpDir = fs.mkdtempSync(path.join(process.env.TEMP || os.tmpdir(), 'context-'));
const tmpName = path.join(tmpDir, '.tmpname-jest');
jest.spyOn(Context, 'tmpDir').mockImplementation((): string => {
fs.mkdirSync(tmpDir, {recursive: true});
return tmpDir;
});
jest.spyOn(Context, 'tmpName').mockImplementation((): string => {
return tmpName;
});
afterEach(() => {
rimraf.sync(tmpDir);
fs.mkdirSync(tmpDir, {recursive: true});
});
describe('gitRef', () => {
it('returns refs/heads/master', async () => {
expect(Context.gitRef()).toEqual('refs/heads/master');
describe('tmpDir', () => {
it('returns an existing directory and keeps it stable', () => {
const dir = Context.tmpDir();
expect(fs.existsSync(dir)).toBe(true);
expect(fs.statSync(dir).isDirectory()).toBe(true);
expect(Context.tmpDir()).toEqual(dir);
});
});
describe('parseGitRef', () => {
const originalEnv = process.env;
beforeEach(() => {
jest.resetModules();
process.env = {
...originalEnv,
DOCKER_GIT_CONTEXT_PR_HEAD_REF: ''
};
describe('tmpName', () => {
it('returns a path for the provided tmpdir and template', () => {
const name = Context.tmpName({
tmpdir: tmpDir,
template: '.tmpname-XXXXXX'
});
expect(path.dirname(name)).toEqual(tmpDir);
expect(path.basename(name)).toMatch(/^\.tmpname-/);
expect(fs.existsSync(name)).toBe(false);
});
afterEach(() => {
process.env = originalEnv;
});
// prettier-ignore
test.each([
['refs/heads/master', '860c1904a1ce19322e91ac35af1ab07466440c37', false, '860c1904a1ce19322e91ac35af1ab07466440c37'],
['master', '860c1904a1ce19322e91ac35af1ab07466440c37', false, '860c1904a1ce19322e91ac35af1ab07466440c37'],
['refs/pull/15/merge', '860c1904a1ce19322e91ac35af1ab07466440c37', false, 'refs/pull/15/merge'],
['refs/heads/master', '', false, 'refs/heads/master'],
['master', '', false, 'master'],
['refs/tags/v1.0.0', '', false, 'refs/tags/v1.0.0'],
['refs/pull/15/merge', '', false, 'refs/pull/15/merge'],
['refs/pull/15/merge', '', true, 'refs/pull/15/head'],
])('given %p and %p, should return %p', async (ref: string, sha: string, prHeadRef: boolean, expected: string) => {
process.env.DOCKER_DEFAULT_GIT_CONTEXT_PR_HEAD_REF = prHeadRef ? 'true' : '';
expect(Context.parseGitRef(ref, sha)).toEqual(expected);
});
});
describe('gitContext', () => {
it('returns refs/heads/master', async () => {
expect(Context.gitContext()).toEqual('https://github.com/docker/actions-toolkit.git#refs/heads/master');
it('returns different paths on consecutive calls', () => {
const first = Context.tmpName({tmpdir: tmpDir, template: '.tmpname-XXXXXX'});
const second = Context.tmpName({tmpdir: tmpDir, template: '.tmpname-XXXXXX'});
expect(first).not.toEqual(second);
});
});

View File

@@ -14,22 +14,21 @@
* limitations under the License.
*/
import {describe, expect, it, jest, test} from '@jest/globals';
import {describe, expect, it, vi, test} from 'vitest';
import fs from 'fs';
import path from 'path';
import * as semver from 'semver';
import {Exec} from '../../src/exec';
import {Cosign} from '../../src/cosign/cosign';
import {Exec} from '../../src/exec.js';
import {Cosign} from '../../src/cosign/cosign.js';
const fixturesDir = path.join(__dirname, '..', '.fixtures');
describe('isAvailable', () => {
it('checks Cosign is available', async () => {
const execSpy = jest.spyOn(Exec, 'getExecOutput');
const execSpy = vi.spyOn(Exec, 'getExecOutput');
const cosign = new Cosign();
await cosign.isAvailable();
// eslint-disable-next-line jest/no-standalone-expect
expect(execSpy).toHaveBeenCalledWith(`cosign`, [], {
silent: true,
ignoreReturnCode: true
@@ -39,7 +38,7 @@ describe('isAvailable', () => {
describe('printVersion', () => {
it('prints Cosign version', async () => {
const execSpy = jest.spyOn(Exec, 'exec');
const execSpy = vi.spyOn(Exec, 'exec');
const cosign = new Cosign();
await cosign.printVersion();
expect(execSpy).toHaveBeenCalledWith(`cosign`, ['version', '--json'], {
@@ -60,7 +59,7 @@ describe('versionSatisfies', () => {
['v0.4.1', '>=0.3.2', true],
['v0.8.0', '>0.6.0', true],
['v0.8.0', '<0.3.0', false]
])('given %p', async (version, range, expected) => {
])('given %o', async (version, range, expected) => {
const cosign = new Cosign();
expect(await cosign.versionSatisfies(range, version)).toBe(expected);
});
@@ -72,7 +71,7 @@ describe('parseCommandOutput', () => {
[path.join(fixturesDir, 'cosign', 'sign-output1.txt')],
[path.join(fixturesDir, 'cosign', 'sign-output2.txt')],
[path.join(fixturesDir, 'cosign', 'sign-output3.txt')],
])('parsing %p', async (fixturePath: string) => {
])('parsing %o', async (fixturePath: string) => {
const signResult = Cosign.parseCommandOutput(fs.readFileSync(fixturePath, 'utf-8'));
expect(signResult).toBeDefined();
expect(signResult.bundle).toBeDefined();
@@ -81,7 +80,7 @@ describe('parseCommandOutput', () => {
// prettier-ignore
test.each([
[path.join(fixturesDir, 'cosign', 'verify-output-err1.txt')],
])('parsing %p', async (fixturePath: string) => {
])('parsing %o', async (fixturePath: string) => {
const signResult = Cosign.parseCommandOutput(fs.readFileSync(fixturePath, 'utf-8'));
expect(signResult).toBeDefined();
expect(signResult.bundle).toBeUndefined();

View File

@@ -14,10 +14,10 @@
* limitations under the License.
*/
import {describe, expect, it, test} from '@jest/globals';
import {describe, expect, it, test} from 'vitest';
import * as fs from 'fs';
import {Install} from '../../src/cosign/install';
import {Install} from '../../src/cosign/install.js';
const maybe = !process.env.GITHUB_ACTIONS || (process.env.GITHUB_ACTIONS === 'true' && process.env.ImageOS && process.env.ImageOS.startsWith('ubuntu')) ? describe : describe.skip;
@@ -27,7 +27,10 @@ describe('download', () => {
'install cosign %s', async (version) => {
await expect((async () => {
const install = new Install();
const toolPath = await install.download(version);
const toolPath = await install.download({
version: version,
verifySignature: true
});
if (!fs.existsSync(toolPath)) {
throw new Error('toolPath does not exist');
}

View File

@@ -14,14 +14,15 @@
* limitations under the License.
*/
import {describe, expect, it, jest, test, afterEach} from '@jest/globals';
import {describe, expect, it, test, afterEach} from 'vitest';
import fs from 'fs';
import os from 'os';
import path from 'path';
import * as rimraf from 'rimraf';
import osm = require('os');
import {Install} from '../../src/cosign/install';
import {mockArch, mockPlatform} from '../.helpers/os.js';
import {Install} from '../../src/cosign/install.js';
const tmpDir = fs.mkdtempSync(path.join(process.env.TEMP || os.tmpdir(), 'cosign-install-'));
@@ -36,9 +37,9 @@ describe('download', () => {
['v3.0.1'],
['latest']
])(
'acquires %p of cosign', async (version) => {
'acquires %o of cosign', async (version) => {
const install = new Install();
const toolPath = await install.download(version);
const toolPath = await install.download({version});
expect(fs.existsSync(toolPath)).toBe(true);
const cosignBin = await install.install(toolPath, tmpDir);
expect(fs.existsSync(cosignBin)).toBe(true);
@@ -50,9 +51,9 @@ describe('download', () => {
['v2.6.1'],
['v3.0.1'],
])(
'acquires %p of cosign with cache', async (version) => {
'acquires %o of cosign with cache', async (version) => {
const install = new Install();
const toolPath = await install.download(version);
const toolPath = await install.download({version});
expect(fs.existsSync(toolPath)).toBe(true);
}, 100000);
@@ -61,9 +62,12 @@ describe('download', () => {
['v2.5.3'],
['v2.6.0'],
])(
'acquires %p of cosign without cache', async (version) => {
'acquires %o of cosign without cache', async (version) => {
const install = new Install();
const toolPath = await install.download(version, true);
const toolPath = await install.download({
version: version,
ghaNoCache: true
});
expect(fs.existsSync(toolPath)).toBe(true);
}, 100000);
@@ -77,10 +81,12 @@ describe('download', () => {
['linux', 'arm64']
])(
'acquires undock for %s/%s', async (os, arch) => {
jest.spyOn(osm, 'platform').mockImplementation(() => os as NodeJS.Platform);
jest.spyOn(osm, 'arch').mockImplementation(() => arch);
mockPlatform(os as NodeJS.Platform);
mockArch(arch);
const install = new Install();
const cosignBin = await install.download('latest');
const cosignBin = await install.download({
version: 'latest'
});
expect(fs.existsSync(cosignBin)).toBe(true);
}, 100000);
});

View File

@@ -14,9 +14,9 @@
* limitations under the License.
*/
import {describe, expect, it, test} from '@jest/globals';
import {describe, expect, it, test} from 'vitest';
import {Docker} from '../../src/docker/docker';
import {Docker} from '../../src/docker/docker.js';
const maybe = !process.env.GITHUB_ACTIONS || (process.env.GITHUB_ACTIONS === 'true' && process.env.ImageOS && process.env.ImageOS.startsWith('ubuntu')) ? describe : describe.skip;
@@ -55,7 +55,7 @@ maybe('pull', () => {
if (err === undefined) {
throw new Error(`Expected no error, but got: ${e.message}`);
}
// eslint-disable-next-line jest/no-conditional-expect
// eslint-disable-next-line vitest/no-conditional-expect
expect(e.message).toContain(err);
}
}, 600000);

View File

@@ -14,17 +14,26 @@
* limitations under the License.
*/
import {afterEach, beforeEach, describe, expect, it, jest} from '@jest/globals';
import {afterEach, beforeEach, describe, expect, it, vi} from 'vitest';
import fs from 'fs';
import os from 'os';
import path from 'path';
import * as io from '@actions/io';
import osm = require('os');
import * as rimraf from 'rimraf';
import {Docker} from '../../src/docker/docker';
import {mockHomedir} from '../.helpers/os.js';
import {ConfigFile} from '../../src/types/docker/docker';
import {Docker} from '../../src/docker/docker.js';
import {ConfigFile} from '../../src/types/docker/docker.js';
vi.mock('@actions/io', async () => {
const actual = await vi.importActual<typeof import('@actions/io')>('@actions/io');
return {
...actual,
which: vi.fn()
};
});
const fixturesDir = path.join(__dirname, '..', '.fixtures');
const tmpDir = fs.mkdtempSync(path.join(process.env.TEMP || os.tmpdir(), 'docker-docker-'));
@@ -36,7 +45,7 @@ afterEach(function () {
describe('configDir', () => {
const originalEnv = process.env;
beforeEach(() => {
jest.resetModules();
vi.resetModules();
process.env = {
...originalEnv,
DOCKER_CONFIG: '/var/docker/config'
@@ -47,7 +56,7 @@ describe('configDir', () => {
});
it('returns default', async () => {
process.env.DOCKER_CONFIG = '';
jest.spyOn(osm, 'homedir').mockImplementation(() => path.join('/tmp', 'home'));
mockHomedir(path.join('/tmp', 'home'));
expect(Docker.configDir).toEqual(path.join('/tmp', 'home', '.docker'));
});
it('returns from env', async () => {
@@ -58,7 +67,7 @@ describe('configDir', () => {
describe('configFile', () => {
const originalEnv = process.env;
beforeEach(() => {
jest.resetModules();
vi.resetModules();
if (!fs.existsSync(tmpDir)) {
fs.mkdirSync(tmpDir, {recursive: true});
}
@@ -96,7 +105,7 @@ describe('configFile', () => {
describe('isAvailable', () => {
it('cli', async () => {
const ioWhichSpy = jest.spyOn(io, 'which');
const ioWhichSpy = vi.mocked(io.which).mockResolvedValue('/usr/bin/docker');
await Docker.isAvailable();
expect(ioWhichSpy).toHaveBeenCalledTimes(1);
expect(ioWhichSpy).toHaveBeenCalledWith('docker', true);
@@ -105,7 +114,7 @@ describe('isAvailable', () => {
describe('exec', () => {
it('returns docker version', async () => {
const execSpy = jest.spyOn(Docker, 'exec');
const execSpy = vi.spyOn(Docker, 'exec');
await Docker.exec(['version'], {
ignoreReturnCode: true,
silent: true
@@ -132,7 +141,7 @@ describe('exec', () => {
describe('getExecOutput', () => {
it('returns docker version', async () => {
const execSpy = jest.spyOn(Docker, 'getExecOutput');
const execSpy = vi.spyOn(Docker, 'getExecOutput');
await Docker.getExecOutput(['version'], {
ignoreReturnCode: true,
silent: true
@@ -159,7 +168,7 @@ describe('getExecOutput', () => {
describe('context', () => {
it('call docker context show', async () => {
const execSpy = jest.spyOn(Docker, 'getExecOutput');
const execSpy = vi.spyOn(Docker, 'getExecOutput');
await Docker.context().catch(() => {
// noop
});
@@ -181,7 +190,7 @@ describe('context', () => {
describe('contextInspect', () => {
it('call docker context inspect', async () => {
const execSpy = jest.spyOn(Docker, 'getExecOutput');
const execSpy = vi.spyOn(Docker, 'getExecOutput');
await Docker.contextInspect('foo').catch(() => {
// noop
});
@@ -203,7 +212,7 @@ describe('contextInspect', () => {
describe('printVersion', () => {
it('call docker version', async () => {
const execSpy = jest.spyOn(Docker, 'exec');
const execSpy = vi.spyOn(Docker, 'exec');
await Docker.printVersion().catch(() => {
// noop
});
@@ -219,7 +228,7 @@ describe('printVersion', () => {
describe('printInfo', () => {
it('call docker info', async () => {
const execSpy = jest.spyOn(Docker, 'exec');
const execSpy = vi.spyOn(Docker, 'exec');
await Docker.printInfo().catch(() => {
// noop
});

View File

@@ -14,22 +14,22 @@
* limitations under the License.
*/
import {beforeAll, describe, test, expect} from '@jest/globals';
import {beforeAll, describe, test, expect} from 'vitest';
import fs from 'fs';
import os from 'os';
import path from 'path';
import {Install, InstallSource, InstallSourceArchive, InstallSourceImage} from '../../src/docker/install';
import {Docker} from '../../src/docker/docker';
import {Install as RegclientInstall} from '../../src/regclient/install';
import {Install as UndockInstall} from '../../src/undock/install';
import {Exec} from '../../src/exec';
import {Install, InstallSource, InstallSourceArchive, InstallSourceImage} from '../../src/docker/install.js';
import {Docker} from '../../src/docker/docker.js';
import {Install as RegclientInstall} from '../../src/regclient/install.js';
import {Install as UndockInstall} from '../../src/undock/install.js';
import {Exec} from '../../src/exec.js';
const tmpDir = () => fs.mkdtempSync(path.join(process.env.TEMP || os.tmpdir(), 'docker-install-itg-'));
beforeAll(async () => {
const undockInstall = new UndockInstall();
const undockBinPath = await undockInstall.download('v0.10.0', true);
const undockBinPath = await undockInstall.download('v0.12.0', true);
await undockInstall.install(undockBinPath);
const regclientInstall = new RegclientInstall();

View File

@@ -14,14 +14,15 @@
* limitations under the License.
*/
import {describe, expect, jest, test, beforeEach, afterEach, it} from '@jest/globals';
import {describe, expect, vi, test, beforeEach, afterEach, it} from 'vitest';
import fs from 'fs';
import os from 'os';
import path from 'path';
import * as rimraf from 'rimraf';
import osm = require('os');
import {Install, InstallSourceArchive, InstallSourceImage} from '../../src/docker/install';
import {mockArch, mockPlatform} from '../.helpers/os.js';
import {Install, InstallSourceArchive, InstallSourceImage} from '../../src/docker/install.js';
const tmpDir = fs.mkdtempSync(path.join(process.env.TEMP || os.tmpdir(), 'docker-install-'));
@@ -59,9 +60,9 @@ describe('download', () => {
[image('27.3.1'), 'linux'],
[image('27.3.1'), 'win32'],
])(
'acquires %p of docker (%s)', async (source, platformOS) => {
jest.spyOn(osm, 'platform').mockImplementation(() => platformOS as NodeJS.Platform);
jest.spyOn(osm, 'arch').mockImplementation(() => 'x64');
'acquires %o of docker (%s)', async (source, platformOS) => {
mockPlatform(platformOS as NodeJS.Platform);
mockArch('x64');
const install = new Install({
source: source,
runDir: tmpDir
@@ -102,7 +103,7 @@ describe('getRelease', () => {
describe('limaImage', () => {
const originalEnv = process.env;
beforeEach(() => {
jest.resetModules();
vi.resetModules();
process.env = {
...originalEnv,
LIMA_IMAGES: `x86_64:https://cloud-images.ubuntu.com/releases/23.10/release-20231011/ubuntu-23.10-server-cloudimg-amd64.img@sha256:f6529be56da3429a56e4f5ef202bf4958201bc63f8541e478caa6e8eb712e635

View File

@@ -14,24 +14,24 @@
* limitations under the License.
*/
import {describe, expect, jest, it} from '@jest/globals';
import {describe, expect, vi, it} from 'vitest';
import * as fs from 'fs';
import * as path from 'path';
import {DockerHub} from '../src/dockerhub';
import {RepositoryResponse, RepositoryTagsResponse} from '../src/types/dockerhub';
import {DockerHub} from '../src/dockerhub.js';
import {RepositoryResponse, RepositoryTagsResponse} from '../src/types/dockerhub.js';
import repoInfoFixture from './.fixtures/dockerhub-repoinfo.json';
import repoTagsFixture from './.fixtures/dockerhub-repotags.json';
import repoAllTagsFixture from './.fixtures/dockerhub-repoalltags.json';
import repoInfoFixture from './.fixtures/dockerhub-repoinfo.json' with {type: 'json'};
import repoTagsFixture from './.fixtures/dockerhub-repotags.json' with {type: 'json'};
import repoAllTagsFixture from './.fixtures/dockerhub-repoalltags.json' with {type: 'json'};
describe('getRepository', () => {
it('returns repo info', async () => {
jest.spyOn(DockerHub.prototype, 'getRepository').mockImplementation((): Promise<RepositoryResponse> => {
vi.spyOn(DockerHub.prototype, 'getRepository').mockImplementation((): Promise<RepositoryResponse> => {
return <Promise<RepositoryResponse>>(repoInfoFixture as unknown);
});
// eslint-disable-next-line @typescript-eslint/no-explicit-any
jest.spyOn(DockerHub as any, 'login').mockReturnValue('jwt_token');
vi.spyOn(DockerHub as any, 'login').mockReturnValue('jwt_token');
const dockerhub = await DockerHub.build({
credentials: {
username: 'foo',
@@ -50,11 +50,11 @@ describe('getRepository', () => {
describe('getRepositoryTags', () => {
it('return repo tags', async () => {
jest.spyOn(DockerHub.prototype, 'getRepositoryTags').mockImplementation((): Promise<RepositoryTagsResponse> => {
vi.spyOn(DockerHub.prototype, 'getRepositoryTags').mockImplementation((): Promise<RepositoryTagsResponse> => {
return <Promise<RepositoryTagsResponse>>(repoTagsFixture as unknown);
});
// eslint-disable-next-line @typescript-eslint/no-explicit-any
jest.spyOn(DockerHub as any, 'login').mockReturnValue('jwt_token');
vi.spyOn(DockerHub as any, 'login').mockReturnValue('jwt_token');
const dockerhub = await DockerHub.build({
credentials: {
username: 'foo',
@@ -74,11 +74,11 @@ describe('getRepositoryTags', () => {
describe('getRepositoryAllTags', () => {
it('return repo all tags', async () => {
jest.spyOn(DockerHub.prototype, 'getRepositoryAllTags').mockImplementation((): Promise<RepositoryTagsResponse> => {
vi.spyOn(DockerHub.prototype, 'getRepositoryAllTags').mockImplementation((): Promise<RepositoryTagsResponse> => {
return <Promise<RepositoryTagsResponse>>(repoAllTagsFixture as unknown);
});
// eslint-disable-next-line @typescript-eslint/no-explicit-any
jest.spyOn(DockerHub as any, 'login').mockReturnValue('jwt_token');
vi.spyOn(DockerHub as any, 'login').mockReturnValue('jwt_token');
const dockerhub = await DockerHub.build({
credentials: {
username: 'foo',

View File

@@ -14,13 +14,13 @@
* limitations under the License.
*/
import {describe, expect, it, jest} from '@jest/globals';
import {describe, expect, it, vi} from 'vitest';
import {Exec} from '../src/exec';
import {Exec} from '../src/exec.js';
describe('exec', () => {
it('returns docker version', async () => {
const execSpy = jest.spyOn(Exec, 'exec');
const execSpy = vi.spyOn(Exec, 'exec');
await Exec.exec('docker', ['version'], {
ignoreReturnCode: true,
silent: true
@@ -34,7 +34,7 @@ describe('exec', () => {
describe('getExecOutput', () => {
it('returns docker version', async () => {
const execSpy = jest.spyOn(Exec, 'getExecOutput');
const execSpy = vi.spyOn(Exec, 'getExecOutput');
await Exec.getExecOutput('docker', ['version'], {
ignoreReturnCode: true,
silent: true

View File

@@ -1,5 +1,5 @@
/**
* Copyright 2024 actions-toolkit authors
* Copyright 2026 actions-toolkit authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
@@ -14,17 +14,12 @@
* limitations under the License.
*/
// eslint-disable-next-line @typescript-eslint/no-var-requires
const fs = require('fs');
import {describe, expect, it} from 'vitest';
module.exports = results => {
const allSkipped = results.testResults.every(result => {
return result.skipped;
import {Git} from '../src/git.js';
describe('remoteSha', () => {
it('returns sha using github api', async () => {
expect(await Git.remoteSha('https://github.com/docker/buildx.git', 'refs/pull/648/head', process.env.GITHUB_TOKEN)).toEqual('f11797113e5a9b86bd976329c5dbb8a8bfdfadfa');
});
if (allSkipped) {
console.log('All tests were skipped!');
// create an empty file to signal that all tests were skipped for CI
fs.closeSync(fs.openSync('./coverage/allSkipped.txt', 'w'));
}
return results;
};
});

View File

@@ -14,19 +14,19 @@
* limitations under the License.
*/
import {beforeEach, describe, expect, it, jest} from '@jest/globals';
import {beforeEach, describe, expect, it, vi} from 'vitest';
import {Git} from '../src/git';
import {Exec} from '../src/exec';
import {Git} from '../src/git.js';
import {Exec} from '../src/exec.js';
import {ExecOutput} from '@actions/exec';
beforeEach(() => {
jest.restoreAllMocks();
vi.restoreAllMocks();
});
describe('context', () => {
it('returns mocked ref and sha', async () => {
jest.spyOn(Exec, 'getExecOutput').mockImplementation((cmd, args): Promise<ExecOutput> => {
vi.spyOn(Exec, 'getExecOutput').mockImplementation((cmd, args): Promise<ExecOutput> => {
const fullCmd = `${cmd} ${args?.join(' ')}`;
let result = '';
switch (fullCmd) {
@@ -54,10 +54,10 @@ describe('context', () => {
describe('isInsideWorkTree', () => {
it('have been called', async () => {
const execSpy = jest.spyOn(Exec, 'getExecOutput');
const execSpy = vi.spyOn(Exec, 'getExecOutput');
try {
await Git.isInsideWorkTree();
} catch (err) {
} catch {
// noop
}
expect(execSpy).toHaveBeenCalledWith(`git`, ['rev-parse', '--is-inside-work-tree'], {
@@ -71,17 +71,14 @@ describe('remoteSha', () => {
it('returns sha using git ls-remote', async () => {
expect(await Git.remoteSha('https://github.com/docker/buildx.git', 'refs/pull/648/head')).toEqual('f11797113e5a9b86bd976329c5dbb8a8bfdfadfa');
});
it('returns sha using github api', async () => {
expect(await Git.remoteSha('https://github.com/docker/buildx.git', 'refs/pull/648/head', process.env.GITHUB_TOKEN)).toEqual('f11797113e5a9b86bd976329c5dbb8a8bfdfadfa');
});
});
describe('remoteURL', () => {
it('have been called', async () => {
const execSpy = jest.spyOn(Exec, 'getExecOutput');
const execSpy = vi.spyOn(Exec, 'getExecOutput');
try {
await Git.remoteURL();
} catch (err) {
} catch {
// noop
}
expect(execSpy).toHaveBeenCalledWith(`git`, ['remote', 'get-url', 'origin'], {
@@ -93,7 +90,7 @@ describe('remoteURL', () => {
describe('ref', () => {
it('returns mocked ref', async () => {
jest.spyOn(Exec, 'getExecOutput').mockImplementation((cmd, args): Promise<ExecOutput> => {
vi.spyOn(Exec, 'getExecOutput').mockImplementation((cmd, args): Promise<ExecOutput> => {
const fullCmd = `${cmd} ${args?.join(' ')}`;
let result = '';
switch (fullCmd) {
@@ -110,14 +107,12 @@ describe('ref', () => {
exitCode: 0
});
});
const ref = await Git.ref();
expect(ref).toEqual('refs/heads/test');
});
it('returns mocked detached tag ref', async () => {
jest.spyOn(Exec, 'getExecOutput').mockImplementation((cmd, args): Promise<ExecOutput> => {
vi.spyOn(Exec, 'getExecOutput').mockImplementation((cmd, args): Promise<ExecOutput> => {
const fullCmd = `${cmd} ${args?.join(' ')}`;
let result = '';
switch (fullCmd) {
@@ -134,14 +129,12 @@ describe('ref', () => {
exitCode: 0
});
});
const ref = await Git.ref();
expect(ref).toEqual('refs/tags/8.0.0');
});
it('returns mocked detached tag ref (shallow clone)', async () => {
jest.spyOn(Exec, 'getExecOutput').mockImplementation((cmd, args): Promise<ExecOutput> => {
vi.spyOn(Exec, 'getExecOutput').mockImplementation((cmd, args): Promise<ExecOutput> => {
const fullCmd = `${cmd} ${args?.join(' ')}`;
let result = '';
switch (fullCmd) {
@@ -158,14 +151,12 @@ describe('ref', () => {
exitCode: 0
});
});
const ref = await Git.ref();
expect(ref).toEqual('refs/tags/8.0.0');
});
it('returns mocked detached pull request merge ref (shallow clone)', async () => {
jest.spyOn(Exec, 'getExecOutput').mockImplementation((cmd, args): Promise<ExecOutput> => {
vi.spyOn(Exec, 'getExecOutput').mockImplementation((cmd, args): Promise<ExecOutput> => {
const fullCmd = `${cmd} ${args?.join(' ')}`;
let result = '';
switch (fullCmd) {
@@ -182,14 +173,12 @@ describe('ref', () => {
exitCode: 0
});
});
const ref = await Git.ref();
expect(ref).toEqual('refs/pull/221/merge');
});
it('should throws an error when detached HEAD ref is not supported', async () => {
jest.spyOn(Exec, 'getExecOutput').mockImplementation((cmd, args): Promise<ExecOutput> => {
vi.spyOn(Exec, 'getExecOutput').mockImplementation((cmd, args): Promise<ExecOutput> => {
const fullCmd = `${cmd} ${args?.join(' ')}`;
let result = '';
switch (fullCmd) {
@@ -206,12 +195,11 @@ describe('ref', () => {
exitCode: 0
});
});
await expect(Git.ref()).rejects.toThrow('Cannot find detached HEAD ref in "wrong, HEAD, tag: 8.0.0"');
});
it('returns mocked detached branch ref', async () => {
jest.spyOn(Exec, 'getExecOutput').mockImplementation((cmd, args): Promise<ExecOutput> => {
vi.spyOn(Exec, 'getExecOutput').mockImplementation((cmd, args): Promise<ExecOutput> => {
const fullCmd = `${cmd} ${args?.join(' ')}`;
let result = '';
switch (fullCmd) {
@@ -228,14 +216,12 @@ describe('ref', () => {
exitCode: 0
});
});
const ref = await Git.ref();
expect(ref).toEqual('refs/heads/test');
});
it('returns mocked detached branch ref checked out by SHA', async () => {
jest.spyOn(Exec, 'getExecOutput').mockImplementation((cmd, args): Promise<ExecOutput> => {
vi.spyOn(Exec, 'getExecOutput').mockImplementation((cmd, args): Promise<ExecOutput> => {
const fullCmd = `${cmd} ${args?.join(' ')}`;
let result = '';
switch (fullCmd) {
@@ -252,14 +238,12 @@ describe('ref', () => {
exitCode: 0
});
});
const ref = await Git.ref();
expect(ref).toEqual('refs/heads/feature-branch');
});
it('infers ref from local branch when detached HEAD returns only "HEAD"', async () => {
jest.spyOn(Exec, 'getExecOutput').mockImplementation((cmd, args): Promise<ExecOutput> => {
vi.spyOn(Exec, 'getExecOutput').mockImplementation((cmd, args): Promise<ExecOutput> => {
const fullCmd = `${cmd} ${args?.join(' ')}`;
let result = '';
switch (fullCmd) {
@@ -279,14 +263,37 @@ describe('ref', () => {
exitCode: 0
});
});
const ref = await Git.ref();
expect(ref).toEqual('refs/heads/main');
});
it('infers ref from local branch when detached HEAD returns only "grafted, HEAD"', async () => {
vi.spyOn(Exec, 'getExecOutput').mockImplementation((cmd, args): Promise<ExecOutput> => {
const fullCmd = `${cmd} ${args?.join(' ')}`;
let result = '';
switch (fullCmd) {
case 'git branch --show-current':
result = '';
break;
case 'git show -s --pretty=%D':
result = 'grafted, HEAD';
break;
case 'git for-each-ref --format=%(refname) --contains HEAD --sort=-committerdate refs/heads/':
result = 'refs/heads/main\nrefs/heads/develop';
break;
}
return Promise.resolve({
stdout: result,
stderr: '',
exitCode: 0
});
});
const ref = await Git.ref();
expect(ref).toEqual('refs/heads/main');
});
it('infers ref from remote branch when no local branch contains HEAD', async () => {
jest.spyOn(Exec, 'getExecOutput').mockImplementation((cmd, args): Promise<ExecOutput> => {
vi.spyOn(Exec, 'getExecOutput').mockImplementation((cmd, args): Promise<ExecOutput> => {
const fullCmd = `${cmd} ${args?.join(' ')}`;
let result = '';
switch (fullCmd) {
@@ -309,14 +316,12 @@ describe('ref', () => {
exitCode: 0
});
});
const ref = await Git.ref();
expect(ref).toEqual('refs/heads/feature');
});
it('infers ref from tag when no branch contains HEAD', async () => {
jest.spyOn(Exec, 'getExecOutput').mockImplementation((cmd, args): Promise<ExecOutput> => {
vi.spyOn(Exec, 'getExecOutput').mockImplementation((cmd, args): Promise<ExecOutput> => {
const fullCmd = `${cmd} ${args?.join(' ')}`;
let result = '';
switch (fullCmd) {
@@ -342,14 +347,12 @@ describe('ref', () => {
exitCode: 0
});
});
const ref = await Git.ref();
expect(ref).toEqual('refs/tags/v1.0.0');
});
it('throws error when cannot infer ref from detached HEAD', async () => {
jest.spyOn(Exec, 'getExecOutput').mockImplementation((cmd, args): Promise<ExecOutput> => {
vi.spyOn(Exec, 'getExecOutput').mockImplementation((cmd, args): Promise<ExecOutput> => {
const fullCmd = `${cmd} ${args?.join(' ')}`;
let result = '';
switch (fullCmd) {
@@ -375,12 +378,11 @@ describe('ref', () => {
exitCode: 0
});
});
await expect(Git.ref()).rejects.toThrow('Cannot infer ref from detached HEAD');
});
it('handles remote ref without branch pattern when inferring from remote', async () => {
jest.spyOn(Exec, 'getExecOutput').mockImplementation((cmd, args): Promise<ExecOutput> => {
vi.spyOn(Exec, 'getExecOutput').mockImplementation((cmd, args): Promise<ExecOutput> => {
const fullCmd = `${cmd} ${args?.join(' ')}`;
let result = '';
switch (fullCmd) {
@@ -403,19 +405,17 @@ describe('ref', () => {
exitCode: 0
});
});
const ref = await Git.ref();
expect(ref).toEqual('refs/remotes/unusual-format');
});
});
describe('fullCommit', () => {
it('have been called', async () => {
const execSpy = jest.spyOn(Exec, 'getExecOutput');
const execSpy = vi.spyOn(Exec, 'getExecOutput');
try {
await Git.fullCommit();
} catch (err) {
} catch {
// noop
}
expect(execSpy).toHaveBeenCalledWith(`git`, ['show', '--format=%H', 'HEAD', '--quiet', '--'], {
@@ -427,10 +427,10 @@ describe('fullCommit', () => {
describe('shortCommit', () => {
it('have been called', async () => {
const execSpy = jest.spyOn(Exec, 'getExecOutput');
const execSpy = vi.spyOn(Exec, 'getExecOutput');
try {
await Git.shortCommit();
} catch (err) {
} catch {
// noop
}
expect(execSpy).toHaveBeenCalledWith(`git`, ['show', '--format=%h', 'HEAD', '--quiet', '--'], {
@@ -442,10 +442,10 @@ describe('shortCommit', () => {
describe('tag', () => {
it('have been called', async () => {
const execSpy = jest.spyOn(Exec, 'getExecOutput');
const execSpy = vi.spyOn(Exec, 'getExecOutput');
try {
await Git.tag();
} catch (err) {
} catch {
// noop
}
expect(execSpy).toHaveBeenCalledWith(`git`, ['tag', '--points-at', 'HEAD', '--sort', '-version:creatordate'], {
@@ -458,6 +458,6 @@ describe('tag', () => {
describe('getCommitDate', () => {
it('head', async () => {
const date = await Git.commitDate('HEAD');
await expect(date).toBeInstanceOf(Date);
expect(date).toBeInstanceOf(Date);
});
});

View File

@@ -0,0 +1,42 @@
/**
* Copyright 2026 actions-toolkit authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
import {describe, expect, it} from 'vitest';
import fs from 'fs';
import os from 'os';
import path from 'path';
import {GitHubArtifact} from '../../src/github/artifact.js';
import {Util} from '../../src/util.js';
const fixturesDir = path.join(__dirname, '..', '.fixtures');
const tmpDir = fs.mkdtempSync(path.join(process.env.TEMP || os.tmpdir(), 'github-itg-'));
const maybe = !process.env.GITHUB_ACTIONS || (process.env.GITHUB_ACTIONS === 'true' && process.env.ImageOS && process.env.ImageOS.startsWith('ubuntu')) ? describe : describe.skip;
maybe('upload', () => {
it('uploads an artifact', async () => {
const filename = path.join(tmpDir, `github-repo-${Util.generateRandomString()}.json`);
fs.copyFileSync(path.join(fixturesDir, `github-repo.json`), filename);
const res = await GitHubArtifact.upload({
filename: filename,
retentionDays: 1
});
expect(res).toBeDefined();
console.log('uploadArtifactResponse', res);
expect(res?.url).toBeDefined();
});
});

View File

@@ -0,0 +1,41 @@
/**
* Copyright 2026 actions-toolkit authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
import {describe, expect, it} from 'vitest';
import {GitHub} from '../../src/github/github.js';
describe('repoData', () => {
it('returns docker/actions-toolkit', async () => {
if (!process.env.GITHUB_TOKEN) {
console.log(`GitHub token not available, skipping test`);
return;
}
const originalEnv = process.env;
process.env = {
...originalEnv,
GITHUB_REPOSITORY: 'docker/actions-toolkit'
};
try {
const github = new GitHub({token: process.env.GITHUB_TOKEN});
const repo = await github.repoData();
const fullName = repo.full_name ?? `${repo.owner?.login}/${repo.name}`;
expect(fullName).toEqual('docker/actions-toolkit');
} finally {
process.env = originalEnv;
}
});
});

View File

@@ -14,21 +14,31 @@
* limitations under the License.
*/
import {describe, expect, jest, it, beforeEach, afterEach, test} from '@jest/globals';
import {describe, expect, vi, it, beforeEach, afterEach, test} from 'vitest';
import * as fs from 'fs';
import * as path from 'path';
import * as core from '@actions/core';
import {GitHub} from '../src/github';
import {GitHubRepo} from '../src/types/github';
import {GitHub} from '../../src/github/github.js';
import {GitHubRepo} from '../../src/types/github/github.js';
import repoFixture from './.fixtures/github-repo.json';
jest.spyOn(GitHub.prototype, 'repoData').mockImplementation((): Promise<GitHubRepo> => {
return <Promise<GitHubRepo>>(repoFixture as unknown);
import repoFixture from '../.fixtures/github-repo.json' with {type: 'json'};
const fixturesDir = path.join(__dirname, '..', '.fixtures');
vi.mock('@actions/core', async () => {
const actual = await vi.importActual<typeof import('@actions/core')>('@actions/core');
return {
...actual,
info: vi.fn()
};
});
describe('repoData', () => {
it('returns GitHub repo data', async () => {
vi.spyOn(GitHub.prototype, 'repoData').mockImplementation((): Promise<GitHubRepo> => {
return <Promise<GitHubRepo>>(repoFixture as unknown);
});
const github = new GitHub();
expect((await github.repoData()).name).toEqual('Hello-World');
});
@@ -53,7 +63,7 @@ describe('releases', () => {
['.github/docker-releases.json'],
['.github/regclient-releases.json'],
['.github/undock-releases.json'],
])('returns %p', async (path: string) => {
])('returns %o', async (path: string) => {
const github = new GitHub();
const releases = await github.releases('App', {
owner: 'docker',
@@ -69,7 +79,7 @@ describe('releases', () => {
describe('serverURL', () => {
const originalEnv = process.env;
beforeEach(() => {
jest.resetModules();
vi.resetModules();
process.env = {
...originalEnv,
GITHUB_SERVER_URL: 'https://foo.github.com'
@@ -90,7 +100,7 @@ describe('serverURL', () => {
describe('apiURL', () => {
const originalEnv = process.env;
beforeEach(() => {
jest.resetModules();
vi.resetModules();
process.env = {
...originalEnv,
GITHUB_API_URL: 'https://bar.github.com'
@@ -126,7 +136,7 @@ describe('workflowRunURL', () => {
describe('actionsRuntimeToken', () => {
const originalEnv = process.env;
beforeEach(() => {
jest.resetModules();
vi.resetModules();
process.env = {
...originalEnv
};
@@ -141,14 +151,12 @@ describe('actionsRuntimeToken', () => {
it('malformed', async () => {
process.env.ACTIONS_RUNTIME_TOKEN = 'foo';
expect(() => {
// eslint-disable-next-line @typescript-eslint/no-unused-expressions
GitHub.actionsRuntimeToken;
}).toThrow();
});
it('fixture', async () => {
process.env.ACTIONS_RUNTIME_TOKEN = fs
.readFileSync(path.join(__dirname, '.fixtures', 'runtimeToken.txt'))
.toString()
.trim();
process.env.ACTIONS_RUNTIME_TOKEN = fs.readFileSync(path.join(fixturesDir, 'runtimeToken.txt')).toString().trim();
const runtimeToken = GitHub.actionsRuntimeToken;
expect(runtimeToken?.ac).toEqual('[{"Scope":"refs/heads/master","Permission":3}]');
expect(runtimeToken?.iss).toEqual('vstoken.actions.githubusercontent.com');
@@ -158,7 +166,7 @@ describe('actionsRuntimeToken', () => {
describe('printActionsRuntimeTokenACs', () => {
const originalEnv = process.env;
beforeEach(() => {
jest.resetModules();
vi.resetModules();
process.env = {
...originalEnv
};
@@ -175,11 +183,8 @@ describe('printActionsRuntimeTokenACs', () => {
await expect(GitHub.printActionsRuntimeTokenACs()).rejects.toThrow(new Error('Cannot parse GitHub Actions Runtime Token: Invalid token specified: missing part #2'));
});
it('refs/heads/master', async () => {
const infoSpy = jest.spyOn(core, 'info');
process.env.ACTIONS_RUNTIME_TOKEN = fs
.readFileSync(path.join(__dirname, '.fixtures', 'runtimeToken.txt'))
.toString()
.trim();
const infoSpy = vi.mocked(core.info);
process.env.ACTIONS_RUNTIME_TOKEN = fs.readFileSync(path.join(fixturesDir, 'runtimeToken.txt')).toString().trim();
await GitHub.printActionsRuntimeTokenACs();
expect(infoSpy).toHaveBeenCalledTimes(1);
expect(infoSpy).toHaveBeenCalledWith(`refs/heads/master: read/write`);

View File

@@ -14,39 +14,24 @@
* limitations under the License.
*/
import {describe, expect, it, test} from '@jest/globals';
import {describe, expect, it, test} from 'vitest';
import fs from 'fs';
import os from 'os';
import path from 'path';
import {Buildx} from '../src/buildx/buildx';
import {Bake} from '../src/buildx/bake';
import {Build} from '../src/buildx/build';
import {Exec} from '../src/exec';
import {GitHub} from '../src/github';
import {History} from '../src/buildx/history';
import {Util} from '../src/util';
import {Buildx} from '../../src/buildx/buildx.js';
import {Bake} from '../../src/buildx/bake.js';
import {Build} from '../../src/buildx/build.js';
import {Exec} from '../../src/exec.js';
import {GitHubArtifact} from '../../src/github/artifact.js';
import {GitHubSummary} from '../../src/github/summary.js';
import {History} from '../../src/buildx/history.js';
const fixturesDir = path.join(__dirname, '.fixtures');
const fixturesDir = path.join(__dirname, '..', '.fixtures');
const tmpDir = fs.mkdtempSync(path.join(process.env.TEMP || os.tmpdir(), 'github-itg-'));
const maybe = !process.env.GITHUB_ACTIONS || (process.env.GITHUB_ACTIONS === 'true' && process.env.ImageOS && process.env.ImageOS.startsWith('ubuntu')) ? describe : describe.skip;
maybe('uploadArtifact', () => {
it('uploads an artifact', async () => {
const filename = path.join(tmpDir, `github-repo-${Util.generateRandomString()}.json`);
fs.copyFileSync(path.join(fixturesDir, `github-repo.json`), filename);
const res = await GitHub.uploadArtifact({
filename: filename,
mimeType: 'application/json',
retentionDays: 1
});
expect(res).toBeDefined();
console.log('uploadArtifactResponse', res);
expect(res?.url).toBeDefined();
});
});
maybe('writeBuildSummary', () => {
// prettier-ignore
test.each([
@@ -98,15 +83,14 @@ maybe('writeBuildSummary', () => {
expect(exportRes?.dockerbuildSize).toBeDefined();
expect(exportRes?.summaries).toBeDefined();
const uploadRes = await GitHub.uploadArtifact({
const uploadRes = await GitHubArtifact.upload({
filename: exportRes?.dockerbuildFilename,
mimeType: 'application/gzip',
retentionDays: 1
});
expect(uploadRes).toBeDefined();
expect(uploadRes?.url).toBeDefined();
await GitHub.writeBuildSummary({
await GitHubSummary.writeBuildSummary({
exportRes: exportRes,
uploadRes: uploadRes,
inputs: {
@@ -178,15 +162,14 @@ maybe('writeBuildSummary', () => {
expect(exportRes?.dockerbuildSize).toBeDefined();
expect(exportRes?.summaries).toBeDefined();
const uploadRes = await GitHub.uploadArtifact({
const uploadRes = await GitHubArtifact.upload({
filename: exportRes?.dockerbuildFilename,
mimeType: 'application/gzip',
retentionDays: 1
});
expect(uploadRes).toBeDefined();
expect(uploadRes?.url).toBeDefined();
await GitHub.writeBuildSummary({
await GitHubSummary.writeBuildSummary({
exportRes: exportRes,
uploadRes: uploadRes,
inputs: {
@@ -233,15 +216,14 @@ maybe('writeBuildSummary', () => {
expect(exportRes?.dockerbuildSize).toBeDefined();
expect(exportRes?.summaries).toBeDefined();
const uploadRes = await GitHub.uploadArtifact({
const uploadRes = await GitHubArtifact.upload({
filename: exportRes?.dockerbuildFilename,
mimeType: 'application/gzip',
retentionDays: 1
});
expect(uploadRes).toBeDefined();
expect(uploadRes?.url).toBeDefined();
await GitHub.writeBuildSummary({
await GitHubSummary.writeBuildSummary({
exportRes: exportRes,
uploadRes: uploadRes,
inputs: {
@@ -288,7 +270,7 @@ maybe('writeBuildSummary', () => {
expect(exportRes?.dockerbuildSize).toBeDefined();
expect(exportRes?.summaries).toBeDefined();
await GitHub.writeBuildSummary({
await GitHubSummary.writeBuildSummary({
exportRes: exportRes,
inputs: {
context: fixturesDir,

View File

@@ -14,13 +14,17 @@
* limitations under the License.
*/
import {afterEach, describe, expect, test} from '@jest/globals';
import {afterEach, describe, expect, test} from 'vitest';
import fs from 'fs';
import os from 'os';
import path from 'path';
import * as rimraf from 'rimraf';
import {OCI} from '../../src/oci/oci';
import {mockArch, mockPlatform} from '../.helpers/os.js';
import {OCI} from '../../src/oci/oci.js';
import {Platform} from '../../src/types/oci/descriptor.js';
const fixturesDir = path.join(__dirname, '..', '.fixtures');
const tmpDir = fs.mkdtempSync(path.join(process.env.TEMP || os.tmpdir(), 'oci-oci-'));
@@ -29,11 +33,30 @@ afterEach(function () {
rimraf.sync(tmpDir);
});
describe('defaultPlatform', () => {
test.each([
['win32', 'x64', {architecture: 'amd64', os: 'windows'}],
['win32', 'arm64', {architecture: 'arm64', os: 'windows'}],
['darwin', 'x64', {architecture: 'amd64', os: 'darwin'}],
['darwin', 'arm64', {architecture: 'arm64', os: 'darwin'}],
['linux', 'ia32', {architecture: '386', os: 'linux'}],
['linux', 'x64', {architecture: 'amd64', os: 'linux'}],
['linux', 'arm64', {architecture: 'arm64', os: 'linux'}],
['linux', 'ppc64', {architecture: 'ppc64le', os: 'linux'}],
['linux', 's390x', {architecture: 's390x', os: 'linux'}]
])('default platform for %s/%s', async (os: string, arch: string, expected: Platform) => {
mockPlatform(os as NodeJS.Platform);
mockArch(arch);
const res = OCI.defaultPlatform();
expect(res).toEqual(expected);
});
});
describe('loadArchive', () => {
// prettier-ignore
test.each(fs.readdirSync(path.join(fixturesDir, 'oci-archive')).filter(file => {
return fs.statSync(path.join(path.join(fixturesDir, 'oci-archive'), file)).isFile();
}).map(filename => [filename]))('extracting %p', async (filename) => {
}).map(filename => [filename]))('extracting %o', async (filename) => {
const res = await OCI.loadArchive({
file: path.join(fixturesDir, 'oci-archive', filename)
});

View File

@@ -14,10 +14,10 @@
* limitations under the License.
*/
import {describe, expect, test} from '@jest/globals';
import {describe, expect, test} from 'vitest';
import * as fs from 'fs';
import {Install} from '../../src/regclient/install';
import {Install} from '../../src/regclient/install.js';
describe('download', () => {
// prettier-ignore

View File

@@ -14,14 +14,15 @@
* limitations under the License.
*/
import {describe, expect, it, jest, test, afterEach} from '@jest/globals';
import {describe, expect, it, test, afterEach} from 'vitest';
import fs from 'fs';
import os from 'os';
import path from 'path';
import * as rimraf from 'rimraf';
import osm = require('os');
import {Install} from '../../src/regclient/install';
import {mockArch, mockPlatform} from '../.helpers/os.js';
import {Install} from '../../src/regclient/install.js';
const tmpDir = fs.mkdtempSync(path.join(process.env.TEMP || os.tmpdir(), 'regclient-install-'));
@@ -35,7 +36,7 @@ describe('download', () => {
['v0.8.2'],
['latest']
])(
'acquires %p of regclient', async (version) => {
'acquires %o of regclient', async (version) => {
const install = new Install();
const toolPath = await install.download(version);
expect(fs.existsSync(toolPath)).toBe(true);
@@ -48,7 +49,7 @@ describe('download', () => {
// following versions are already cached to htc from previous test cases
['v0.8.2'],
])(
'acquires %p of regclient with cache', async (version) => {
'acquires %o of regclient with cache', async (version) => {
const install = new Install();
const toolPath = await install.download(version);
expect(fs.existsSync(toolPath)).toBe(true);
@@ -58,7 +59,7 @@ describe('download', () => {
test.each([
['v0.8.1'],
])(
'acquires %p of regclient without cache', async (version) => {
'acquires %o of regclient without cache', async (version) => {
const install = new Install();
const toolPath = await install.download(version, true);
expect(fs.existsSync(toolPath)).toBe(true);
@@ -75,8 +76,8 @@ describe('download', () => {
['linux', 's390x'],
])(
'acquires regclient for %s/%s', async (os, arch) => {
jest.spyOn(osm, 'platform').mockImplementation(() => os as NodeJS.Platform);
jest.spyOn(osm, 'arch').mockImplementation(() => arch);
mockPlatform(os as NodeJS.Platform);
mockArch(arch);
const install = new Install();
const regclientBin = await install.download('latest');
expect(fs.existsSync(regclientBin)).toBe(true);

View File

@@ -14,20 +14,20 @@
* limitations under the License.
*/
import {describe, expect, it, jest, test} from '@jest/globals';
import {describe, expect, it, vi, test} from 'vitest';
import * as semver from 'semver';
import {Exec} from '../../src/exec';
import {Regctl} from '../../src/regclient/regctl';
import {Exec} from '../../src/exec.js';
import {Regctl} from '../../src/regclient/regctl.js';
import {Image} from '../../src/types/oci/config';
import {Image} from '../../src/types/oci/config.js';
describe('manifestGet', () => {
// prettier-ignore
test.each([
['moby/moby-bin:28.1.0-rc.2'],
['crazymax/diun:4.17.0'],
])('given %p', async image => {
])('given %o', async image => {
const regctl = new Regctl();
const manifest = await regctl.manifestGet({
image: image,
@@ -45,7 +45,7 @@ describe('blobGet', () => {
test.each([
['moby/moby-bin', 'sha256:234fccbd13fde0ba978a19f728cbdc67e29bc76247ac560822bb6ae5236c0bf0'],
['crazymax/diun', 'sha256:1e4881f66e0ec0f1710b837002107050bbbc0a231d8a42d7f422b56a139900bb'],
])('given %p', async (repo, digest) => {
])('given %o', async (repo, digest) => {
const regctl = new Regctl();
const blob = await regctl.blobGet({
repository: repo,
@@ -60,7 +60,7 @@ describe('image config', () => {
test.each([
['moby/moby-bin:28.1.0-rc.2'],
['crazymax/diun:4.17.0'],
])('given %p', async image => {
])('given %o', async image => {
const regctl = new Regctl();
const manifest = await regctl.manifestGet({
image: image,
@@ -82,10 +82,9 @@ describe('image config', () => {
describe('isAvailable', () => {
it('checks regctl is available', async () => {
const execSpy = jest.spyOn(Exec, 'getExecOutput');
const execSpy = vi.spyOn(Exec, 'getExecOutput');
const regctl = new Regctl();
await regctl.isAvailable();
// eslint-disable-next-line jest/no-standalone-expect
expect(execSpy).toHaveBeenCalledWith(`regctl`, [], {
silent: true,
ignoreReturnCode: true
@@ -95,7 +94,7 @@ describe('isAvailable', () => {
describe('printVersion', () => {
it('prints regctl version', async () => {
const execSpy = jest.spyOn(Exec, 'exec');
const execSpy = vi.spyOn(Exec, 'exec');
const regctl = new Regctl();
await regctl.printVersion();
expect(execSpy).toHaveBeenCalledWith(`regctl`, ['version'], {
@@ -116,7 +115,7 @@ describe('versionSatisfies', () => {
['v0.8.2', '>=0.6.0', true],
['v0.8.0', '>0.6.0', true],
['v0.8.0', '<0.3.0', false]
])('given %p', async (version, range, expected) => {
])('given %o', async (version, range, expected) => {
const regctl = new Regctl();
expect(await regctl.versionSatisfies(range, version)).toBe(expected);
});

View File

@@ -14,27 +14,155 @@
* limitations under the License.
*/
import {describe, expect, jest, it, beforeAll} from '@jest/globals';
import {beforeAll, describe, expect, it, test} from 'vitest';
import fs from 'fs';
import os from 'os';
import * as path from 'path';
import {Install as CosignInstall} from '../../src/cosign/install';
import {Sigstore} from '../../src/sigstore/sigstore';
import {Buildx} from '../../src/buildx/buildx.js';
import {Build} from '../../src/buildx/build.js';
import {Cosign} from '../../src/cosign/cosign.js';
import {Install as CosignInstall} from '../../src/cosign/install.js';
import {Docker} from '../../src/docker/docker.js';
import {Exec} from '../../src/exec.js';
import {OCI} from '../../src/oci/oci.js';
import {Sigstore} from '../../src/sigstore/sigstore.js';
const fixturesDir = path.join(__dirname, '..', '.fixtures');
const maybe = process.env.GITHUB_ACTIONS && process.env.GITHUB_ACTIONS === 'true' && process.env.ACTIONS_ID_TOKEN_REQUEST_URL && process.env.ImageOS && process.env.ImageOS.startsWith('ubuntu') ? describe : describe.skip;
const runTest = process.env.GITHUB_ACTIONS && process.env.GITHUB_ACTIONS === 'true' && process.env.ImageOS && process.env.ImageOS.startsWith('ubuntu');
// needs current GitHub repo info
jest.unmock('@actions/github');
const maybe = runTest ? describe : describe.skip;
const maybeIdToken = runTest && process.env.ACTIONS_ID_TOKEN_REQUEST_URL ? describe : describe.skip;
beforeAll(async () => {
const cosignInstall = new CosignInstall();
const cosignBinPath = await cosignInstall.download('v3.0.2', true);
await cosignInstall.install(cosignBinPath);
}, 100000);
const imageName = 'ghcr.io/docker/actions-toolkit/test';
const currentCosignVersion = 'v3.0.6';
const signAttestationCosignVersions = ['v3.0.2', currentCosignVersion] as const;
const installedCosign = new Map<string, Promise<string>>();
maybe('signProvenanceBlobs', () => {
async function installCosign(version: string): Promise<string> {
let installedPath = installedCosign.get(version);
if (!installedPath) {
installedPath = (async () => {
const cosignInstall = new CosignInstall();
const cosignBinPath = await cosignInstall.download({
version
});
const installDir = fs.mkdtempSync(path.join(process.env.RUNNER_TEMP || os.tmpdir(), `sigstore-cosign-${version.replace(/[^a-zA-Z0-9]+/g, '-')}-`));
return await cosignInstall.install(cosignBinPath, installDir);
})();
installedCosign.set(version, installedPath);
}
return await installedPath;
}
for (const cosignVersion of signAttestationCosignVersions) {
maybeIdToken(`signAttestationManifests with cosign ${cosignVersion}`, () => {
let sigstore: Sigstore;
beforeAll(async () => {
sigstore = new Sigstore({
cosign: new Cosign({
binPath: await installCosign(cosignVersion)
})
});
}, 100000);
it('build, sign and verify', async () => {
const buildx = new Buildx();
const build = new Build({buildx: buildx});
const versionTag = cosignVersion.replace(/^v/, '').replace(/\./g, '-');
await expect(
(async () => {
await Docker.getExecOutput(['login', '--password-stdin', '--username', process.env.GITHUB_REPOSITORY_OWNER || 'docker', 'ghcr.io'], {
input: Buffer.from(process.env.GITHUB_TOKEN || '')
});
})()
).resolves.not.toThrow();
await expect(
(async () => {
// prettier-ignore
const buildCmd = await buildx.getCommand([
'--builder', process.env.CTN_BUILDER_NAME ?? 'default',
'build',
'-f', path.join(fixturesDir, 'hello.Dockerfile'),
'--provenance=mode=max',
'--tag', `${imageName}:sigstore-itg-cosign-${versionTag}`,
'--platform', 'linux/amd64,linux/arm64',
'--push',
'--metadata-file', build.getMetadataFilePath(),
fixturesDir
]);
await Exec.exec(buildCmd.command, buildCmd.args);
})()
).resolves.not.toThrow();
const metadata = build.resolveMetadata();
expect(metadata).toBeDefined();
const buildDigest = build.resolveDigest(metadata);
expect(buildDigest).toBeDefined();
const signResults = await sigstore.signAttestationManifests({
imageNames: [imageName],
imageDigest: buildDigest!
});
expect(Object.keys(signResults).length).toEqual(2);
const verifyResults = await sigstore.verifySignedManifests(signResults, {
certificateIdentityRegexp: `^https://github.com/docker/actions-toolkit/.github/workflows/test.yml.*$`
});
expect(Object.keys(verifyResults).length).toEqual(2);
}, 200000);
});
}
maybe('verifyImageAttestations', () => {
let sigstore: Sigstore;
beforeAll(async () => {
sigstore = new Sigstore({
cosign: new Cosign({
binPath: await installCosign(currentCosignVersion)
})
});
}, 100000);
test.each([
['moby/buildkit:master@sha256:84014da3581b2ff2c14cb4f60029cf9caa272b79e58f2e89c651ea6966d7a505', `^https://github.com/docker/github-builder-experimental/.github/workflows/bake.yml.*$`],
['docker/dockerfile-upstream:master@sha256:3e8cd5ebf48acd1a1939649ad1c62ca44c029852b22493c16a9307b654334958', `^https://github.com/docker/github-builder-experimental/.github/workflows/bake.yml.*$`]
])(
'given %p',
async (image, certificateIdentityRegexp) => {
const verifyResults = await sigstore.verifyImageAttestations(image, {
certificateIdentityRegexp: certificateIdentityRegexp
});
expect(Object.keys(verifyResults).length).toBeGreaterThan(0);
for (const [attestationRef, res] of Object.entries(verifyResults)) {
expect(attestationRef).toBeDefined();
expect(res.cosignArgs).toBeDefined();
expect(res.signatureManifestDigest).toBeDefined();
}
},
60000
);
it('default platform', async () => {
const verifyResults = await sigstore.verifyImageAttestations('moby/buildkit:master@sha256:84014da3581b2ff2c14cb4f60029cf9caa272b79e58f2e89c651ea6966d7a505', {
certificateIdentityRegexp: `^https://github.com/docker/github-builder-experimental/.github/workflows/bake.yml.*$`,
platform: OCI.defaultPlatform()
});
expect(Object.keys(verifyResults).length).toEqual(1);
for (const [attestationRef, res] of Object.entries(verifyResults)) {
expect(attestationRef).toBeDefined();
expect(res.cosignArgs).toBeDefined();
expect(res.signatureManifestDigest).toBeDefined();
}
});
});
maybeIdToken('signProvenanceBlobs', () => {
it('single platform', async () => {
const sigstore = new Sigstore();
const results = await sigstore.signProvenanceBlobs({
@@ -66,20 +194,26 @@ maybe('signProvenanceBlobs', () => {
});
});
maybe('verifySignedArtifacts', () => {
maybeIdToken('verifySignedArtifacts', () => {
let sigstore: Sigstore;
beforeAll(async () => {
sigstore = new Sigstore({
cosign: new Cosign({
binPath: await installCosign(currentCosignVersion)
})
});
}, 100000);
it('sign and verify', async () => {
const sigstore = new Sigstore();
const signResults = await sigstore.signProvenanceBlobs({
localExportDir: path.join(fixturesDir, 'sigstore', 'multi')
});
expect(Object.keys(signResults).length).toEqual(2);
const verifyResults = await sigstore.verifySignedArtifacts(
{
certificateIdentityRegexp: `^https://github.com/docker/actions-toolkit/.github/workflows/test.yml.*$`
},
signResults
);
const verifyResults = await sigstore.verifySignedArtifacts(signResults, {
certificateIdentityRegexp: `^https://github.com/docker/actions-toolkit/.github/workflows/test.yml.*$`
});
expect(Object.keys(verifyResults).length).toEqual(2);
for (const [artifactPath, res] of Object.entries(verifyResults)) {
expect(fs.existsSync(artifactPath)).toBe(true);

View File

@@ -14,10 +14,10 @@
* limitations under the License.
*/
import {describe, expect, test} from '@jest/globals';
import {describe, expect, test} from 'vitest';
import * as fs from 'fs';
import {Install} from '../../src/undock/install';
import {Install} from '../../src/undock/install.js';
describe('download', () => {
// prettier-ignore

View File

@@ -14,14 +14,15 @@
* limitations under the License.
*/
import {describe, expect, it, jest, test, afterEach} from '@jest/globals';
import {describe, expect, it, test, afterEach} from 'vitest';
import fs from 'fs';
import os from 'os';
import path from 'path';
import * as rimraf from 'rimraf';
import osm = require('os');
import {Install} from '../../src/undock/install';
import {mockArch, mockPlatform} from '../.helpers/os.js';
import {Install} from '../../src/undock/install.js';
const tmpDir = fs.mkdtempSync(path.join(process.env.TEMP || os.tmpdir(), 'undock-install-'));
@@ -36,7 +37,7 @@ describe('download', () => {
['v0.7.0'],
['latest']
])(
'acquires %p of undock', async (version) => {
'acquires %o of undock', async (version) => {
const install = new Install();
const toolPath = await install.download(version);
expect(fs.existsSync(toolPath)).toBe(true);
@@ -50,7 +51,7 @@ describe('download', () => {
['v0.4.0'],
['v0.7.0'],
])(
'acquires %p of undock with cache', async (version) => {
'acquires %o of undock with cache', async (version) => {
const install = new Install();
const toolPath = await install.download(version);
expect(fs.existsSync(toolPath)).toBe(true);
@@ -61,7 +62,7 @@ describe('download', () => {
['v0.5.0'],
['v0.6.0'],
])(
'acquires %p of undock without cache', async (version) => {
'acquires %o of undock without cache', async (version) => {
const install = new Install();
const toolPath = await install.download(version, true);
expect(fs.existsSync(toolPath)).toBe(true);
@@ -80,8 +81,8 @@ describe('download', () => {
['linux', 's390x'],
])(
'acquires undock for %s/%s', async (os, arch) => {
jest.spyOn(osm, 'platform').mockImplementation(() => os as NodeJS.Platform);
jest.spyOn(osm, 'arch').mockImplementation(() => arch);
mockPlatform(os as NodeJS.Platform);
mockArch(arch);
const install = new Install();
const undockBin = await install.download('latest');
expect(fs.existsSync(undockBin)).toBe(true);

View File

@@ -14,12 +14,12 @@
* limitations under the License.
*/
import {describe, expect, it} from '@jest/globals';
import {describe, expect, it} from 'vitest';
import fs from 'fs';
import os from 'os';
import {Undock} from '../../src/undock/undock';
import {Install as UndockInstall} from '../../src/undock/install';
import {Undock} from '../../src/undock/undock.js';
import {Install as UndockInstall} from '../../src/undock/install.js';
describe('run', () => {
it('extracts moby/moby-bin:26.1.5', async () => {

View File

@@ -17,11 +17,11 @@
import fs from 'fs';
import os from 'os';
import path from 'path';
import {describe, expect, it, jest, test} from '@jest/globals';
import {describe, expect, it, vi, test} from 'vitest';
import * as semver from 'semver';
import {Exec} from '../../src/exec';
import {Undock} from '../../src/undock/undock';
import {Exec} from '../../src/exec.js';
import {Undock} from '../../src/undock/undock.js';
const tmpDir = fs.mkdtempSync(path.join(process.env.TEMP || os.tmpdir(), 'undock-undock-'));
@@ -43,10 +43,9 @@ describe('run', () => {
describe('isAvailable', () => {
it('checks undock is available', async () => {
const execSpy = jest.spyOn(Exec, 'getExecOutput');
const execSpy = vi.spyOn(Exec, 'getExecOutput');
const undock = new Undock();
await undock.isAvailable();
// eslint-disable-next-line jest/no-standalone-expect
expect(execSpy).toHaveBeenCalledWith(`undock`, [], {
silent: true,
ignoreReturnCode: true
@@ -56,7 +55,7 @@ describe('isAvailable', () => {
describe('printVersion', () => {
it('prints undock version', async () => {
const execSpy = jest.spyOn(Exec, 'exec');
const execSpy = vi.spyOn(Exec, 'exec');
const undock = new Undock();
await undock.printVersion();
expect(execSpy).toHaveBeenCalledWith(`undock`, ['--version'], {
@@ -77,7 +76,7 @@ describe('versionSatisfies', () => {
['v0.4.1', '>=0.3.2', true],
['v0.8.0', '>0.6.0', true],
['v0.8.0', '<0.3.0', false]
])('given %p', async (version, range, expected) => {
])('given %o', async (version, range, expected) => {
const undock = new Undock();
expect(await undock.versionSatisfies(range, version)).toBe(expected);
});

View File

@@ -14,11 +14,11 @@
* limitations under the License.
*/
import {describe, expect, it, test} from '@jest/globals';
import {describe, expect, it, test} from 'vitest';
import * as fs from 'fs';
import * as path from 'path';
import {Util} from '../src/util';
import {Util} from '../src/util.js';
describe('getInputList', () => {
it('single line correctly', async () => {
@@ -87,6 +87,12 @@ describe('getInputList', () => {
expect(res).toEqual(['foo=bar', 'bar=qux']);
});
it('multiline with comment and no infix comment', async () => {
setInput('labels', '# ignore this\nfoo=bar\nbar=qux#baz');
const res = Util.getInputList('labels', {comment: '#', commentNoInfix: true});
expect(res).toEqual(['foo=bar', 'bar=qux#baz']);
});
it('different new lines and ignoring comma correctly', async () => {
setInput('cache-from', 'user/app:cache\r\ntype=local,src=path/to/dir');
const res = Util.getInputList('cache-from', {ignoreComma: true});
@@ -151,6 +157,28 @@ ccc`
]);
});
it('preserves trailing new lines when trimming is disabled', async () => {
setInput(
'secrets',
`"PRIVATE_SSH_KEY=TESTESTTESTESTTESTESTTESTEST
TESTESTTESTESTTESTESTTESTEST
TESTESTTESTESTTESTESTTESTEST
"
`
);
const res = Util.getInputList('secrets', {ignoreComma: true, trimWhitespace: false});
expect(res).toEqual([
`PRIVATE_SSH_KEY=TESTESTTESTESTTESTESTTESTEST
TESTESTTESTESTTESTESTTESTEST
TESTESTTESTESTTESTESTTESTEST
`
]);
});
it('multiline values without quotes', async () => {
setInput(
'secrets',
@@ -247,7 +275,7 @@ describe('isValidURL', () => {
['git://github.com/user/repo.git', false],
['github.com/moby/buildkit.git#main', false],
['v0.4.1', false]
])('given %p', async (url, expected) => {
])('given %o', async (url, expected) => {
expect(Util.isValidURL(url)).toEqual(expected);
});
});
@@ -260,7 +288,7 @@ describe('isValidRef', () => {
['git://github.com/user/repo.git', true],
['github.com/moby/buildkit.git#main', true],
['v0.4.1', false]
])('given %p', async (url, expected) => {
])('given %o', async (url, expected) => {
expect(Util.isValidRef(url)).toEqual(expected);
});
});
@@ -278,7 +306,7 @@ describe('trimPrefix', () => {
['abcdabc', 'abc', 'dabc'],
['abcabc', 'abc', 'abc'],
['abcdabc', 'd', 'abcdabc']
])('given %p', async (str, prefix, expected) => {
])('given %o', async (str, prefix, expected) => {
expect(Util.trimPrefix(str, prefix)).toEqual(expected);
});
});
@@ -295,7 +323,7 @@ describe('trimSuffix', () => {
['abcdabc', 'abc', 'abcd'],
['abcabc', 'abc', 'abc'],
['abcdabc', 'd', 'abcdabc']
])('given %p', async (str, suffix, expected) => {
])('given %o', async (str, suffix, expected) => {
expect(Util.trimSuffix(str, suffix)).toEqual(expected);
});
});
@@ -309,6 +337,7 @@ describe('hash', () => {
// https://github.com/golang/go/blob/f6b93a4c358b28b350dd8fe1780c1f78e520c09c/src/strconv/atob_test.go#L36-L58
describe('parseBool', () => {
[
{input: undefined, expected: false, throwsError: false},
{input: '', expected: false, throwsError: true},
{input: 'asdf', expected: false, throwsError: true},
{input: '0', expected: false, throwsError: false},
@@ -326,16 +355,23 @@ describe('parseBool', () => {
].forEach(({input, expected, throwsError}) => {
test(`parseBool("${input}")`, () => {
if (throwsError) {
// eslint-disable-next-line jest/no-conditional-expect
// eslint-disable-next-line vitest/no-conditional-expect
expect(() => Util.parseBool(input)).toThrow();
} else {
// eslint-disable-next-line jest/no-conditional-expect
// eslint-disable-next-line vitest/no-conditional-expect
expect(Util.parseBool(input)).toBe(expected);
}
});
});
});
describe('parseBoolOrDefault', () => {
it('returns default value when input is invalid', () => {
expect(Util.parseBoolOrDefault('asdf')).toBe(false);
expect(Util.parseBoolOrDefault('asdf', true)).toBe(true);
});
});
describe('formatFileSize', () => {
test('should return "0 Bytes" when given 0 bytes', () => {
expect(Util.formatFileSize(0)).toBe('0 Bytes');
@@ -378,6 +414,20 @@ describe('generateRandomString', () => {
});
});
describe('compileHandlebars', () => {
it('renders the template with the meta context and compile options', () => {
const rendered = Util.compileHandlebars(
'{{name}} {{{raw}}}',
{noEscape: true},
{
name: 'docker',
raw: '<strong>actions-toolkit</strong>'
}
);
expect(rendered).toBe('docker <strong>actions-toolkit</strong>');
});
});
describe('stringToUnicodeEntities', () => {
it('should convert a string to Unicode entities', () => {
const input = 'Hello, World!';

View File

@@ -14,13 +14,13 @@
# See the License for the specific language governing permissions and
# limitations under the License.
ARG NODE_VERSION=20
ARG DOCKER_VERSION=28.3
ARG BUILDX_VERSION=0.30.1
ARG COMPOSE_VERSION=2.39.1
ARG UNDOCK_VERSION=0.10.0
ARG REGCTL_VERSION=v0.8.2
ARG COSIGN_VERSION=v3.0.2
ARG NODE_VERSION=24
ARG DOCKER_VERSION=29.4
ARG BUILDX_VERSION=0.33.0
ARG COMPOSE_VERSION=5.1.3
ARG UNDOCK_VERSION=0.12.0
ARG REGCTL_VERSION=v0.11.3
ARG COSIGN_VERSION=v3.0.6
FROM node:${NODE_VERSION}-alpine AS base
RUN apk add --no-cache cpio findutils git
@@ -96,29 +96,8 @@ RUN --mount=type=bind,target=.,rw \
--mount=type=bind,from=undock,source=/usr/local/bin/undock,target=/usr/bin/undock \
--mount=type=bind,from=regctl,source=/regctl,target=/usr/bin/regctl \
--mount=type=bind,from=cosign,source=/ko-app/cosign,target=/usr/bin/cosign \
--mount=type=secret,id=GITHUB_TOKEN \
GITHUB_TOKEN=$(cat /run/secrets/GITHUB_TOKEN) yarn run test:coverage --coverageDirectory=/tmp/coverage
--mount=type=secret,id=GITHUB_TOKEN,env=GITHUB_TOKEN \
yarn run test:coverage --coverage.reportsDirectory=/tmp/coverage
FROM scratch AS test-coverage
COPY --from=test /tmp/coverage /
FROM base AS publish
ARG GITHUB_REF
RUN --mount=type=bind,target=.,rw \
--mount=type=cache,target=/src/.yarn/cache \
--mount=type=cache,target=/src/node_modules \
--mount=type=secret,id=NODE_AUTH_TOKEN,env=NODE_AUTH_TOKEN <<EOT
set -e
if ! [[ $GITHUB_REF =~ ^refs/tags/v ]]; then
echo "GITHUB_REF is not a tag"
exit 1
fi
yarn install
yarn run build
npm config set //registry.npmjs.org/:_authToken $NODE_AUTH_TOKEN
npm version --no-git-tag-version ${GITHUB_REF#refs/tags/v}
npm publish --access public
# FIXME: Can't publish with yarn berry atm: https://github.com/changesets/changesets/pull/674
#yarn publish --no-git-tag-version --new-version ${GITHUB_REF#refs/tags/v}
EOT

View File

@@ -99,23 +99,6 @@ target "test-coverage" {
secret = ["id=GITHUB_TOKEN,env=GITHUB_TOKEN"]
}
# GITHUB_REF is the actual ref that triggers the workflow and used as version
# when a tag is pushed: https://docs.github.com/en/actions/learn-github-actions/environment-variables#default-environment-variables
variable "GITHUB_REF" {
default = ""
}
target "publish" {
inherits = ["_common"]
dockerfile = "dev.Dockerfile"
args = {
GITHUB_REF = GITHUB_REF
}
target = "publish"
output = ["type=cacheonly"]
secret = ["id=NODE_AUTH_TOKEN,env=NODE_AUTH_TOKEN"]
}
target "license-validate" {
inherits = ["_common"]
dockerfile = "./hack/dockerfiles/license.Dockerfile"

68
eslint.config.mjs Normal file
View File

@@ -0,0 +1,68 @@
/**
* Copyright 2025 actions-toolkit authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
import {defineConfig} from 'eslint/config';
import js from '@eslint/js';
import tseslint from '@typescript-eslint/eslint-plugin';
import vitest from '@vitest/eslint-plugin';
import globals from 'globals';
import eslintConfigPrettier from 'eslint-config-prettier/flat';
import eslintPluginPrettier from 'eslint-plugin-prettier';
export default defineConfig([
{
ignores: ['.yarn/**/*', 'coverage/**/*', 'lib/**/*']
},
js.configs.recommended,
...tseslint.configs['flat/recommended'],
eslintConfigPrettier,
{
languageOptions: {
globals: {
...globals.node
}
}
},
{
files: ['__tests__/**'],
...vitest.configs.recommended,
languageOptions: {
globals: {
...globals.node,
...vitest.environments.env.globals
}
},
rules: {
...vitest.configs.recommended.rules,
'vitest/no-conditional-expect': 'error',
'vitest/no-disabled-tests': 0
}
},
{
plugins: {
prettier: eslintPluginPrettier
},
rules: {
'prettier/prettier': 'error',
'@typescript-eslint/no-require-imports': [
'error',
{
allowAsImport: true
}
]
}
}
]);

View File

@@ -14,14 +14,14 @@
# See the License for the specific language governing permissions and
# limitations under the License.
ARG ADDLICENSE_VERSION="v1.1.1"
ARG ALPINE_VERSION="3.21"
ARG GO_VERSION="1.23"
ARG XX_VERSION="1.6.1"
ARG ADDLICENSE_VERSION="v1.2.0"
ARG ALPINE_VERSION="3.23"
ARG GO_VERSION="1.26"
ARG XX_VERSION="1.9.0"
ARG LICENSE_HOLDER="actions-toolkit authors"
ARG LICENSE_TYPE="apache"
ARG LICENSE_FILES=".*\(Dockerfile\|Makefile\|\.js\|\.ts\|\.hcl\|\.sh|\.ps1\)"
ARG LICENSE_FILES=".*\(Dockerfile\|Makefile\|\.js\|\.cjs\|\.mjs\|\.ts\|\.hcl\|\.sh|\.ps1\)"
FROM --platform=$BUILDPLATFORM tonistiigi/xx:${XX_VERSION} AS xx
@@ -52,9 +52,9 @@ ARG LICENSE_TYPE
ARG LICENSE_FILES
RUN --mount=type=bind,target=.,rw \
--mount=from=addlicense,source=/out/addlicense,target=/usr/bin/addlicense \
find . -regex "${LICENSE_FILES}" -not -path "./.yarn/*" -not -path "./node_modules/*" | xargs addlicense -c "$LICENSE_HOLDER" -l "$LICENSE_TYPE" && \
find . -regex "${LICENSE_FILES}" -not -path "./.yarn/*" -not -path "./lib/*" -not -path "./node_modules/*" | xargs addlicense -c "$LICENSE_HOLDER" -l "$LICENSE_TYPE" && \
mkdir /out && \
find . -regex "${LICENSE_FILES}" -not -path "./.yarn/*" -not -path "./node_modules/*" | cpio -pdm /out
find . -regex "${LICENSE_FILES}" -not -path "./.yarn/*" -not -path "./lib/*" -not -path "./node_modules/*" | cpio -pdm /out
FROM scratch AS update
COPY --from=set /out /
@@ -65,4 +65,4 @@ ARG LICENSE_TYPE
ARG LICENSE_FILES
RUN --mount=type=bind,target=. \
--mount=from=addlicense,source=/out/addlicense,target=/usr/bin/addlicense \
find . -regex "${LICENSE_FILES}" -not -path "./.yarn/*" -not -path "./node_modules/*" | xargs addlicense -check -c "$LICENSE_HOLDER" -l "$LICENSE_TYPE"
find . -regex "${LICENSE_FILES}" -not -path "./.yarn/*" -not -path "./lib/*" -not -path "./node_modules/*" | xargs addlicense -check -c "$LICENSE_HOLDER" -l "$LICENSE_TYPE"

View File

@@ -1,51 +0,0 @@
/**
* Copyright 2023 actions-toolkit authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
import fs from 'fs';
import os from 'os';
import path from 'path';
const tmpDir = fs.mkdtempSync(path.join(os.tmpdir(), 'docker-actions-toolkit-'));
process.env = Object.assign({}, process.env, {
TEMP: tmpDir,
GITHUB_REPOSITORY: 'docker/actions-toolkit',
GITHUB_RUN_ATTEMPT: 2,
GITHUB_RUN_ID: 2188748038,
GITHUB_RUN_NUMBER: 15,
RUNNER_TEMP: path.join(tmpDir, 'runner-temp'),
RUNNER_TOOL_CACHE: path.join(tmpDir, 'runner-tool-cache')
}) as {
[key: string]: string;
};
module.exports = {
clearMocks: true,
testEnvironment: 'node',
moduleFileExtensions: ['js', 'ts'],
setupFiles: ['dotenv/config'],
testMatch: ['**/*.test.ts'],
transform: {
'^.+\\.ts$': 'ts-jest'
},
moduleNameMapper: {
'^csv-parse/sync': '<rootDir>/node_modules/csv-parse/dist/cjs/sync.cjs'
},
collectCoverageFrom: ['src/**/{!(index.ts),}.ts'],
coveragePathIgnorePatterns: ['lib/', 'node_modules/', '__mocks__/', '__tests__/'],
testResultsProcessor: './__tests__/testResultsProcessor.ts',
verbose: true
};

View File

@@ -2,19 +2,16 @@
"name": "@docker/actions-toolkit",
"version": "0.0.0+unknown",
"description": "Toolkit for Docker (GitHub) Actions",
"type": "module",
"scripts": {
"build": "tsc",
"lint": "yarn run prettier && yarn run eslint",
"format": "yarn run prettier:fix && yarn run eslint:fix",
"eslint": "eslint --max-warnings=0 .",
"eslint:fix": "eslint --fix .",
"prettier": "prettier --check \"./**/*.ts\"",
"prettier:fix": "prettier --write \"./**/*.ts\"",
"test": "jest",
"test:coverage": "jest --coverage",
"test:itg": "jest -c jest.config.itg.ts --runInBand --detectOpenHandles",
"test:itg-list": "jest -c jest.config.itg.ts --listTests",
"test:itg-coverage": "jest --coverage -c jest.config.itg.ts --runInBand --detectOpenHandles"
"lint": "eslint --max-warnings=0 .",
"format": "eslint --fix .",
"test": "vitest run -c vitest.config.ts",
"test:coverage": "vitest run -c vitest.config.ts --coverage",
"test:itg": "vitest run -c vitest.config.itg.ts --maxWorkers=1",
"test:itg-list": "node ./__tests__/.setup/list-itg-tests.mjs",
"test:itg-coverage": "vitest run -c vitest.config.itg.ts --coverage --maxWorkers=1"
},
"repository": {
"type": "git",
@@ -45,52 +42,49 @@
"registry": "https://registry.npmjs.org/"
},
"dependencies": {
"@actions/artifact": "^4.0.0",
"@actions/cache": "^4.1.0",
"@actions/core": "^1.11.1",
"@actions/exec": "^1.1.1",
"@actions/github": "^6.0.1",
"@actions/http-client": "^3.0.0",
"@actions/io": "^2.0.0",
"@actions/tool-cache": "^2.0.2",
"@azure/storage-blob": "^12.15.0",
"@octokit/core": "^5.2.2",
"@octokit/plugin-rest-endpoint-methods": "^10.4.1",
"@actions/artifact": "^6.2.1",
"@actions/cache": "^6.0.0",
"@actions/core": "^3.0.1",
"@actions/exec": "^3.0.0",
"@actions/github": "^9.1.1",
"@actions/http-client": "^4.0.1",
"@actions/io": "^3.0.2",
"@actions/tool-cache": "^4.0.0",
"@sigstore/bundle": "^4.0.0",
"@sigstore/sign": "^4.0.1",
"@sigstore/sign": "^4.1.1",
"@sigstore/tuf": "^4.0.2",
"@sigstore/verify": "^3.1.0",
"async-retry": "^1.3.3",
"csv-parse": "^6.1.0",
"csv-parse": "^6.2.1",
"gunzip-maybe": "^1.4.2",
"handlebars": "^4.7.8",
"handlebars": "^4.7.9",
"he": "^1.2.0",
"js-yaml": "^4.1.1",
"jwt-decode": "^4.0.0",
"semver": "^7.7.3",
"semver": "^7.7.4",
"tar-stream": "^3.1.7",
"tmp": "^0.2.5"
},
"devDependencies": {
"@sigstore/rekor-types": "^3.0.0",
"@types/gunzip-maybe": "^1.4.2",
"@eslint/js": "^9.39.3",
"@types/gunzip-maybe": "^1.4.3",
"@types/he": "^1.2.3",
"@types/js-yaml": "^4.0.9",
"@types/node": "^20.19.9",
"@types/node": "^24.11.0",
"@types/semver": "^7.7.1",
"@types/tar-stream": "^3.1.4",
"@types/tmp": "^0.2.6",
"@typescript-eslint/eslint-plugin": "^7.18.0",
"@typescript-eslint/parser": "^7.18.0",
"dotenv": "^17.2.1",
"eslint": "^8.57.1",
"eslint-config-prettier": "^9.1.2",
"eslint-plugin-import": "^2.32.0",
"eslint-plugin-jest": "^28.14.0",
"eslint-plugin-prettier": "^5.5.3",
"jest": "^29.7.0",
"prettier": "^3.6.2",
"rimraf": "^6.0.1",
"ts-jest": "^29.4.1",
"ts-node": "^10.9.2",
"typescript": "^5.9.2"
"@typescript-eslint/eslint-plugin": "^8.56.1",
"@typescript-eslint/parser": "^8.56.1",
"@vitest/coverage-v8": "^4.0.18",
"@vitest/eslint-plugin": "^1.6.9",
"eslint": "^9.39.3",
"eslint-config-prettier": "^10.1.8",
"eslint-plugin-prettier": "^5.5.5",
"globals": "^17.3.0",
"prettier": "^3.8.1",
"rimraf": "^6.1.3",
"typescript": "^5.9.3",
"vitest": "^4.0.18"
}
}

View File

@@ -17,12 +17,12 @@
import * as core from '@actions/core';
import * as semver from 'semver';
import {Buildx} from '../buildx/buildx';
import {Builder} from '../buildx/builder';
import {Docker} from '../docker/docker';
import {Config} from './config';
import {Buildx} from '../buildx/buildx.js';
import {Builder} from '../buildx/builder.js';
import {Docker} from '../docker/docker.js';
import {Config} from './config.js';
import {BuilderInfo, NodeInfo} from '../types/buildx/builder';
import {BuilderInfo, NodeInfo} from '../types/buildx/builder.js';
export interface BuildKitOpts {
buildx?: Buildx;
@@ -85,7 +85,7 @@ export class BuildKit {
if (!bkversion) {
try {
bkversion = await this.getVersionWithinImage(node.name || '');
} catch (e) {
} catch {
core.debug(`BuildKit.versionSatisfies ${node.name}: can't get version`);
return false;
}

View File

@@ -16,7 +16,7 @@
import fs from 'fs';
import {Context} from '../context';
import {Context} from '../context.js';
export class Config {
public resolveFromString(s: string): string {

View File

@@ -14,7 +14,7 @@
* limitations under the License.
*/
import {GitRef, GitURL, GitURLFragment, URLUserInfo} from '../types/buildkit/git';
import {GitRef, GitURL, GitURLFragment, URLUserInfo} from '../types/buildkit/git.js';
export class Git {
private static protoRegexp = new RegExp('^[a-zA-Z0-9]+://');

View File

@@ -18,15 +18,15 @@ import fs from 'fs';
import path from 'path';
import {parse} from 'csv-parse/sync';
import {Buildx} from './buildx';
import {Context} from '../context';
import {Exec} from '../exec';
import {Util} from '../util';
import {Buildx} from './buildx.js';
import {Context} from '../context.js';
import {Exec} from '../exec.js';
import {Util} from '../util.js';
import {ExecOptions} from '@actions/exec';
import {AttestEntry, BakeDefinition, CacheEntry, ExportEntry, SecretEntry, SSHEntry} from '../types/buildx/bake';
import {BuildMetadata} from '../types/buildx/build';
import {VertexWarning} from '../types/buildkit/client';
import {AttestEntry, BakeDefinition, CacheEntry, ExportEntry, SecretEntry, SSHEntry} from '../types/buildx/bake.js';
import {BuildMetadata} from '../types/buildx/build.js';
import {VertexWarning} from '../types/buildkit/client.js';
export interface BakeOpts {
buildx?: Buildx;
@@ -44,6 +44,7 @@ export interface BakeCmdOpts {
sbom?: string;
source?: string;
targets?: Array<string>;
vars?: Array<string>;
githubToken?: string; // for auth with remote definitions on private repos
}
@@ -105,13 +106,7 @@ export class Bake {
public async getDefinition(cmdOpts: BakeCmdOpts, execOptions?: ExecOptions): Promise<BakeDefinition> {
execOptions = execOptions || {ignoreReturnCode: true};
execOptions.ignoreReturnCode = true;
if (cmdOpts.githubToken) {
execOptions.env = Object.assign({}, process.env, {
BUILDX_BAKE_GIT_AUTH_TOKEN: cmdOpts.githubToken
}) as {
[key: string]: string;
};
}
execOptions.env = Object.assign({}, process.env, execOptions.env || {}, cmdOpts.githubToken ? {BUILDX_BAKE_GIT_AUTH_TOKEN: cmdOpts.githubToken} : {});
const args = ['bake'];
@@ -144,6 +139,11 @@ export class Bake {
args.push('--set', override);
}
}
if (cmdOpts.vars) {
for (const v of cmdOpts.vars) {
args.push('--var', v);
}
}
if (cmdOpts.allow) {
for (const allow of cmdOpts.allow) {
args.push('--allow', allow);

View File

@@ -17,16 +17,17 @@
import fs from 'fs';
import path from 'path';
import * as core from '@actions/core';
import * as github from '@actions/github';
import {parse} from 'csv-parse/sync';
import {Buildx} from './buildx';
import {Context} from '../context';
import {GitHub} from '../github';
import {Util} from '../util';
import {Buildx} from './buildx.js';
import {Context} from '../context.js';
import {GitHub} from '../github/github.js';
import {Util} from '../util.js';
import {BuildMetadata} from '../types/buildx/build';
import {VertexWarning} from '../types/buildkit/client';
import {ProvenancePredicate} from '../types/intoto/slsa_provenance/v0.2/provenance';
import {BuildMetadata, GitContextFormat} from '../types/buildx/build.js';
import {VertexWarning} from '../types/buildkit/client.js';
import {ProvenancePredicate} from '../types/intoto/slsa_provenance/v0.2/provenance.js';
export interface BuildOpts {
buildx?: Buildx;
@@ -37,6 +38,14 @@ export interface ResolveSecretsOpts {
redact?: boolean;
}
export interface GitContextOpts {
ref?: string;
checksum?: string;
subdir?: string;
attrs?: Record<string, string>;
format?: GitContextFormat;
}
export class Build {
private readonly buildx: Buildx;
private readonly iidFilename: string;
@@ -48,6 +57,69 @@ export class Build {
this.metadataFilename = `build-metadata-${Util.generateRandomString()}.json`;
}
public async gitContext(opts?: GitContextOpts): Promise<string> {
const gitContextCommonAttrs = new Set(['ref', 'checksum', 'subdir']);
const commonAttrs = opts?.attrs || {};
const extraAttrs = Object.entries(commonAttrs).filter(([name]) => !gitContextCommonAttrs.has(name));
let ref = opts?.ref || commonAttrs.ref || github.context.ref;
if (!ref.startsWith('refs/')) {
ref = `refs/heads/${ref}`;
} else if (ref.startsWith(`refs/pull/`) && Util.parseBoolOrDefault(process.env.DOCKER_DEFAULT_GIT_CONTEXT_PR_HEAD_REF)) {
ref = ref.replace(/\/merge$/g, '/head');
}
const inputChecksum = opts?.checksum || commonAttrs.checksum;
const inputSubdir = opts?.subdir || commonAttrs.subdir;
const checksum = inputChecksum || (ref.startsWith(`refs/pull/`) ? undefined : github.context.sha);
// BuildKit resolves PR refs remotely at build time, so mutable refs like
// refs/pull/*/{merge,head} can drift away from the event SHA. actions/checkout
// avoids that by fetching the exact commit into a local PR ref; here we do the
// equivalent for implicit PR contexts by rewriting them to the event's commit SHA.
if (!inputChecksum && ref.startsWith(`refs/pull/`)) {
if (ref.endsWith('/merge')) {
ref = github.context.sha;
} else if (ref.endsWith('/head') && typeof github.context.payload.pull_request?.head?.sha === 'string') {
ref = github.context.payload.pull_request.head.sha;
}
}
const baseURL = `${GitHub.serverURL}/${github.context.repo.owner}/${github.context.repo.repo}.git`;
let format = opts?.format;
if (!format) {
format = 'fragment';
if (extraAttrs.length > 0) {
format = 'query';
} else if (Util.parseBoolOrDefault(process.env.BUILDX_SEND_GIT_QUERY_AS_INPUT)) {
try {
if (await this.buildx.versionSatisfies('>=0.29.0')) {
format = 'query';
}
} catch {
// keep fragment fallback when Buildx version cannot be determined.
}
}
}
if (format === 'query') {
const query = [`ref=${ref}`];
if (checksum) {
query.push(`checksum=${checksum}`);
}
if (inputSubdir && inputSubdir !== '.') {
query.push(`subdir=${inputSubdir}`);
}
for (const [name, value] of extraAttrs) {
query.push(`${name}=${value}`);
}
return `${baseURL}?${query.join('&')}`;
}
const fragmentRef = inputChecksum && ref.startsWith(`refs/pull/`) ? ref : (checksum ?? ref);
return `${baseURL}#${fragmentRef}${inputSubdir && inputSubdir !== '.' ? `:${inputSubdir}` : ''}`;
}
public getImageIDFilePath(): string {
return path.join(Context.tmpDir(), this.iidFilename);
}
@@ -149,15 +221,14 @@ export class Build {
public static resolveSecret(kvp: string, opts?: ResolveSecretsOpts): [string, string] {
const [key, value] = Build.parseSecretKvp(kvp, opts?.redact);
const secretFile = Context.tmpName({tmpdir: Context.tmpDir()});
if (opts?.asFile) {
if (!fs.existsSync(value)) {
throw new Error(`secret file ${value} not found`);
}
fs.copyFileSync(value, secretFile);
} else {
fs.writeFileSync(secretFile, value);
return [key, value];
}
const secretFile = Context.tmpName({tmpdir: Context.tmpDir()});
fs.writeFileSync(secretFile, value);
return [key, secretFile];
}
@@ -169,7 +240,7 @@ export class Build {
}
try {
return core.getBooleanInput(name) ? `builder-id=${GitHub.workflowRunURL(true)}` : 'false';
} catch (err) {
} catch {
// not a valid boolean, so we assume it's a string
return Build.resolveProvenanceAttrs(input);
}
@@ -302,7 +373,7 @@ export class Build {
// https://github.com/docker/buildx/blob/8abef5908705e49f7ba88ef8c957e1127b597a2a/util/buildflags/attests.go#L13-L21
const v = Util.parseBool(attr);
res.push(`disabled=${!v}`);
} catch (err) {
} catch {
res.push(attr);
}
}
@@ -310,9 +381,11 @@ export class Build {
return res.join(',');
}
public static hasGitAuthTokenSecret(secrets: string[]): boolean {
public static hasGitAuthTokenSecret(secrets: string[], domain?: string): boolean {
for (const secret of secrets) {
if (secret.startsWith('GIT_AUTH_TOKEN=')) {
if (domain && secret.startsWith(`GIT_AUTH_TOKEN.${domain}=`)) {
return true;
} else if (secret.startsWith('GIT_AUTH_TOKEN=')) {
return true;
}
}

View File

@@ -16,10 +16,10 @@
import * as core from '@actions/core';
import {Buildx} from './buildx';
import {Exec} from '../exec';
import {Buildx} from './buildx.js';
import {Exec} from '../exec.js';
import {BuilderInfo, Device, GCPolicy, NodeInfo} from '../types/buildx/builder';
import {BuilderInfo, Device, GCPolicy, NodeInfo} from '../types/buildx/builder.js';
export interface BuilderOpts {
buildx?: Buildx;

View File

@@ -19,16 +19,16 @@ import path from 'path';
import * as core from '@actions/core';
import * as semver from 'semver';
import {Git} from '../buildkit/git';
import {Docker} from '../docker/docker';
import {GitHub} from '../github';
import {Exec} from '../exec';
import {Util} from '../util';
import {Git} from '../buildkit/git.js';
import {Docker} from '../docker/docker.js';
import {GitHub} from '../github/github.js';
import {Exec} from '../exec.js';
import {Util} from '../util.js';
import {VertexWarning} from '../types/buildkit/client';
import {GitURL} from '../types/buildkit/git';
import {Cert, LocalRefsOpts, LocalRefsResponse, LocalState} from '../types/buildx/buildx';
import {GitHubAnnotation} from '../types/github';
import {VertexWarning} from '../types/buildkit/client.js';
import {GitURL} from '../types/buildkit/git.js';
import {Cert, LocalRefsOpts, LocalRefsResponse, LocalState} from '../types/buildx/buildx.js';
import {GitHubAnnotation} from '../types/github/github.js';
export interface BuildxOpts {
standalone?: boolean;
@@ -148,7 +148,7 @@ export class Buildx {
let url: URL;
try {
url = new URL(endpoint);
} catch (e) {
} catch {
return [];
}
if (url.protocol != 'tcp:') {
@@ -280,7 +280,7 @@ export class Buildx {
const fnGitURL = function (inp: string): GitURL | undefined {
try {
return Git.parseURL(inp);
} catch (e) {
} catch {
// noop
}
};

View File

@@ -14,21 +14,17 @@
* limitations under the License.
*/
import {ChildProcessByStdio, spawn} from 'child_process';
import fs from 'fs';
import os from 'os';
import path from 'path';
import {Readable, Writable} from 'stream';
import * as core from '@actions/core';
import {Buildx} from './buildx';
import {Context} from '../context';
import {Docker} from '../docker/docker';
import {Exec} from '../exec';
import {GitHub} from '../github';
import {Util} from '../util';
import {Buildx} from './buildx.js';
import {Context} from '../context.js';
import {Exec} from '../exec.js';
import {GitHub} from '../github/github.js';
import {Util} from '../util.js';
import {ExportOpts, ExportResponse, InspectOpts, InspectResponse, Summaries} from '../types/buildx/history';
import {ExportOpts, ExportResponse, InspectOpts, InspectResponse, Summaries} from '../types/buildx/history.js';
export interface HistoryOpts {
buildx?: Buildx;
@@ -74,6 +70,10 @@ export class History {
}
public async export(opts: ExportOpts): Promise<ExportResponse> {
if (!(await this.buildx.versionSatisfies('>=0.23.0'))) {
throw new Error('Buildx >= 0.23.0 is required to export a build record');
}
let builderName: string = '';
let nodeName: string = '';
const refs: Array<string> = [];
@@ -101,10 +101,6 @@ export class History {
core.info(`exporting build record to ${outDir}`);
fs.mkdirSync(outDir, {recursive: true});
if (opts.useContainer || (await this.buildx.versionSatisfies('<0.23.0'))) {
return await this.exportLegacy(builderName, nodeName, refs, outDir, opts.image);
}
if (await this.buildx.versionSatisfies('<0.24.0')) {
// wait 3 seconds to ensure build records are finalized: https://github.com/moby/buildkit/pull/5109
// not necessary since buildx 0.24.0: https://github.com/docker/buildx/pull/3152
@@ -162,143 +158,6 @@ export class History {
};
}
private async exportLegacy(builderName: string, nodeName: string, refs: Array<string>, outDir: string, image?: string): Promise<ExportResponse> {
if (os.platform() === 'win32') {
throw new Error('Exporting a build record is currently not supported on Windows');
}
if (!(await Docker.isAvailable())) {
throw new Error('Docker is required to export a build record');
}
if (!(await Docker.isDaemonRunning())) {
throw new Error('Docker daemon needs to be running to export a build record');
}
if (!(await this.buildx.versionSatisfies('>=0.13.0'))) {
throw new Error('Buildx >= 0.13.0 is required to export a build record');
}
// wait 3 seconds to ensure build records are finalized: https://github.com/moby/buildkit/pull/5109
await Util.sleep(3);
const buildxInFifoPath = Context.tmpName({
template: 'buildx-in-XXXXXX.fifo',
tmpdir: Context.tmpDir()
});
await Exec.exec('mkfifo', [buildxInFifoPath]);
const buildxOutFifoPath = Context.tmpName({
template: 'buildx-out-XXXXXX.fifo',
tmpdir: Context.tmpDir()
});
await Exec.exec('mkfifo', [buildxOutFifoPath]);
const buildxDialStdioCmd = await this.buildx.getCommand(['--builder', builderName, 'dial-stdio']);
core.info(`[command]${buildxDialStdioCmd.command} ${buildxDialStdioCmd.args.join(' ')}`);
const buildxDialStdioProc = spawn(buildxDialStdioCmd.command, buildxDialStdioCmd.args, {
stdio: ['pipe', 'pipe', 'inherit'],
detached: true
});
let buildxDialStdioKilled = false;
fs.createReadStream(buildxInFifoPath).pipe(buildxDialStdioProc.stdin);
buildxDialStdioProc.stdout.pipe(fs.createWriteStream(buildxOutFifoPath));
buildxDialStdioProc.on('exit', (code, signal) => {
buildxDialStdioKilled = true;
if (signal) {
core.info(`Process "buildx dial-stdio" was killed with signal ${signal}`);
} else {
core.info(`Process "buildx dial-stdio" exited with code ${code}`);
}
});
const tmpDockerbuildFilename = path.join(outDir, 'rec.dockerbuild');
const summaryFilename = path.join(outDir, 'summary.json');
let dockerRunProc: ChildProcessByStdio<Writable, Readable, null> | undefined;
let dockerRunProcKilled = false;
await new Promise<void>((resolve, reject) => {
const ebargs: Array<string> = ['--ref-state-dir=/buildx-refs', `--node=${builderName}/${nodeName}`];
for (const ref of refs) {
ebargs.push(`--ref=${ref}`);
}
if (typeof process.getuid === 'function') {
ebargs.push(`--uid=${process.getuid()}`);
}
if (typeof process.getgid === 'function') {
ebargs.push(`--gid=${process.getgid()}`);
}
// prettier-ignore
const dockerRunArgs = [
'run', '--rm', '-i',
'-v', `${Buildx.refsDir}:/buildx-refs`,
'-v', `${outDir}:/out`,
image || process.env['DOCKER_BUILD_EXPORT_BUILD_IMAGE'] || 'docker.io/dockereng/export-build:latest',
...ebargs
]
core.info(`[command]docker ${dockerRunArgs.join(' ')}`);
dockerRunProc = spawn('docker', dockerRunArgs, {
stdio: ['pipe', 'pipe', 'inherit'],
env: {
...process.env,
DOCKER_CONTENT_TRUST: 'false'
}
});
fs.createReadStream(buildxOutFifoPath).pipe(dockerRunProc.stdin);
dockerRunProc.stdout.pipe(fs.createWriteStream(buildxInFifoPath));
dockerRunProc.on('close', code => {
if (code === 0) {
if (!fs.existsSync(tmpDockerbuildFilename)) {
reject(new Error(`Failed to export build record: ${tmpDockerbuildFilename} not found`));
} else {
resolve();
}
} else {
reject(new Error(`Process "docker run" closed with code ${code}`));
}
});
dockerRunProc.on('error', err => {
core.error(`Error executing "docker run": ${err}`);
reject(err);
});
dockerRunProc.on('exit', (code, signal) => {
dockerRunProcKilled = true;
if (signal) {
core.info(`Process "docker run" was killed with signal ${signal}`);
} else {
core.info(`Process "docker run" exited with code ${code}`);
}
});
})
.catch(err => {
throw err;
})
.finally(() => {
if (buildxDialStdioProc && !buildxDialStdioKilled) {
core.debug('Force terminating "buildx dial-stdio" process');
buildxDialStdioProc.kill('SIGKILL');
}
if (dockerRunProc && !dockerRunProcKilled) {
core.debug('Force terminating "docker run" process');
dockerRunProc.kill('SIGKILL');
}
});
const dockerbuildPath = path.join(outDir, `${History.exportFilename(refs)}.dockerbuild`);
fs.renameSync(tmpDockerbuildFilename, dockerbuildPath);
const dockerbuildStats = fs.statSync(dockerbuildPath);
core.info(`Parsing ${summaryFilename}`);
fs.statSync(summaryFilename);
const summaries = <Summaries>JSON.parse(fs.readFileSync(summaryFilename, {encoding: 'utf-8'}));
return {
dockerbuildFilename: dockerbuildPath,
dockerbuildSize: dockerbuildStats.size,
builderName: builderName,
nodeName: nodeName,
refs: refs,
summaries: summaries
};
}
private static exportFilename(refs: Array<string>): string {
let name = `${GitHub.context.repo.owner}~${GitHub.context.repo.repo}~${refs[0].substring(0, 6).toUpperCase()}`;
if (refs.length > 1) {

View File

@@ -14,13 +14,17 @@
* limitations under the License.
*/
import {Buildx} from './buildx';
import {Exec} from '../exec';
import fs from 'fs';
import * as core from '@actions/core';
import {Manifest as ImageToolsManifest} from '../types/buildx/imagetools';
import {Image} from '../types/oci/config';
import {Descriptor} from '../types/oci/descriptor';
import {Digest} from '../types/oci/digest';
import {Buildx} from './buildx.js';
import {Context} from '../context.js';
import {Exec} from '../exec.js';
import {AttestationInspectOpts, CreateOpts, CreateResponse, CreateResult, InspectOpts, Manifest as ImageToolsManifest} from '../types/buildx/imagetools.js';
import {Image} from '../types/oci/config.js';
import {Descriptor} from '../types/oci/descriptor.js';
import {Digest} from '../types/oci/digest.js';
export interface ImageToolsOpts {
buildx?: Buildx;
@@ -41,16 +45,12 @@ export class ImageTools {
return await this.getCommand(['inspect', ...args]);
}
public async inspectImage(name: string): Promise<Record<string, Image> | Image> {
const cmd = await this.getInspectCommand([name, '--format', '{{json .Image}}']);
return await Exec.getExecOutput(cmd.command, cmd.args, {
ignoreReturnCode: true,
silent: true
}).then(res => {
if (res.stderr.length > 0 && res.exitCode != 0) {
throw new Error(res.stderr.trim());
}
const parsedOutput = JSON.parse(res.stdout);
public async getCreateCommand(args: Array<string>) {
return await this.getCommand(['create', ...args]);
}
public async inspectImage(opts: InspectOpts): Promise<Record<string, Image> | Image> {
return await this.inspect(opts, '{{json .Image}}', parsedOutput => {
if (typeof parsedOutput === 'object' && !Array.isArray(parsedOutput) && parsedOutput !== null) {
if (Object.prototype.hasOwnProperty.call(parsedOutput, 'config')) {
return <Image>parsedOutput;
@@ -62,16 +62,8 @@ export class ImageTools {
});
}
public async inspectManifest(name: string): Promise<ImageToolsManifest | Descriptor> {
const cmd = await this.getInspectCommand([name, '--format', '{{json .Manifest}}']);
return await Exec.getExecOutput(cmd.command, cmd.args, {
ignoreReturnCode: true,
silent: true
}).then(res => {
if (res.stderr.length > 0 && res.exitCode != 0) {
throw new Error(res.stderr.trim());
}
const parsedOutput = JSON.parse(res.stdout);
public async inspectManifest(opts: InspectOpts): Promise<ImageToolsManifest | Descriptor> {
return await this.inspect(opts, '{{json .Manifest}}', parsedOutput => {
if (typeof parsedOutput === 'object' && !Array.isArray(parsedOutput) && parsedOutput !== null) {
if (Object.prototype.hasOwnProperty.call(parsedOutput, 'manifests')) {
return <ImageToolsManifest>parsedOutput;
@@ -83,15 +75,159 @@ export class ImageTools {
});
}
public async attestationDescriptors(name: string): Promise<Array<Descriptor>> {
const manifest = await this.inspectManifest(name);
if (typeof manifest === 'object' && manifest !== null && 'manifests' in manifest && Array.isArray(manifest.manifests)) {
return manifest.manifests.filter(m => m.annotations && m.annotations['vnd.docker.reference.type'] === 'attestation-manifest');
public async attestationDescriptors(opts: AttestationInspectOpts): Promise<Array<Descriptor>> {
const manifest = await this.inspectManifest(opts);
if (typeof manifest !== 'object' || manifest === null || !('manifests' in manifest) || !Array.isArray(manifest.manifests)) {
throw new Error(`No descriptor found for ${opts.name}`);
}
throw new Error(`No attestation descriptors found for ${name}`);
const attestations = manifest.manifests.filter(m => m.annotations?.['vnd.docker.reference.type'] === 'attestation-manifest');
if (!opts.platform) {
return attestations;
}
const platform = opts.platform;
const manifestByDigest = new Map<string, Descriptor>();
for (const m of manifest.manifests) {
if (m.digest) {
manifestByDigest.set(m.digest, m);
}
}
return attestations.filter(attestation => {
const refDigest = attestation.annotations?.['vnd.docker.reference.digest'];
if (!refDigest) {
return false;
}
const referencedManifest = manifestByDigest.get(refDigest);
if (!referencedManifest) {
return false;
}
return referencedManifest.platform?.os === platform.os && referencedManifest.platform?.architecture === platform.architecture && (referencedManifest.platform?.variant ?? '') === (platform.variant ?? '');
});
}
public async attestationDigests(name: string): Promise<Array<Digest>> {
return (await this.attestationDescriptors(name)).map(attestation => attestation.digest);
public async attestationDigests(opts: AttestationInspectOpts): Promise<Array<Digest>> {
return (await this.attestationDescriptors(opts)).map(attestation => attestation.digest);
}
public async create(opts: CreateOpts): Promise<CreateResult | undefined> {
const args: Array<string> = [];
const metadataFile = Context.tmpName({tmpdir: Context.tmpDir(), template: 'imagetools-metadata-XXXXXX'});
const fileSources: Array<string> = [];
const sources: Array<string> = [];
for (const source of opts.sources) {
if (source.startsWith('cwd://')) {
const fileSource = source.substring('cwd://'.length);
if (fileSource.length > 0) {
fileSources.push(fileSource);
}
continue;
}
sources.push(source);
}
if (opts.tags) {
for (const tag of opts.tags) {
args.push('--tag', tag);
}
}
if (opts.platforms) {
for (const platform of opts.platforms) {
args.push('--platform', platform);
}
}
if (opts.annotations) {
for (const annotation of opts.annotations) {
args.push('--annotation', annotation);
}
}
if (opts.dryRun) {
args.push('--dry-run');
} else {
args.push('--metadata-file', metadataFile);
}
for (const fileSource of fileSources) {
args.push('--file', fileSource);
}
for (const source of sources) {
args.push(source);
}
const cmd = await this.getCreateCommand(args);
if (opts.skipExec) {
core.info(`[command]${cmd.command} ${cmd.args.join(' ')}`);
core.info(`Skipped create command`);
return undefined;
}
return await Exec.getExecOutput(cmd.command, cmd.args, {
ignoreReturnCode: true,
silent: opts.silent
}).then(res => {
if (res.stderr.length > 0 && res.exitCode != 0) {
throw new Error(res.stderr.trim());
}
if (!opts.dryRun) {
if (!fs.existsSync(metadataFile)) {
return undefined;
}
const dt = fs.readFileSync(metadataFile, {encoding: 'utf-8'}).trim();
if (dt === '' || dt === 'null') {
return undefined;
}
const response = <CreateResponse>JSON.parse(dt);
const descriptor = response['containerimage.descriptor'];
if (!descriptor) {
return undefined;
}
return {
digest: response['containerimage.digest'] || descriptor.digest,
descriptor: descriptor,
imageNames: response['image.name'] ? response['image.name'].split(',').map(name => name.trim()) : []
};
}
});
}
private async inspect<T>(opts: InspectOpts, format: string, parser: (parsedOutput: unknown) => T): Promise<T> {
const cmd = await this.getInspectCommand([opts.name, '--format', format]);
if (!opts.retryOnManifestUnknown) {
return await this.execInspect(cmd.command, cmd.args, parser);
}
const retries = opts.retryLimit ?? 15;
let lastError: Error | undefined;
for (let attempt = 0; attempt < retries; attempt++) {
try {
return await this.execInspect(cmd.command, cmd.args, parser);
} catch (err) {
lastError = err as Error;
if (!ImageTools.isManifestUnknownError(lastError.message) || attempt === retries - 1) {
throw lastError;
}
core.info(`buildx imagetools inspect command failed with MANIFEST_UNKNOWN, retrying attempt ${attempt + 1}/${retries}...\n${lastError.message}`);
await new Promise(res => setTimeout(res, Math.pow(2, attempt) * 100));
}
}
throw lastError ?? new Error(`ImageTools inspect command failed for ${opts.name}`);
}
private async execInspect<T>(command: string, args: Array<string>, parser: (parsedOutput: unknown) => T): Promise<T> {
return await Exec.getExecOutput(command, args, {
ignoreReturnCode: true,
silent: true
}).then(res => {
if (res.stderr.length > 0 && res.exitCode != 0) {
throw new Error(res.stderr.trim());
}
return parser(JSON.parse(res.stdout));
});
}
private static isManifestUnknownError(message: string): boolean {
return /(MANIFEST_UNKNOWN|manifest unknown|not found: not found)/i.test(message);
}
}

View File

@@ -18,34 +18,48 @@ import fs from 'fs';
import os from 'os';
import path from 'path';
import * as core from '@actions/core';
import * as httpm from '@actions/http-client';
import * as tc from '@actions/tool-cache';
import * as semver from 'semver';
import * as util from 'util';
import {Buildx} from './buildx';
import {Cache} from '../cache';
import {Context} from '../context';
import {Exec} from '../exec';
import {Docker} from '../docker/docker';
import {Git} from '../git';
import {GitHub} from '../github';
import {Util} from '../util';
import {Buildx} from './buildx.js';
import {Cache} from '../cache.js';
import {Context} from '../context.js';
import {Exec} from '../exec.js';
import {Docker} from '../docker/docker.js';
import {Git} from '../git.js';
import {GitHub} from '../github/github.js';
import {Sigstore} from '../sigstore/sigstore.js';
import {Util} from '../util.js';
import {DownloadVersion} from '../types/buildx/buildx';
import {GitHubRelease} from '../types/github';
import {DownloadVersion} from '../types/buildx/buildx.js';
import {GitHubRelease} from '../types/github/github.js';
import {SEARCH_URL} from '../types/sigstore/sigstore.js';
export interface DownloadOpts {
version: string;
ghaNoCache?: boolean;
disableHtc?: boolean;
skipState?: boolean;
verifySignature?: boolean;
}
export interface InstallOpts {
standalone?: boolean;
githubToken?: string;
sigstore?: Sigstore;
}
export class Install {
private readonly standalone: boolean | undefined;
private readonly githubToken: string | undefined;
private readonly sigstore: Sigstore;
constructor(opts?: InstallOpts) {
this.standalone = opts?.standalone;
this.githubToken = opts?.githubToken || process.env.GITHUB_TOKEN;
this.sigstore = opts?.sigstore || new Sigstore();
}
/*
@@ -54,8 +68,8 @@ export class Install {
* @param ghaNoCache: disable binary caching in GitHub Actions cache backend
* @returns path to the buildx binary
*/
public async download(v: string, ghaNoCache?: boolean): Promise<string> {
const version: DownloadVersion = await Install.getDownloadVersion(v);
public async download(opts: DownloadOpts): Promise<string> {
const version: DownloadVersion = await Install.getDownloadVersion(opts.version);
core.debug(`Install.download version: ${version.version}`);
const release: GitHubRelease = await Install.getRelease(version, this.githubToken);
@@ -74,11 +88,11 @@ export class Install {
htcVersion: vspec,
baseCacheDir: path.join(Buildx.configDir, '.bin'),
cacheFile: os.platform() == 'win32' ? 'docker-buildx.exe' : 'docker-buildx',
ghaNoCache: ghaNoCache
ghaNoCache: opts.ghaNoCache
});
const cacheFoundPath = await installCache.find();
if (cacheFoundPath) {
if (!opts.disableHtc && cacheFoundPath) {
core.info(`Buildx binary found in ${cacheFoundPath}`);
return cacheFoundPath;
}
@@ -89,7 +103,11 @@ export class Install {
const htcDownloadPath = await tc.downloadTool(downloadURL, undefined, this.githubToken);
core.debug(`Install.download htcDownloadPath: ${htcDownloadPath}`);
const cacheSavePath = await installCache.save(htcDownloadPath);
if (opts.verifySignature && semver.satisfies(vspec, '>=0.31.0-0', {includePrerelease: true})) {
await this.verifySignature(htcDownloadPath, downloadURL);
}
const cacheSavePath = await installCache.save(htcDownloadPath, opts.skipState);
core.info(`Cached to ${cacheSavePath}`);
return cacheSavePath;
}
@@ -213,6 +231,31 @@ export class Install {
return standalone;
}
private async verifySignature(binPath: string, downloadURL: string): Promise<void> {
const bundleURL = `${downloadURL.replace(/\.exe$/, '')}.sigstore.json`;
core.info(`Downloading keyless verification bundle at ${bundleURL}`);
let bundlePath: string;
try {
bundlePath = await tc.downloadTool(bundleURL, undefined, this.githubToken);
core.debug(`Install.verifySignature bundlePath: ${bundlePath}`);
} catch (e) {
if (e.message && e.message.statusCode === httpm.HttpCodes.NotFound) {
core.info(`No signature bundle found at ${bundleURL}, skipping verification`);
return;
}
throw e;
}
const verifyResult = await this.sigstore.verifyArtifact(binPath, bundlePath, {
// TODO: add githubWorkflowRepository , runnerEnvironment and sourceRepositoryURI extensions when supported by sigstore module
subjectAlternativeName: /^https:\/\/github\.com\/docker\/(github-builder-experimental|github-builder)\/\.github\/workflows\/bake\.yml.*$/,
issuer: 'https://token.actions.githubusercontent.com'
});
core.info(`Buildx binary signature verified! ${verifyResult.tlogID ? `${SEARCH_URL}?logIndex=${verifyResult.tlogID}` : ''}`);
}
private filename(version: string): string {
let arch: string;
switch (os.arch()) {

View File

@@ -16,8 +16,8 @@
import * as core from '@actions/core';
import {Docker} from '../docker/docker';
import {Exec} from '../exec';
import {Docker} from '../docker/docker.js';
import {Exec} from '../exec.js';
export interface ComposeOpts {
standalone?: boolean;

View File

@@ -22,13 +22,13 @@ import * as tc from '@actions/tool-cache';
import * as semver from 'semver';
import * as util from 'util';
import {Cache} from '../cache';
import {Context} from '../context';
import {Docker} from '../docker/docker';
import {GitHub} from '../github';
import {Cache} from '../cache.js';
import {Context} from '../context.js';
import {Docker} from '../docker/docker.js';
import {GitHub} from '../github/github.js';
import {DownloadVersion} from '../types/compose/compose';
import {GitHubRelease} from '../types/github';
import {DownloadVersion} from '../types/compose/compose.js';
import {GitHubRelease} from '../types/github/github.js';
export interface InstallOpts {
standalone?: boolean;

View File

@@ -18,9 +18,6 @@ import fs from 'fs';
import os from 'os';
import path from 'path';
import * as tmp from 'tmp';
import * as github from '@actions/github';
import {GitHub} from './github';
export class Context {
private static readonly _tmpDir = fs.mkdtempSync(path.join(Context.ensureDirExists(process.env.RUNNER_TEMP || os.tmpdir()), 'docker-actions-toolkit-'));
@@ -37,25 +34,4 @@ export class Context {
public static tmpName(options?: tmp.TmpNameOptions): string {
return tmp.tmpNameSync(options);
}
public static gitRef(): string {
return Context.parseGitRef(github.context.ref, github.context.sha);
}
public static parseGitRef(ref: string, sha: string): string {
const setPullRequestHeadRef: boolean = !!(process.env.DOCKER_DEFAULT_GIT_CONTEXT_PR_HEAD_REF && process.env.DOCKER_DEFAULT_GIT_CONTEXT_PR_HEAD_REF === 'true');
if (sha && ref && !ref.startsWith('refs/')) {
ref = `refs/heads/${ref}`;
}
if (sha && !ref.startsWith(`refs/pull/`)) {
ref = sha;
} else if (ref.startsWith(`refs/pull/`) && setPullRequestHeadRef) {
ref = ref.replace(/\/merge$/g, '/head');
}
return ref;
}
public static gitContext(): string {
return `${GitHub.serverURL}/${github.context.repo.owner}/${github.context.repo.repo}.git#${Context.gitRef()}`;
}
}

Some files were not shown because too many files have changed in this diff Show More