Compare commits

..

545 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
CrazyMax
473d258161 Merge pull request #880 from crazy-max/pin-qemu
Some checks failed
publish / publish (push) Has been cancelled
docker(install): pin QEMU to 10.1.1
2025-12-02 15:00:51 +01:00
CrazyMax
8d87ba5a72 docker(install): pin QEMU to 10.1.1
Signed-off-by: CrazyMax <1951866+crazy-max@users.noreply.github.com>
2025-12-02 14:31:18 +01:00
CrazyMax
841fd33bb7 Merge pull request #878 from docker/bot/regclient-releases-json
Update `.github/regclient-releases.json`
2025-12-02 13:33:39 +01:00
CrazyMax
a3709540ed Merge pull request #877 from docker/bot/docker-releases-json
Update `.github/docker-releases.json`
2025-12-02 13:33:23 +01:00
CrazyMax
6371b3d325 Merge pull request #879 from docker/bot/compose-releases-json
Update `.github/compose-releases.json`
2025-12-02 13:33:06 +01:00
crazy-max
f8df53283c github: update .github/compose-releases.json
Signed-off-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2025-12-02 12:15:39 +00:00
crazy-max
f312d8d21e github: update .github/regclient-releases.json
Signed-off-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2025-12-02 00:12:17 +00:00
crazy-max
41a2ea0c9b github: update .github/docker-releases.json
Signed-off-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2025-11-29 00:32:08 +00:00
CrazyMax
d5209cea68 Merge pull request #876 from crazy-max/docker-install-disable-macos-tests
Some checks failed
publish / publish (push) Has been cancelled
test: disable docker install tests on macos
2025-11-27 11:25:49 +01:00
CrazyMax
4f0696b47c test: disable docker install tests on macos
Signed-off-by: CrazyMax <1951866+crazy-max@users.noreply.github.com>
2025-11-27 10:53:27 +01:00
CrazyMax
f0de40cffa Merge pull request #832 from docker/dependabot/npm_and_yarn/actions/io-2.0.0
build(deps): bump @actions/io from 1.1.3 to 2.0.0
2025-11-27 10:49:43 +01:00
CrazyMax
abec938c9b Merge pull request #875 from crazy-max/releases-without-token
releases: download releases JSON without token first
2025-11-27 10:49:00 +01:00
CrazyMax
1d22f02ce4 releases: download releases JSON without token first
Signed-off-by: CrazyMax <1951866+crazy-max@users.noreply.github.com>
2025-11-27 10:22:18 +01:00
dependabot[bot]
a5ead9a86c build(deps): bump @actions/io from 1.1.3 to 2.0.0
Bumps [@actions/io](https://github.com/actions/toolkit/tree/HEAD/packages/io) from 1.1.3 to 2.0.0.
- [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: 2.0.0
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-11-27 09:14:13 +00:00
CrazyMax
b42885d9a9 Merge pull request #831 from docker/dependabot/npm_and_yarn/actions/http-client-3.0.0
build(deps): bump @actions/http-client from 2.2.3 to 3.0.0
2025-11-27 10:12:10 +01:00
CrazyMax
8d01bf1bfc Merge pull request #856 from neilime/fix/git-ref-in-detached-head
fix(git): support getting ref in various detached HEAD contexts
2025-11-27 10:10:44 +01:00
CrazyMax
ccdd59f096 Merge pull request #874 from crazy-max/dependabot-pr-limit
chore: increase prs limit for dependabot
2025-11-27 10:06:42 +01:00
CrazyMax
949f09fa44 chore: increase prs limit for dependabot
Signed-off-by: CrazyMax <1951866+crazy-max@users.noreply.github.com>
2025-11-27 10:03:47 +01:00
CrazyMax
5f53738d84 Merge pull request #860 from docker/dependabot/npm_and_yarn/js-yaml-4.1.1
build(deps): bump js-yaml from 4.1.0 to 4.1.1
2025-11-27 09:59:58 +01:00
CrazyMax
a111fe1e61 Merge pull request #870 from docker/dependabot/github_actions/peter-evans/create-pull-request-7.0.9
build(deps): bump peter-evans/create-pull-request from 7.0.8 to 7.0.9
2025-11-27 09:59:22 +01:00
CrazyMax
ccfdc68a38 Merge pull request #873 from crazy-max/bake-attest-check
buildx(bake): funcs to check attest set in bake definition
2025-11-26 12:40:39 +01:00
CrazyMax
9c05197992 buildx(bake): funcs to check attest set in bake definition
Signed-off-by: CrazyMax <1951866+crazy-max@users.noreply.github.com>
2025-11-26 11:08:57 +01:00
CrazyMax
764a608ae0 Merge pull request #865 from docker/dependabot/github_actions/actions/checkout-6
build(deps): bump actions/checkout from 5 to 6
2025-11-25 15:49:58 +01:00
CrazyMax
be39e7c75a Merge pull request #871 from docker/bot/docker-releases-json
Update `.github/docker-releases.json`
2025-11-25 02:31:46 +01:00
crazy-max
81f1dd4f57 github: update .github/docker-releases.json
Signed-off-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2025-11-25 00:31:54 +00:00
dependabot[bot]
4634011afa build(deps): bump peter-evans/create-pull-request from 7.0.8 to 7.0.9
Bumps [peter-evans/create-pull-request](https://github.com/peter-evans/create-pull-request) from 7.0.8 to 7.0.9.
- [Release notes](https://github.com/peter-evans/create-pull-request/releases)
- [Commits](271a8d0340...84ae59a2cd)

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

Signed-off-by: dependabot[bot] <support@github.com>
2025-11-24 22:14:25 +00:00
CrazyMax
535c57eda3 Merge pull request #869 from docker/bot/buildx-lab-releases-json
Update `.github/buildx-lab-releases.json`
2025-11-24 15:24:41 +01:00
crazy-max
d57249b699 github: update .github/buildx-lab-releases.json
Signed-off-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2025-11-24 14:24:02 +00:00
CrazyMax
0bc914c6cd Merge pull request #866 from crazy-max/docker-install-fix
ci(test): allow failure for docker install on macos
2025-11-24 13:20:40 +01:00
CrazyMax
f636ea29ca Merge pull request #868 from docker/bot/docker-releases-json
Update `.github/docker-releases.json`
2025-11-24 13:20:26 +01:00
crazy-max
3fe3252d57 github: update .github/docker-releases.json
Signed-off-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2025-11-24 12:19:57 +00:00
CrazyMax
5e6eb921cf Merge pull request #867 from docker/bot/buildx-lab-releases-json
Update `.github/buildx-lab-releases.json`
2025-11-24 13:19:34 +01:00
crazy-max
ce5e865551 github: update .github/buildx-lab-releases.json
Signed-off-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2025-11-24 12:08:23 +00:00
CrazyMax
7736c355dc ci(test): allow failure for docker install on macos
Signed-off-by: CrazyMax <1951866+crazy-max@users.noreply.github.com>
2025-11-23 15:16:14 +01:00
dependabot[bot]
944ec75cf6 build(deps): bump actions/checkout from 5 to 6
Bumps [actions/checkout](https://github.com/actions/checkout) from 5 to 6.
- [Release notes](https://github.com/actions/checkout/releases)
- [Changelog](https://github.com/actions/checkout/blob/main/CHANGELOG.md)
- [Commits](https://github.com/actions/checkout/compare/v5...v6)

---
updated-dependencies:
- dependency-name: actions/checkout
  dependency-version: '6'
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-11-20 22:06:10 +00:00
CrazyMax
d727f06dc0 Merge pull request #864 from crazy-max/buildkit-0.26.2
update buildkit to 0.26.2 and buildx to 0.30.1
2025-11-20 16:35:48 +01:00
CrazyMax
3c4372146e update buildkit to 0.26.2 and buildx to 0.30.1
Signed-off-by: CrazyMax <1951866+crazy-max@users.noreply.github.com>
2025-11-20 14:18:28 +01:00
CrazyMax
d5be659121 Merge pull request #863 from docker/bot/docker-releases-json
Update `.github/docker-releases.json`
2025-11-18 09:13:23 +01:00
crazy-max
2f9b11c5ca github: update .github/docker-releases.json
Signed-off-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2025-11-18 00:32:53 +00:00
CrazyMax
93ca750952 Merge pull request #862 from docker/bot/buildx-releases-json
Update `.github/buildx-releases.json`
2025-11-17 19:04:28 +01:00
crazy-max
fbfc9b33af github: update .github/buildx-releases.json
Signed-off-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2025-11-17 18:03:39 +00:00
CrazyMax
bb9028cd44 Merge pull request #861 from docker/bot/docker-releases-json
Update `.github/docker-releases.json`
2025-11-15 09:26:56 +01:00
crazy-max
72fab21aba github: update .github/docker-releases.json
Signed-off-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2025-11-15 00:31:47 +00:00
Emilien Escalle
ad7ffdebbe fix(git): support getting ref in various detached HEAD contexts
Signed-off-by: Emilien Escalle <emilien.escalle@escemi.com>
2025-11-14 08:50:10 +01:00
dependabot[bot]
a9e04b410c build(deps): bump js-yaml from 4.1.0 to 4.1.1
Bumps [js-yaml](https://github.com/nodeca/js-yaml) from 4.1.0 to 4.1.1.
- [Changelog](https://github.com/nodeca/js-yaml/blob/master/CHANGELOG.md)
- [Commits](https://github.com/nodeca/js-yaml/compare/4.1.0...4.1.1)

---
updated-dependencies:
- dependency-name: js-yaml
  dependency-version: 4.1.1
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-11-13 22:06:20 +00:00
CrazyMax
747bc1653d Merge pull request #859 from docker/bot/compose-releases-json
Update `.github/compose-releases.json`
2025-11-13 13:16:15 +01:00
crazy-max
8dac860c22 github: update .github/compose-releases.json
Signed-off-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2025-11-13 12:14:37 +00:00
CrazyMax
074578feee Merge pull request #858 from docker/bot/compose-releases-json
Update `.github/compose-releases.json`
2025-11-13 08:46:52 +01:00
CrazyMax
22bb9492bf Merge pull request #857 from docker/bot/buildx-releases-json
Update `.github/buildx-releases.json`
2025-11-13 08:46:38 +01:00
crazy-max
5515e9705a github: update .github/compose-releases.json
Signed-off-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2025-11-13 00:35:35 +00:00
jsternberg
517e370b73 github: update .github/buildx-releases.json
Signed-off-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2025-11-12 22:05:49 +00:00
CrazyMax
4f8424eebb Merge pull request #854 from crazy-max/cosign-no-verbose
sigstore: remove verbose flag from persisted cosign args
2025-11-12 15:52:35 +01:00
CrazyMax
d018ed13d0 sigstore: remove verbose flag from persisted cosign args
Signed-off-by: CrazyMax <1951866+crazy-max@users.noreply.github.com>
2025-11-12 14:44:23 +01:00
CrazyMax
fd15fa02c0 Merge pull request #849 from docker/bot/regclient-releases-json
Update `.github/regclient-releases.json`
2025-11-12 11:22:56 +01:00
crazy-max
4eade91d5b github: update .github/regclient-releases.json
Signed-off-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2025-11-12 10:20:37 +00:00
CrazyMax
d235481ee7 Merge pull request #853 from docker/bot/buildx-releases-json
Update `.github/buildx-releases.json`
2025-11-12 11:20:09 +01:00
CrazyMax
f0bd06d036 Merge pull request #850 from docker/bot/docker-releases-json
Update `.github/docker-releases.json`
2025-11-12 11:19:52 +01:00
crazy-max
e958ed5b3f github: update .github/buildx-releases.json
Signed-off-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2025-11-12 10:15:21 +00:00
crazy-max
29f8f30aa9 github: update .github/docker-releases.json
Signed-off-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2025-11-12 10:15:15 +00:00
CrazyMax
6aa7c206c6 Merge pull request #851 from crazy-max/update-releases-json
ci: update crazy-max/.github/.github/workflows/releases-json to 2842b80
2025-11-12 11:14:49 +01:00
CrazyMax
e05a413e8a ci: update crazy-max/.github/.github/workflows/releases-json to 2842b80
Signed-off-by: CrazyMax <1951866+crazy-max@users.noreply.github.com>
2025-11-12 10:23:32 +01:00
CrazyMax
965b96d275 Merge pull request #847 from docker/bot/buildx-releases-json
Update `.github/buildx-releases.json`
2025-11-07 17:13:59 +01:00
CrazyMax
f04e1d3acb Merge pull request #846 from docker/bot/docker-releases-json
Update `.github/docker-releases.json`
2025-11-07 17:13:44 +01:00
crazy-max
2a13876756 github: update .github/docker-releases.json
Signed-off-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2025-11-07 12:13:03 +00:00
crazy-max
5197b8fa3d github: update .github/buildx-releases.json
Signed-off-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2025-11-07 00:24:20 +00:00
CrazyMax
fc1b7fac4b Merge pull request #845 from crazy-max/buildkit-0.25.2
update buildkit to 0.25.2
2025-11-05 13:58:11 +01:00
CrazyMax
af0095404d update buildkit to 0.25.2
Signed-off-by: CrazyMax <1951866+crazy-max@users.noreply.github.com>
2025-11-05 13:15:42 +01:00
CrazyMax
7ee633887d Merge pull request #844 from docker/dependabot/npm_and_yarn/sigstore/sign-4.0.1
Some checks failed
publish / publish (push) Has been cancelled
build(deps): bump @sigstore/sign from 3.1.0 to 4.0.1
2025-11-05 12:31:11 +01:00
dependabot[bot]
9c7140767c build(deps): bump @sigstore/sign from 3.1.0 to 4.0.1
Bumps [@sigstore/sign](https://github.com/sigstore/sigstore-js) from 3.1.0 to 4.0.1.
- [Release notes](https://github.com/sigstore/sigstore-js/releases)
- [Commits](https://github.com/sigstore/sigstore-js/compare/@sigstore/sign@3.1.0...@sigstore/sign@4.0.1)

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

Signed-off-by: dependabot[bot] <support@github.com>
2025-11-05 11:16:10 +00:00
CrazyMax
7cb0fac5c0 Merge pull request #840 from docker/dependabot/npm_and_yarn/sigstore/bundle-4.0.0
build(deps): bump @sigstore/bundle from 3.1.0 to 4.0.0
2025-11-05 12:13:25 +01:00
dependabot[bot]
9b9d27dc4c build(deps): bump @sigstore/bundle from 3.1.0 to 4.0.0
Bumps [@sigstore/bundle](https://github.com/sigstore/sigstore-js) from 3.1.0 to 4.0.0.
- [Release notes](https://github.com/sigstore/sigstore-js/releases)
- [Commits](https://github.com/sigstore/sigstore-js/compare/@sigstore/bundle@3.1.0...@sigstore/bundle@4.0.0)

---
updated-dependencies:
- dependency-name: "@sigstore/bundle"
  dependency-version: 4.0.0
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-11-05 10:45:32 +00:00
dependabot[bot]
e5e1cd0f99 build(deps): bump @actions/http-client from 2.2.3 to 3.0.0
Bumps [@actions/http-client](https://github.com/actions/toolkit/tree/HEAD/packages/http-client) from 2.2.3 to 3.0.0.
- [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.0
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-11-05 10:45:26 +00:00
CrazyMax
a84516d0dd Merge pull request #843 from crazy-max/rm-actions-attest
sigstore: remove @actions/attest dependency
2025-11-05 11:43:19 +01:00
CrazyMax
85dfc7a573 sigstore: remove @actions/attest dependency
Signed-off-by: CrazyMax <1951866+crazy-max@users.noreply.github.com>
2025-11-05 11:11:57 +01:00
CrazyMax
5c04d3904d Merge pull request #842 from crazy-max/cache-failsafe
cache: gracefully handle cache restore failures with warning
2025-11-05 10:27:59 +01:00
CrazyMax
d8def31251 cache: gracefully handle cache restore failures with warning
Signed-off-by: CrazyMax <1951866+crazy-max@users.noreply.github.com>
2025-11-05 10:02:21 +01:00
CrazyMax
7ab28f9678 Merge pull request #841 from crazy-max/sigstore-multi-images
Some checks failed
publish / publish (push) Has been cancelled
sigstore: multi image names support for signing
2025-11-04 14:03:26 +01:00
CrazyMax
6bd8db31fe sigstore: multi image names support for signing
Signed-off-by: CrazyMax <1951866+crazy-max@users.noreply.github.com>
2025-11-04 13:36:03 +01:00
CrazyMax
b449e6efd0 Merge pull request #836 from docker/dependabot/npm_and_yarn/npm_and_yarn-a40929283c
build(deps): bump the npm_and_yarn group across 1 directory with 2 updates
2025-11-03 23:03:40 +01:00
dependabot[bot]
764b218deb build(deps): bump the npm_and_yarn group across 1 directory with 2 updates
Bumps the npm_and_yarn group with 2 updates in the / directory: [@octokit/request-error](https://github.com/octokit/request-error.js) and [@octokit/request](https://github.com/octokit/request.js).


Updates `@octokit/request-error` from 5.0.0 to 5.1.1
- [Release notes](https://github.com/octokit/request-error.js/releases)
- [Commits](https://github.com/octokit/request-error.js/compare/v5.0.0...v5.1.1)

Updates `@octokit/request` from 8.1.1 to 8.4.1
- [Release notes](https://github.com/octokit/request.js/releases)
- [Commits](https://github.com/octokit/request.js/compare/v8.1.1...v8.4.1)

---
updated-dependencies:
- dependency-name: "@octokit/request-error"
  dependency-version: 5.1.1
  dependency-type: indirect
  dependency-group: npm_and_yarn
- dependency-name: "@octokit/request"
  dependency-version: 8.4.1
  dependency-type: indirect
  dependency-group: npm_and_yarn
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-11-03 16:45:09 +00:00
CrazyMax
f592739bbc Merge pull request #838 from crazy-max/fix-toolkit-class
Some checks failed
publish / publish (push) Has been cancelled
toolkit: add missing classes
2025-11-03 12:34:58 +01:00
CrazyMax
dd7595981f Merge pull request #839 from crazy-max/lima-timeout-env
docker(install): LIMA_START_TIMEOUT env var
2025-11-03 12:34:39 +01:00
CrazyMax
8ba2bc9036 docker(install): LIMA_START_TIMEOUT env var
Signed-off-by: CrazyMax <1951866+crazy-max@users.noreply.github.com>
2025-11-03 12:29:57 +01:00
CrazyMax
18535e8207 toolkit: add missing classes
Signed-off-by: CrazyMax <1951866+crazy-max@users.noreply.github.com>
2025-11-03 12:27:34 +01:00
CrazyMax
8032ed96f6 Merge pull request #837 from crazy-max/lima-dns
docker(install): don't use local system resolver with lima and increase timeouts
2025-11-03 12:10:21 +01:00
CrazyMax
efa21ec9ac Merge pull request #830 from crazy-max/signing-manifest
sigstore: sign and verify BuildKit attestation manifests
2025-11-03 11:42:27 +01:00
CrazyMax
3588cc8ad4 docker(install): increase lima start timeout
Signed-off-by: CrazyMax <1951866+crazy-max@users.noreply.github.com>
2025-11-03 11:39:42 +01:00
CrazyMax
bbd652b087 docker(install): increase dockerd startup timeout
Signed-off-by: CrazyMax <1951866+crazy-max@users.noreply.github.com>
2025-11-03 11:39:31 +01:00
CrazyMax
e85f11c5bd docker(install): don't use local system resolver with lima
Signed-off-by: CrazyMax <1951866+crazy-max@users.noreply.github.com>
2025-11-03 11:09:16 +01:00
CrazyMax
5d9b7822a6 sigstore: sign and verify BuildKit attestation manifests
Signed-off-by: CrazyMax <1951866+crazy-max@users.noreply.github.com>
2025-11-03 09:35:07 +01:00
CrazyMax
b4f8e5f0f9 Merge pull request #820 from crazy-max/signing
sigstore class to sign and verify buildkit provenance blobs
2025-11-03 09:34:37 +01:00
CrazyMax
3ed33f61c4 Merge pull request #835 from docker/bot/docker-releases-json
Update `.github/docker-releases.json`
2025-11-02 01:58:56 +01:00
crazy-max
a61e8fdb65 github: update .github/docker-releases.json
Signed-off-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2025-11-01 00:35:16 +00:00
CrazyMax
364d8e8cda sigstore: verifySignedArtifacts func
Signed-off-by: CrazyMax <1951866+crazy-max@users.noreply.github.com>
2025-10-30 15:52:34 +01:00
CrazyMax
1c0dc52a0e sigstore: always set TSA server endpoint to provide trusted timestamping
Signed-off-by: CrazyMax <1951866+crazy-max@users.noreply.github.com>
2025-10-30 15:52:34 +01:00
CrazyMax
36cc95143c sigstore class to sign buildkit provenance blobs
Signed-off-by: CrazyMax <1951866+crazy-max@users.noreply.github.com>
2025-10-30 15:52:33 +01:00
CrazyMax
24b234cb06 Merge pull request #823 from crazy-max/buildx-attestations-digest
buildx(imagetools): return attestations digests
2025-10-30 15:52:12 +01:00
CrazyMax
b2a04264d7 Merge pull request #829 from docker/bot/compose-releases-json
Update `.github/compose-releases.json`
2025-10-30 13:20:56 +01:00
crazy-max
019e7ff457 github: update .github/compose-releases.json
Signed-off-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2025-10-30 12:10:27 +00:00
CrazyMax
0ea9d89ee1 Merge pull request #828 from crazy-max/cosign-skip-state
cosign(install): skipState opt to directly upload to GHA cache
2025-10-30 13:09:52 +01:00
CrazyMax
1764424b68 cosign(install): skipState opt to directly upload to GHA cache
Signed-off-by: CrazyMax <1951866+crazy-max@users.noreply.github.com>
2025-10-30 12:17:33 +01:00
CrazyMax
dfe6c8d9e5 Merge pull request #827 from crazy-max/cosign-version
cosign version
2025-10-30 09:56:24 +01:00
CrazyMax
0f9a1c9368 cosign version
Signed-off-by: CrazyMax <1951866+crazy-max@users.noreply.github.com>
2025-10-29 18:24:42 +01:00
CrazyMax
6b0ff671bc Merge pull request #826 from crazy-max/cosign-install
cosign install
2025-10-29 18:24:27 +01:00
CrazyMax
5b8fb95ca3 cosign install
Signed-off-by: CrazyMax <1951866+crazy-max@users.noreply.github.com>
2025-10-29 16:18:29 +01:00
CrazyMax
9ada6fdf12 Merge pull request #825 from docker/bot/cosign-releases-json
Update `.github/cosign-releases.json`
2025-10-29 14:46:33 +01:00
crazy-max
b0b427d52f github: update .github/cosign-releases.json
Signed-off-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2025-10-29 13:46:15 +00:00
CrazyMax
0a93f2f5be Merge pull request #824 from crazy-max/cosign-releases-json
ci: cosign releases json workflow
2025-10-29 14:45:48 +01:00
CrazyMax
1de1c446bf ci: cosign releases json workflow
Signed-off-by: CrazyMax <1951866+crazy-max@users.noreply.github.com>
2025-10-29 14:44:20 +01:00
CrazyMax
16d264a310 Merge pull request #821 from crazy-max/update-lima-images
docker(install): update lima images
2025-10-29 13:31:59 +01:00
CrazyMax
1dc98594b3 Merge pull request #819 from crazy-max/install-cdn-token
use github token to fetch releases JSON from CDN if available
2025-10-29 11:07:18 +01:00
CrazyMax
e436a08992 docker(install): update lima images
Signed-off-by: CrazyMax <1951866+crazy-max@users.noreply.github.com>
2025-10-29 10:39:38 +01:00
CrazyMax
75cde1582a Merge pull request #822 from crazy-max/ci-macos-15-intel
ci(test): update to macos-15-intel
2025-10-28 13:40:24 +01:00
CrazyMax
2bef6ba8d9 ci(test): update to macos-15-intel
Signed-off-by: CrazyMax <1951866+crazy-max@users.noreply.github.com>
2025-10-28 12:31:25 +01:00
CrazyMax
437b1870cc buildx(imagetools): return attestations digests
Signed-off-by: CrazyMax <1951866+crazy-max@users.noreply.github.com>
2025-10-28 11:35:08 +01:00
CrazyMax
2acf5409f8 Merge pull request #817 from docker/dependabot/github_actions/actions/download-artifact-6
build(deps): bump actions/download-artifact from 5 to 6
2025-10-28 10:43:19 +01:00
CrazyMax
0d894f0870 Merge pull request #818 from docker/dependabot/npm_and_yarn/actions/artifact-4.0.0
build(deps): bump @actions/artifact from 2.3.2 to 4.0.0
2025-10-28 10:30:53 +01:00
CrazyMax
f8d7170ef4 ci: update crazy-max/.github/.github/workflows/releases-json to 34fd436
Signed-off-by: CrazyMax <1951866+crazy-max@users.noreply.github.com>
2025-10-28 09:46:22 +01:00
CrazyMax
d970614050 github: use github token to fetch releases JSON from CDN if available
Signed-off-by: CrazyMax <1951866+crazy-max@users.noreply.github.com>
2025-10-28 09:35:50 +01:00
CrazyMax
503a033f4a github: use github token to download releases with actions/tool-cache if available
Signed-off-by: CrazyMax <1951866+crazy-max@users.noreply.github.com>
2025-10-28 09:35:50 +01:00
CrazyMax
8e64b4303b releases: mutualize releases handling logic and move it to github class
Signed-off-by: CrazyMax <1951866+crazy-max@users.noreply.github.com>
2025-10-28 09:35:50 +01:00
dependabot[bot]
3249537c32 build(deps): bump @actions/artifact from 2.3.2 to 4.0.0
Bumps [@actions/artifact](https://github.com/actions/toolkit/tree/HEAD/packages/artifact) from 2.3.2 to 4.0.0.
- [Changelog](https://github.com/actions/toolkit/blob/main/packages/artifact/RELEASES.md)
- [Commits](https://github.com/actions/toolkit/commits/@actions/cache@4.0.0/packages/artifact)

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

Signed-off-by: dependabot[bot] <support@github.com>
2025-10-24 22:07:10 +00:00
dependabot[bot]
dd7082cfe3 build(deps): bump actions/download-artifact from 5 to 6
Bumps [actions/download-artifact](https://github.com/actions/download-artifact) from 5 to 6.
- [Release notes](https://github.com/actions/download-artifact/releases)
- [Commits](https://github.com/actions/download-artifact/compare/v5...v6)

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

Signed-off-by: dependabot[bot] <support@github.com>
2025-10-24 22:06:06 +00:00
CrazyMax
5568d95611 Merge pull request #816 from docker/bot/compose-releases-json
Update `.github/compose-releases.json`
2025-10-23 09:12:28 +02:00
crazy-max
3c7308e1e3 github: update .github/compose-releases.json
Signed-off-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2025-10-23 00:34:20 +00:00
CrazyMax
08239d0545 Merge pull request #814 from docker/bot/compose-releases-json
Update `.github/compose-releases.json`
2025-10-22 13:22:12 +02:00
crazy-max
660f4c287e github: update .github/compose-releases.json
Signed-off-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2025-10-18 00:31:51 +00:00
161 changed files with 20309 additions and 8800 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,17 +0,0 @@
name: 'Setup QEMU on macOS'
description: 'Set up QEMU on macOS runners'
# FIXME: Remove this composite once QEMU issue is fixed on macOS runners
# https://github.com/docker/actions-toolkit/issues/455
runs:
using: composite
steps:
- run: |
set -ex
brew uninstall --ignore-dependencies qemu || true
brew autoremove || true
curl -o /tmp/qemu.rb https://raw.githubusercontent.com/Homebrew/homebrew-core/f1a9cf104a9a51779c7a532b658c490f69974839/Formula/q/qemu.rb
brew install /tmp/qemu.rb
continue-on-error: true
shell: bash

View File

@@ -1,120 +1,246 @@
{
"latest": {
"id": 234386442,
"tag_name": "v0.26.1-desktop.1",
"html_url": "https://github.com/docker/buildx-desktop/releases/tag/v0.26.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.26.1-desktop.1/buildx-v0.26.1-desktop.1.darwin-amd64",
"https://github.com/docker/buildx-desktop/releases/download/v0.26.1-desktop.1/buildx-v0.26.1-desktop.1.darwin-amd64.provenance.json",
"https://github.com/docker/buildx-desktop/releases/download/v0.26.1-desktop.1/buildx-v0.26.1-desktop.1.darwin-amd64.sbom.json",
"https://github.com/docker/buildx-desktop/releases/download/v0.26.1-desktop.1/buildx-v0.26.1-desktop.1.darwin-arm64",
"https://github.com/docker/buildx-desktop/releases/download/v0.26.1-desktop.1/buildx-v0.26.1-desktop.1.darwin-arm64.provenance.json",
"https://github.com/docker/buildx-desktop/releases/download/v0.26.1-desktop.1/buildx-v0.26.1-desktop.1.darwin-arm64.sbom.json",
"https://github.com/docker/buildx-desktop/releases/download/v0.26.1-desktop.1/buildx-v0.26.1-desktop.1.freebsd-amd64",
"https://github.com/docker/buildx-desktop/releases/download/v0.26.1-desktop.1/buildx-v0.26.1-desktop.1.freebsd-amd64.provenance.json",
"https://github.com/docker/buildx-desktop/releases/download/v0.26.1-desktop.1/buildx-v0.26.1-desktop.1.freebsd-amd64.sbom.json",
"https://github.com/docker/buildx-desktop/releases/download/v0.26.1-desktop.1/buildx-v0.26.1-desktop.1.freebsd-arm64",
"https://github.com/docker/buildx-desktop/releases/download/v0.26.1-desktop.1/buildx-v0.26.1-desktop.1.freebsd-arm64.provenance.json",
"https://github.com/docker/buildx-desktop/releases/download/v0.26.1-desktop.1/buildx-v0.26.1-desktop.1.freebsd-arm64.sbom.json",
"https://github.com/docker/buildx-desktop/releases/download/v0.26.1-desktop.1/buildx-v0.26.1-desktop.1.linux-amd64",
"https://github.com/docker/buildx-desktop/releases/download/v0.26.1-desktop.1/buildx-v0.26.1-desktop.1.linux-amd64.provenance.json",
"https://github.com/docker/buildx-desktop/releases/download/v0.26.1-desktop.1/buildx-v0.26.1-desktop.1.linux-amd64.sbom.json",
"https://github.com/docker/buildx-desktop/releases/download/v0.26.1-desktop.1/buildx-v0.26.1-desktop.1.linux-arm-v6",
"https://github.com/docker/buildx-desktop/releases/download/v0.26.1-desktop.1/buildx-v0.26.1-desktop.1.linux-arm-v6.provenance.json",
"https://github.com/docker/buildx-desktop/releases/download/v0.26.1-desktop.1/buildx-v0.26.1-desktop.1.linux-arm-v6.sbom.json",
"https://github.com/docker/buildx-desktop/releases/download/v0.26.1-desktop.1/buildx-v0.26.1-desktop.1.linux-arm-v7",
"https://github.com/docker/buildx-desktop/releases/download/v0.26.1-desktop.1/buildx-v0.26.1-desktop.1.linux-arm-v7.provenance.json",
"https://github.com/docker/buildx-desktop/releases/download/v0.26.1-desktop.1/buildx-v0.26.1-desktop.1.linux-arm-v7.sbom.json",
"https://github.com/docker/buildx-desktop/releases/download/v0.26.1-desktop.1/buildx-v0.26.1-desktop.1.linux-arm64",
"https://github.com/docker/buildx-desktop/releases/download/v0.26.1-desktop.1/buildx-v0.26.1-desktop.1.linux-arm64.provenance.json",
"https://github.com/docker/buildx-desktop/releases/download/v0.26.1-desktop.1/buildx-v0.26.1-desktop.1.linux-arm64.sbom.json",
"https://github.com/docker/buildx-desktop/releases/download/v0.26.1-desktop.1/buildx-v0.26.1-desktop.1.linux-ppc64le",
"https://github.com/docker/buildx-desktop/releases/download/v0.26.1-desktop.1/buildx-v0.26.1-desktop.1.linux-ppc64le.provenance.json",
"https://github.com/docker/buildx-desktop/releases/download/v0.26.1-desktop.1/buildx-v0.26.1-desktop.1.linux-ppc64le.sbom.json",
"https://github.com/docker/buildx-desktop/releases/download/v0.26.1-desktop.1/buildx-v0.26.1-desktop.1.linux-riscv64",
"https://github.com/docker/buildx-desktop/releases/download/v0.26.1-desktop.1/buildx-v0.26.1-desktop.1.linux-riscv64.provenance.json",
"https://github.com/docker/buildx-desktop/releases/download/v0.26.1-desktop.1/buildx-v0.26.1-desktop.1.linux-riscv64.sbom.json",
"https://github.com/docker/buildx-desktop/releases/download/v0.26.1-desktop.1/buildx-v0.26.1-desktop.1.linux-s390x",
"https://github.com/docker/buildx-desktop/releases/download/v0.26.1-desktop.1/buildx-v0.26.1-desktop.1.linux-s390x.provenance.json",
"https://github.com/docker/buildx-desktop/releases/download/v0.26.1-desktop.1/buildx-v0.26.1-desktop.1.linux-s390x.sbom.json",
"https://github.com/docker/buildx-desktop/releases/download/v0.26.1-desktop.1/buildx-v0.26.1-desktop.1.netbsd-amd64",
"https://github.com/docker/buildx-desktop/releases/download/v0.26.1-desktop.1/buildx-v0.26.1-desktop.1.netbsd-amd64.provenance.json",
"https://github.com/docker/buildx-desktop/releases/download/v0.26.1-desktop.1/buildx-v0.26.1-desktop.1.netbsd-amd64.sbom.json",
"https://github.com/docker/buildx-desktop/releases/download/v0.26.1-desktop.1/buildx-v0.26.1-desktop.1.netbsd-arm64",
"https://github.com/docker/buildx-desktop/releases/download/v0.26.1-desktop.1/buildx-v0.26.1-desktop.1.netbsd-arm64.provenance.json",
"https://github.com/docker/buildx-desktop/releases/download/v0.26.1-desktop.1/buildx-v0.26.1-desktop.1.netbsd-arm64.sbom.json",
"https://github.com/docker/buildx-desktop/releases/download/v0.26.1-desktop.1/buildx-v0.26.1-desktop.1.openbsd-amd64",
"https://github.com/docker/buildx-desktop/releases/download/v0.26.1-desktop.1/buildx-v0.26.1-desktop.1.openbsd-amd64.provenance.json",
"https://github.com/docker/buildx-desktop/releases/download/v0.26.1-desktop.1/buildx-v0.26.1-desktop.1.openbsd-amd64.sbom.json",
"https://github.com/docker/buildx-desktop/releases/download/v0.26.1-desktop.1/buildx-v0.26.1-desktop.1.openbsd-arm64",
"https://github.com/docker/buildx-desktop/releases/download/v0.26.1-desktop.1/buildx-v0.26.1-desktop.1.openbsd-arm64.provenance.json",
"https://github.com/docker/buildx-desktop/releases/download/v0.26.1-desktop.1/buildx-v0.26.1-desktop.1.openbsd-arm64.sbom.json",
"https://github.com/docker/buildx-desktop/releases/download/v0.26.1-desktop.1/buildx-v0.26.1-desktop.1.windows-amd64.exe",
"https://github.com/docker/buildx-desktop/releases/download/v0.26.1-desktop.1/buildx-v0.26.1-desktop.1.windows-amd64.provenance.json",
"https://github.com/docker/buildx-desktop/releases/download/v0.26.1-desktop.1/buildx-v0.26.1-desktop.1.windows-amd64.sbom.json",
"https://github.com/docker/buildx-desktop/releases/download/v0.26.1-desktop.1/buildx-v0.26.1-desktop.1.windows-arm64.exe",
"https://github.com/docker/buildx-desktop/releases/download/v0.26.1-desktop.1/buildx-v0.26.1-desktop.1.windows-arm64.provenance.json",
"https://github.com/docker/buildx-desktop/releases/download/v0.26.1-desktop.1/buildx-v0.26.1-desktop.1.windows-arm64.sbom.json",
"https://github.com/docker/buildx-desktop/releases/download/v0.26.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": {
"id": 264746294,
"tag_name": "v0.30.1-desktop.1",
"html_url": "https://github.com/docker/buildx-desktop/releases/tag/v0.30.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"
]
},
"edge": {
"id": 245038026,
"tag_name": "v0.28.0-desktop.1",
"html_url": "https://github.com/docker/buildx-desktop/releases/tag/v0.28.0-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.28.0-desktop.1/buildx-v0.28.0-desktop.1.darwin-amd64",
"https://github.com/docker/buildx-desktop/releases/download/v0.28.0-desktop.1/buildx-v0.28.0-desktop.1.darwin-amd64.provenance.json",
"https://github.com/docker/buildx-desktop/releases/download/v0.28.0-desktop.1/buildx-v0.28.0-desktop.1.darwin-amd64.sbom.json",
"https://github.com/docker/buildx-desktop/releases/download/v0.28.0-desktop.1/buildx-v0.28.0-desktop.1.darwin-arm64",
"https://github.com/docker/buildx-desktop/releases/download/v0.28.0-desktop.1/buildx-v0.28.0-desktop.1.darwin-arm64.provenance.json",
"https://github.com/docker/buildx-desktop/releases/download/v0.28.0-desktop.1/buildx-v0.28.0-desktop.1.darwin-arm64.sbom.json",
"https://github.com/docker/buildx-desktop/releases/download/v0.28.0-desktop.1/buildx-v0.28.0-desktop.1.freebsd-amd64",
"https://github.com/docker/buildx-desktop/releases/download/v0.28.0-desktop.1/buildx-v0.28.0-desktop.1.freebsd-amd64.provenance.json",
"https://github.com/docker/buildx-desktop/releases/download/v0.28.0-desktop.1/buildx-v0.28.0-desktop.1.freebsd-amd64.sbom.json",
"https://github.com/docker/buildx-desktop/releases/download/v0.28.0-desktop.1/buildx-v0.28.0-desktop.1.freebsd-arm64",
"https://github.com/docker/buildx-desktop/releases/download/v0.28.0-desktop.1/buildx-v0.28.0-desktop.1.freebsd-arm64.provenance.json",
"https://github.com/docker/buildx-desktop/releases/download/v0.28.0-desktop.1/buildx-v0.28.0-desktop.1.freebsd-arm64.sbom.json",
"https://github.com/docker/buildx-desktop/releases/download/v0.28.0-desktop.1/buildx-v0.28.0-desktop.1.linux-amd64",
"https://github.com/docker/buildx-desktop/releases/download/v0.28.0-desktop.1/buildx-v0.28.0-desktop.1.linux-amd64.provenance.json",
"https://github.com/docker/buildx-desktop/releases/download/v0.28.0-desktop.1/buildx-v0.28.0-desktop.1.linux-amd64.sbom.json",
"https://github.com/docker/buildx-desktop/releases/download/v0.28.0-desktop.1/buildx-v0.28.0-desktop.1.linux-arm-v6",
"https://github.com/docker/buildx-desktop/releases/download/v0.28.0-desktop.1/buildx-v0.28.0-desktop.1.linux-arm-v6.provenance.json",
"https://github.com/docker/buildx-desktop/releases/download/v0.28.0-desktop.1/buildx-v0.28.0-desktop.1.linux-arm-v6.sbom.json",
"https://github.com/docker/buildx-desktop/releases/download/v0.28.0-desktop.1/buildx-v0.28.0-desktop.1.linux-arm-v7",
"https://github.com/docker/buildx-desktop/releases/download/v0.28.0-desktop.1/buildx-v0.28.0-desktop.1.linux-arm-v7.provenance.json",
"https://github.com/docker/buildx-desktop/releases/download/v0.28.0-desktop.1/buildx-v0.28.0-desktop.1.linux-arm-v7.sbom.json",
"https://github.com/docker/buildx-desktop/releases/download/v0.28.0-desktop.1/buildx-v0.28.0-desktop.1.linux-arm64",
"https://github.com/docker/buildx-desktop/releases/download/v0.28.0-desktop.1/buildx-v0.28.0-desktop.1.linux-arm64.provenance.json",
"https://github.com/docker/buildx-desktop/releases/download/v0.28.0-desktop.1/buildx-v0.28.0-desktop.1.linux-arm64.sbom.json",
"https://github.com/docker/buildx-desktop/releases/download/v0.28.0-desktop.1/buildx-v0.28.0-desktop.1.linux-ppc64le",
"https://github.com/docker/buildx-desktop/releases/download/v0.28.0-desktop.1/buildx-v0.28.0-desktop.1.linux-ppc64le.provenance.json",
"https://github.com/docker/buildx-desktop/releases/download/v0.28.0-desktop.1/buildx-v0.28.0-desktop.1.linux-ppc64le.sbom.json",
"https://github.com/docker/buildx-desktop/releases/download/v0.28.0-desktop.1/buildx-v0.28.0-desktop.1.linux-riscv64",
"https://github.com/docker/buildx-desktop/releases/download/v0.28.0-desktop.1/buildx-v0.28.0-desktop.1.linux-riscv64.provenance.json",
"https://github.com/docker/buildx-desktop/releases/download/v0.28.0-desktop.1/buildx-v0.28.0-desktop.1.linux-riscv64.sbom.json",
"https://github.com/docker/buildx-desktop/releases/download/v0.28.0-desktop.1/buildx-v0.28.0-desktop.1.linux-s390x",
"https://github.com/docker/buildx-desktop/releases/download/v0.28.0-desktop.1/buildx-v0.28.0-desktop.1.linux-s390x.provenance.json",
"https://github.com/docker/buildx-desktop/releases/download/v0.28.0-desktop.1/buildx-v0.28.0-desktop.1.linux-s390x.sbom.json",
"https://github.com/docker/buildx-desktop/releases/download/v0.28.0-desktop.1/buildx-v0.28.0-desktop.1.netbsd-amd64",
"https://github.com/docker/buildx-desktop/releases/download/v0.28.0-desktop.1/buildx-v0.28.0-desktop.1.netbsd-amd64.provenance.json",
"https://github.com/docker/buildx-desktop/releases/download/v0.28.0-desktop.1/buildx-v0.28.0-desktop.1.netbsd-amd64.sbom.json",
"https://github.com/docker/buildx-desktop/releases/download/v0.28.0-desktop.1/buildx-v0.28.0-desktop.1.netbsd-arm64",
"https://github.com/docker/buildx-desktop/releases/download/v0.28.0-desktop.1/buildx-v0.28.0-desktop.1.netbsd-arm64.provenance.json",
"https://github.com/docker/buildx-desktop/releases/download/v0.28.0-desktop.1/buildx-v0.28.0-desktop.1.netbsd-arm64.sbom.json",
"https://github.com/docker/buildx-desktop/releases/download/v0.28.0-desktop.1/buildx-v0.28.0-desktop.1.openbsd-amd64",
"https://github.com/docker/buildx-desktop/releases/download/v0.28.0-desktop.1/buildx-v0.28.0-desktop.1.openbsd-amd64.provenance.json",
"https://github.com/docker/buildx-desktop/releases/download/v0.28.0-desktop.1/buildx-v0.28.0-desktop.1.openbsd-amd64.sbom.json",
"https://github.com/docker/buildx-desktop/releases/download/v0.28.0-desktop.1/buildx-v0.28.0-desktop.1.openbsd-arm64",
"https://github.com/docker/buildx-desktop/releases/download/v0.28.0-desktop.1/buildx-v0.28.0-desktop.1.openbsd-arm64.provenance.json",
"https://github.com/docker/buildx-desktop/releases/download/v0.28.0-desktop.1/buildx-v0.28.0-desktop.1.openbsd-arm64.sbom.json",
"https://github.com/docker/buildx-desktop/releases/download/v0.28.0-desktop.1/buildx-v0.28.0-desktop.1.windows-amd64.exe",
"https://github.com/docker/buildx-desktop/releases/download/v0.28.0-desktop.1/buildx-v0.28.0-desktop.1.windows-amd64.provenance.json",
"https://github.com/docker/buildx-desktop/releases/download/v0.28.0-desktop.1/buildx-v0.28.0-desktop.1.windows-amd64.sbom.json",
"https://github.com/docker/buildx-desktop/releases/download/v0.28.0-desktop.1/buildx-v0.28.0-desktop.1.windows-arm64.exe",
"https://github.com/docker/buildx-desktop/releases/download/v0.28.0-desktop.1/buildx-v0.28.0-desktop.1.windows-arm64.provenance.json",
"https://github.com/docker/buildx-desktop/releases/download/v0.28.0-desktop.1/buildx-v0.28.0-desktop.1.windows-arm64.sbom.json",
"https://github.com/docker/buildx-desktop/releases/download/v0.28.0-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,796 @@
{
"latest": {
"id": 251953773,
"tag_name": "v2.40.0",
"html_url": "https://github.com/docker/compose/releases/tag/v2.40.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/v2.40.0/checksums.txt",
"https://github.com/docker/compose/releases/download/v2.40.0/docker-compose-darwin-aarch64",
"https://github.com/docker/compose/releases/download/v2.40.0/docker-compose-darwin-aarch64.provenance.json",
"https://github.com/docker/compose/releases/download/v2.40.0/docker-compose-darwin-aarch64.sbom.json",
"https://github.com/docker/compose/releases/download/v2.40.0/docker-compose-darwin-aarch64.sha256",
"https://github.com/docker/compose/releases/download/v2.40.0/docker-compose-darwin-x86_64",
"https://github.com/docker/compose/releases/download/v2.40.0/docker-compose-darwin-x86_64.provenance.json",
"https://github.com/docker/compose/releases/download/v2.40.0/docker-compose-darwin-x86_64.sbom.json",
"https://github.com/docker/compose/releases/download/v2.40.0/docker-compose-darwin-x86_64.sha256",
"https://github.com/docker/compose/releases/download/v2.40.0/docker-compose-linux-aarch64",
"https://github.com/docker/compose/releases/download/v2.40.0/docker-compose-linux-aarch64.provenance.json",
"https://github.com/docker/compose/releases/download/v2.40.0/docker-compose-linux-aarch64.sbom.json",
"https://github.com/docker/compose/releases/download/v2.40.0/docker-compose-linux-aarch64.sha256",
"https://github.com/docker/compose/releases/download/v2.40.0/docker-compose-linux-armv6",
"https://github.com/docker/compose/releases/download/v2.40.0/docker-compose-linux-armv6.provenance.json",
"https://github.com/docker/compose/releases/download/v2.40.0/docker-compose-linux-armv6.sbom.json",
"https://github.com/docker/compose/releases/download/v2.40.0/docker-compose-linux-armv6.sha256",
"https://github.com/docker/compose/releases/download/v2.40.0/docker-compose-linux-armv7",
"https://github.com/docker/compose/releases/download/v2.40.0/docker-compose-linux-armv7.provenance.json",
"https://github.com/docker/compose/releases/download/v2.40.0/docker-compose-linux-armv7.sbom.json",
"https://github.com/docker/compose/releases/download/v2.40.0/docker-compose-linux-armv7.sha256",
"https://github.com/docker/compose/releases/download/v2.40.0/docker-compose-linux-ppc64le",
"https://github.com/docker/compose/releases/download/v2.40.0/docker-compose-linux-ppc64le.provenance.json",
"https://github.com/docker/compose/releases/download/v2.40.0/docker-compose-linux-ppc64le.sbom.json",
"https://github.com/docker/compose/releases/download/v2.40.0/docker-compose-linux-ppc64le.sha256",
"https://github.com/docker/compose/releases/download/v2.40.0/docker-compose-linux-riscv64",
"https://github.com/docker/compose/releases/download/v2.40.0/docker-compose-linux-riscv64.provenance.json",
"https://github.com/docker/compose/releases/download/v2.40.0/docker-compose-linux-riscv64.sbom.json",
"https://github.com/docker/compose/releases/download/v2.40.0/docker-compose-linux-riscv64.sha256",
"https://github.com/docker/compose/releases/download/v2.40.0/docker-compose-linux-s390x",
"https://github.com/docker/compose/releases/download/v2.40.0/docker-compose-linux-s390x.provenance.json",
"https://github.com/docker/compose/releases/download/v2.40.0/docker-compose-linux-s390x.sbom.json",
"https://github.com/docker/compose/releases/download/v2.40.0/docker-compose-linux-s390x.sha256",
"https://github.com/docker/compose/releases/download/v2.40.0/docker-compose-linux-x86_64",
"https://github.com/docker/compose/releases/download/v2.40.0/docker-compose-linux-x86_64.provenance.json",
"https://github.com/docker/compose/releases/download/v2.40.0/docker-compose-linux-x86_64.sbom.json",
"https://github.com/docker/compose/releases/download/v2.40.0/docker-compose-linux-x86_64.sha256",
"https://github.com/docker/compose/releases/download/v2.40.0/docker-compose-windows-aarch64.exe",
"https://github.com/docker/compose/releases/download/v2.40.0/docker-compose-windows-aarch64.exe.sha256",
"https://github.com/docker/compose/releases/download/v2.40.0/docker-compose-windows-aarch64.provenance.json",
"https://github.com/docker/compose/releases/download/v2.40.0/docker-compose-windows-aarch64.sbom.json",
"https://github.com/docker/compose/releases/download/v2.40.0/docker-compose-windows-x86_64.exe",
"https://github.com/docker/compose/releases/download/v2.40.0/docker-compose-windows-x86_64.exe.sha256",
"https://github.com/docker/compose/releases/download/v2.40.0/docker-compose-windows-x86_64.provenance.json",
"https://github.com/docker/compose/releases/download/v2.40.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": {
"id": 266660722,
"tag_name": "v5.0.0",
"html_url": "https://github.com/docker/compose/releases/tag/v5.0.0",
"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"
]
},
"edge": {
"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.0.0-rc.2": {
"id": 262026717,
"tag_name": "v5.0.0-rc.2",
"html_url": "https://github.com/docker/compose/releases/tag/v5.0.0-rc.2",
"assets": [
"https://github.com/docker/compose/releases/download/v5.0.0-rc.2/checksums.txt",
"https://github.com/docker/compose/releases/download/v5.0.0-rc.2/docker-compose-darwin-aarch64",
"https://github.com/docker/compose/releases/download/v5.0.0-rc.2/docker-compose-darwin-aarch64.provenance.json",
"https://github.com/docker/compose/releases/download/v5.0.0-rc.2/docker-compose-darwin-aarch64.sbom.json",
"https://github.com/docker/compose/releases/download/v5.0.0-rc.2/docker-compose-darwin-aarch64.sha256",
"https://github.com/docker/compose/releases/download/v5.0.0-rc.2/docker-compose-darwin-x86_64",
"https://github.com/docker/compose/releases/download/v5.0.0-rc.2/docker-compose-darwin-x86_64.provenance.json",
"https://github.com/docker/compose/releases/download/v5.0.0-rc.2/docker-compose-darwin-x86_64.sbom.json",
"https://github.com/docker/compose/releases/download/v5.0.0-rc.2/docker-compose-darwin-x86_64.sha256",
"https://github.com/docker/compose/releases/download/v5.0.0-rc.2/docker-compose-linux-aarch64",
"https://github.com/docker/compose/releases/download/v5.0.0-rc.2/docker-compose-linux-aarch64.provenance.json",
"https://github.com/docker/compose/releases/download/v5.0.0-rc.2/docker-compose-linux-aarch64.sbom.json",
"https://github.com/docker/compose/releases/download/v5.0.0-rc.2/docker-compose-linux-aarch64.sha256",
"https://github.com/docker/compose/releases/download/v5.0.0-rc.2/docker-compose-linux-armv6",
"https://github.com/docker/compose/releases/download/v5.0.0-rc.2/docker-compose-linux-armv6.provenance.json",
"https://github.com/docker/compose/releases/download/v5.0.0-rc.2/docker-compose-linux-armv6.sbom.json",
"https://github.com/docker/compose/releases/download/v5.0.0-rc.2/docker-compose-linux-armv6.sha256",
"https://github.com/docker/compose/releases/download/v5.0.0-rc.2/docker-compose-linux-armv7",
"https://github.com/docker/compose/releases/download/v5.0.0-rc.2/docker-compose-linux-armv7.provenance.json",
"https://github.com/docker/compose/releases/download/v5.0.0-rc.2/docker-compose-linux-armv7.sbom.json",
"https://github.com/docker/compose/releases/download/v5.0.0-rc.2/docker-compose-linux-armv7.sha256",
"https://github.com/docker/compose/releases/download/v5.0.0-rc.2/docker-compose-linux-ppc64le",
"https://github.com/docker/compose/releases/download/v5.0.0-rc.2/docker-compose-linux-ppc64le.provenance.json",
"https://github.com/docker/compose/releases/download/v5.0.0-rc.2/docker-compose-linux-ppc64le.sbom.json",
"https://github.com/docker/compose/releases/download/v5.0.0-rc.2/docker-compose-linux-ppc64le.sha256",
"https://github.com/docker/compose/releases/download/v5.0.0-rc.2/docker-compose-linux-riscv64",
"https://github.com/docker/compose/releases/download/v5.0.0-rc.2/docker-compose-linux-riscv64.provenance.json",
"https://github.com/docker/compose/releases/download/v5.0.0-rc.2/docker-compose-linux-riscv64.sbom.json",
"https://github.com/docker/compose/releases/download/v5.0.0-rc.2/docker-compose-linux-riscv64.sha256",
"https://github.com/docker/compose/releases/download/v5.0.0-rc.2/docker-compose-linux-s390x",
"https://github.com/docker/compose/releases/download/v5.0.0-rc.2/docker-compose-linux-s390x.provenance.json",
"https://github.com/docker/compose/releases/download/v5.0.0-rc.2/docker-compose-linux-s390x.sbom.json",
"https://github.com/docker/compose/releases/download/v5.0.0-rc.2/docker-compose-linux-s390x.sha256",
"https://github.com/docker/compose/releases/download/v5.0.0-rc.2/docker-compose-linux-x86_64",
"https://github.com/docker/compose/releases/download/v5.0.0-rc.2/docker-compose-linux-x86_64.provenance.json",
"https://github.com/docker/compose/releases/download/v5.0.0-rc.2/docker-compose-linux-x86_64.sbom.json",
"https://github.com/docker/compose/releases/download/v5.0.0-rc.2/docker-compose-linux-x86_64.sha256",
"https://github.com/docker/compose/releases/download/v5.0.0-rc.2/docker-compose-windows-aarch64.exe",
"https://github.com/docker/compose/releases/download/v5.0.0-rc.2/docker-compose-windows-aarch64.exe.sha256",
"https://github.com/docker/compose/releases/download/v5.0.0-rc.2/docker-compose-windows-aarch64.provenance.json",
"https://github.com/docker/compose/releases/download/v5.0.0-rc.2/docker-compose-windows-aarch64.sbom.json",
"https://github.com/docker/compose/releases/download/v5.0.0-rc.2/docker-compose-windows-x86_64.exe",
"https://github.com/docker/compose/releases/download/v5.0.0-rc.2/docker-compose-windows-x86_64.exe.sha256",
"https://github.com/docker/compose/releases/download/v5.0.0-rc.2/docker-compose-windows-x86_64.provenance.json",
"https://github.com/docker/compose/releases/download/v5.0.0-rc.2/docker-compose-windows-x86_64.sbom.json"
]
},
"v5.0.0-rc.1": {
"id": 261813085,
"tag_name": "v5.0.0-rc.1",
"html_url": "https://github.com/docker/compose/releases/tag/v5.0.0-rc.1",
"assets": [
"https://github.com/docker/compose/releases/download/v5.0.0-rc.1/checksums.txt",
"https://github.com/docker/compose/releases/download/v5.0.0-rc.1/docker-compose-darwin-aarch64",
"https://github.com/docker/compose/releases/download/v5.0.0-rc.1/docker-compose-darwin-aarch64.provenance.json",
"https://github.com/docker/compose/releases/download/v5.0.0-rc.1/docker-compose-darwin-aarch64.sbom.json",
"https://github.com/docker/compose/releases/download/v5.0.0-rc.1/docker-compose-darwin-aarch64.sha256",
"https://github.com/docker/compose/releases/download/v5.0.0-rc.1/docker-compose-darwin-x86_64",
"https://github.com/docker/compose/releases/download/v5.0.0-rc.1/docker-compose-darwin-x86_64.provenance.json",
"https://github.com/docker/compose/releases/download/v5.0.0-rc.1/docker-compose-darwin-x86_64.sbom.json",
"https://github.com/docker/compose/releases/download/v5.0.0-rc.1/docker-compose-darwin-x86_64.sha256",
"https://github.com/docker/compose/releases/download/v5.0.0-rc.1/docker-compose-linux-aarch64",
"https://github.com/docker/compose/releases/download/v5.0.0-rc.1/docker-compose-linux-aarch64.provenance.json",
"https://github.com/docker/compose/releases/download/v5.0.0-rc.1/docker-compose-linux-aarch64.sbom.json",
"https://github.com/docker/compose/releases/download/v5.0.0-rc.1/docker-compose-linux-aarch64.sha256",
"https://github.com/docker/compose/releases/download/v5.0.0-rc.1/docker-compose-linux-armv6",
"https://github.com/docker/compose/releases/download/v5.0.0-rc.1/docker-compose-linux-armv6.provenance.json",
"https://github.com/docker/compose/releases/download/v5.0.0-rc.1/docker-compose-linux-armv6.sbom.json",
"https://github.com/docker/compose/releases/download/v5.0.0-rc.1/docker-compose-linux-armv6.sha256",
"https://github.com/docker/compose/releases/download/v5.0.0-rc.1/docker-compose-linux-armv7",
"https://github.com/docker/compose/releases/download/v5.0.0-rc.1/docker-compose-linux-armv7.provenance.json",
"https://github.com/docker/compose/releases/download/v5.0.0-rc.1/docker-compose-linux-armv7.sbom.json",
"https://github.com/docker/compose/releases/download/v5.0.0-rc.1/docker-compose-linux-armv7.sha256",
"https://github.com/docker/compose/releases/download/v5.0.0-rc.1/docker-compose-linux-ppc64le",
"https://github.com/docker/compose/releases/download/v5.0.0-rc.1/docker-compose-linux-ppc64le.provenance.json",
"https://github.com/docker/compose/releases/download/v5.0.0-rc.1/docker-compose-linux-ppc64le.sbom.json",
"https://github.com/docker/compose/releases/download/v5.0.0-rc.1/docker-compose-linux-ppc64le.sha256",
"https://github.com/docker/compose/releases/download/v5.0.0-rc.1/docker-compose-linux-riscv64",
"https://github.com/docker/compose/releases/download/v5.0.0-rc.1/docker-compose-linux-riscv64.provenance.json",
"https://github.com/docker/compose/releases/download/v5.0.0-rc.1/docker-compose-linux-riscv64.sbom.json",
"https://github.com/docker/compose/releases/download/v5.0.0-rc.1/docker-compose-linux-riscv64.sha256",
"https://github.com/docker/compose/releases/download/v5.0.0-rc.1/docker-compose-linux-s390x",
"https://github.com/docker/compose/releases/download/v5.0.0-rc.1/docker-compose-linux-s390x.provenance.json",
"https://github.com/docker/compose/releases/download/v5.0.0-rc.1/docker-compose-linux-s390x.sbom.json",
"https://github.com/docker/compose/releases/download/v5.0.0-rc.1/docker-compose-linux-s390x.sha256",
"https://github.com/docker/compose/releases/download/v5.0.0-rc.1/docker-compose-linux-x86_64",
"https://github.com/docker/compose/releases/download/v5.0.0-rc.1/docker-compose-linux-x86_64.provenance.json",
"https://github.com/docker/compose/releases/download/v5.0.0-rc.1/docker-compose-linux-x86_64.sbom.json",
"https://github.com/docker/compose/releases/download/v5.0.0-rc.1/docker-compose-linux-x86_64.sha256",
"https://github.com/docker/compose/releases/download/v5.0.0-rc.1/docker-compose-windows-aarch64.exe",
"https://github.com/docker/compose/releases/download/v5.0.0-rc.1/docker-compose-windows-aarch64.exe.sha256",
"https://github.com/docker/compose/releases/download/v5.0.0-rc.1/docker-compose-windows-aarch64.provenance.json",
"https://github.com/docker/compose/releases/download/v5.0.0-rc.1/docker-compose-windows-aarch64.sbom.json",
"https://github.com/docker/compose/releases/download/v5.0.0-rc.1/docker-compose-windows-x86_64.exe",
"https://github.com/docker/compose/releases/download/v5.0.0-rc.1/docker-compose-windows-x86_64.exe.sha256",
"https://github.com/docker/compose/releases/download/v5.0.0-rc.1/docker-compose-windows-x86_64.provenance.json",
"https://github.com/docker/compose/releases/download/v5.0.0-rc.1/docker-compose-windows-x86_64.sbom.json"
]
},
"v2.40.3": {
"id": 258406598,
"tag_name": "v2.40.3",
"html_url": "https://github.com/docker/compose/releases/tag/v2.40.3",
"assets": [
"https://github.com/docker/compose/releases/download/v2.40.3/checksums.txt",
"https://github.com/docker/compose/releases/download/v2.40.3/docker-compose-darwin-aarch64",
"https://github.com/docker/compose/releases/download/v2.40.3/docker-compose-darwin-aarch64.provenance.json",
"https://github.com/docker/compose/releases/download/v2.40.3/docker-compose-darwin-aarch64.sbom.json",
"https://github.com/docker/compose/releases/download/v2.40.3/docker-compose-darwin-aarch64.sha256",
"https://github.com/docker/compose/releases/download/v2.40.3/docker-compose-darwin-x86_64",
"https://github.com/docker/compose/releases/download/v2.40.3/docker-compose-darwin-x86_64.provenance.json",
"https://github.com/docker/compose/releases/download/v2.40.3/docker-compose-darwin-x86_64.sbom.json",
"https://github.com/docker/compose/releases/download/v2.40.3/docker-compose-darwin-x86_64.sha256",
"https://github.com/docker/compose/releases/download/v2.40.3/docker-compose-linux-aarch64",
"https://github.com/docker/compose/releases/download/v2.40.3/docker-compose-linux-aarch64.provenance.json",
"https://github.com/docker/compose/releases/download/v2.40.3/docker-compose-linux-aarch64.sbom.json",
"https://github.com/docker/compose/releases/download/v2.40.3/docker-compose-linux-aarch64.sha256",
"https://github.com/docker/compose/releases/download/v2.40.3/docker-compose-linux-armv6",
"https://github.com/docker/compose/releases/download/v2.40.3/docker-compose-linux-armv6.provenance.json",
"https://github.com/docker/compose/releases/download/v2.40.3/docker-compose-linux-armv6.sbom.json",
"https://github.com/docker/compose/releases/download/v2.40.3/docker-compose-linux-armv6.sha256",
"https://github.com/docker/compose/releases/download/v2.40.3/docker-compose-linux-armv7",
"https://github.com/docker/compose/releases/download/v2.40.3/docker-compose-linux-armv7.provenance.json",
"https://github.com/docker/compose/releases/download/v2.40.3/docker-compose-linux-armv7.sbom.json",
"https://github.com/docker/compose/releases/download/v2.40.3/docker-compose-linux-armv7.sha256",
"https://github.com/docker/compose/releases/download/v2.40.3/docker-compose-linux-ppc64le",
"https://github.com/docker/compose/releases/download/v2.40.3/docker-compose-linux-ppc64le.provenance.json",
"https://github.com/docker/compose/releases/download/v2.40.3/docker-compose-linux-ppc64le.sbom.json",
"https://github.com/docker/compose/releases/download/v2.40.3/docker-compose-linux-ppc64le.sha256",
"https://github.com/docker/compose/releases/download/v2.40.3/docker-compose-linux-riscv64",
"https://github.com/docker/compose/releases/download/v2.40.3/docker-compose-linux-riscv64.provenance.json",
"https://github.com/docker/compose/releases/download/v2.40.3/docker-compose-linux-riscv64.sbom.json",
"https://github.com/docker/compose/releases/download/v2.40.3/docker-compose-linux-riscv64.sha256",
"https://github.com/docker/compose/releases/download/v2.40.3/docker-compose-linux-s390x",
"https://github.com/docker/compose/releases/download/v2.40.3/docker-compose-linux-s390x.provenance.json",
"https://github.com/docker/compose/releases/download/v2.40.3/docker-compose-linux-s390x.sbom.json",
"https://github.com/docker/compose/releases/download/v2.40.3/docker-compose-linux-s390x.sha256",
"https://github.com/docker/compose/releases/download/v2.40.3/docker-compose-linux-x86_64",
"https://github.com/docker/compose/releases/download/v2.40.3/docker-compose-linux-x86_64.provenance.json",
"https://github.com/docker/compose/releases/download/v2.40.3/docker-compose-linux-x86_64.sbom.json",
"https://github.com/docker/compose/releases/download/v2.40.3/docker-compose-linux-x86_64.sha256",
"https://github.com/docker/compose/releases/download/v2.40.3/docker-compose-windows-aarch64.exe",
"https://github.com/docker/compose/releases/download/v2.40.3/docker-compose-windows-aarch64.exe.sha256",
"https://github.com/docker/compose/releases/download/v2.40.3/docker-compose-windows-aarch64.provenance.json",
"https://github.com/docker/compose/releases/download/v2.40.3/docker-compose-windows-aarch64.sbom.json",
"https://github.com/docker/compose/releases/download/v2.40.3/docker-compose-windows-x86_64.exe",
"https://github.com/docker/compose/releases/download/v2.40.3/docker-compose-windows-x86_64.exe.sha256",
"https://github.com/docker/compose/releases/download/v2.40.3/docker-compose-windows-x86_64.provenance.json",
"https://github.com/docker/compose/releases/download/v2.40.3/docker-compose-windows-x86_64.sbom.json"
]
},
"v2.40.2": {
"id": 256436939,
"tag_name": "v2.40.2",
"html_url": "https://github.com/docker/compose/releases/tag/v2.40.2",
"assets": [
"https://github.com/docker/compose/releases/download/v2.40.2/checksums.txt",
"https://github.com/docker/compose/releases/download/v2.40.2/docker-compose-darwin-aarch64",
"https://github.com/docker/compose/releases/download/v2.40.2/docker-compose-darwin-aarch64.provenance.json",
"https://github.com/docker/compose/releases/download/v2.40.2/docker-compose-darwin-aarch64.sbom.json",
"https://github.com/docker/compose/releases/download/v2.40.2/docker-compose-darwin-aarch64.sha256",
"https://github.com/docker/compose/releases/download/v2.40.2/docker-compose-darwin-x86_64",
"https://github.com/docker/compose/releases/download/v2.40.2/docker-compose-darwin-x86_64.provenance.json",
"https://github.com/docker/compose/releases/download/v2.40.2/docker-compose-darwin-x86_64.sbom.json",
"https://github.com/docker/compose/releases/download/v2.40.2/docker-compose-darwin-x86_64.sha256",
"https://github.com/docker/compose/releases/download/v2.40.2/docker-compose-linux-aarch64",
"https://github.com/docker/compose/releases/download/v2.40.2/docker-compose-linux-aarch64.provenance.json",
"https://github.com/docker/compose/releases/download/v2.40.2/docker-compose-linux-aarch64.sbom.json",
"https://github.com/docker/compose/releases/download/v2.40.2/docker-compose-linux-aarch64.sha256",
"https://github.com/docker/compose/releases/download/v2.40.2/docker-compose-linux-armv6",
"https://github.com/docker/compose/releases/download/v2.40.2/docker-compose-linux-armv6.provenance.json",
"https://github.com/docker/compose/releases/download/v2.40.2/docker-compose-linux-armv6.sbom.json",
"https://github.com/docker/compose/releases/download/v2.40.2/docker-compose-linux-armv6.sha256",
"https://github.com/docker/compose/releases/download/v2.40.2/docker-compose-linux-armv7",
"https://github.com/docker/compose/releases/download/v2.40.2/docker-compose-linux-armv7.provenance.json",
"https://github.com/docker/compose/releases/download/v2.40.2/docker-compose-linux-armv7.sbom.json",
"https://github.com/docker/compose/releases/download/v2.40.2/docker-compose-linux-armv7.sha256",
"https://github.com/docker/compose/releases/download/v2.40.2/docker-compose-linux-ppc64le",
"https://github.com/docker/compose/releases/download/v2.40.2/docker-compose-linux-ppc64le.provenance.json",
"https://github.com/docker/compose/releases/download/v2.40.2/docker-compose-linux-ppc64le.sbom.json",
"https://github.com/docker/compose/releases/download/v2.40.2/docker-compose-linux-ppc64le.sha256",
"https://github.com/docker/compose/releases/download/v2.40.2/docker-compose-linux-riscv64",
"https://github.com/docker/compose/releases/download/v2.40.2/docker-compose-linux-riscv64.provenance.json",
"https://github.com/docker/compose/releases/download/v2.40.2/docker-compose-linux-riscv64.sbom.json",
"https://github.com/docker/compose/releases/download/v2.40.2/docker-compose-linux-riscv64.sha256",
"https://github.com/docker/compose/releases/download/v2.40.2/docker-compose-linux-s390x",
"https://github.com/docker/compose/releases/download/v2.40.2/docker-compose-linux-s390x.provenance.json",
"https://github.com/docker/compose/releases/download/v2.40.2/docker-compose-linux-s390x.sbom.json",
"https://github.com/docker/compose/releases/download/v2.40.2/docker-compose-linux-s390x.sha256",
"https://github.com/docker/compose/releases/download/v2.40.2/docker-compose-linux-x86_64",
"https://github.com/docker/compose/releases/download/v2.40.2/docker-compose-linux-x86_64.provenance.json",
"https://github.com/docker/compose/releases/download/v2.40.2/docker-compose-linux-x86_64.sbom.json",
"https://github.com/docker/compose/releases/download/v2.40.2/docker-compose-linux-x86_64.sha256",
"https://github.com/docker/compose/releases/download/v2.40.2/docker-compose-windows-aarch64.exe",
"https://github.com/docker/compose/releases/download/v2.40.2/docker-compose-windows-aarch64.exe.sha256",
"https://github.com/docker/compose/releases/download/v2.40.2/docker-compose-windows-aarch64.provenance.json",
"https://github.com/docker/compose/releases/download/v2.40.2/docker-compose-windows-aarch64.sbom.json",
"https://github.com/docker/compose/releases/download/v2.40.2/docker-compose-windows-x86_64.exe",
"https://github.com/docker/compose/releases/download/v2.40.2/docker-compose-windows-x86_64.exe.sha256",
"https://github.com/docker/compose/releases/download/v2.40.2/docker-compose-windows-x86_64.provenance.json",
"https://github.com/docker/compose/releases/download/v2.40.2/docker-compose-windows-x86_64.sbom.json"
]
},
"v2.40.1": {
"id": 255315577,
"tag_name": "v2.40.1",
"html_url": "https://github.com/docker/compose/releases/tag/v2.40.1",
"assets": [
"https://github.com/docker/compose/releases/download/v2.40.1/checksums.txt",
"https://github.com/docker/compose/releases/download/v2.40.1/docker-compose-darwin-aarch64",
"https://github.com/docker/compose/releases/download/v2.40.1/docker-compose-darwin-aarch64.provenance.json",
"https://github.com/docker/compose/releases/download/v2.40.1/docker-compose-darwin-aarch64.sbom.json",
"https://github.com/docker/compose/releases/download/v2.40.1/docker-compose-darwin-aarch64.sha256",
"https://github.com/docker/compose/releases/download/v2.40.1/docker-compose-darwin-x86_64",
"https://github.com/docker/compose/releases/download/v2.40.1/docker-compose-darwin-x86_64.provenance.json",
"https://github.com/docker/compose/releases/download/v2.40.1/docker-compose-darwin-x86_64.sbom.json",
"https://github.com/docker/compose/releases/download/v2.40.1/docker-compose-darwin-x86_64.sha256",
"https://github.com/docker/compose/releases/download/v2.40.1/docker-compose-linux-aarch64",
"https://github.com/docker/compose/releases/download/v2.40.1/docker-compose-linux-aarch64.provenance.json",
"https://github.com/docker/compose/releases/download/v2.40.1/docker-compose-linux-aarch64.sbom.json",
"https://github.com/docker/compose/releases/download/v2.40.1/docker-compose-linux-aarch64.sha256",
"https://github.com/docker/compose/releases/download/v2.40.1/docker-compose-linux-armv6",
"https://github.com/docker/compose/releases/download/v2.40.1/docker-compose-linux-armv6.provenance.json",
"https://github.com/docker/compose/releases/download/v2.40.1/docker-compose-linux-armv6.sbom.json",
"https://github.com/docker/compose/releases/download/v2.40.1/docker-compose-linux-armv6.sha256",
"https://github.com/docker/compose/releases/download/v2.40.1/docker-compose-linux-armv7",
"https://github.com/docker/compose/releases/download/v2.40.1/docker-compose-linux-armv7.provenance.json",
"https://github.com/docker/compose/releases/download/v2.40.1/docker-compose-linux-armv7.sbom.json",
"https://github.com/docker/compose/releases/download/v2.40.1/docker-compose-linux-armv7.sha256",
"https://github.com/docker/compose/releases/download/v2.40.1/docker-compose-linux-ppc64le",
"https://github.com/docker/compose/releases/download/v2.40.1/docker-compose-linux-ppc64le.provenance.json",
"https://github.com/docker/compose/releases/download/v2.40.1/docker-compose-linux-ppc64le.sbom.json",
"https://github.com/docker/compose/releases/download/v2.40.1/docker-compose-linux-ppc64le.sha256",
"https://github.com/docker/compose/releases/download/v2.40.1/docker-compose-linux-riscv64",
"https://github.com/docker/compose/releases/download/v2.40.1/docker-compose-linux-riscv64.provenance.json",
"https://github.com/docker/compose/releases/download/v2.40.1/docker-compose-linux-riscv64.sbom.json",
"https://github.com/docker/compose/releases/download/v2.40.1/docker-compose-linux-riscv64.sha256",
"https://github.com/docker/compose/releases/download/v2.40.1/docker-compose-linux-s390x",
"https://github.com/docker/compose/releases/download/v2.40.1/docker-compose-linux-s390x.provenance.json",
"https://github.com/docker/compose/releases/download/v2.40.1/docker-compose-linux-s390x.sbom.json",
"https://github.com/docker/compose/releases/download/v2.40.1/docker-compose-linux-s390x.sha256",
"https://github.com/docker/compose/releases/download/v2.40.1/docker-compose-linux-x86_64",
"https://github.com/docker/compose/releases/download/v2.40.1/docker-compose-linux-x86_64.provenance.json",
"https://github.com/docker/compose/releases/download/v2.40.1/docker-compose-linux-x86_64.sbom.json",
"https://github.com/docker/compose/releases/download/v2.40.1/docker-compose-linux-x86_64.sha256",
"https://github.com/docker/compose/releases/download/v2.40.1/docker-compose-windows-aarch64.exe",
"https://github.com/docker/compose/releases/download/v2.40.1/docker-compose-windows-aarch64.exe.sha256",
"https://github.com/docker/compose/releases/download/v2.40.1/docker-compose-windows-aarch64.provenance.json",
"https://github.com/docker/compose/releases/download/v2.40.1/docker-compose-windows-aarch64.sbom.json",
"https://github.com/docker/compose/releases/download/v2.40.1/docker-compose-windows-x86_64.exe",
"https://github.com/docker/compose/releases/download/v2.40.1/docker-compose-windows-x86_64.exe.sha256",
"https://github.com/docker/compose/releases/download/v2.40.1/docker-compose-windows-x86_64.provenance.json",
"https://github.com/docker/compose/releases/download/v2.40.1/docker-compose-windows-x86_64.sbom.json"
]
},
"v2.40.0": {
@@ -2240,58 +2982,6 @@
"https://github.com/docker/compose/releases/download/v2.24.0/docker-compose-windows-x86_64.exe.sha256"
]
},
"edge": {
"id": 251953773,
"tag_name": "v2.40.0",
"html_url": "https://github.com/docker/compose/releases/tag/v2.40.0",
"assets": [
"https://github.com/docker/compose/releases/download/v2.40.0/checksums.txt",
"https://github.com/docker/compose/releases/download/v2.40.0/docker-compose-darwin-aarch64",
"https://github.com/docker/compose/releases/download/v2.40.0/docker-compose-darwin-aarch64.provenance.json",
"https://github.com/docker/compose/releases/download/v2.40.0/docker-compose-darwin-aarch64.sbom.json",
"https://github.com/docker/compose/releases/download/v2.40.0/docker-compose-darwin-aarch64.sha256",
"https://github.com/docker/compose/releases/download/v2.40.0/docker-compose-darwin-x86_64",
"https://github.com/docker/compose/releases/download/v2.40.0/docker-compose-darwin-x86_64.provenance.json",
"https://github.com/docker/compose/releases/download/v2.40.0/docker-compose-darwin-x86_64.sbom.json",
"https://github.com/docker/compose/releases/download/v2.40.0/docker-compose-darwin-x86_64.sha256",
"https://github.com/docker/compose/releases/download/v2.40.0/docker-compose-linux-aarch64",
"https://github.com/docker/compose/releases/download/v2.40.0/docker-compose-linux-aarch64.provenance.json",
"https://github.com/docker/compose/releases/download/v2.40.0/docker-compose-linux-aarch64.sbom.json",
"https://github.com/docker/compose/releases/download/v2.40.0/docker-compose-linux-aarch64.sha256",
"https://github.com/docker/compose/releases/download/v2.40.0/docker-compose-linux-armv6",
"https://github.com/docker/compose/releases/download/v2.40.0/docker-compose-linux-armv6.provenance.json",
"https://github.com/docker/compose/releases/download/v2.40.0/docker-compose-linux-armv6.sbom.json",
"https://github.com/docker/compose/releases/download/v2.40.0/docker-compose-linux-armv6.sha256",
"https://github.com/docker/compose/releases/download/v2.40.0/docker-compose-linux-armv7",
"https://github.com/docker/compose/releases/download/v2.40.0/docker-compose-linux-armv7.provenance.json",
"https://github.com/docker/compose/releases/download/v2.40.0/docker-compose-linux-armv7.sbom.json",
"https://github.com/docker/compose/releases/download/v2.40.0/docker-compose-linux-armv7.sha256",
"https://github.com/docker/compose/releases/download/v2.40.0/docker-compose-linux-ppc64le",
"https://github.com/docker/compose/releases/download/v2.40.0/docker-compose-linux-ppc64le.provenance.json",
"https://github.com/docker/compose/releases/download/v2.40.0/docker-compose-linux-ppc64le.sbom.json",
"https://github.com/docker/compose/releases/download/v2.40.0/docker-compose-linux-ppc64le.sha256",
"https://github.com/docker/compose/releases/download/v2.40.0/docker-compose-linux-riscv64",
"https://github.com/docker/compose/releases/download/v2.40.0/docker-compose-linux-riscv64.provenance.json",
"https://github.com/docker/compose/releases/download/v2.40.0/docker-compose-linux-riscv64.sbom.json",
"https://github.com/docker/compose/releases/download/v2.40.0/docker-compose-linux-riscv64.sha256",
"https://github.com/docker/compose/releases/download/v2.40.0/docker-compose-linux-s390x",
"https://github.com/docker/compose/releases/download/v2.40.0/docker-compose-linux-s390x.provenance.json",
"https://github.com/docker/compose/releases/download/v2.40.0/docker-compose-linux-s390x.sbom.json",
"https://github.com/docker/compose/releases/download/v2.40.0/docker-compose-linux-s390x.sha256",
"https://github.com/docker/compose/releases/download/v2.40.0/docker-compose-linux-x86_64",
"https://github.com/docker/compose/releases/download/v2.40.0/docker-compose-linux-x86_64.provenance.json",
"https://github.com/docker/compose/releases/download/v2.40.0/docker-compose-linux-x86_64.sbom.json",
"https://github.com/docker/compose/releases/download/v2.40.0/docker-compose-linux-x86_64.sha256",
"https://github.com/docker/compose/releases/download/v2.40.0/docker-compose-windows-aarch64.exe",
"https://github.com/docker/compose/releases/download/v2.40.0/docker-compose-windows-aarch64.exe.sha256",
"https://github.com/docker/compose/releases/download/v2.40.0/docker-compose-windows-aarch64.provenance.json",
"https://github.com/docker/compose/releases/download/v2.40.0/docker-compose-windows-aarch64.sbom.json",
"https://github.com/docker/compose/releases/download/v2.40.0/docker-compose-windows-x86_64.exe",
"https://github.com/docker/compose/releases/download/v2.40.0/docker-compose-windows-x86_64.exe.sha256",
"https://github.com/docker/compose/releases/download/v2.40.0/docker-compose-windows-x86_64.provenance.json",
"https://github.com/docker/compose/releases/download/v2.40.0/docker-compose-windows-x86_64.sbom.json"
]
},
"v2.24.0-birthday.10": {
"id": 133417636,
"tag_name": "v2.24.0-birthday.10",

7126
.github/cosign-releases.json vendored Normal file

File diff suppressed because it is too large Load Diff

View File

@@ -1,23 +1,29 @@
version: 2
updates:
- package-ecosystem: "github-actions"
open-pull-requests-limit: 20
directory: "/"
schedule:
interval: "daily"
groups:
crazy-max-dot-github:
patterns:
- "crazy-max/.github/*"
cooldown:
default-days: 2
labels:
- "dependencies"
- "bot"
- package-ecosystem: "npm"
open-pull-requests-limit: 20
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,14 +1,164 @@
{
"latest": {
"id": 252833798,
"tag_name": "v28.5.1",
"html_url": "https://github.com/moby/moby/releases/tag/v28.5.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": 252020476,
"tag_name": "docker-v29.0.0-rc.1",
"html_url": "https://github.com/moby/moby/releases/tag/docker-v29.0.0-rc.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-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": {
"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": {
"id": 265770897,
"tag_name": "docker-v29.1.0",
"html_url": "https://github.com/moby/moby/releases/tag/docker-v29.1.0",
"assets": []
},
"v29.0.4": {
"id": 264940208,
"tag_name": "docker-v29.0.4",
"html_url": "https://github.com/moby/moby/releases/tag/docker-v29.0.4",
"assets": []
},
"v29.0.3": {
"id": 264058657,
"tag_name": "docker-v29.0.3",
"html_url": "https://github.com/moby/moby/releases/tag/docker-v29.0.3",
"assets": []
},
"v29.0.2": {
"id": 262951416,
"tag_name": "docker-v29.0.2",
"html_url": "https://github.com/moby/moby/releases/tag/docker-v29.0.2",
"assets": []
},
"v29.1.0-rc.1": {
"id": 263125085,
"tag_name": "docker-v29.1.0-rc.1",
"html_url": "https://github.com/moby/moby/releases/tag/docker-v29.1.0-rc.1",
"assets": []
},
"v29.0.1": {
"id": 262245944,
"tag_name": "docker-v29.0.1",
"html_url": "https://github.com/moby/moby/releases/tag/docker-v29.0.1",
"assets": []
},
"v29.0.0": {
"id": 261265152,
"tag_name": "docker-v29.0.0",
"html_url": "https://github.com/moby/moby/releases/tag/docker-v29.0.0",
"assets": []
},
"v29.0.0-rc.3": {
"id": 260452080,
"tag_name": "docker-v29.0.0-rc.3",
"html_url": "https://github.com/moby/moby/releases/tag/docker-v29.0.0-rc.3",
"assets": []
},
"v28.5.2": {
"id": 259852183,
"tag_name": "v28.5.2",
"html_url": "https://github.com/moby/moby/releases/tag/v28.5.2",
"assets": []
},
"v29.0.0-rc.2": {
"id": 258289954,
"tag_name": "docker-v29.0.0-rc.2",
"html_url": "https://github.com/moby/moby/releases/tag/docker-v29.0.0-rc.2",
"assets": []
},
"v29.0.0-rc.1": {

View File

@@ -1,31 +1,206 @@
{
"latest": {
"id": 243486094,
"tag_name": "v0.9.2",
"html_url": "https://github.com/regclient/regclient/releases/tag/v0.9.2",
"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.9.2/metadata.tgz",
"https://github.com/regclient/regclient/releases/download/v0.9.2/regbot-darwin-amd64",
"https://github.com/regclient/regclient/releases/download/v0.9.2/regbot-darwin-arm64",
"https://github.com/regclient/regclient/releases/download/v0.9.2/regbot-linux-amd64",
"https://github.com/regclient/regclient/releases/download/v0.9.2/regbot-linux-arm64",
"https://github.com/regclient/regclient/releases/download/v0.9.2/regbot-linux-ppc64le",
"https://github.com/regclient/regclient/releases/download/v0.9.2/regbot-linux-s390x",
"https://github.com/regclient/regclient/releases/download/v0.9.2/regbot-windows-amd64.exe",
"https://github.com/regclient/regclient/releases/download/v0.9.2/regctl-darwin-amd64",
"https://github.com/regclient/regclient/releases/download/v0.9.2/regctl-darwin-arm64",
"https://github.com/regclient/regclient/releases/download/v0.9.2/regctl-linux-amd64",
"https://github.com/regclient/regclient/releases/download/v0.9.2/regctl-linux-arm64",
"https://github.com/regclient/regclient/releases/download/v0.9.2/regctl-linux-ppc64le",
"https://github.com/regclient/regclient/releases/download/v0.9.2/regctl-linux-s390x",
"https://github.com/regclient/regclient/releases/download/v0.9.2/regctl-windows-amd64.exe",
"https://github.com/regclient/regclient/releases/download/v0.9.2/regsync-darwin-amd64",
"https://github.com/regclient/regclient/releases/download/v0.9.2/regsync-darwin-arm64",
"https://github.com/regclient/regclient/releases/download/v0.9.2/regsync-linux-amd64",
"https://github.com/regclient/regclient/releases/download/v0.9.2/regsync-linux-arm64",
"https://github.com/regclient/regclient/releases/download/v0.9.2/regsync-linux-ppc64le",
"https://github.com/regclient/regclient/releases/download/v0.9.2/regsync-linux-s390x",
"https://github.com/regclient/regclient/releases/download/v0.9.2/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": {
"id": 266508831,
"tag_name": "v0.11.0",
"html_url": "https://github.com/regclient/regclient/releases/tag/v0.11.0",
"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"
]
},
"v0.10.0": {
"id": 260956263,
"tag_name": "v0.10.0",
"html_url": "https://github.com/regclient/regclient/releases/tag/v0.10.0",
"assets": [
"https://github.com/regclient/regclient/releases/download/v0.10.0/metadata.tgz",
"https://github.com/regclient/regclient/releases/download/v0.10.0/regbot-darwin-amd64",
"https://github.com/regclient/regclient/releases/download/v0.10.0/regbot-darwin-arm64",
"https://github.com/regclient/regclient/releases/download/v0.10.0/regbot-linux-amd64",
"https://github.com/regclient/regclient/releases/download/v0.10.0/regbot-linux-arm64",
"https://github.com/regclient/regclient/releases/download/v0.10.0/regbot-linux-ppc64le",
"https://github.com/regclient/regclient/releases/download/v0.10.0/regbot-linux-s390x",
"https://github.com/regclient/regclient/releases/download/v0.10.0/regbot-windows-amd64.exe",
"https://github.com/regclient/regclient/releases/download/v0.10.0/regctl-darwin-amd64",
"https://github.com/regclient/regclient/releases/download/v0.10.0/regctl-darwin-arm64",
"https://github.com/regclient/regclient/releases/download/v0.10.0/regctl-linux-amd64",
"https://github.com/regclient/regclient/releases/download/v0.10.0/regctl-linux-arm64",
"https://github.com/regclient/regclient/releases/download/v0.10.0/regctl-linux-ppc64le",
"https://github.com/regclient/regclient/releases/download/v0.10.0/regctl-linux-s390x",
"https://github.com/regclient/regclient/releases/download/v0.10.0/regctl-windows-amd64.exe",
"https://github.com/regclient/regclient/releases/download/v0.10.0/regsync-darwin-amd64",
"https://github.com/regclient/regclient/releases/download/v0.10.0/regsync-darwin-arm64",
"https://github.com/regclient/regclient/releases/download/v0.10.0/regsync-linux-amd64",
"https://github.com/regclient/regclient/releases/download/v0.10.0/regsync-linux-arm64",
"https://github.com/regclient/regclient/releases/download/v0.10.0/regsync-linux-ppc64le",
"https://github.com/regclient/regclient/releases/download/v0.10.0/regsync-linux-s390x",
"https://github.com/regclient/regclient/releases/download/v0.10.0/regsync-windows-amd64.exe"
]
},
"v0.9.2": {

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@9791b02439e3c95de89d128a625169ceee56dc55
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@v5
uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
-
name: Download
uses: actions/download-artifact@v5
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@271a8d0340265f705b14b6d32b9829c1cb33d45e # v7.0.8
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@9791b02439e3c95de89d128a625169ceee56dc55
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@v5
uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
-
name: Download
uses: actions/download-artifact@v5
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@271a8d0340265f705b14b6d32b9829c1cb33d45e # v7.0.8
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@v5
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@9791b02439e3c95de89d128a625169ceee56dc55
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@v5
uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
-
name: Download
uses: actions/download-artifact@v5
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@271a8d0340265f705b14b6d32b9829c1cb33d45e # v7.0.8
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@9791b02439e3c95de89d128a625169ceee56dc55
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@v5
uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
-
name: Download
uses: actions/download-artifact@v5
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@271a8d0340265f705b14b6d32b9829c1cb33d45e # v7.0.8
uses: peter-evans/create-pull-request@5f6978faf089d4d20b00c7766989d076bb2fc7f1 # v8.1.1
with:
base: main
branch: bot/compose-releases-json

View File

@@ -0,0 +1,63 @@
name: cosign-releases-json
concurrency:
group: ${{ github.workflow }}-${{ github.ref }}
cancel-in-progress: true
permissions:
contents: read
on:
workflow_dispatch:
schedule:
- cron: '0 */12 * * *'
push:
branches:
- 'main'
pull_request:
paths:
- '.github/workflows/cosign-releases-json.yml'
jobs:
generate:
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
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@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
-
name: Download
uses: actions/download-artifact@3e5f45b2cfb9172054b4087a40e8e0b5a5461e7c # v8.0.1
with:
name: cosign-releases-json
path: .github
-
name: Commit changes
run: |
git add -A .
-
name: Create PR
uses: peter-evans/create-pull-request@5f6978faf089d4d20b00c7766989d076bb2fc7f1 # v8.1.1
with:
base: main
branch: bot/cosign-releases-json
commit-message: "github: update .github/cosign-releases.json"
signoff: true
delete-branch: true
title: "Update `.github/cosign-releases.json`"
body: |
Update `.github/cosign-releases.json` to keep in sync with [https://github.com/sigstore/cosign](https://github.com/sigstore/cosign).
draft: false

View File

@@ -4,6 +4,9 @@ concurrency:
group: ${{ github.workflow }}-${{ github.ref }}
cancel-in-progress: true
permissions:
contents: read
on:
workflow_dispatch:
schedule:
@@ -17,26 +20,30 @@ on:
jobs:
generate:
uses: crazy-max/.github/.github/workflows/releases-json.yml@9791b02439e3c95de89d128a625169ceee56dc55
uses: crazy-max/.github/.github/workflows/releases-json.yml@64a0bfaf6e6bb1c448d6e4c42b11034ee7094f16 # v1.7.1
with:
repository: moby/moby
artifact_name: docker-releases-json
filename: docker-releases.json
tag_pattern: '^docker-(.*)$'
secrets: inherit
tag_patterns: |
^docker-(.*)$
^(v.*)$
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@v5
uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
-
name: Download
uses: actions/download-artifact@v5
uses: actions/download-artifact@3e5f45b2cfb9172054b4087a40e8e0b5a5461e7c # v8.0.1
with:
name: docker-releases-json
path: .github
@@ -46,7 +53,7 @@ jobs:
git add -A .
-
name: Create PR
uses: peter-evans/create-pull-request@271a8d0340265f705b14b6d32b9829c1cb33d45e # v7.0.8
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@9791b02439e3c95de89d128a625169ceee56dc55
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@v5
uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
-
name: Download
uses: actions/download-artifact@v5
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@271a8d0340265f705b14b6d32b9829c1cb33d45e # v7.0.8
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.25.0"
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@v5
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@v5
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-13', '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') {
@@ -146,18 +149,22 @@ jobs:
fail-fast: false
matrix:
include: ${{ fromJson(needs.prepare-itg.outputs.includes) }}
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@v5
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
@@ -168,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
@@ -183,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 }}
@@ -193,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 }}`;
@@ -201,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 }}
@@ -221,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@9791b02439e3c95de89d128a625169ceee56dc55
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@v5
uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
-
name: Download
uses: actions/download-artifact@v5
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@271a8d0340265f705b14b6d32b9829c1cb33d45e # v7.0.8
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@v5
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();

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

@@ -0,0 +1,96 @@
2025/10/31 13:57:03 --> GET https://index.docker.io/v2/
2025/10/31 13:57:03 GET /v2/ HTTP/1.1
Host: index.docker.io
User-Agent: cosign/v3.0.2 (linux; amd64) go-containerregistry/v0.20.6
Accept-Encoding: gzip
2025/10/31 13:57:03 <-- 401 https://index.docker.io/v2/ (191.948348ms)
2025/10/31 13:57:03 HTTP/2.0 401 Unauthorized
Content-Length: 87
Content-Type: application/json
Date: Fri, 31 Oct 2025 13:57:03 GMT
Docker-Distribution-Api-Version: registry/2.0
Strict-Transport-Security: max-age=31536000
Www-Authenticate: ***"https://auth.docker.io/token",service="registry.docker.io"
{"errors":[{"code":"UNAUTHORIZED","message":"authentication required","detail":null}]}
2025/10/31 13:57:03 --> GET https://auth.docker.io/token?scope=repository%3Acrazymax%2Fgithub-builder-test%3Apull&service=registry.docker.io [body redacted: basic token response contains credentials]
2025/10/31 13:57:03 GET /token?scope=repository%3Acrazymax%2Fgithub-builder-test%3Apull&service=registry.docker.io HTTP/1.1
Host: auth.docker.io
User-Agent: cosign/v3.0.2 (linux; amd64) go-containerregistry/v0.20.6
Authorization: <redacted>
Accept-Encoding: gzip
2025/10/31 13:57:03 <-- 200 https://auth.docker.io/token?scope=repository%3Acrazymax%2Fgithub-builder-test%3Apull&service=registry.docker.io (180.01561ms) [body redacted: basic token response contains credentials]
2025/10/31 13:57:03 HTTP/2.0 200 OK
Connection: close
Content-Type: application/json
Date: Fri, 31 Oct 2025 13:57:03 GMT
Strict-Transport-Security: max-age=31536000
X-Trace-Id: 8d63fbce36baf5f2a0c5f2542efa7a7a
X-Trace-Sampled: false
2025/10/31 13:57:03 --> GET https://index.docker.io/v2/crazymax/github-builder-test/referrers/sha256:6cc021c733ae2760b2493f449d9885b1606002962b51a9c4f0d0d1568b6dc5c0
2025/10/31 13:57:03 GET /v2/crazymax/github-builder-test/referrers/sha256:6cc021c733ae2760b2493f449d9885b1606002962b51a9c4f0d0d1568b6dc5c0 HTTP/1.1
Host: index.docker.io
User-Agent: cosign/v3.0.2 (linux; amd64) go-containerregistry/v0.20.6
Accept: application/vnd.oci.image.index.v1+json
Authorization: <redacted>
Accept-Encoding: gzip
2025/10/31 13:57:03 <-- 200 https://index.docker.io/v2/crazymax/github-builder-test/referrers/sha256:6cc021c733ae2760b2493f449d9885b1606002962b51a9c4f0d0d1568b6dc5c0 (84.160823ms)
2025/10/31 13:57:03 HTTP/2.0 200 OK
Content-Length: 89
Content-Type: application/vnd.oci.image.index.v1+json
Date: Fri, 31 Oct 2025 13:57:03 GMT
Docker-Distribution-Api-Version: registry/2.0
Strict-Transport-Security: max-age=31536000
{"schemaVersion":2,"mediaType":"application/vnd.oci.image.index.v1+json","manifests":[]}
2025/10/31 13:57:03 --> GET https://index.docker.io/v2/crazymax/github-builder-test/referrers/sha256:6cc021c733ae2760b2493f449d9885b1606002962b51a9c4f0d0d1568b6dc5c0
2025/10/31 13:57:03 GET /v2/crazymax/github-builder-test/referrers/sha256:6cc021c733ae2760b2493f449d9885b1606002962b51a9c4f0d0d1568b6dc5c0 HTTP/1.1
Host: index.docker.io
User-Agent: cosign/v3.0.2 (linux; amd64) go-containerregistry/v0.20.6
Accept: application/vnd.oci.image.index.v1+json
Authorization: <redacted>
Accept-Encoding: gzip
2025/10/31 13:57:03 <-- 200 https://index.docker.io/v2/crazymax/github-builder-test/referrers/sha256:6cc021c733ae2760b2493f449d9885b1606002962b51a9c4f0d0d1568b6dc5c0 (95.303988ms)
2025/10/31 13:57:03 HTTP/2.0 200 OK
Content-Length: 89
Content-Type: application/vnd.oci.image.index.v1+json
Date: Fri, 31 Oct 2025 13:57:03 GMT
Docker-Distribution-Api-Version: registry/2.0
Strict-Transport-Security: max-age=31536000
{"schemaVersion":2,"mediaType":"application/vnd.oci.image.index.v1+json","manifests":[]}
2025/10/31 13:57:03 --> GET https://index.docker.io/v2/crazymax/github-builder-test/manifests/sha256-6cc021c733ae2760b2493f449d9885b1606002962b51a9c4f0d0d1568b6dc5c0.sig
2025/10/31 13:57:03 GET /v2/crazymax/github-builder-test/manifests/sha256-6cc021c733ae2760b2493f449d9885b1606002962b51a9c4f0d0d1568b6dc5c0.sig HTTP/1.1
Host: index.docker.io
User-Agent: cosign/v3.0.2 (linux; amd64) go-containerregistry/v0.20.6
Accept: application/vnd.docker.distribution.manifest.v1+json,application/vnd.docker.distribution.manifest.v1+prettyjws,application/vnd.docker.distribution.manifest.v2+json,application/vnd.oci.image.manifest.v1+json,application/vnd.docker.distribution.manifest.list.v2+json,application/vnd.oci.image.index.v1+json
Authorization: <redacted>
Accept-Encoding: gzip
2025/10/31 13:57:03 <-- 404 https://index.docker.io/v2/crazymax/github-builder-test/manifests/sha256-6cc021c733ae2760b2493f449d9885b1606002962b51a9c4f0d0d1568b6dc5c0.sig (66.155995ms)
2025/10/31 13:57:03 HTTP/2.0 404 Not Found
Content-Length: 169
Content-Type: application/json
Date: Fri, 31 Oct 2025 13:57:03 GMT
Docker-Distribution-Api-Version: registry/2.0
Docker-Ratelimit-Source: d2fd3209-1e2e-451f-b428-29c5bbf3b4b7
Strict-Transport-Security: max-age=31536000
{"errors":[{"code":"MANIFEST_UNKNOWN","message":"manifest unknown","detail":"unknown tag=sha256-6cc021c733ae2760b2493f449d9885b1606002962b51a9c4f0d0d1568b6dc5c0.sig"}]}
Error: no signatures found
error during command execution: no signatures found

View File

@@ -0,0 +1,5 @@
{
"mediaType": "application/vnd.oci.image.manifest.v1+json",
"digest": "sha256:dccc69dd895968c4f21aa9e43e715f25f0cedfce4b17f1014c88c307928e22fc",
"size": 1599
}

View File

@@ -0,0 +1,141 @@
{
"schemaVersion": 2,
"mediaType": "application/vnd.oci.image.index.v1+json",
"digest": "sha256:79cc6476ab1a3371c9afd8b44e7c55610057c43e18d9b39b68e2b0c2475cc1b6",
"size": 4654,
"manifests": [
{
"mediaType": "application/vnd.oci.image.manifest.v1+json",
"digest": "sha256:dccc69dd895968c4f21aa9e43e715f25f0cedfce4b17f1014c88c307928e22fc",
"size": 1599,
"platform": {
"architecture": "amd64",
"os": "linux"
}
},
{
"mediaType": "application/vnd.oci.image.manifest.v1+json",
"digest": "sha256:1b6bce668653f08e2d0f9f7c9b646675b2cbce94ce8abdf4eb0eabaef4353045",
"size": 1599,
"platform": {
"architecture": "arm",
"os": "linux",
"variant": "v7"
}
},
{
"mediaType": "application/vnd.oci.image.manifest.v1+json",
"digest": "sha256:8f251fda6057e9dffc54f7874b249920f15f1813e9b1406a0cebeca5e4ab1ad9",
"size": 1599,
"platform": {
"architecture": "arm64",
"os": "linux"
}
},
{
"mediaType": "application/vnd.oci.image.manifest.v1+json",
"digest": "sha256:d306cbc2d506547f136c8e0ea040b929743f298fb2813d9030efdb9d9eee4d51",
"size": 1599,
"platform": {
"architecture": "s390x",
"os": "linux"
}
},
{
"mediaType": "application/vnd.oci.image.manifest.v1+json",
"digest": "sha256:9d195ff2dc9ef347bb52ebb1c2a6e6587d4bd87019d2ea11df3e7046a3d19708",
"size": 1599,
"platform": {
"architecture": "ppc64le",
"os": "linux"
}
},
{
"mediaType": "application/vnd.oci.image.manifest.v1+json",
"digest": "sha256:72410c2c4529fca9339ebbcc8db2a1d5cb4d72d72c669f50b6d45d8a0f79fc22",
"size": 1599,
"platform": {
"architecture": "riscv64",
"os": "linux"
}
},
{
"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"
}
},
{
"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"
}
},
{
"mediaType": "application/vnd.oci.image.manifest.v1+json",
"digest": "sha256:241b7159129d53923c89708bcc052b3398086a826519896be2f025545916e43e",
"size": 1113,
"annotations": {
"vnd.docker.reference.digest": "sha256:8f251fda6057e9dffc54f7874b249920f15f1813e9b1406a0cebeca5e4ab1ad9",
"vnd.docker.reference.type": "attestation-manifest"
},
"platform": {
"architecture": "unknown",
"os": "unknown"
}
},
{
"mediaType": "application/vnd.oci.image.manifest.v1+json",
"digest": "sha256:97f4a222a7992dba6dc1a43991d0cca1fcffdc25593033c6a3a7ff14c8651cbf",
"size": 1113,
"annotations": {
"vnd.docker.reference.digest": "sha256:d306cbc2d506547f136c8e0ea040b929743f298fb2813d9030efdb9d9eee4d51",
"vnd.docker.reference.type": "attestation-manifest"
},
"platform": {
"architecture": "unknown",
"os": "unknown"
}
},
{
"mediaType": "application/vnd.oci.image.manifest.v1+json",
"digest": "sha256:aa933713d8094b2708120e889acb6f7153dee4e0f3298ccd3e37a584cd0c260d",
"size": 1113,
"annotations": {
"vnd.docker.reference.digest": "sha256:9d195ff2dc9ef347bb52ebb1c2a6e6587d4bd87019d2ea11df3e7046a3d19708",
"vnd.docker.reference.type": "attestation-manifest"
},
"platform": {
"architecture": "unknown",
"os": "unknown"
}
},
{
"mediaType": "application/vnd.oci.image.manifest.v1+json",
"digest": "sha256:d95ca72d4f2a6bc416d4b2f3003b2af9d5f4dea99acec6ad3ab0c2082000a98c",
"size": 1113,
"annotations": {
"vnd.docker.reference.digest": "sha256:72410c2c4529fca9339ebbcc8db2a1d5cb4d72d72c669f50b6d45d8a0f79fc22",
"vnd.docker.reference.type": "attestation-manifest"
},
"platform": {
"architecture": "unknown",
"os": "unknown"
}
}
]
}

View File

@@ -0,0 +1,80 @@
[
{
"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"
}
},
{
"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"
}
},
{
"mediaType":"application/vnd.oci.image.manifest.v1+json",
"digest":"sha256:241b7159129d53923c89708bcc052b3398086a826519896be2f025545916e43e",
"size":1113,
"annotations":{
"vnd.docker.reference.digest":"sha256:8f251fda6057e9dffc54f7874b249920f15f1813e9b1406a0cebeca5e4ab1ad9",
"vnd.docker.reference.type":"attestation-manifest"
},
"platform":{
"architecture":"unknown",
"os":"unknown"
}
},
{
"mediaType":"application/vnd.oci.image.manifest.v1+json",
"digest":"sha256:97f4a222a7992dba6dc1a43991d0cca1fcffdc25593033c6a3a7ff14c8651cbf",
"size":1113,
"annotations":{
"vnd.docker.reference.digest":"sha256:d306cbc2d506547f136c8e0ea040b929743f298fb2813d9030efdb9d9eee4d51",
"vnd.docker.reference.type":"attestation-manifest"
},
"platform":{
"architecture":"unknown",
"os":"unknown"
}
},
{
"mediaType":"application/vnd.oci.image.manifest.v1+json",
"digest":"sha256:aa933713d8094b2708120e889acb6f7153dee4e0f3298ccd3e37a584cd0c260d",
"size":1113,
"annotations":{
"vnd.docker.reference.digest":"sha256:9d195ff2dc9ef347bb52ebb1c2a6e6587d4bd87019d2ea11df3e7046a3d19708",
"vnd.docker.reference.type":"attestation-manifest"
},
"platform":{
"architecture":"unknown",
"os":"unknown"
}
},
{
"mediaType":"application/vnd.oci.image.manifest.v1+json",
"digest":"sha256:d95ca72d4f2a6bc416d4b2f3003b2af9d5f4dea99acec6ad3ab0c2082000a98c",
"size":1113,
"annotations":{
"vnd.docker.reference.digest":"sha256:72410c2c4529fca9339ebbcc8db2a1d5cb4d72d72c669f50b6d45d8a0f79fc22",
"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: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

@@ -0,0 +1 @@
Hello, World! This is linux/amd64

View File

@@ -0,0 +1,462 @@
{
"_type": "https://in-toto.io/Statement/v0.1",
"predicateType": "https://slsa.dev/provenance/v1",
"subject": [
{
"name": "hello.txt",
"digest": {
"sha256": "1b37929e66644beb58b3d28d44fba0d82aa90cab03c55a492adb81fe6e833ec8"
}
}
],
"predicate": {
"buildDefinition": {
"buildType": "https://github.com/moby/buildkit/blob/master/docs/attestations/slsa-definitions.md",
"resolvedDependencies": [
{
"uri": "pkg:docker/docker/buildkit-syft-scanner@stable-1",
"digest": {
"sha256": "e930c2697be77cb7271d316ecfa78768b5eac73de3b16018ed38eb0ea0b5a7cb"
}
},
{
"uri": "pkg:docker/alpine@latest?platform=linux%2Famd64",
"digest": {
"sha256": "4b7ce07002c69e8f3d704a9c5d6fd3053be500b7f1c69fc0d80990c2ad8dd412"
}
},
{
"uri": "https://github.com/docker/github-builder-test.git#bdb96fcfe8cc9e3a54800bc2537a4d4a14f0c5fe",
"digest": {
"sha1": "bdb96fcfe8cc9e3a54800bc2537a4d4a14f0c5fe"
}
}
],
"externalParameters": {
"configSource": {
"uri": "https://github.com/docker/github-builder-test.git#bdb96fcfe8cc9e3a54800bc2537a4d4a14f0c5fe",
"digest": {
"sha1": "bdb96fcfe8cc9e3a54800bc2537a4d4a14f0c5fe"
},
"path": "hello.Dockerfile"
},
"request": {
"frontend": "dockerfile.v0",
"secrets": [
{
"id": "GIT_AUTH_HEADER",
"optional": true
},
{
"id": "GIT_AUTH_TOKEN",
"optional": true
}
]
}
},
"internalParameters": {
"buildConfig": {
"digestMapping": {
"sha256:23dcbc3cce701a8a9bbb1e33f2ea88304527a4a935c89c4564af698095463ac2": "step3",
"sha256:3192c1bd53f90cca959db778dcee30edc9a79f8cd3f9a2c54adc4606507fd3b6": "step0",
"sha256:7f1c9e959980ea3e2cf4af8ef97b6c3797a0926752b436bff11474e436defe7f": "step1",
"sha256:c8737331fb8e5f5bcb6b22320012d975057514982c788e63db13332a4219b984": "step2"
},
"llbDefinition": [
{
"id": "step0",
"op": {
"Op": {
"source": {
"identifier": "docker-image://docker.io/library/alpine:latest@sha256:4b7ce07002c69e8f3d704a9c5d6fd3053be500b7f1c69fc0d80990c2ad8dd412"
}
},
"constraints": {},
"platform": {
"Architecture": "amd64",
"OS": "linux"
}
}
},
{
"id": "step1",
"inputs": [
"step0:0"
],
"op": {
"Op": {
"exec": {
"meta": {
"args": [
"/bin/sh",
"-c",
"echo \"Hello, World! This is ${TARGETPLATFORM}\" \u003e /hello.txt"
],
"cwd": "/",
"env": [
"PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin",
"TARGETPLATFORM=linux/amd64"
],
"removeMountStubsRecursive": true
},
"mounts": [
{
"dest": "/"
}
]
}
},
"constraints": {},
"platform": {
"Architecture": "amd64",
"OS": "linux"
}
}
},
{
"id": "step2",
"inputs": [
"step1:0"
],
"op": {
"Op": {
"file": {
"actions": [
{
"Action": {
"copy": {
"allowEmptyWildcard": true,
"allowWildcard": true,
"createDestPath": true,
"dest": "/",
"dirCopyContents": true,
"followSymlink": true,
"mode": -1,
"src": "/hello.txt",
"timestamp": -1
}
},
"input": -1,
"output": 0,
"secondaryInput": 0
}
]
}
},
"constraints": {}
}
},
{
"id": "step3",
"inputs": [
"step2:0"
],
"op": {
"Op": {}
}
}
]
},
"builderPlatform": "linux/amd64",
"github_actor": "crazy-max",
"github_actor_id": "1951866",
"github_event_name": "workflow_dispatch",
"github_event_payload": {
"enterprise": {
"avatar_url": "https://avatars.githubusercontent.com/b/19176?v=4",
"created_at": "2022-12-30T23:53:17Z",
"description": null,
"html_url": "https://github.com/enterprises/docker",
"id": 19176,
"name": "Docker",
"node_id": "E_kgDNSug",
"slug": "docker",
"updated_at": "2025-10-20T20:39:05Z",
"website_url": null
},
"inputs": null,
"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"
},
"ref": "refs/heads/main",
"repository": {
"allow_forking": true,
"archive_url": "https://api.github.com/repos/docker/github-builder-test/{archive_format}{/ref}",
"archived": false,
"assignees_url": "https://api.github.com/repos/docker/github-builder-test/assignees{/user}",
"blobs_url": "https://api.github.com/repos/docker/github-builder-test/git/blobs{/sha}",
"branches_url": "https://api.github.com/repos/docker/github-builder-test/branches{/branch}",
"clone_url": "https://github.com/docker/github-builder-test.git",
"collaborators_url": "https://api.github.com/repos/docker/github-builder-test/collaborators{/collaborator}",
"comments_url": "https://api.github.com/repos/docker/github-builder-test/comments{/number}",
"commits_url": "https://api.github.com/repos/docker/github-builder-test/commits{/sha}",
"compare_url": "https://api.github.com/repos/docker/github-builder-test/compare/{base}...{head}",
"contents_url": "https://api.github.com/repos/docker/github-builder-test/contents/{+path}",
"contributors_url": "https://api.github.com/repos/docker/github-builder-test/contributors",
"created_at": "2025-08-19T08:08:29Z",
"custom_properties": {},
"default_branch": "main",
"deployments_url": "https://api.github.com/repos/docker/github-builder-test/deployments",
"description": "Test repo for https://github.com/docker/github-builder-experimental",
"disabled": false,
"downloads_url": "https://api.github.com/repos/docker/github-builder-test/downloads",
"events_url": "https://api.github.com/repos/docker/github-builder-test/events",
"fork": false,
"forks": 0,
"forks_count": 0,
"forks_url": "https://api.github.com/repos/docker/github-builder-test/forks",
"full_name": "docker/github-builder-test",
"git_commits_url": "https://api.github.com/repos/docker/github-builder-test/git/commits{/sha}",
"git_refs_url": "https://api.github.com/repos/docker/github-builder-test/git/refs{/sha}",
"git_tags_url": "https://api.github.com/repos/docker/github-builder-test/git/tags{/sha}",
"git_url": "git://github.com/docker/github-builder-test.git",
"has_discussions": false,
"has_downloads": true,
"has_issues": false,
"has_pages": false,
"has_projects": false,
"has_wiki": false,
"homepage": null,
"hooks_url": "https://api.github.com/repos/docker/github-builder-test/hooks",
"html_url": "https://github.com/docker/github-builder-test",
"id": 1040594287,
"is_template": false,
"issue_comment_url": "https://api.github.com/repos/docker/github-builder-test/issues/comments{/number}",
"issue_events_url": "https://api.github.com/repos/docker/github-builder-test/issues/events{/number}",
"issues_url": "https://api.github.com/repos/docker/github-builder-test/issues{/number}",
"keys_url": "https://api.github.com/repos/docker/github-builder-test/keys{/key_id}",
"labels_url": "https://api.github.com/repos/docker/github-builder-test/labels{/name}",
"language": "Dockerfile",
"languages_url": "https://api.github.com/repos/docker/github-builder-test/languages",
"license": null,
"merges_url": "https://api.github.com/repos/docker/github-builder-test/merges",
"milestones_url": "https://api.github.com/repos/docker/github-builder-test/milestones{/number}",
"mirror_url": null,
"name": "github-builder-test",
"node_id": "R_kgDOPgY1bw",
"notifications_url": "https://api.github.com/repos/docker/github-builder-test/notifications{?since,all,participating}",
"open_issues": 0,
"open_issues_count": 0,
"owner": {
"avatar_url": "https://avatars.githubusercontent.com/u/5429470?v=4",
"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",
"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",
"user_view_type": "public"
},
"private": true,
"pulls_url": "https://api.github.com/repos/docker/github-builder-test/pulls{/number}",
"pushed_at": "2025-10-30T10:04:10Z",
"releases_url": "https://api.github.com/repos/docker/github-builder-test/releases{/id}",
"size": 25,
"ssh_url": "git@github.com:docker/github-builder-test.git",
"stargazers_count": 0,
"stargazers_url": "https://api.github.com/repos/docker/github-builder-test/stargazers",
"statuses_url": "https://api.github.com/repos/docker/github-builder-test/statuses/{sha}",
"subscribers_url": "https://api.github.com/repos/docker/github-builder-test/subscribers",
"subscription_url": "https://api.github.com/repos/docker/github-builder-test/subscription",
"svn_url": "https://github.com/docker/github-builder-test",
"tags_url": "https://api.github.com/repos/docker/github-builder-test/tags",
"teams_url": "https://api.github.com/repos/docker/github-builder-test/teams",
"topics": [],
"trees_url": "https://api.github.com/repos/docker/github-builder-test/git/trees{/sha}",
"updated_at": "2025-10-30T10:04:14Z",
"url": "https://api.github.com/repos/docker/github-builder-test",
"visibility": "internal",
"watchers": 0,
"watchers_count": 0,
"web_commit_signoff_required": false
},
"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",
"user_view_type": "public"
},
"workflow": ".github/workflows/ci.yml"
},
"github_job": "build",
"github_ref": "refs/heads/main",
"github_ref_name": "main",
"github_ref_protected": "false",
"github_ref_type": "branch",
"github_repository": "docker/github-builder-test",
"github_repository_id": "1040594287",
"github_repository_owner": "docker",
"github_repository_owner_id": "5429470",
"github_run_attempt": "1",
"github_run_id": "18937328894",
"github_run_number": "183",
"github_runner_arch": "X64",
"github_runner_environment": "github-hosted",
"github_runner_image_os": "ubuntu24",
"github_runner_image_version": "20250929.60.1",
"github_runner_name": "GitHub Actions 1002376925",
"github_runner_os": "Linux",
"github_runner_tracking_id": "github_7c0a7521-2999-41e5-af30-b7f0681f204f",
"github_server_url": "https://github.com",
"github_triggering_actor": "crazy-max",
"github_workflow": "ci",
"github_workflow_ref": "docker/github-builder-test/.github/workflows/ci.yml@refs/heads/main",
"github_workflow_sha": "bdb96fcfe8cc9e3a54800bc2537a4d4a14f0c5fe"
}
},
"runDetails": {
"builder": {
"id": "https://github.com/docker/github-builder-test/actions/runs/18937328894/attempts/1"
},
"metadata": {
"invocationID": "7qg2yuux3iklv02ktbmbtwgeb",
"startedOn": "2025-10-30T10:19:52.868710505Z",
"finishedOn": "2025-10-30T10:19:57.635810119Z",
"buildkit_metadata": {
"source": {
"locations": {
"step0": {
"locations": [
{
"ranges": [
{
"start": {
"line": 1
},
"end": {
"line": 1
}
}
]
}
]
},
"step1": {
"locations": [
{
"ranges": [
{
"start": {
"line": 3
},
"end": {
"line": 3
}
}
]
}
]
},
"step2": {
"locations": [
{
"ranges": [
{
"start": {
"line": 7
},
"end": {
"line": 7
}
}
]
}
]
}
},
"infos": [
{
"filename": "hello.Dockerfile",
"language": "Dockerfile",
"data": "RlJPTSBhbHBpbmUgQVMgYmFzZQpBUkcgVEFSR0VUUExBVEZPUk0KUlVOIGVjaG8gIkhlbGxvLCBXb3JsZCEgVGhpcyBpcyAke1RBUkdFVFBMQVRGT1JNfSIgPiAvaGVsbG8udHh0CkFSRyBCVUlMREtJVF9TQk9NX1NDQU5fU1RBR0U9dHJ1ZQoKRlJPTSBzY3JhdGNoCkNPUFkgLS1mcm9tPWJhc2UgL2hlbGxvLnR4dCAvCg==",
"llbDefinition": [
{
"id": "step0",
"op": {
"Op": {
"source": {
"identifier": "git://github.com/docker/github-builder-test.git#bdb96fcfe8cc9e3a54800bc2537a4d4a14f0c5fe",
"attrs": {
"git.authheadersecret": "GIT_AUTH_HEADER",
"git.authtokensecret": "GIT_AUTH_TOKEN",
"git.fullurl": "https://github.com/docker/github-builder-test.git"
}
}
},
"constraints": {}
}
},
{
"id": "step1",
"op": {
"Op": {}
},
"inputs": [
"step0:0"
]
}
],
"digestMapping": {
"sha256:47540f0959d81a7ff2fc9742b9ef0bb37d7eca99c13aa6df83b883d06e808ef2": "step0",
"sha256:96933c546ff00debd500304305864192fcb51d348e8c41b6a6e1569a051e66ed": "step1"
}
}
]
},
"layers": {
"step0:0": [
[
{
"mediaType": "application/vnd.oci.image.layer.v1.tar+gzip",
"digest": "sha256:2d35ebdb57d9971fea0cac1582aa78935adf8058b2cc32db163c98822e5dfa1b",
"size": 3802452
}
]
]
}
},
"buildkit_completeness": {
"request": true,
"resolvedDependencies": true
}
}
}
}
}

View File

@@ -0,0 +1 @@
Hello, World! This is linux/arm64

View File

@@ -0,0 +1,462 @@
{
"_type": "https://in-toto.io/Statement/v0.1",
"predicateType": "https://slsa.dev/provenance/v1",
"subject": [
{
"name": "hello.txt",
"digest": {
"sha256": "870e0065e68cbdeacbf9cec21b598bb579b0ef55bc48b65b71509667edb570bd"
}
}
],
"predicate": {
"buildDefinition": {
"buildType": "https://github.com/moby/buildkit/blob/master/docs/attestations/slsa-definitions.md",
"resolvedDependencies": [
{
"uri": "pkg:docker/docker/buildkit-syft-scanner@stable-1",
"digest": {
"sha256": "e930c2697be77cb7271d316ecfa78768b5eac73de3b16018ed38eb0ea0b5a7cb"
}
},
{
"uri": "pkg:docker/alpine@latest?platform=linux%2Farm64",
"digest": {
"sha256": "4b7ce07002c69e8f3d704a9c5d6fd3053be500b7f1c69fc0d80990c2ad8dd412"
}
},
{
"uri": "https://github.com/docker/github-builder-test.git#bdb96fcfe8cc9e3a54800bc2537a4d4a14f0c5fe",
"digest": {
"sha1": "bdb96fcfe8cc9e3a54800bc2537a4d4a14f0c5fe"
}
}
],
"externalParameters": {
"configSource": {
"uri": "https://github.com/docker/github-builder-test.git#bdb96fcfe8cc9e3a54800bc2537a4d4a14f0c5fe",
"digest": {
"sha1": "bdb96fcfe8cc9e3a54800bc2537a4d4a14f0c5fe"
},
"path": "hello.Dockerfile"
},
"request": {
"frontend": "dockerfile.v0",
"secrets": [
{
"id": "GIT_AUTH_HEADER",
"optional": true
},
{
"id": "GIT_AUTH_TOKEN",
"optional": true
}
]
}
},
"internalParameters": {
"buildConfig": {
"digestMapping": {
"sha256:69f88b22af1cbbe236f4b5d834dfe9c4adb9535c1c602f726fd90212c302a7da": "step0",
"sha256:98c0e3a8b1a38f5aa8db558b99aace8e7645a18b0e24d6807018146d21788ae2": "step2",
"sha256:a560219f1e0cfb232a9727b9bbf9d6735c0b2190f8e00364f844cfc82bd42479": "step1",
"sha256:c7edeef726371083a69f15a3565d6c62be55a91e820f251d9a965f8e36fe3e32": "step3"
},
"llbDefinition": [
{
"id": "step0",
"op": {
"Op": {
"source": {
"identifier": "docker-image://docker.io/library/alpine:latest@sha256:4b7ce07002c69e8f3d704a9c5d6fd3053be500b7f1c69fc0d80990c2ad8dd412"
}
},
"constraints": {},
"platform": {
"Architecture": "arm64",
"OS": "linux"
}
}
},
{
"id": "step1",
"inputs": [
"step0:0"
],
"op": {
"Op": {
"exec": {
"meta": {
"args": [
"/bin/sh",
"-c",
"echo \"Hello, World! This is ${TARGETPLATFORM}\" \u003e /hello.txt"
],
"cwd": "/",
"env": [
"PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin",
"TARGETPLATFORM=linux/arm64"
],
"removeMountStubsRecursive": true
},
"mounts": [
{
"dest": "/"
}
]
}
},
"constraints": {},
"platform": {
"Architecture": "arm64",
"OS": "linux"
}
}
},
{
"id": "step2",
"inputs": [
"step1:0"
],
"op": {
"Op": {
"file": {
"actions": [
{
"Action": {
"copy": {
"allowEmptyWildcard": true,
"allowWildcard": true,
"createDestPath": true,
"dest": "/",
"dirCopyContents": true,
"followSymlink": true,
"mode": -1,
"src": "/hello.txt",
"timestamp": -1
}
},
"input": -1,
"output": 0,
"secondaryInput": 0
}
]
}
},
"constraints": {}
}
},
{
"id": "step3",
"inputs": [
"step2:0"
],
"op": {
"Op": {}
}
}
]
},
"builderPlatform": "linux/amd64",
"github_actor": "crazy-max",
"github_actor_id": "1951866",
"github_event_name": "workflow_dispatch",
"github_event_payload": {
"enterprise": {
"avatar_url": "https://avatars.githubusercontent.com/b/19176?v=4",
"created_at": "2022-12-30T23:53:17Z",
"description": null,
"html_url": "https://github.com/enterprises/docker",
"id": 19176,
"name": "Docker",
"node_id": "E_kgDNSug",
"slug": "docker",
"updated_at": "2025-10-20T20:39:05Z",
"website_url": null
},
"inputs": null,
"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"
},
"ref": "refs/heads/main",
"repository": {
"allow_forking": true,
"archive_url": "https://api.github.com/repos/docker/github-builder-test/{archive_format}{/ref}",
"archived": false,
"assignees_url": "https://api.github.com/repos/docker/github-builder-test/assignees{/user}",
"blobs_url": "https://api.github.com/repos/docker/github-builder-test/git/blobs{/sha}",
"branches_url": "https://api.github.com/repos/docker/github-builder-test/branches{/branch}",
"clone_url": "https://github.com/docker/github-builder-test.git",
"collaborators_url": "https://api.github.com/repos/docker/github-builder-test/collaborators{/collaborator}",
"comments_url": "https://api.github.com/repos/docker/github-builder-test/comments{/number}",
"commits_url": "https://api.github.com/repos/docker/github-builder-test/commits{/sha}",
"compare_url": "https://api.github.com/repos/docker/github-builder-test/compare/{base}...{head}",
"contents_url": "https://api.github.com/repos/docker/github-builder-test/contents/{+path}",
"contributors_url": "https://api.github.com/repos/docker/github-builder-test/contributors",
"created_at": "2025-08-19T08:08:29Z",
"custom_properties": {},
"default_branch": "main",
"deployments_url": "https://api.github.com/repos/docker/github-builder-test/deployments",
"description": "Test repo for https://github.com/docker/github-builder-experimental",
"disabled": false,
"downloads_url": "https://api.github.com/repos/docker/github-builder-test/downloads",
"events_url": "https://api.github.com/repos/docker/github-builder-test/events",
"fork": false,
"forks": 0,
"forks_count": 0,
"forks_url": "https://api.github.com/repos/docker/github-builder-test/forks",
"full_name": "docker/github-builder-test",
"git_commits_url": "https://api.github.com/repos/docker/github-builder-test/git/commits{/sha}",
"git_refs_url": "https://api.github.com/repos/docker/github-builder-test/git/refs{/sha}",
"git_tags_url": "https://api.github.com/repos/docker/github-builder-test/git/tags{/sha}",
"git_url": "git://github.com/docker/github-builder-test.git",
"has_discussions": false,
"has_downloads": true,
"has_issues": false,
"has_pages": false,
"has_projects": false,
"has_wiki": false,
"homepage": null,
"hooks_url": "https://api.github.com/repos/docker/github-builder-test/hooks",
"html_url": "https://github.com/docker/github-builder-test",
"id": 1040594287,
"is_template": false,
"issue_comment_url": "https://api.github.com/repos/docker/github-builder-test/issues/comments{/number}",
"issue_events_url": "https://api.github.com/repos/docker/github-builder-test/issues/events{/number}",
"issues_url": "https://api.github.com/repos/docker/github-builder-test/issues{/number}",
"keys_url": "https://api.github.com/repos/docker/github-builder-test/keys{/key_id}",
"labels_url": "https://api.github.com/repos/docker/github-builder-test/labels{/name}",
"language": "Dockerfile",
"languages_url": "https://api.github.com/repos/docker/github-builder-test/languages",
"license": null,
"merges_url": "https://api.github.com/repos/docker/github-builder-test/merges",
"milestones_url": "https://api.github.com/repos/docker/github-builder-test/milestones{/number}",
"mirror_url": null,
"name": "github-builder-test",
"node_id": "R_kgDOPgY1bw",
"notifications_url": "https://api.github.com/repos/docker/github-builder-test/notifications{?since,all,participating}",
"open_issues": 0,
"open_issues_count": 0,
"owner": {
"avatar_url": "https://avatars.githubusercontent.com/u/5429470?v=4",
"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",
"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",
"user_view_type": "public"
},
"private": true,
"pulls_url": "https://api.github.com/repos/docker/github-builder-test/pulls{/number}",
"pushed_at": "2025-10-30T10:04:10Z",
"releases_url": "https://api.github.com/repos/docker/github-builder-test/releases{/id}",
"size": 25,
"ssh_url": "git@github.com:docker/github-builder-test.git",
"stargazers_count": 0,
"stargazers_url": "https://api.github.com/repos/docker/github-builder-test/stargazers",
"statuses_url": "https://api.github.com/repos/docker/github-builder-test/statuses/{sha}",
"subscribers_url": "https://api.github.com/repos/docker/github-builder-test/subscribers",
"subscription_url": "https://api.github.com/repos/docker/github-builder-test/subscription",
"svn_url": "https://github.com/docker/github-builder-test",
"tags_url": "https://api.github.com/repos/docker/github-builder-test/tags",
"teams_url": "https://api.github.com/repos/docker/github-builder-test/teams",
"topics": [],
"trees_url": "https://api.github.com/repos/docker/github-builder-test/git/trees{/sha}",
"updated_at": "2025-10-30T10:04:14Z",
"url": "https://api.github.com/repos/docker/github-builder-test",
"visibility": "internal",
"watchers": 0,
"watchers_count": 0,
"web_commit_signoff_required": false
},
"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",
"user_view_type": "public"
},
"workflow": ".github/workflows/ci.yml"
},
"github_job": "build",
"github_ref": "refs/heads/main",
"github_ref_name": "main",
"github_ref_protected": "false",
"github_ref_type": "branch",
"github_repository": "docker/github-builder-test",
"github_repository_id": "1040594287",
"github_repository_owner": "docker",
"github_repository_owner_id": "5429470",
"github_run_attempt": "1",
"github_run_id": "18937328894",
"github_run_number": "183",
"github_runner_arch": "X64",
"github_runner_environment": "github-hosted",
"github_runner_image_os": "ubuntu24",
"github_runner_image_version": "20250929.60.1",
"github_runner_name": "GitHub Actions 1002376925",
"github_runner_os": "Linux",
"github_runner_tracking_id": "github_7c0a7521-2999-41e5-af30-b7f0681f204f",
"github_server_url": "https://github.com",
"github_triggering_actor": "crazy-max",
"github_workflow": "ci",
"github_workflow_ref": "docker/github-builder-test/.github/workflows/ci.yml@refs/heads/main",
"github_workflow_sha": "bdb96fcfe8cc9e3a54800bc2537a4d4a14f0c5fe"
}
},
"runDetails": {
"builder": {
"id": "https://github.com/docker/github-builder-test/actions/runs/18937328894/attempts/1"
},
"metadata": {
"invocationID": "7qg2yuux3iklv02ktbmbtwgeb",
"startedOn": "2025-10-30T10:19:52.868710505Z",
"finishedOn": "2025-10-30T10:19:57.635810119Z",
"buildkit_metadata": {
"source": {
"locations": {
"step0": {
"locations": [
{
"ranges": [
{
"start": {
"line": 1
},
"end": {
"line": 1
}
}
]
}
]
},
"step1": {
"locations": [
{
"ranges": [
{
"start": {
"line": 3
},
"end": {
"line": 3
}
}
]
}
]
},
"step2": {
"locations": [
{
"ranges": [
{
"start": {
"line": 7
},
"end": {
"line": 7
}
}
]
}
]
}
},
"infos": [
{
"filename": "hello.Dockerfile",
"language": "Dockerfile",
"data": "RlJPTSBhbHBpbmUgQVMgYmFzZQpBUkcgVEFSR0VUUExBVEZPUk0KUlVOIGVjaG8gIkhlbGxvLCBXb3JsZCEgVGhpcyBpcyAke1RBUkdFVFBMQVRGT1JNfSIgPiAvaGVsbG8udHh0CkFSRyBCVUlMREtJVF9TQk9NX1NDQU5fU1RBR0U9dHJ1ZQoKRlJPTSBzY3JhdGNoCkNPUFkgLS1mcm9tPWJhc2UgL2hlbGxvLnR4dCAvCg==",
"llbDefinition": [
{
"id": "step0",
"op": {
"Op": {
"source": {
"identifier": "git://github.com/docker/github-builder-test.git#bdb96fcfe8cc9e3a54800bc2537a4d4a14f0c5fe",
"attrs": {
"git.authheadersecret": "GIT_AUTH_HEADER",
"git.authtokensecret": "GIT_AUTH_TOKEN",
"git.fullurl": "https://github.com/docker/github-builder-test.git"
}
}
},
"constraints": {}
}
},
{
"id": "step1",
"op": {
"Op": {}
},
"inputs": [
"step0:0"
]
}
],
"digestMapping": {
"sha256:47540f0959d81a7ff2fc9742b9ef0bb37d7eca99c13aa6df83b883d06e808ef2": "step0",
"sha256:96933c546ff00debd500304305864192fcb51d348e8c41b6a6e1569a051e66ed": "step1"
}
}
]
},
"layers": {
"step0:0": [
[
{
"mediaType": "application/vnd.oci.image.layer.v1.tar+gzip",
"digest": "sha256:6b59a28fa20117e6048ad0616b8d8c901877ef15ff4c7f18db04e4f01f43bc39",
"size": 4138069
}
]
]
}
},
"buildkit_completeness": {
"request": true,
"resolvedDependencies": true
}
}
}
}
}

View File

@@ -0,0 +1 @@
Hello, World! This is linux/amd64

View File

@@ -0,0 +1,462 @@
{
"_type": "https://in-toto.io/Statement/v0.1",
"predicateType": "https://slsa.dev/provenance/v1",
"subject": [
{
"name": "hello.txt",
"digest": {
"sha256": "1b37929e66644beb58b3d28d44fba0d82aa90cab03c55a492adb81fe6e833ec8"
}
}
],
"predicate": {
"buildDefinition": {
"buildType": "https://github.com/moby/buildkit/blob/master/docs/attestations/slsa-definitions.md",
"resolvedDependencies": [
{
"uri": "pkg:docker/docker/buildkit-syft-scanner@stable-1",
"digest": {
"sha256": "e930c2697be77cb7271d316ecfa78768b5eac73de3b16018ed38eb0ea0b5a7cb"
}
},
{
"uri": "pkg:docker/alpine@latest?platform=linux%2Famd64",
"digest": {
"sha256": "4b7ce07002c69e8f3d704a9c5d6fd3053be500b7f1c69fc0d80990c2ad8dd412"
}
},
{
"uri": "https://github.com/docker/github-builder-test.git#bdb96fcfe8cc9e3a54800bc2537a4d4a14f0c5fe",
"digest": {
"sha1": "bdb96fcfe8cc9e3a54800bc2537a4d4a14f0c5fe"
}
}
],
"externalParameters": {
"configSource": {
"uri": "https://github.com/docker/github-builder-test.git#bdb96fcfe8cc9e3a54800bc2537a4d4a14f0c5fe",
"digest": {
"sha1": "bdb96fcfe8cc9e3a54800bc2537a4d4a14f0c5fe"
},
"path": "hello.Dockerfile"
},
"request": {
"frontend": "dockerfile.v0",
"secrets": [
{
"id": "GIT_AUTH_HEADER",
"optional": true
},
{
"id": "GIT_AUTH_TOKEN",
"optional": true
}
]
}
},
"internalParameters": {
"buildConfig": {
"digestMapping": {
"sha256:23dcbc3cce701a8a9bbb1e33f2ea88304527a4a935c89c4564af698095463ac2": "step3",
"sha256:3192c1bd53f90cca959db778dcee30edc9a79f8cd3f9a2c54adc4606507fd3b6": "step0",
"sha256:7f1c9e959980ea3e2cf4af8ef97b6c3797a0926752b436bff11474e436defe7f": "step1",
"sha256:c8737331fb8e5f5bcb6b22320012d975057514982c788e63db13332a4219b984": "step2"
},
"llbDefinition": [
{
"id": "step0",
"op": {
"Op": {
"source": {
"identifier": "docker-image://docker.io/library/alpine:latest@sha256:4b7ce07002c69e8f3d704a9c5d6fd3053be500b7f1c69fc0d80990c2ad8dd412"
}
},
"constraints": {},
"platform": {
"Architecture": "amd64",
"OS": "linux"
}
}
},
{
"id": "step1",
"inputs": [
"step0:0"
],
"op": {
"Op": {
"exec": {
"meta": {
"args": [
"/bin/sh",
"-c",
"echo \"Hello, World! This is ${TARGETPLATFORM}\" \u003e /hello.txt"
],
"cwd": "/",
"env": [
"PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin",
"TARGETPLATFORM=linux/amd64"
],
"removeMountStubsRecursive": true
},
"mounts": [
{
"dest": "/"
}
]
}
},
"constraints": {},
"platform": {
"Architecture": "amd64",
"OS": "linux"
}
}
},
{
"id": "step2",
"inputs": [
"step1:0"
],
"op": {
"Op": {
"file": {
"actions": [
{
"Action": {
"copy": {
"allowEmptyWildcard": true,
"allowWildcard": true,
"createDestPath": true,
"dest": "/",
"dirCopyContents": true,
"followSymlink": true,
"mode": -1,
"src": "/hello.txt",
"timestamp": -1
}
},
"input": -1,
"output": 0,
"secondaryInput": 0
}
]
}
},
"constraints": {}
}
},
{
"id": "step3",
"inputs": [
"step2:0"
],
"op": {
"Op": {}
}
}
]
},
"builderPlatform": "linux/amd64",
"github_actor": "crazy-max",
"github_actor_id": "1951866",
"github_event_name": "workflow_dispatch",
"github_event_payload": {
"enterprise": {
"avatar_url": "https://avatars.githubusercontent.com/b/19176?v=4",
"created_at": "2022-12-30T23:53:17Z",
"description": null,
"html_url": "https://github.com/enterprises/docker",
"id": 19176,
"name": "Docker",
"node_id": "E_kgDNSug",
"slug": "docker",
"updated_at": "2025-10-20T20:39:05Z",
"website_url": null
},
"inputs": null,
"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"
},
"ref": "refs/heads/main",
"repository": {
"allow_forking": true,
"archive_url": "https://api.github.com/repos/docker/github-builder-test/{archive_format}{/ref}",
"archived": false,
"assignees_url": "https://api.github.com/repos/docker/github-builder-test/assignees{/user}",
"blobs_url": "https://api.github.com/repos/docker/github-builder-test/git/blobs{/sha}",
"branches_url": "https://api.github.com/repos/docker/github-builder-test/branches{/branch}",
"clone_url": "https://github.com/docker/github-builder-test.git",
"collaborators_url": "https://api.github.com/repos/docker/github-builder-test/collaborators{/collaborator}",
"comments_url": "https://api.github.com/repos/docker/github-builder-test/comments{/number}",
"commits_url": "https://api.github.com/repos/docker/github-builder-test/commits{/sha}",
"compare_url": "https://api.github.com/repos/docker/github-builder-test/compare/{base}...{head}",
"contents_url": "https://api.github.com/repos/docker/github-builder-test/contents/{+path}",
"contributors_url": "https://api.github.com/repos/docker/github-builder-test/contributors",
"created_at": "2025-08-19T08:08:29Z",
"custom_properties": {},
"default_branch": "main",
"deployments_url": "https://api.github.com/repos/docker/github-builder-test/deployments",
"description": "Test repo for https://github.com/docker/github-builder-experimental",
"disabled": false,
"downloads_url": "https://api.github.com/repos/docker/github-builder-test/downloads",
"events_url": "https://api.github.com/repos/docker/github-builder-test/events",
"fork": false,
"forks": 0,
"forks_count": 0,
"forks_url": "https://api.github.com/repos/docker/github-builder-test/forks",
"full_name": "docker/github-builder-test",
"git_commits_url": "https://api.github.com/repos/docker/github-builder-test/git/commits{/sha}",
"git_refs_url": "https://api.github.com/repos/docker/github-builder-test/git/refs{/sha}",
"git_tags_url": "https://api.github.com/repos/docker/github-builder-test/git/tags{/sha}",
"git_url": "git://github.com/docker/github-builder-test.git",
"has_discussions": false,
"has_downloads": true,
"has_issues": false,
"has_pages": false,
"has_projects": false,
"has_wiki": false,
"homepage": null,
"hooks_url": "https://api.github.com/repos/docker/github-builder-test/hooks",
"html_url": "https://github.com/docker/github-builder-test",
"id": 1040594287,
"is_template": false,
"issue_comment_url": "https://api.github.com/repos/docker/github-builder-test/issues/comments{/number}",
"issue_events_url": "https://api.github.com/repos/docker/github-builder-test/issues/events{/number}",
"issues_url": "https://api.github.com/repos/docker/github-builder-test/issues{/number}",
"keys_url": "https://api.github.com/repos/docker/github-builder-test/keys{/key_id}",
"labels_url": "https://api.github.com/repos/docker/github-builder-test/labels{/name}",
"language": "Dockerfile",
"languages_url": "https://api.github.com/repos/docker/github-builder-test/languages",
"license": null,
"merges_url": "https://api.github.com/repos/docker/github-builder-test/merges",
"milestones_url": "https://api.github.com/repos/docker/github-builder-test/milestones{/number}",
"mirror_url": null,
"name": "github-builder-test",
"node_id": "R_kgDOPgY1bw",
"notifications_url": "https://api.github.com/repos/docker/github-builder-test/notifications{?since,all,participating}",
"open_issues": 0,
"open_issues_count": 0,
"owner": {
"avatar_url": "https://avatars.githubusercontent.com/u/5429470?v=4",
"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",
"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",
"user_view_type": "public"
},
"private": true,
"pulls_url": "https://api.github.com/repos/docker/github-builder-test/pulls{/number}",
"pushed_at": "2025-10-30T10:04:10Z",
"releases_url": "https://api.github.com/repos/docker/github-builder-test/releases{/id}",
"size": 25,
"ssh_url": "git@github.com:docker/github-builder-test.git",
"stargazers_count": 0,
"stargazers_url": "https://api.github.com/repos/docker/github-builder-test/stargazers",
"statuses_url": "https://api.github.com/repos/docker/github-builder-test/statuses/{sha}",
"subscribers_url": "https://api.github.com/repos/docker/github-builder-test/subscribers",
"subscription_url": "https://api.github.com/repos/docker/github-builder-test/subscription",
"svn_url": "https://github.com/docker/github-builder-test",
"tags_url": "https://api.github.com/repos/docker/github-builder-test/tags",
"teams_url": "https://api.github.com/repos/docker/github-builder-test/teams",
"topics": [],
"trees_url": "https://api.github.com/repos/docker/github-builder-test/git/trees{/sha}",
"updated_at": "2025-10-30T10:04:14Z",
"url": "https://api.github.com/repos/docker/github-builder-test",
"visibility": "internal",
"watchers": 0,
"watchers_count": 0,
"web_commit_signoff_required": false
},
"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",
"user_view_type": "public"
},
"workflow": ".github/workflows/ci.yml"
},
"github_job": "build",
"github_ref": "refs/heads/main",
"github_ref_name": "main",
"github_ref_protected": "false",
"github_ref_type": "branch",
"github_repository": "docker/github-builder-test",
"github_repository_id": "1040594287",
"github_repository_owner": "docker",
"github_repository_owner_id": "5429470",
"github_run_attempt": "1",
"github_run_id": "18937328894",
"github_run_number": "183",
"github_runner_arch": "X64",
"github_runner_environment": "github-hosted",
"github_runner_image_os": "ubuntu24",
"github_runner_image_version": "20250929.60.1",
"github_runner_name": "GitHub Actions 1002376925",
"github_runner_os": "Linux",
"github_runner_tracking_id": "github_7c0a7521-2999-41e5-af30-b7f0681f204f",
"github_server_url": "https://github.com",
"github_triggering_actor": "crazy-max",
"github_workflow": "ci",
"github_workflow_ref": "docker/github-builder-test/.github/workflows/ci.yml@refs/heads/main",
"github_workflow_sha": "bdb96fcfe8cc9e3a54800bc2537a4d4a14f0c5fe"
}
},
"runDetails": {
"builder": {
"id": "https://github.com/docker/github-builder-test/actions/runs/18937328894/attempts/1"
},
"metadata": {
"invocationID": "7qg2yuux3iklv02ktbmbtwgeb",
"startedOn": "2025-10-30T10:19:52.868710505Z",
"finishedOn": "2025-10-30T10:19:57.635810119Z",
"buildkit_metadata": {
"source": {
"locations": {
"step0": {
"locations": [
{
"ranges": [
{
"start": {
"line": 1
},
"end": {
"line": 1
}
}
]
}
]
},
"step1": {
"locations": [
{
"ranges": [
{
"start": {
"line": 3
},
"end": {
"line": 3
}
}
]
}
]
},
"step2": {
"locations": [
{
"ranges": [
{
"start": {
"line": 7
},
"end": {
"line": 7
}
}
]
}
]
}
},
"infos": [
{
"filename": "hello.Dockerfile",
"language": "Dockerfile",
"data": "RlJPTSBhbHBpbmUgQVMgYmFzZQpBUkcgVEFSR0VUUExBVEZPUk0KUlVOIGVjaG8gIkhlbGxvLCBXb3JsZCEgVGhpcyBpcyAke1RBUkdFVFBMQVRGT1JNfSIgPiAvaGVsbG8udHh0CkFSRyBCVUlMREtJVF9TQk9NX1NDQU5fU1RBR0U9dHJ1ZQoKRlJPTSBzY3JhdGNoCkNPUFkgLS1mcm9tPWJhc2UgL2hlbGxvLnR4dCAvCg==",
"llbDefinition": [
{
"id": "step0",
"op": {
"Op": {
"source": {
"identifier": "git://github.com/docker/github-builder-test.git#bdb96fcfe8cc9e3a54800bc2537a4d4a14f0c5fe",
"attrs": {
"git.authheadersecret": "GIT_AUTH_HEADER",
"git.authtokensecret": "GIT_AUTH_TOKEN",
"git.fullurl": "https://github.com/docker/github-builder-test.git"
}
}
},
"constraints": {}
}
},
{
"id": "step1",
"op": {
"Op": {}
},
"inputs": [
"step0:0"
]
}
],
"digestMapping": {
"sha256:47540f0959d81a7ff2fc9742b9ef0bb37d7eca99c13aa6df83b883d06e808ef2": "step0",
"sha256:96933c546ff00debd500304305864192fcb51d348e8c41b6a6e1569a051e66ed": "step1"
}
}
]
},
"layers": {
"step0:0": [
[
{
"mediaType": "application/vnd.oci.image.layer.v1.tar+gzip",
"digest": "sha256:2d35ebdb57d9971fea0cac1582aa78935adf8058b2cc32db163c98822e5dfa1b",
"size": 3802452
}
]
]
}
},
"buildkit_completeness": {
"request": true,
"resolvedDependencies": true
}
}
}
}
}

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,117 @@ 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);
});
});
describe('hasProvenanceAttestation', () => {
// prettier-ignore
test.each([
[
{
"target": {
"build": {
"attest": [
{
"type": "provenance",
"mode": "max"
}
]
},
}
} as unknown as BakeDefinition,
true
],
[
{
"target": {
"build": {
"attest": [
{
"type": "sbom"
}
]
},
}
} as unknown as BakeDefinition,
false
],
[
{
"target": {
"build": {
"attest": [
{
"type": "sbom"
},
{
"type": "provenance",
"mode": "max"
}
]
},
}
} as unknown as BakeDefinition,
true
]
])('given %o returns %o', async (def: BakeDefinition, expected: boolean) => {
expect(Bake.hasProvenanceAttestation(def)).toEqual(expected);
});
});
describe('hasSBOMAttestation', () => {
// prettier-ignore
test.each([
[
{
"target": {
"build": {
"attest": [
{
"type": "provenance",
"mode": "max"
}
]
},
}
} as unknown as BakeDefinition,
false
],
[
{
"target": {
"build": {
"attest": [
{
"type": "sbom"
}
]
},
}
} as unknown as BakeDefinition,
true
],
[
{
"target": {
"build": {
"attest": [
{
"type": "sbom"
},
{
"type": "provenance",
"mode": "max"
}
]
},
}
} as unknown as BakeDefinition,
true
]
])('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,12 +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 {Image} from '../../src/types/oci/config';
import {ImageTools} from '../../src/buildx/imagetools.js';
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');
@@ -27,13 +30,78 @@ 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);
});
});
maybe('inspectManifest', () => {
it('inspect descriptor', async () => {
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({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);
});
});
maybe('attestationDescriptors', () => {
it('returns buildkit attestations descriptors', async () => {
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({name: 'moby/buildkit:latest@sha256:79cc6476ab1a3371c9afd8b44e7c55610057c43e18d9b39b68e2b0c2475cc1b6'});
// prettier-ignore
expect(digests).toEqual([
'sha256:2ba4ad6eae1efcafee73a971953093c7c32b6938f2f9fd4998c8bf4d0fbe76f2',
'sha256:0709528fae1747ce17638ad2978ee7936b38a294136eaadaf692e415f64b1e03',
'sha256:241b7159129d53923c89708bcc052b3398086a826519896be2f025545916e43e',
'sha256:97f4a222a7992dba6dc1a43991d0cca1fcffdc25593033c6a3a7ff14c8651cbf',
'sha256:aa933713d8094b2708120e889acb6f7153dee4e0f3298ccd3e37a584cd0c260d',
'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');
@@ -119,7 +118,12 @@ describe('getDownloadVersion', () => {
expect(version.key).toEqual('official');
expect(version.version).toEqual('latest');
expect(version.downloadURL).toEqual('https://github.com/docker/buildx/releases/download/v%s/%s');
expect(version.releasesURL).toEqual('https://raw.githubusercontent.com/docker/actions-toolkit/main/.github/buildx-releases.json');
expect(version.contentOpts).toEqual({
owner: 'docker',
repo: 'actions-toolkit',
ref: 'main',
path: '.github/buildx-releases.json'
});
});
it('returns official v0.10.1 download version', async () => {
@@ -127,7 +131,12 @@ describe('getDownloadVersion', () => {
expect(version.key).toEqual('official');
expect(version.version).toEqual('v0.10.1');
expect(version.downloadURL).toEqual('https://github.com/docker/buildx/releases/download/v%s/%s');
expect(version.releasesURL).toEqual('https://raw.githubusercontent.com/docker/actions-toolkit/main/.github/buildx-releases.json');
expect(version.contentOpts).toEqual({
owner: 'docker',
repo: 'actions-toolkit',
ref: 'main',
path: '.github/buildx-releases.json'
});
});
it('returns cloud latest download version', async () => {
@@ -135,7 +144,12 @@ describe('getDownloadVersion', () => {
expect(version.key).toEqual('cloud');
expect(version.version).toEqual('latest');
expect(version.downloadURL).toEqual('https://github.com/docker/buildx-desktop/releases/download/v%s/%s');
expect(version.releasesURL).toEqual('https://raw.githubusercontent.com/docker/actions-toolkit/main/.github/buildx-lab-releases.json');
expect(version.contentOpts).toEqual({
owner: 'docker',
repo: 'actions-toolkit',
ref: 'main',
path: '.github/buildx-lab-releases.json'
});
});
it('returns cloud v0.11.2-desktop.2 download version', async () => {
@@ -143,7 +157,12 @@ describe('getDownloadVersion', () => {
expect(version.key).toEqual('cloud');
expect(version.version).toEqual('v0.11.2-desktop.2');
expect(version.downloadURL).toEqual('https://github.com/docker/buildx-desktop/releases/download/v%s/%s');
expect(version.releasesURL).toEqual('https://raw.githubusercontent.com/docker/actions-toolkit/main/.github/buildx-lab-releases.json');
expect(version.contentOpts).toEqual({
owner: 'docker',
repo: 'actions-toolkit',
ref: 'main',
path: '.github/buildx-lab-releases.json'
});
});
it('returns cloud for lab version', async () => {
@@ -151,7 +170,12 @@ describe('getDownloadVersion', () => {
expect(version.key).toEqual('cloud');
expect(version.version).toEqual('latest');
expect(version.downloadURL).toEqual('https://github.com/docker/buildx-desktop/releases/download/v%s/%s');
expect(version.releasesURL).toEqual('https://raw.githubusercontent.com/docker/actions-toolkit/main/.github/buildx-lab-releases.json');
expect(version.contentOpts).toEqual({
owner: 'docker',
repo: 'actions-toolkit',
ref: 'main',
path: '.github/buildx-lab-releases.json'
});
});
it('unknown repo', async () => {
@@ -187,6 +211,6 @@ describe('getRelease', () => {
it('unknown release', async () => {
const version = await Install.getDownloadVersion('foo');
await expect(Install.getRelease(version)).rejects.toThrow(new Error('Cannot find Buildx release foo in https://raw.githubusercontent.com/docker/actions-toolkit/main/.github/buildx-releases.json'));
await expect(Install.getRelease(version)).rejects.toThrow(new Error('Cannot find Buildx release foo in releases JSON'));
});
});

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);
@@ -99,28 +100,48 @@ describe('getDownloadVersion', () => {
expect(version.key).toEqual('official');
expect(version.version).toEqual('latest');
expect(version.downloadURL).toEqual('https://github.com/docker/compose/releases/download/v%s/%s');
expect(version.releasesURL).toEqual('https://raw.githubusercontent.com/docker/actions-toolkit/main/.github/compose-releases.json');
expect(version.contentOpts).toEqual({
owner: 'docker',
repo: 'actions-toolkit',
ref: 'main',
path: '.github/compose-releases.json'
});
});
it('returns official v2.24.3 download version', async () => {
const version = await Install.getDownloadVersion('v2.24.3');
expect(version.key).toEqual('official');
expect(version.version).toEqual('v2.24.3');
expect(version.downloadURL).toEqual('https://github.com/docker/compose/releases/download/v%s/%s');
expect(version.releasesURL).toEqual('https://raw.githubusercontent.com/docker/actions-toolkit/main/.github/compose-releases.json');
expect(version.contentOpts).toEqual({
owner: 'docker',
repo: 'actions-toolkit',
ref: 'main',
path: '.github/compose-releases.json'
});
});
it('returns cloud latest download version', async () => {
const version = await Install.getDownloadVersion('cloud:latest');
expect(version.key).toEqual('cloud');
expect(version.version).toEqual('latest');
expect(version.downloadURL).toEqual('https://github.com/docker/compose-desktop/releases/download/v%s/%s');
expect(version.releasesURL).toEqual('https://raw.githubusercontent.com/docker/actions-toolkit/main/.github/compose-lab-releases.json');
expect(version.contentOpts).toEqual({
owner: 'docker',
repo: 'actions-toolkit',
ref: 'main',
path: '.github/compose-lab-releases.json'
});
});
it('returns cloud v2.27.1-desktop.1 download version', async () => {
const version = await Install.getDownloadVersion('cloud:v2.27.1-desktop.1');
expect(version.key).toEqual('cloud');
expect(version.version).toEqual('v2.27.1-desktop.1');
expect(version.downloadURL).toEqual('https://github.com/docker/compose-desktop/releases/download/v%s/%s');
expect(version.releasesURL).toEqual('https://raw.githubusercontent.com/docker/actions-toolkit/main/.github/compose-lab-releases.json');
expect(version.contentOpts).toEqual({
owner: 'docker',
repo: 'actions-toolkit',
ref: 'main',
path: '.github/compose-lab-releases.json'
});
});
it('unknown repo', async () => {
await expect(Install.getDownloadVersion('foo:bar')).rejects.toThrow(new Error('Cannot find compose version for foo:bar'));
@@ -152,6 +173,6 @@ describe('getRelease', () => {
});
it('unknown release', async () => {
const version = await Install.getDownloadVersion('foo');
await expect(Install.getRelease(version)).rejects.toThrow(new Error('Cannot find Compose release foo in https://raw.githubusercontent.com/docker/actions-toolkit/main/.github/compose-releases.json'));
await expect(Install.getRelease(version)).rejects.toThrow(new Error('Cannot find Compose release foo in releases JSON'));
});
});

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

@@ -0,0 +1,89 @@
/**
* 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 {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.js';
import {Cosign} from '../../src/cosign/cosign.js';
const fixturesDir = path.join(__dirname, '..', '.fixtures');
describe('isAvailable', () => {
it('checks Cosign is available', async () => {
const execSpy = vi.spyOn(Exec, 'getExecOutput');
const cosign = new Cosign();
await cosign.isAvailable();
expect(execSpy).toHaveBeenCalledWith(`cosign`, [], {
silent: true,
ignoreReturnCode: true
});
});
});
describe('printVersion', () => {
it('prints Cosign version', async () => {
const execSpy = vi.spyOn(Exec, 'exec');
const cosign = new Cosign();
await cosign.printVersion();
expect(execSpy).toHaveBeenCalledWith(`cosign`, ['version', '--json'], {
failOnStdErr: false
});
});
});
describe('version', () => {
it('valid', async () => {
const cosign = new Cosign();
expect(semver.valid(await cosign.version())).not.toBeUndefined();
});
});
describe('versionSatisfies', () => {
test.each([
['v0.4.1', '>=0.3.2', true],
['v0.8.0', '>0.6.0', true],
['v0.8.0', '<0.3.0', false]
])('given %o', async (version, range, expected) => {
const cosign = new Cosign();
expect(await cosign.versionSatisfies(range, version)).toBe(expected);
});
});
describe('parseCommandOutput', () => {
// prettier-ignore
test.each([
[path.join(fixturesDir, 'cosign', 'sign-output1.txt')],
[path.join(fixturesDir, 'cosign', 'sign-output2.txt')],
[path.join(fixturesDir, 'cosign', 'sign-output3.txt')],
])('parsing %o', async (fixturePath: string) => {
const signResult = Cosign.parseCommandOutput(fs.readFileSync(fixturePath, 'utf-8'));
expect(signResult).toBeDefined();
expect(signResult.bundle).toBeDefined();
});
// prettier-ignore
test.each([
[path.join(fixturesDir, 'cosign', 'verify-output-err1.txt')],
])('parsing %o', async (fixturePath: string) => {
const signResult = Cosign.parseCommandOutput(fs.readFileSync(fixturePath, 'utf-8'));
expect(signResult).toBeDefined();
expect(signResult.bundle).toBeUndefined();
expect(signResult.errors).toBeDefined();
});
});

View File

@@ -0,0 +1,53 @@
/**
* 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 {describe, expect, it, test} from 'vitest';
import * as fs from 'fs';
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;
describe('download', () => {
// prettier-ignore
test.each(['latest'])(
'install cosign %s', async (version) => {
await expect((async () => {
const install = new Install();
const toolPath = await install.download({
version: version,
verifySignature: true
});
if (!fs.existsSync(toolPath)) {
throw new Error('toolPath does not exist');
}
const binPath = await install.install(toolPath);
if (!fs.existsSync(binPath)) {
throw new Error('binPath does not exist');
}
})()).resolves.not.toThrow();
}, 60000);
});
maybe('build', () => {
it.skip('builds refs/pull/4492/head', async () => {
const install = new Install();
const toolPath = await install.build('https://github.com/sigstore/cosign.git#refs/pull/4492/head');
expect(fs.existsSync(toolPath)).toBe(true);
const buildxBin = await install.install(toolPath);
expect(fs.existsSync(buildxBin)).toBe(true);
}, 500000);
});

View File

@@ -0,0 +1,138 @@
/**
* 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 {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 {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-'));
afterEach(function () {
rimraf.sync(tmpDir);
});
describe('download', () => {
// prettier-ignore
test.each([
['v2.6.1'],
['v3.0.1'],
['latest']
])(
'acquires %o of cosign', async (version) => {
const install = new Install();
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);
}, 100000);
// prettier-ignore
test.each([
// following versions are already cached to htc from previous test cases
['v2.6.1'],
['v3.0.1'],
])(
'acquires %o of cosign with cache', async (version) => {
const install = new Install();
const toolPath = await install.download({version});
expect(fs.existsSync(toolPath)).toBe(true);
}, 100000);
// prettier-ignore
test.each([
['v2.5.3'],
['v2.6.0'],
])(
'acquires %o of cosign without cache', async (version) => {
const install = new Install();
const toolPath = await install.download({
version: version,
ghaNoCache: true
});
expect(fs.existsSync(toolPath)).toBe(true);
}, 100000);
// TODO: add tests for arm
// prettier-ignore
test.each([
['win32', 'x64'],
['darwin', 'x64'],
['darwin', 'arm64'],
['linux', 'x64'],
['linux', 'arm64']
])(
'acquires undock for %s/%s', async (os, arch) => {
mockPlatform(os as NodeJS.Platform);
mockArch(arch);
const install = new Install();
const cosignBin = await install.download({
version: 'latest'
});
expect(fs.existsSync(cosignBin)).toBe(true);
}, 100000);
});
describe('getDownloadVersion', () => {
it('returns latest download version', async () => {
const version = await Install.getDownloadVersion('latest');
expect(version.version).toEqual('latest');
expect(version.downloadURL).toEqual('https://github.com/sigstore/cosign/releases/download/v%s/%s');
expect(version.contentOpts).toEqual({
owner: 'docker',
repo: 'actions-toolkit',
ref: 'main',
path: '.github/cosign-releases.json'
});
});
it('returns v3.0.2 download version', async () => {
const version = await Install.getDownloadVersion('v3.0.2');
expect(version.version).toEqual('v3.0.2');
expect(version.downloadURL).toEqual('https://github.com/sigstore/cosign/releases/download/v%s/%s');
expect(version.contentOpts).toEqual({
owner: 'docker',
repo: 'actions-toolkit',
ref: 'main',
path: '.github/cosign-releases.json'
});
});
});
describe('getRelease', () => {
it('returns latest GitHub release', async () => {
const version = await Install.getDownloadVersion('latest');
const release = await Install.getRelease(version);
expect(release).not.toBeNull();
expect(release?.tag_name).not.toEqual('');
});
it('returns v3.0.2 GitHub release', async () => {
const version = await Install.getDownloadVersion('v3.0.2');
const release = await Install.getRelease(version);
expect(release).not.toBeNull();
expect(release?.id).toEqual(253720294);
expect(release?.tag_name).toEqual('v3.0.2');
expect(release?.html_url).toEqual('https://github.com/sigstore/cosign/releases/tag/v3.0.2');
});
it('unknown release', async () => {
const version = await Install.getDownloadVersion('foo');
await expect(Install.getRelease(version)).rejects.toThrow(new Error('Cannot find Cosign release foo in releases JSON'));
});
});

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,24 +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 {Regctl} from '../../src/regclient/regctl';
import {Install as RegclientInstall} from '../../src/regclient/install';
import {Undock} from '../../src/undock/undock';
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();
@@ -48,9 +46,7 @@ describe('root', () => {
source: source,
runDir: tmpDir(),
contextName: 'foo',
daemonConfig: `{"debug":true,"features":{"containerd-snapshotter":true}}`,
regctl: new Regctl(),
undock: new Undock()
daemonConfig: `{"debug":true,"features":{"containerd-snapshotter":true}}`
});
await expect(tryInstall(install)).resolves.not.toThrow();
}, 30 * 60 * 1000);
@@ -70,9 +66,7 @@ describe('rootless', () => {
runDir: tmpDir(),
contextName: 'foo',
daemonConfig: `{"debug":true}`,
rootless: true,
regctl: new Regctl(),
undock: new Undock()
rootless: true
});
await expect(
tryInstall(install, async () => {
@@ -97,9 +91,7 @@ describe('tcp', () => {
runDir: tmpDir(),
contextName: 'foo',
daemonConfig: `{"debug":true}`,
localTCPPort: 2378,
regctl: new Regctl(),
undock: new Undock()
localTCPPort: 2378
});
await expect(
tryInstall(install, async () => {

View File

@@ -14,16 +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 {Regctl} from '../../src/regclient/regctl';
import {Undock} from '../../src/undock/undock';
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-'));
@@ -61,14 +60,12 @@ 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,
regctl: new Regctl(),
undock: new Undock()
runDir: tmpDir
});
const toolPath = await install.download();
expect(fs.existsSync(toolPath)).toBe(true);
@@ -99,14 +96,14 @@ describe('getRelease', () => {
});
it('unknown release', async () => {
await expect(Install.getRelease('foo')).rejects.toThrow(new Error('Cannot find Docker release foo in https://raw.githubusercontent.com/docker/actions-toolkit/main/.github/docker-releases.json'));
await expect(Install.getRelease('foo')).rejects.toThrow(new Error('Cannot find Docker release foo in releases JSON'));
});
});
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,19 +216,206 @@ 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 () => {
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 = 'HEAD, origin/feature-branch';
break;
}
return Promise.resolve({
stdout: result,
stderr: '',
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 () => {
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 = '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 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 () => {
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 = 'HEAD';
break;
case 'git for-each-ref --format=%(refname) --contains HEAD --sort=-committerdate refs/heads/':
result = '';
break;
case 'git for-each-ref --format=%(refname) --contains HEAD --sort=-committerdate refs/remotes/':
result = 'refs/remotes/origin/feature';
break;
}
return Promise.resolve({
stdout: result,
stderr: '',
exitCode: 0
});
});
const ref = await Git.ref();
expect(ref).toEqual('refs/heads/feature');
});
it('infers ref from tag when no branch contains 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 = 'HEAD';
break;
case 'git for-each-ref --format=%(refname) --contains HEAD --sort=-committerdate refs/heads/':
result = '';
break;
case 'git for-each-ref --format=%(refname) --contains HEAD --sort=-committerdate refs/remotes/':
result = '';
break;
case 'git tag --contains HEAD':
result = 'v1.0.0\nv0.9.0';
break;
}
return Promise.resolve({
stdout: result,
stderr: '',
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 () => {
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 = 'HEAD';
break;
case 'git for-each-ref --format=%(refname) --contains HEAD --sort=-committerdate refs/heads/':
result = '';
break;
case 'git for-each-ref --format=%(refname) --contains HEAD --sort=-committerdate refs/remotes/':
result = '';
break;
case 'git tag --contains HEAD':
result = '';
break;
}
return Promise.resolve({
stdout: result,
stderr: '',
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 () => {
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 = 'HEAD';
break;
case 'git for-each-ref --format=%(refname) --contains HEAD --sort=-committerdate refs/heads/':
result = '';
break;
case 'git for-each-ref --format=%(refname) --contains HEAD --sort=-committerdate refs/remotes/':
result = 'refs/remotes/unusual-format';
break;
}
return Promise.resolve({
stdout: result,
stderr: '',
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', '--'], {
@@ -252,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', '--'], {
@@ -267,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'], {
@@ -283,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} 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');
});
@@ -43,10 +53,33 @@ describe('context', () => {
});
});
describe('releases', () => {
// prettier-ignore
test.each([
['.github/buildx-lab-releases.json'],
['.github/buildx-releases.json'],
['.github/compose-lab-releases.json'],
['.github/compose-releases.json'],
['.github/docker-releases.json'],
['.github/regclient-releases.json'],
['.github/undock-releases.json'],
])('returns %o', async (path: string) => {
const github = new GitHub();
const releases = await github.releases('App', {
owner: 'docker',
repo: 'actions-toolkit',
ref: 'main',
path: path
});
expect(releases).toBeDefined();
expect(Object.keys(releases).length).toBeGreaterThan(0);
});
});
describe('serverURL', () => {
const originalEnv = process.env;
beforeEach(() => {
jest.resetModules();
vi.resetModules();
process.env = {
...originalEnv,
GITHUB_SERVER_URL: 'https://foo.github.com'
@@ -67,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'
@@ -103,7 +136,7 @@ describe('workflowRunURL', () => {
describe('actionsRuntimeToken', () => {
const originalEnv = process.env;
beforeEach(() => {
jest.resetModules();
vi.resetModules();
process.env = {
...originalEnv
};
@@ -118,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');
@@ -135,7 +166,7 @@ describe('actionsRuntimeToken', () => {
describe('printActionsRuntimeTokenACs', () => {
const originalEnv = process.env;
beforeEach(() => {
jest.resetModules();
vi.resetModules();
process.env = {
...originalEnv
};
@@ -152,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);
@@ -88,13 +89,23 @@ describe('getDownloadVersion', () => {
const version = await Install.getDownloadVersion('latest');
expect(version.version).toEqual('latest');
expect(version.downloadURL).toEqual('https://github.com/regclient/regclient/releases/download/v%s/%s');
expect(version.releasesURL).toEqual('https://raw.githubusercontent.com/docker/actions-toolkit/main/.github/regclient-releases.json');
expect(version.contentOpts).toEqual({
owner: 'docker',
repo: 'actions-toolkit',
ref: 'main',
path: '.github/regclient-releases.json'
});
});
it('returns v0.8.1 download version', async () => {
const version = await Install.getDownloadVersion('v0.8.1');
expect(version.version).toEqual('v0.8.1');
expect(version.downloadURL).toEqual('https://github.com/regclient/regclient/releases/download/v%s/%s');
expect(version.releasesURL).toEqual('https://raw.githubusercontent.com/docker/actions-toolkit/main/.github/regclient-releases.json');
expect(version.contentOpts).toEqual({
owner: 'docker',
repo: 'actions-toolkit',
ref: 'main',
path: '.github/regclient-releases.json'
});
});
});
@@ -115,6 +126,6 @@ describe('getRelease', () => {
});
it('unknown release', async () => {
const version = await Install.getDownloadVersion('foo');
await expect(Install.getRelease(version)).rejects.toThrow(new Error('Cannot find regclient release foo in https://raw.githubusercontent.com/docker/actions-toolkit/main/.github/regclient-releases.json'));
await expect(Install.getRelease(version)).rejects.toThrow(new Error('Cannot find regclient release foo in releases JSON'));
});
});

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

@@ -0,0 +1,224 @@
/**
* 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 {beforeAll, describe, expect, it, test} from 'vitest';
import fs from 'fs';
import os from 'os';
import * as path from 'path';
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 runTest = process.env.GITHUB_ACTIONS && process.env.GITHUB_ACTIONS === 'true' && process.env.ImageOS && process.env.ImageOS.startsWith('ubuntu');
const maybe = runTest ? describe : describe.skip;
const maybeIdToken = runTest && process.env.ACTIONS_ID_TOKEN_REQUEST_URL ? describe : describe.skip;
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>>();
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({
localExportDir: path.join(fixturesDir, 'sigstore', 'single')
});
expect(Object.keys(results).length).toEqual(1);
const provenancePath = Object.keys(results)[0];
expect(provenancePath).toEqual(path.join(fixturesDir, 'sigstore', 'single', 'provenance.json'));
expect(fs.existsSync(results[provenancePath].bundlePath)).toBe(true);
expect(results[provenancePath].payload).toBeDefined();
expect(results[provenancePath].certificate).toBeDefined();
expect(results[provenancePath].tlogID).toBeDefined();
console.log(provenancePath, JSON.stringify(results[provenancePath].payload, null, 2));
});
it('multi-platform', async () => {
const sigstore = new Sigstore();
const results = await sigstore.signProvenanceBlobs({
localExportDir: path.join(fixturesDir, 'sigstore', 'multi')
});
expect(Object.keys(results).length).toEqual(2);
for (const [provenancePath, res] of Object.entries(results)) {
expect(provenancePath).toMatch(/linux_(amd64|arm64)\/provenance.json/);
expect(fs.existsSync(res.bundlePath)).toBe(true);
expect(res.payload).toBeDefined();
expect(res.certificate).toBeDefined();
expect(res.tlogID).toBeDefined();
console.log(provenancePath, JSON.stringify(res.payload, null, 2));
}
});
});
maybeIdToken('verifySignedArtifacts', () => {
let sigstore: Sigstore;
beforeAll(async () => {
sigstore = new Sigstore({
cosign: new Cosign({
binPath: await installCosign(currentCosignVersion)
})
});
}, 100000);
it('sign and verify', async () => {
const signResults = await sigstore.signProvenanceBlobs({
localExportDir: path.join(fixturesDir, 'sigstore', 'multi')
});
expect(Object.keys(signResults).length).toEqual(2);
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);
expect(res.bundlePath).toBeDefined();
expect(res.cosignArgs).toBeDefined();
}
});
});

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);
@@ -93,13 +94,23 @@ describe('getDownloadVersion', () => {
const version = await Install.getDownloadVersion('latest');
expect(version.version).toEqual('latest');
expect(version.downloadURL).toEqual('https://github.com/crazy-max/undock/releases/download/v%s/%s');
expect(version.releasesURL).toEqual('https://raw.githubusercontent.com/docker/actions-toolkit/main/.github/undock-releases.json');
expect(version.contentOpts).toEqual({
owner: 'docker',
repo: 'actions-toolkit',
ref: 'main',
path: '.github/undock-releases.json'
});
});
it('returns v0.6.0 download version', async () => {
const version = await Install.getDownloadVersion('v0.6.0');
expect(version.version).toEqual('v0.6.0');
expect(version.downloadURL).toEqual('https://github.com/crazy-max/undock/releases/download/v%s/%s');
expect(version.releasesURL).toEqual('https://raw.githubusercontent.com/docker/actions-toolkit/main/.github/undock-releases.json');
expect(version.contentOpts).toEqual({
owner: 'docker',
repo: 'actions-toolkit',
ref: 'main',
path: '.github/undock-releases.json'
});
});
});
@@ -120,6 +131,6 @@ describe('getRelease', () => {
});
it('unknown release', async () => {
const version = await Install.getDownloadVersion('foo');
await expect(Install.getRelease(version)).rejects.toThrow(new Error('Cannot find Undock release foo in https://raw.githubusercontent.com/docker/actions-toolkit/main/.github/undock-releases.json'));
await expect(Install.getRelease(version)).rejects.toThrow(new Error('Cannot find Undock release foo in releases JSON'));
});
});

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,12 +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.29.1
ARG COMPOSE_VERSION=2.39.1
ARG UNDOCK_VERSION=0.10.0
ARG REGCTL_VERSION=v0.8.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
@@ -81,6 +82,7 @@ FROM docker/buildx-bin:${BUILDX_VERSION} AS buildx
FROM docker/compose-bin:v${COMPOSE_VERSION} AS compose
FROM crazymax/undock:${UNDOCK_VERSION} AS undock
FROM ghcr.io/regclient/regctl:${REGCTL_VERSION} AS regctl
FROM ghcr.io/sigstore/cosign/cosign:${COSIGN_VERSION} AS cosign
FROM deps AS test
RUN --mount=type=bind,target=.,rw \
@@ -93,29 +95,9 @@ RUN --mount=type=bind,target=.,rw \
--mount=type=bind,from=compose,source=/docker-compose,target=/usr/bin/compose \
--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=secret,id=GITHUB_TOKEN \
GITHUB_TOKEN=$(cat /run/secrets/GITHUB_TOKEN) yarn run test:coverage --coverageDirectory=/tmp/coverage
--mount=type=bind,from=cosign,source=/ko-app/cosign,target=/usr/bin/cosign \
--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
};

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