Compare commits

..

118 Commits

Author SHA1 Message Date
CrazyMax
18c8bddca3 Merge pull request #453 from crazy-max/history-finalize
Some checks failed
publish / publish (push) Has been cancelled
buildx(history): wait for build records to be finalized
2024-09-27 12:10:21 +02:00
CrazyMax
8fb39d62bf Merge pull request #452 from docker/bot/docker-releases-json
Update `.github/docker-releases.json`
2024-09-27 10:28:20 +02:00
CrazyMax
6c05e09cb8 buildx(history): wait for build records to be finalized
Signed-off-by: CrazyMax <1951866+crazy-max@users.noreply.github.com>
2024-09-27 10:27:27 +02:00
crazy-max
6dba8dc42a github: update .github/docker-releases.json
Signed-off-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2024-09-21 00:25:57 +00:00
CrazyMax
dacd1a0351 Merge pull request #450 from docker/dependabot/github_actions/peter-evans/create-pull-request-7.0.5
build(deps): bump peter-evans/create-pull-request from 7.0.3 to 7.0.5
2024-09-20 09:57:05 +02:00
CrazyMax
ff0fe9337b Merge pull request #451 from docker/bot/docker-releases-json
Update `.github/docker-releases.json`
2024-09-20 09:56:42 +02:00
crazy-max
7332e980c7 github: update .github/docker-releases.json
Signed-off-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2024-09-20 00:26:34 +00:00
dependabot[bot]
420500d6c6 build(deps): bump peter-evans/create-pull-request from 7.0.3 to 7.0.5
Bumps [peter-evans/create-pull-request](https://github.com/peter-evans/create-pull-request) from 7.0.3 to 7.0.5.
- [Release notes](https://github.com/peter-evans/create-pull-request/releases)
- [Commits](6cd32fd936...5e914681df)

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

Signed-off-by: dependabot[bot] <support@github.com>
2024-09-18 22:16:46 +00:00
CrazyMax
e22a137638 Merge pull request #449 from docker/dependabot/github_actions/peter-evans/create-pull-request-7.0.3
build(deps): bump peter-evans/create-pull-request from 7.0.2 to 7.0.3
2024-09-18 10:15:18 +02:00
dependabot[bot]
c7601fda48 build(deps): bump peter-evans/create-pull-request from 7.0.2 to 7.0.3
Bumps [peter-evans/create-pull-request](https://github.com/peter-evans/create-pull-request) from 7.0.2 to 7.0.3.
- [Release notes](https://github.com/peter-evans/create-pull-request/releases)
- [Commits](d121e62763...6cd32fd936)

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

Signed-off-by: dependabot[bot] <support@github.com>
2024-09-16 22:50:15 +00:00
CrazyMax
dd3654acca Merge pull request #447 from docker/bot/buildx-lab-releases-json
Update `.github/buildx-lab-releases.json`
2024-09-14 13:52:32 +02:00
CrazyMax
1604b83b79 Merge pull request #448 from docker/bot/docker-releases-json
Update `.github/docker-releases.json`
2024-09-14 13:52:13 +02:00
crazy-max
b6a6e78f7c github: update .github/docker-releases.json
Signed-off-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2024-09-14 00:25:37 +00:00
crazy-max
9fbffd2960 github: update .github/buildx-lab-releases.json
Signed-off-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2024-09-14 00:16:47 +00:00
Tõnis Tiigi
49c5ada43e Merge pull request #443 from crazy-max/update-buildx
update buildx, buildkit and docker to latest stable
2024-09-13 09:06:29 -07:00
CrazyMax
15cf6afee9 dockerfile: bump buildx to 0.17.1
Signed-off-by: CrazyMax <1951866+crazy-max@users.noreply.github.com>
2024-09-13 18:01:28 +02:00
CrazyMax
8fc5c75c58 dockerfile: bump docker to 27.2.1
Signed-off-by: CrazyMax <1951866+crazy-max@users.noreply.github.com>
2024-09-13 17:56:47 +02:00
CrazyMax
32f329f9c4 ci: bump buildkit to 0.16.0
Signed-off-by: CrazyMax <1951866+crazy-max@users.noreply.github.com>
2024-09-13 17:56:46 +02:00
CrazyMax
d031b23972 dockerfile: bump buildx to 0.17.0
Signed-off-by: CrazyMax <1951866+crazy-max@users.noreply.github.com>
2024-09-13 17:56:46 +02:00
CrazyMax
654304bb85 Merge pull request #446 from docker/bot/buildx-releases-json
Update `.github/buildx-releases.json`
2024-09-13 17:56:34 +02:00
crazy-max
d50c73260b github: update .github/buildx-releases.json
Signed-off-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2024-09-13 15:56:19 +00:00
CrazyMax
f47c55533e Merge pull request #445 from docker/dependabot/npm_and_yarn/path-to-regexp-6.3.0
build(deps): bump path-to-regexp from 6.2.2 to 6.3.0
2024-09-13 17:55:44 +02:00
dependabot[bot]
e30303f84e build(deps): bump path-to-regexp from 6.2.2 to 6.3.0
Bumps [path-to-regexp](https://github.com/pillarjs/path-to-regexp) from 6.2.2 to 6.3.0.
- [Release notes](https://github.com/pillarjs/path-to-regexp/releases)
- [Changelog](https://github.com/pillarjs/path-to-regexp/blob/master/History.md)
- [Commits](https://github.com/pillarjs/path-to-regexp/compare/v6.2.2...v6.3.0)

---
updated-dependencies:
- dependency-name: path-to-regexp
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-09-13 09:05:19 +00:00
CrazyMax
e0dd306fe3 Merge pull request #444 from docker/dependabot/github_actions/peter-evans/create-pull-request-7.0.2
build(deps): bump peter-evans/create-pull-request from 7.0.1 to 7.0.2
2024-09-13 11:03:27 +02:00
dependabot[bot]
1ff7272118 build(deps): bump peter-evans/create-pull-request from 7.0.1 to 7.0.2
Bumps [peter-evans/create-pull-request](https://github.com/peter-evans/create-pull-request) from 7.0.1 to 7.0.2.
- [Release notes](https://github.com/peter-evans/create-pull-request/releases)
- [Commits](8867c4aba1...d121e62763)

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

Signed-off-by: dependabot[bot] <support@github.com>
2024-09-12 22:31:03 +00:00
CrazyMax
62744e2178 Merge pull request #442 from docker/bot/buildx-releases-json
Update `.github/buildx-releases.json`
2024-09-10 19:23:41 +02:00
crazy-max
4aeef48155 github: update .github/buildx-releases.json
Signed-off-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2024-09-10 17:23:09 +00:00
CrazyMax
5f9d6510f7 Merge pull request #440 from docker/bot/docker-releases-json
Update `.github/docker-releases.json`
2024-09-10 14:27:53 +02:00
crazy-max
b7646ad39d github: update .github/docker-releases.json
Signed-off-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2024-09-10 12:26:57 +00:00
CrazyMax
efc11464fc Merge pull request #441 from docker/bot/buildx-releases-json
Update `.github/buildx-releases.json`
2024-09-10 14:26:29 +02:00
crazy-max
4f6056bbea github: update .github/buildx-releases.json
Signed-off-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2024-09-10 12:07:48 +00:00
CrazyMax
2eba5d9d10 Merge pull request #437 from docker/dependabot/github_actions/peter-evans/create-pull-request-7.0.1
build(deps): bump peter-evans/create-pull-request from 7.0.0 to 7.0.1
2024-09-06 12:55:04 +02:00
dependabot[bot]
983de45621 build(deps): bump peter-evans/create-pull-request from 7.0.0 to 7.0.1
Bumps [peter-evans/create-pull-request](https://github.com/peter-evans/create-pull-request) from 7.0.0 to 7.0.1.
- [Release notes](https://github.com/peter-evans/create-pull-request/releases)
- [Commits](4320041ed3...8867c4aba1)

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

Signed-off-by: dependabot[bot] <support@github.com>
2024-09-05 23:03:36 +00:00
CrazyMax
e132497440 Merge pull request #435 from docker/dependabot/github_actions/peter-evans/create-pull-request-7.0.0
build(deps): bump peter-evans/create-pull-request from 6.1.0 to 7.0.0
2024-09-05 15:32:20 +02:00
CrazyMax
fa18b49fe7 Merge pull request #436 from docker/bot/buildx-releases-json
Update `.github/buildx-releases.json`
2024-09-05 15:31:50 +02:00
crazy-max
b54c662ac6 github: update .github/buildx-releases.json
Signed-off-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2024-09-05 12:07:26 +00:00
dependabot[bot]
44ba4a2d72 build(deps): bump peter-evans/create-pull-request from 6.1.0 to 7.0.0
Bumps [peter-evans/create-pull-request](https://github.com/peter-evans/create-pull-request) from 6.1.0 to 7.0.0.
- [Release notes](https://github.com/peter-evans/create-pull-request/releases)
- [Commits](c5a7806660...4320041ed3)

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

Signed-off-by: dependabot[bot] <support@github.com>
2024-09-03 22:57:49 +00:00
CrazyMax
89857b067b Merge pull request #431 from docker/dependabot/npm_and_yarn/actions/http-client-2.2.3
build(deps): bump @actions/http-client from 2.2.2 to 2.2.3
2024-09-02 16:40:21 +02:00
CrazyMax
1b167c2c3e Merge pull request #432 from docker/dependabot/npm_and_yarn/unzip-stream-0.3.4
build(deps): bump unzip-stream from 0.3.1 to 0.3.4
2024-09-02 16:40:06 +02:00
CrazyMax
6c041738b9 Merge pull request #433 from docker/bot/docker-releases-json
Update `.github/docker-releases.json`
2024-09-02 16:39:50 +02:00
CrazyMax
824e1e31e7 Merge pull request #434 from docker/bot/buildx-lab-releases-json
Update `.github/buildx-lab-releases.json`
2024-09-02 16:39:30 +02:00
crazy-max
7185076486 github: update .github/buildx-lab-releases.json
Signed-off-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2024-08-30 12:06:32 +00:00
crazy-max
a1d9cba77d github: update .github/docker-releases.json
Signed-off-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2024-08-28 00:25:00 +00:00
dependabot[bot]
f27512c22d build(deps): bump unzip-stream from 0.3.1 to 0.3.4
Bumps [unzip-stream](https://github.com/mhr3/unzip-stream) from 0.3.1 to 0.3.4.
- [Commits](https://github.com/mhr3/unzip-stream/compare/v0.3.1...v0.3.4)

---
updated-dependencies:
- dependency-name: unzip-stream
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-08-26 15:22:04 +00:00
dependabot[bot]
10b503e7f6 build(deps): bump @actions/http-client from 2.2.2 to 2.2.3
Bumps [@actions/http-client](https://github.com/actions/toolkit/tree/HEAD/packages/http-client) from 2.2.2 to 2.2.3.
- [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-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-08-22 22:12:11 +00:00
CrazyMax
199910c295 Merge pull request #430 from docker/dependabot/npm_and_yarn/actions/http-client-2.2.2
build(deps): bump @actions/http-client from 2.2.1 to 2.2.2
2024-08-20 10:19:56 +02:00
CrazyMax
881ec509f3 Merge pull request #429 from docker/bot/docker-releases-json
Update `.github/docker-releases.json`
2024-08-20 10:19:31 +02:00
crazy-max
ba0508be76 github: update .github/docker-releases.json
Signed-off-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2024-08-20 00:24:27 +00:00
dependabot[bot]
9bbfda97a3 build(deps): bump @actions/http-client from 2.2.1 to 2.2.2
Bumps [@actions/http-client](https://github.com/actions/toolkit/tree/HEAD/packages/http-client) from 2.2.1 to 2.2.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-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-08-16 22:53:48 +00:00
CrazyMax
ded2f5536d Merge pull request #428 from crazy-max/buildx-fix-convert-warnings
Some checks failed
publish / publish (push) Has been cancelled
buildx: use Buffer for base64 encoding of the Dockerfile
2024-08-07 20:40:32 +02:00
CrazyMax
e97959223c buildx: use Buffer for base64 encoding of the Dockerfile
Signed-off-by: CrazyMax <1951866+crazy-max@users.noreply.github.com>
2024-08-07 20:29:42 +02:00
CrazyMax
7c54753700 Merge pull request #426 from docker/dependabot/npm_and_yarn/actions/artifact-2.1.9
build(deps): bump @actions/artifact from 2.1.8 to 2.1.9
2024-08-02 09:16:38 +02:00
CrazyMax
ebf0787efa Merge pull request #427 from docker/bot/buildx-lab-releases-json
Update `.github/buildx-lab-releases.json`
2024-08-02 09:15:51 +02:00
crazy-max
f751af96ee github: update .github/buildx-lab-releases.json
Signed-off-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2024-08-02 00:15:36 +00:00
dependabot[bot]
1f95d41238 build(deps): bump @actions/artifact from 2.1.8 to 2.1.9
Bumps [@actions/artifact](https://github.com/actions/toolkit/tree/HEAD/packages/artifact) from 2.1.8 to 2.1.9.
- [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-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-08-01 22:04:50 +00:00
CrazyMax
3543c64504 Merge pull request #425 from crazy-max/jest-tmp
Some checks failed
publish / publish (push) Has been cancelled
jest: fix temp dir and rename fixtures folder
2024-07-31 11:34:38 +02:00
CrazyMax
eb838bda3a jest: rename fixtures folder
Signed-off-by: CrazyMax <1951866+crazy-max@users.noreply.github.com>
2024-07-31 11:04:17 +02:00
CrazyMax
aa8033de8f jest: fix temp dir
Signed-off-by: CrazyMax <1951866+crazy-max@users.noreply.github.com>
2024-07-31 11:01:57 +02:00
CrazyMax
a8cf50098a Merge pull request #389 from crazy-max/bake-warnings
bake: handle build checks from metadata
2024-07-31 10:34:42 +02:00
CrazyMax
42e59b7a6c bake: handle build checks from metadata
Signed-off-by: CrazyMax <1951866+crazy-max@users.noreply.github.com>
2024-07-31 09:49:35 +02:00
CrazyMax
477e96d237 Merge pull request #401 from crazy-max/build-warnings-localstate
Some checks failed
publish / publish (push) Has been cancelled
buildx: convert vertex warnings to github annotations based on localstate
2024-07-30 16:03:42 +02:00
CrazyMax
05e3bb5b86 buildx(history): update docker daemon requirement message
Signed-off-by: CrazyMax <1951866+crazy-max@users.noreply.github.com>
2024-07-30 15:55:52 +02:00
CrazyMax
11c483e5c9 buildx: convert vertex warnings to github annotations based on localstate
Signed-off-by: CrazyMax <1951866+crazy-max@users.noreply.github.com>
2024-07-30 15:53:00 +02:00
CrazyMax
491039b9e3 util: isPathRelativeTo func
Signed-off-by: CrazyMax <1951866+crazy-max@users.noreply.github.com>
2024-07-30 15:52:53 +02:00
CrazyMax
a777edf0f6 Merge pull request #423 from docker/bot/docker-releases-json
Update `.github/docker-releases.json`
2024-07-26 16:25:14 +02:00
crazy-max
a60e66444e github: update .github/docker-releases.json
Signed-off-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2024-07-26 00:23:55 +00:00
Tõnis Tiigi
f94786cf56 Merge pull request #422 from crazy-max/update-buildx-buildkit
update buildx to 0.16.2, buildkit to 0.15.1
2024-07-25 10:08:00 -07:00
CrazyMax
09e67cefea update buildx to 0.16.2, buildkit to 0.15.1
Signed-off-by: CrazyMax <1951866+crazy-max@users.noreply.github.com>
2024-07-25 17:26:29 +02:00
CrazyMax
c5fb2b6f30 Merge pull request #421 from docker/bot/buildx-releases-json
Update `.github/buildx-releases.json`
2024-07-25 17:24:25 +02:00
crazy-max
1416ff392b github: update .github/buildx-releases.json
Signed-off-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2024-07-25 15:23:56 +00:00
CrazyMax
e4b0b455d8 Merge pull request #420 from docker/bot/docker-releases-json
Update `.github/docker-releases.json`
2024-07-25 17:23:26 +02:00
crazy-max
ce4ab4d3d2 github: update .github/docker-releases.json
Signed-off-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2024-07-25 00:23:58 +00:00
CrazyMax
b7405db71f Merge pull request #419 from docker/bot/docker-releases-json
Update `.github/docker-releases.json`
2024-07-24 11:30:11 +02:00
crazy-max
fbf0d5ba85 github: update .github/docker-releases.json
Signed-off-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2024-07-24 00:24:54 +00:00
CrazyMax
66531a2912 Merge pull request #418 from docker/bot/docker-releases-json
Update `.github/docker-releases.json`
2024-07-22 14:46:48 +02:00
crazy-max
1c34ae09f0 github: update .github/docker-releases.json
Signed-off-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2024-07-22 12:09:38 +00:00
CrazyMax
6df98c1aad Merge pull request #417 from crazy-max/missing-dct-removal
Some checks failed
publish / publish (push) Has been cancelled
missing DCT removal for a docker command
2024-07-19 16:24:23 +02:00
CrazyMax
a9bd3f5b6b missing DCT removal for a docker command
Signed-off-by: CrazyMax <1951866+crazy-max@users.noreply.github.com>
2024-07-19 16:19:38 +02:00
CrazyMax
f7a8b21610 Merge pull request #416 from crazy-max/docker-daemon-up
buildx(history): check docker daemon is running before exporting
2024-07-19 16:18:17 +02:00
CrazyMax
8177e153d6 buildx(history): check docker daemon is running before exporting
Signed-off-by: CrazyMax <1951866+crazy-max@users.noreply.github.com>
2024-07-19 13:31:32 +02:00
CrazyMax
a14ead6486 docker: isDaemonRunning func
Signed-off-by: CrazyMax <1951866+crazy-max@users.noreply.github.com>
2024-07-19 13:25:38 +02:00
CrazyMax
f9de623b1d Merge pull request #415 from tonistiigi/update-buildx-v0.16.1
update buildx to v0.16.1
2024-07-19 10:30:23 +02:00
Tonis Tiigi
202104bf16 update buildx to v0.16.1
Signed-off-by: Tonis Tiigi <tonistiigi@gmail.com>
2024-07-18 14:55:07 -07:00
Tõnis Tiigi
b6b4cf170e Merge pull request #414 from docker/bot/buildx-releases-json
Update `.github/buildx-releases.json`
2024-07-18 14:53:09 -07:00
tonistiigi
311ae1dacc github: update .github/buildx-releases.json
Signed-off-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2024-07-18 21:51:28 +00:00
CrazyMax
163d33a2bd Merge pull request #412 from crazy-max/docker-disable-dct
Some checks failed
publish / publish (push) Has been cancelled
disable DCT for docker commands
2024-07-17 14:07:19 +02:00
CrazyMax
d283be916f Merge pull request #413 from docker/dependabot/npm_and_yarn/semver-7.6.3
build(deps): bump semver from 7.6.2 to 7.6.3
2024-07-17 13:55:39 +02:00
dependabot[bot]
ffc7d98a98 build(deps): bump semver from 7.6.2 to 7.6.3
Bumps [semver](https://github.com/npm/node-semver) from 7.6.2 to 7.6.3.
- [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.6.2...v7.6.3)

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

Signed-off-by: dependabot[bot] <support@github.com>
2024-07-16 22:29:08 +00:00
CrazyMax
d36bef4156 disable DCT for docker commands
Signed-off-by: CrazyMax <1951866+crazy-max@users.noreply.github.com>
2024-07-16 17:17:24 +02:00
CrazyMax
300c014384 Merge pull request #411 from crazy-max/buildx-localstate-regex-fix
Some checks failed
publish / publish (push) Has been cancelled
buildx: fix regex in fixLocalState func
2024-07-15 13:29:06 +02:00
CrazyMax
b641895e8b buildx: fix regex in fixLocalState func
Signed-off-by: CrazyMax <1951866+crazy-max@users.noreply.github.com>
2024-07-15 13:25:56 +02:00
CrazyMax
4db21c4b43 Merge pull request #406 from docker/dependabot/npm_and_yarn/actions/artifact-2.1.8
build(deps): bump @actions/artifact from 2.1.7 to 2.1.8
2024-07-15 13:20:46 +02:00
CrazyMax
8d807b6902 Merge pull request #410 from crazy-max/export-build-image-env
buildx(history): env var to override export build image
2024-07-15 13:18:06 +02:00
CrazyMax
99e6b01d39 github: use isGhes func from actions/artifact module
Signed-off-by: CrazyMax <1951866+crazy-max@users.noreply.github.com>
2024-07-15 13:14:08 +02:00
CrazyMax
23208073ee buildx(history): env var to override export build image
Signed-off-by: CrazyMax <1951866+crazy-max@users.noreply.github.com>
2024-07-15 13:06:28 +02:00
CrazyMax
2264b5ac72 Merge pull request #409 from tonistiigi/update-buildx-v0.16.0
update buildx and buildkit
2024-07-15 01:06:12 +02:00
Tonis Tiigi
d5247558ad update buildx and buildkit
Signed-off-by: Tonis Tiigi <tonistiigi@gmail.com>
2024-07-11 12:04:54 -07:00
Tõnis Tiigi
e5ef18078d Merge pull request #408 from docker/bot/buildx-releases-json
Update `.github/buildx-releases.json`
2024-07-11 12:01:49 -07:00
tonistiigi
517914fc72 github: update .github/buildx-releases.json
Signed-off-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2024-07-11 19:00:56 +00:00
dependabot[bot]
4c7e849bb4 build(deps): bump @actions/artifact from 2.1.7 to 2.1.8
Bumps [@actions/artifact](https://github.com/actions/toolkit/tree/HEAD/packages/artifact) from 2.1.7 to 2.1.8.
- [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-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-07-05 23:03:28 +00:00
CrazyMax
ce0d3d5cf1 Merge pull request #405 from crazy-max/buildx-fixlocalstate-typo
buildx: fix typo in fixLocalState func
2024-07-05 16:33:54 +02:00
CrazyMax
90311d5c08 buildx: fix typo in fixLocalState func
Signed-off-by: CrazyMax <1951866+crazy-max@users.noreply.github.com>
2024-07-05 16:29:52 +02:00
CrazyMax
d908ffcd2c Merge pull request #404 from crazy-max/buildx-localstate-test
buildx: extra test to ensure legit path is not trimmed for localstate
2024-07-05 16:25:41 +02:00
CrazyMax
3bd6acf499 buildx: make refs dir optional in localState func
Signed-off-by: CrazyMax <1951866+crazy-max@users.noreply.github.com>
2024-07-05 16:18:20 +02:00
CrazyMax
5b4c1ac025 buildx: extra test to ensure legit path is not trimmed for localstate
Signed-off-by: CrazyMax <1951866+crazy-max@users.noreply.github.com>
2024-07-05 16:16:06 +02:00
CrazyMax
e49e07d23e Merge pull request #403 from crazy-max/buildx-fix-localstate
buildx: fix broken local state
2024-07-05 16:02:45 +02:00
CrazyMax
b4c8e1a503 buildx: fix broken local state
Signed-off-by: CrazyMax <1951866+crazy-max@users.noreply.github.com>
2024-07-05 15:45:51 +02:00
CrazyMax
1510b1d394 Merge pull request #402 from docker/bot/buildx-lab-releases-json
Update `.github/buildx-lab-releases.json`
2024-07-05 14:53:25 +02:00
crazy-max
214e644835 github: update .github/buildx-lab-releases.json
Signed-off-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2024-07-05 12:06:43 +00:00
CrazyMax
d7a84a5d46 Merge pull request #400 from crazy-max/docker-context-inspect
Some checks failed
publish / publish (push) Has been cancelled
docker: contextInspect func
2024-07-04 10:25:46 +02:00
CrazyMax
61967435c1 docker: contextInspect func
Signed-off-by: CrazyMax <1951866+crazy-max@users.noreply.github.com>
2024-07-04 10:13:17 +02:00
CrazyMax
78ca5b7f21 Merge pull request #399 from docker/bot/buildx-releases-json
Update `.github/buildx-releases.json`
2024-07-04 09:42:16 +02:00
crazy-max
cc344864cb github: update .github/buildx-releases.json
Signed-off-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2024-07-04 00:16:52 +00:00
CrazyMax
c70efab546 Merge pull request #392 from crazy-max/history-export-detach-dialstdio
Some checks failed
publish / publish (push) Has been cancelled
buildx(history): detach dial-stdio process
2024-07-02 15:16:11 +02:00
CrazyMax
55a2181286 Merge pull request #394 from crazy-max/summary-without-upload
github(summary): build record upload optional
2024-07-02 15:11:09 +02:00
CrazyMax
b26af9f868 github(summary): build record upload optional
Signed-off-by: CrazyMax <1951866+crazy-max@users.noreply.github.com>
2024-07-02 10:56:16 +02:00
CrazyMax
ff35e30b01 buildx(history): improve child process termination and exit code handling
Signed-off-by: CrazyMax <1951866+crazy-max@users.noreply.github.com>
2024-07-02 10:39:22 +02:00
CrazyMax
200e43c426 buildx(history): detach dial-stdio process
Signed-off-by: CrazyMax <1951866+crazy-max@users.noreply.github.com>
2024-07-02 10:36:20 +02:00
103 changed files with 2103 additions and 357 deletions

View File

@@ -1,43 +1,125 @@
{
"latest": {
"id": 157588052,
"tag_name": "v0.14.1-desktop.1",
"html_url": "https://github.com/docker/buildx-desktop/releases/tag/v0.14.1-desktop.1",
"id": 168239569,
"tag_name": "v0.16.2-desktop.1",
"html_url": "https://github.com/docker/buildx-desktop/releases/tag/v0.16.2-desktop.1",
"assets": [
"https://github.com/docker/buildx-desktop/releases/download/v0.14.1-desktop.1/buildx-v0.14.1-desktop.1.darwin-amd64",
"https://github.com/docker/buildx-desktop/releases/download/v0.14.1-desktop.1/buildx-v0.14.1-desktop.1.darwin-amd64.provenance.json",
"https://github.com/docker/buildx-desktop/releases/download/v0.14.1-desktop.1/buildx-v0.14.1-desktop.1.darwin-amd64.sbom.json",
"https://github.com/docker/buildx-desktop/releases/download/v0.14.1-desktop.1/buildx-v0.14.1-desktop.1.darwin-arm64",
"https://github.com/docker/buildx-desktop/releases/download/v0.14.1-desktop.1/buildx-v0.14.1-desktop.1.darwin-arm64.provenance.json",
"https://github.com/docker/buildx-desktop/releases/download/v0.14.1-desktop.1/buildx-v0.14.1-desktop.1.darwin-arm64.sbom.json",
"https://github.com/docker/buildx-desktop/releases/download/v0.14.1-desktop.1/buildx-v0.14.1-desktop.1.linux-amd64",
"https://github.com/docker/buildx-desktop/releases/download/v0.14.1-desktop.1/buildx-v0.14.1-desktop.1.linux-amd64.provenance.json",
"https://github.com/docker/buildx-desktop/releases/download/v0.14.1-desktop.1/buildx-v0.14.1-desktop.1.linux-amd64.sbom.json",
"https://github.com/docker/buildx-desktop/releases/download/v0.14.1-desktop.1/buildx-v0.14.1-desktop.1.linux-arm-v6",
"https://github.com/docker/buildx-desktop/releases/download/v0.14.1-desktop.1/buildx-v0.14.1-desktop.1.linux-arm-v6.provenance.json",
"https://github.com/docker/buildx-desktop/releases/download/v0.14.1-desktop.1/buildx-v0.14.1-desktop.1.linux-arm-v6.sbom.json",
"https://github.com/docker/buildx-desktop/releases/download/v0.14.1-desktop.1/buildx-v0.14.1-desktop.1.linux-arm-v7",
"https://github.com/docker/buildx-desktop/releases/download/v0.14.1-desktop.1/buildx-v0.14.1-desktop.1.linux-arm-v7.provenance.json",
"https://github.com/docker/buildx-desktop/releases/download/v0.14.1-desktop.1/buildx-v0.14.1-desktop.1.linux-arm-v7.sbom.json",
"https://github.com/docker/buildx-desktop/releases/download/v0.14.1-desktop.1/buildx-v0.14.1-desktop.1.linux-arm64",
"https://github.com/docker/buildx-desktop/releases/download/v0.14.1-desktop.1/buildx-v0.14.1-desktop.1.linux-arm64.provenance.json",
"https://github.com/docker/buildx-desktop/releases/download/v0.14.1-desktop.1/buildx-v0.14.1-desktop.1.linux-arm64.sbom.json",
"https://github.com/docker/buildx-desktop/releases/download/v0.14.1-desktop.1/buildx-v0.14.1-desktop.1.linux-ppc64le",
"https://github.com/docker/buildx-desktop/releases/download/v0.14.1-desktop.1/buildx-v0.14.1-desktop.1.linux-ppc64le.provenance.json",
"https://github.com/docker/buildx-desktop/releases/download/v0.14.1-desktop.1/buildx-v0.14.1-desktop.1.linux-ppc64le.sbom.json",
"https://github.com/docker/buildx-desktop/releases/download/v0.14.1-desktop.1/buildx-v0.14.1-desktop.1.linux-riscv64",
"https://github.com/docker/buildx-desktop/releases/download/v0.14.1-desktop.1/buildx-v0.14.1-desktop.1.linux-riscv64.provenance.json",
"https://github.com/docker/buildx-desktop/releases/download/v0.14.1-desktop.1/buildx-v0.14.1-desktop.1.linux-riscv64.sbom.json",
"https://github.com/docker/buildx-desktop/releases/download/v0.14.1-desktop.1/buildx-v0.14.1-desktop.1.linux-s390x",
"https://github.com/docker/buildx-desktop/releases/download/v0.14.1-desktop.1/buildx-v0.14.1-desktop.1.linux-s390x.provenance.json",
"https://github.com/docker/buildx-desktop/releases/download/v0.14.1-desktop.1/buildx-v0.14.1-desktop.1.linux-s390x.sbom.json",
"https://github.com/docker/buildx-desktop/releases/download/v0.14.1-desktop.1/buildx-v0.14.1-desktop.1.windows-amd64.exe",
"https://github.com/docker/buildx-desktop/releases/download/v0.14.1-desktop.1/buildx-v0.14.1-desktop.1.windows-amd64.provenance.json",
"https://github.com/docker/buildx-desktop/releases/download/v0.14.1-desktop.1/buildx-v0.14.1-desktop.1.windows-amd64.sbom.json",
"https://github.com/docker/buildx-desktop/releases/download/v0.14.1-desktop.1/buildx-v0.14.1-desktop.1.windows-arm64.exe",
"https://github.com/docker/buildx-desktop/releases/download/v0.14.1-desktop.1/buildx-v0.14.1-desktop.1.windows-arm64.provenance.json",
"https://github.com/docker/buildx-desktop/releases/download/v0.14.1-desktop.1/buildx-v0.14.1-desktop.1.windows-arm64.sbom.json",
"https://github.com/docker/buildx-desktop/releases/download/v0.14.1-desktop.1/checksums.txt"
"https://github.com/docker/buildx-desktop/releases/download/v0.16.2-desktop.1/buildx-v0.16.2-desktop.1.darwin-amd64",
"https://github.com/docker/buildx-desktop/releases/download/v0.16.2-desktop.1/buildx-v0.16.2-desktop.1.darwin-amd64.provenance.json",
"https://github.com/docker/buildx-desktop/releases/download/v0.16.2-desktop.1/buildx-v0.16.2-desktop.1.darwin-amd64.sbom.json",
"https://github.com/docker/buildx-desktop/releases/download/v0.16.2-desktop.1/buildx-v0.16.2-desktop.1.darwin-arm64",
"https://github.com/docker/buildx-desktop/releases/download/v0.16.2-desktop.1/buildx-v0.16.2-desktop.1.darwin-arm64.provenance.json",
"https://github.com/docker/buildx-desktop/releases/download/v0.16.2-desktop.1/buildx-v0.16.2-desktop.1.darwin-arm64.sbom.json",
"https://github.com/docker/buildx-desktop/releases/download/v0.16.2-desktop.1/buildx-v0.16.2-desktop.1.linux-amd64",
"https://github.com/docker/buildx-desktop/releases/download/v0.16.2-desktop.1/buildx-v0.16.2-desktop.1.linux-amd64.provenance.json",
"https://github.com/docker/buildx-desktop/releases/download/v0.16.2-desktop.1/buildx-v0.16.2-desktop.1.linux-amd64.sbom.json",
"https://github.com/docker/buildx-desktop/releases/download/v0.16.2-desktop.1/buildx-v0.16.2-desktop.1.linux-arm-v6",
"https://github.com/docker/buildx-desktop/releases/download/v0.16.2-desktop.1/buildx-v0.16.2-desktop.1.linux-arm-v6.provenance.json",
"https://github.com/docker/buildx-desktop/releases/download/v0.16.2-desktop.1/buildx-v0.16.2-desktop.1.linux-arm-v6.sbom.json",
"https://github.com/docker/buildx-desktop/releases/download/v0.16.2-desktop.1/buildx-v0.16.2-desktop.1.linux-arm-v7",
"https://github.com/docker/buildx-desktop/releases/download/v0.16.2-desktop.1/buildx-v0.16.2-desktop.1.linux-arm-v7.provenance.json",
"https://github.com/docker/buildx-desktop/releases/download/v0.16.2-desktop.1/buildx-v0.16.2-desktop.1.linux-arm-v7.sbom.json",
"https://github.com/docker/buildx-desktop/releases/download/v0.16.2-desktop.1/buildx-v0.16.2-desktop.1.linux-arm64",
"https://github.com/docker/buildx-desktop/releases/download/v0.16.2-desktop.1/buildx-v0.16.2-desktop.1.linux-arm64.provenance.json",
"https://github.com/docker/buildx-desktop/releases/download/v0.16.2-desktop.1/buildx-v0.16.2-desktop.1.linux-arm64.sbom.json",
"https://github.com/docker/buildx-desktop/releases/download/v0.16.2-desktop.1/buildx-v0.16.2-desktop.1.linux-ppc64le",
"https://github.com/docker/buildx-desktop/releases/download/v0.16.2-desktop.1/buildx-v0.16.2-desktop.1.linux-ppc64le.provenance.json",
"https://github.com/docker/buildx-desktop/releases/download/v0.16.2-desktop.1/buildx-v0.16.2-desktop.1.linux-ppc64le.sbom.json",
"https://github.com/docker/buildx-desktop/releases/download/v0.16.2-desktop.1/buildx-v0.16.2-desktop.1.linux-riscv64",
"https://github.com/docker/buildx-desktop/releases/download/v0.16.2-desktop.1/buildx-v0.16.2-desktop.1.linux-riscv64.provenance.json",
"https://github.com/docker/buildx-desktop/releases/download/v0.16.2-desktop.1/buildx-v0.16.2-desktop.1.linux-riscv64.sbom.json",
"https://github.com/docker/buildx-desktop/releases/download/v0.16.2-desktop.1/buildx-v0.16.2-desktop.1.linux-s390x",
"https://github.com/docker/buildx-desktop/releases/download/v0.16.2-desktop.1/buildx-v0.16.2-desktop.1.linux-s390x.provenance.json",
"https://github.com/docker/buildx-desktop/releases/download/v0.16.2-desktop.1/buildx-v0.16.2-desktop.1.linux-s390x.sbom.json",
"https://github.com/docker/buildx-desktop/releases/download/v0.16.2-desktop.1/buildx-v0.16.2-desktop.1.windows-amd64.exe",
"https://github.com/docker/buildx-desktop/releases/download/v0.16.2-desktop.1/buildx-v0.16.2-desktop.1.windows-amd64.provenance.json",
"https://github.com/docker/buildx-desktop/releases/download/v0.16.2-desktop.1/buildx-v0.16.2-desktop.1.windows-amd64.sbom.json",
"https://github.com/docker/buildx-desktop/releases/download/v0.16.2-desktop.1/buildx-v0.16.2-desktop.1.windows-arm64.exe",
"https://github.com/docker/buildx-desktop/releases/download/v0.16.2-desktop.1/buildx-v0.16.2-desktop.1.windows-arm64.provenance.json",
"https://github.com/docker/buildx-desktop/releases/download/v0.16.2-desktop.1/buildx-v0.16.2-desktop.1.windows-arm64.sbom.json",
"https://github.com/docker/buildx-desktop/releases/download/v0.16.2-desktop.1/checksums.txt"
]
},
"v0.17.1-desktop.1": {
"id": 174998914,
"tag_name": "v0.17.1-desktop.1",
"html_url": "https://github.com/docker/buildx-desktop/releases/tag/v0.17.1-desktop.1",
"assets": [
"https://github.com/docker/buildx-desktop/releases/download/v0.17.1-desktop.1/buildx-v0.17.1-desktop.1.darwin-amd64",
"https://github.com/docker/buildx-desktop/releases/download/v0.17.1-desktop.1/buildx-v0.17.1-desktop.1.darwin-amd64.provenance.json",
"https://github.com/docker/buildx-desktop/releases/download/v0.17.1-desktop.1/buildx-v0.17.1-desktop.1.darwin-amd64.sbom.json",
"https://github.com/docker/buildx-desktop/releases/download/v0.17.1-desktop.1/buildx-v0.17.1-desktop.1.darwin-arm64",
"https://github.com/docker/buildx-desktop/releases/download/v0.17.1-desktop.1/buildx-v0.17.1-desktop.1.darwin-arm64.provenance.json",
"https://github.com/docker/buildx-desktop/releases/download/v0.17.1-desktop.1/buildx-v0.17.1-desktop.1.darwin-arm64.sbom.json",
"https://github.com/docker/buildx-desktop/releases/download/v0.17.1-desktop.1/buildx-v0.17.1-desktop.1.linux-amd64",
"https://github.com/docker/buildx-desktop/releases/download/v0.17.1-desktop.1/buildx-v0.17.1-desktop.1.linux-amd64.provenance.json",
"https://github.com/docker/buildx-desktop/releases/download/v0.17.1-desktop.1/buildx-v0.17.1-desktop.1.linux-amd64.sbom.json",
"https://github.com/docker/buildx-desktop/releases/download/v0.17.1-desktop.1/buildx-v0.17.1-desktop.1.linux-arm-v6",
"https://github.com/docker/buildx-desktop/releases/download/v0.17.1-desktop.1/buildx-v0.17.1-desktop.1.linux-arm-v6.provenance.json",
"https://github.com/docker/buildx-desktop/releases/download/v0.17.1-desktop.1/buildx-v0.17.1-desktop.1.linux-arm-v6.sbom.json",
"https://github.com/docker/buildx-desktop/releases/download/v0.17.1-desktop.1/buildx-v0.17.1-desktop.1.linux-arm-v7",
"https://github.com/docker/buildx-desktop/releases/download/v0.17.1-desktop.1/buildx-v0.17.1-desktop.1.linux-arm-v7.provenance.json",
"https://github.com/docker/buildx-desktop/releases/download/v0.17.1-desktop.1/buildx-v0.17.1-desktop.1.linux-arm-v7.sbom.json",
"https://github.com/docker/buildx-desktop/releases/download/v0.17.1-desktop.1/buildx-v0.17.1-desktop.1.linux-arm64",
"https://github.com/docker/buildx-desktop/releases/download/v0.17.1-desktop.1/buildx-v0.17.1-desktop.1.linux-arm64.provenance.json",
"https://github.com/docker/buildx-desktop/releases/download/v0.17.1-desktop.1/buildx-v0.17.1-desktop.1.linux-arm64.sbom.json",
"https://github.com/docker/buildx-desktop/releases/download/v0.17.1-desktop.1/buildx-v0.17.1-desktop.1.linux-ppc64le",
"https://github.com/docker/buildx-desktop/releases/download/v0.17.1-desktop.1/buildx-v0.17.1-desktop.1.linux-ppc64le.provenance.json",
"https://github.com/docker/buildx-desktop/releases/download/v0.17.1-desktop.1/buildx-v0.17.1-desktop.1.linux-ppc64le.sbom.json",
"https://github.com/docker/buildx-desktop/releases/download/v0.17.1-desktop.1/buildx-v0.17.1-desktop.1.linux-riscv64",
"https://github.com/docker/buildx-desktop/releases/download/v0.17.1-desktop.1/buildx-v0.17.1-desktop.1.linux-riscv64.provenance.json",
"https://github.com/docker/buildx-desktop/releases/download/v0.17.1-desktop.1/buildx-v0.17.1-desktop.1.linux-riscv64.sbom.json",
"https://github.com/docker/buildx-desktop/releases/download/v0.17.1-desktop.1/buildx-v0.17.1-desktop.1.linux-s390x",
"https://github.com/docker/buildx-desktop/releases/download/v0.17.1-desktop.1/buildx-v0.17.1-desktop.1.linux-s390x.provenance.json",
"https://github.com/docker/buildx-desktop/releases/download/v0.17.1-desktop.1/buildx-v0.17.1-desktop.1.linux-s390x.sbom.json",
"https://github.com/docker/buildx-desktop/releases/download/v0.17.1-desktop.1/buildx-v0.17.1-desktop.1.windows-amd64.exe",
"https://github.com/docker/buildx-desktop/releases/download/v0.17.1-desktop.1/buildx-v0.17.1-desktop.1.windows-amd64.provenance.json",
"https://github.com/docker/buildx-desktop/releases/download/v0.17.1-desktop.1/buildx-v0.17.1-desktop.1.windows-amd64.sbom.json",
"https://github.com/docker/buildx-desktop/releases/download/v0.17.1-desktop.1/buildx-v0.17.1-desktop.1.windows-arm64.exe",
"https://github.com/docker/buildx-desktop/releases/download/v0.17.1-desktop.1/buildx-v0.17.1-desktop.1.windows-arm64.provenance.json",
"https://github.com/docker/buildx-desktop/releases/download/v0.17.1-desktop.1/buildx-v0.17.1-desktop.1.windows-arm64.sbom.json",
"https://github.com/docker/buildx-desktop/releases/download/v0.17.1-desktop.1/checksums.txt"
]
},
"v0.16.2-desktop.1": {
"id": 168239569,
"tag_name": "v0.16.2-desktop.1",
"html_url": "https://github.com/docker/buildx-desktop/releases/tag/v0.16.2-desktop.1",
"assets": [
"https://github.com/docker/buildx-desktop/releases/download/v0.16.2-desktop.1/buildx-v0.16.2-desktop.1.darwin-amd64",
"https://github.com/docker/buildx-desktop/releases/download/v0.16.2-desktop.1/buildx-v0.16.2-desktop.1.darwin-amd64.provenance.json",
"https://github.com/docker/buildx-desktop/releases/download/v0.16.2-desktop.1/buildx-v0.16.2-desktop.1.darwin-amd64.sbom.json",
"https://github.com/docker/buildx-desktop/releases/download/v0.16.2-desktop.1/buildx-v0.16.2-desktop.1.darwin-arm64",
"https://github.com/docker/buildx-desktop/releases/download/v0.16.2-desktop.1/buildx-v0.16.2-desktop.1.darwin-arm64.provenance.json",
"https://github.com/docker/buildx-desktop/releases/download/v0.16.2-desktop.1/buildx-v0.16.2-desktop.1.darwin-arm64.sbom.json",
"https://github.com/docker/buildx-desktop/releases/download/v0.16.2-desktop.1/buildx-v0.16.2-desktop.1.linux-amd64",
"https://github.com/docker/buildx-desktop/releases/download/v0.16.2-desktop.1/buildx-v0.16.2-desktop.1.linux-amd64.provenance.json",
"https://github.com/docker/buildx-desktop/releases/download/v0.16.2-desktop.1/buildx-v0.16.2-desktop.1.linux-amd64.sbom.json",
"https://github.com/docker/buildx-desktop/releases/download/v0.16.2-desktop.1/buildx-v0.16.2-desktop.1.linux-arm-v6",
"https://github.com/docker/buildx-desktop/releases/download/v0.16.2-desktop.1/buildx-v0.16.2-desktop.1.linux-arm-v6.provenance.json",
"https://github.com/docker/buildx-desktop/releases/download/v0.16.2-desktop.1/buildx-v0.16.2-desktop.1.linux-arm-v6.sbom.json",
"https://github.com/docker/buildx-desktop/releases/download/v0.16.2-desktop.1/buildx-v0.16.2-desktop.1.linux-arm-v7",
"https://github.com/docker/buildx-desktop/releases/download/v0.16.2-desktop.1/buildx-v0.16.2-desktop.1.linux-arm-v7.provenance.json",
"https://github.com/docker/buildx-desktop/releases/download/v0.16.2-desktop.1/buildx-v0.16.2-desktop.1.linux-arm-v7.sbom.json",
"https://github.com/docker/buildx-desktop/releases/download/v0.16.2-desktop.1/buildx-v0.16.2-desktop.1.linux-arm64",
"https://github.com/docker/buildx-desktop/releases/download/v0.16.2-desktop.1/buildx-v0.16.2-desktop.1.linux-arm64.provenance.json",
"https://github.com/docker/buildx-desktop/releases/download/v0.16.2-desktop.1/buildx-v0.16.2-desktop.1.linux-arm64.sbom.json",
"https://github.com/docker/buildx-desktop/releases/download/v0.16.2-desktop.1/buildx-v0.16.2-desktop.1.linux-ppc64le",
"https://github.com/docker/buildx-desktop/releases/download/v0.16.2-desktop.1/buildx-v0.16.2-desktop.1.linux-ppc64le.provenance.json",
"https://github.com/docker/buildx-desktop/releases/download/v0.16.2-desktop.1/buildx-v0.16.2-desktop.1.linux-ppc64le.sbom.json",
"https://github.com/docker/buildx-desktop/releases/download/v0.16.2-desktop.1/buildx-v0.16.2-desktop.1.linux-riscv64",
"https://github.com/docker/buildx-desktop/releases/download/v0.16.2-desktop.1/buildx-v0.16.2-desktop.1.linux-riscv64.provenance.json",
"https://github.com/docker/buildx-desktop/releases/download/v0.16.2-desktop.1/buildx-v0.16.2-desktop.1.linux-riscv64.sbom.json",
"https://github.com/docker/buildx-desktop/releases/download/v0.16.2-desktop.1/buildx-v0.16.2-desktop.1.linux-s390x",
"https://github.com/docker/buildx-desktop/releases/download/v0.16.2-desktop.1/buildx-v0.16.2-desktop.1.linux-s390x.provenance.json",
"https://github.com/docker/buildx-desktop/releases/download/v0.16.2-desktop.1/buildx-v0.16.2-desktop.1.linux-s390x.sbom.json",
"https://github.com/docker/buildx-desktop/releases/download/v0.16.2-desktop.1/buildx-v0.16.2-desktop.1.windows-amd64.exe",
"https://github.com/docker/buildx-desktop/releases/download/v0.16.2-desktop.1/buildx-v0.16.2-desktop.1.windows-amd64.provenance.json",
"https://github.com/docker/buildx-desktop/releases/download/v0.16.2-desktop.1/buildx-v0.16.2-desktop.1.windows-amd64.sbom.json",
"https://github.com/docker/buildx-desktop/releases/download/v0.16.2-desktop.1/buildx-v0.16.2-desktop.1.windows-arm64.exe",
"https://github.com/docker/buildx-desktop/releases/download/v0.16.2-desktop.1/buildx-v0.16.2-desktop.1.windows-arm64.provenance.json",
"https://github.com/docker/buildx-desktop/releases/download/v0.16.2-desktop.1/buildx-v0.16.2-desktop.1.windows-arm64.sbom.json",
"https://github.com/docker/buildx-desktop/releases/download/v0.16.2-desktop.1/checksums.txt"
]
},
"v0.15.1-desktop.1": {

View File

@@ -1,43 +1,412 @@
{
"latest": {
"id": 161126938,
"tag_name": "v0.15.1",
"html_url": "https://github.com/docker/buildx/releases/tag/v0.15.1",
"id": 174985224,
"tag_name": "v0.17.1",
"html_url": "https://github.com/docker/buildx/releases/tag/v0.17.1",
"assets": [
"https://github.com/docker/buildx/releases/download/v0.15.1/buildx-v0.15.1.darwin-amd64",
"https://github.com/docker/buildx/releases/download/v0.15.1/buildx-v0.15.1.darwin-amd64.provenance.json",
"https://github.com/docker/buildx/releases/download/v0.15.1/buildx-v0.15.1.darwin-amd64.sbom.json",
"https://github.com/docker/buildx/releases/download/v0.15.1/buildx-v0.15.1.darwin-arm64",
"https://github.com/docker/buildx/releases/download/v0.15.1/buildx-v0.15.1.darwin-arm64.provenance.json",
"https://github.com/docker/buildx/releases/download/v0.15.1/buildx-v0.15.1.darwin-arm64.sbom.json",
"https://github.com/docker/buildx/releases/download/v0.15.1/buildx-v0.15.1.linux-amd64",
"https://github.com/docker/buildx/releases/download/v0.15.1/buildx-v0.15.1.linux-amd64.provenance.json",
"https://github.com/docker/buildx/releases/download/v0.15.1/buildx-v0.15.1.linux-amd64.sbom.json",
"https://github.com/docker/buildx/releases/download/v0.15.1/buildx-v0.15.1.linux-arm-v6",
"https://github.com/docker/buildx/releases/download/v0.15.1/buildx-v0.15.1.linux-arm-v6.provenance.json",
"https://github.com/docker/buildx/releases/download/v0.15.1/buildx-v0.15.1.linux-arm-v6.sbom.json",
"https://github.com/docker/buildx/releases/download/v0.15.1/buildx-v0.15.1.linux-arm-v7",
"https://github.com/docker/buildx/releases/download/v0.15.1/buildx-v0.15.1.linux-arm-v7.provenance.json",
"https://github.com/docker/buildx/releases/download/v0.15.1/buildx-v0.15.1.linux-arm-v7.sbom.json",
"https://github.com/docker/buildx/releases/download/v0.15.1/buildx-v0.15.1.linux-arm64",
"https://github.com/docker/buildx/releases/download/v0.15.1/buildx-v0.15.1.linux-arm64.provenance.json",
"https://github.com/docker/buildx/releases/download/v0.15.1/buildx-v0.15.1.linux-arm64.sbom.json",
"https://github.com/docker/buildx/releases/download/v0.15.1/buildx-v0.15.1.linux-ppc64le",
"https://github.com/docker/buildx/releases/download/v0.15.1/buildx-v0.15.1.linux-ppc64le.provenance.json",
"https://github.com/docker/buildx/releases/download/v0.15.1/buildx-v0.15.1.linux-ppc64le.sbom.json",
"https://github.com/docker/buildx/releases/download/v0.15.1/buildx-v0.15.1.linux-riscv64",
"https://github.com/docker/buildx/releases/download/v0.15.1/buildx-v0.15.1.linux-riscv64.provenance.json",
"https://github.com/docker/buildx/releases/download/v0.15.1/buildx-v0.15.1.linux-riscv64.sbom.json",
"https://github.com/docker/buildx/releases/download/v0.15.1/buildx-v0.15.1.linux-s390x",
"https://github.com/docker/buildx/releases/download/v0.15.1/buildx-v0.15.1.linux-s390x.provenance.json",
"https://github.com/docker/buildx/releases/download/v0.15.1/buildx-v0.15.1.linux-s390x.sbom.json",
"https://github.com/docker/buildx/releases/download/v0.15.1/buildx-v0.15.1.windows-amd64.exe",
"https://github.com/docker/buildx/releases/download/v0.15.1/buildx-v0.15.1.windows-amd64.provenance.json",
"https://github.com/docker/buildx/releases/download/v0.15.1/buildx-v0.15.1.windows-amd64.sbom.json",
"https://github.com/docker/buildx/releases/download/v0.15.1/buildx-v0.15.1.windows-arm64.exe",
"https://github.com/docker/buildx/releases/download/v0.15.1/buildx-v0.15.1.windows-arm64.provenance.json",
"https://github.com/docker/buildx/releases/download/v0.15.1/buildx-v0.15.1.windows-arm64.sbom.json",
"https://github.com/docker/buildx/releases/download/v0.15.1/checksums.txt"
"https://github.com/docker/buildx/releases/download/v0.17.1/buildx-v0.17.1.darwin-amd64",
"https://github.com/docker/buildx/releases/download/v0.17.1/buildx-v0.17.1.darwin-amd64.provenance.json",
"https://github.com/docker/buildx/releases/download/v0.17.1/buildx-v0.17.1.darwin-amd64.sbom.json",
"https://github.com/docker/buildx/releases/download/v0.17.1/buildx-v0.17.1.darwin-arm64",
"https://github.com/docker/buildx/releases/download/v0.17.1/buildx-v0.17.1.darwin-arm64.provenance.json",
"https://github.com/docker/buildx/releases/download/v0.17.1/buildx-v0.17.1.darwin-arm64.sbom.json",
"https://github.com/docker/buildx/releases/download/v0.17.1/buildx-v0.17.1.linux-amd64",
"https://github.com/docker/buildx/releases/download/v0.17.1/buildx-v0.17.1.linux-amd64.provenance.json",
"https://github.com/docker/buildx/releases/download/v0.17.1/buildx-v0.17.1.linux-amd64.sbom.json",
"https://github.com/docker/buildx/releases/download/v0.17.1/buildx-v0.17.1.linux-arm-v6",
"https://github.com/docker/buildx/releases/download/v0.17.1/buildx-v0.17.1.linux-arm-v6.provenance.json",
"https://github.com/docker/buildx/releases/download/v0.17.1/buildx-v0.17.1.linux-arm-v6.sbom.json",
"https://github.com/docker/buildx/releases/download/v0.17.1/buildx-v0.17.1.linux-arm-v7",
"https://github.com/docker/buildx/releases/download/v0.17.1/buildx-v0.17.1.linux-arm-v7.provenance.json",
"https://github.com/docker/buildx/releases/download/v0.17.1/buildx-v0.17.1.linux-arm-v7.sbom.json",
"https://github.com/docker/buildx/releases/download/v0.17.1/buildx-v0.17.1.linux-arm64",
"https://github.com/docker/buildx/releases/download/v0.17.1/buildx-v0.17.1.linux-arm64.provenance.json",
"https://github.com/docker/buildx/releases/download/v0.17.1/buildx-v0.17.1.linux-arm64.sbom.json",
"https://github.com/docker/buildx/releases/download/v0.17.1/buildx-v0.17.1.linux-ppc64le",
"https://github.com/docker/buildx/releases/download/v0.17.1/buildx-v0.17.1.linux-ppc64le.provenance.json",
"https://github.com/docker/buildx/releases/download/v0.17.1/buildx-v0.17.1.linux-ppc64le.sbom.json",
"https://github.com/docker/buildx/releases/download/v0.17.1/buildx-v0.17.1.linux-riscv64",
"https://github.com/docker/buildx/releases/download/v0.17.1/buildx-v0.17.1.linux-riscv64.provenance.json",
"https://github.com/docker/buildx/releases/download/v0.17.1/buildx-v0.17.1.linux-riscv64.sbom.json",
"https://github.com/docker/buildx/releases/download/v0.17.1/buildx-v0.17.1.linux-s390x",
"https://github.com/docker/buildx/releases/download/v0.17.1/buildx-v0.17.1.linux-s390x.provenance.json",
"https://github.com/docker/buildx/releases/download/v0.17.1/buildx-v0.17.1.linux-s390x.sbom.json",
"https://github.com/docker/buildx/releases/download/v0.17.1/buildx-v0.17.1.windows-amd64.exe",
"https://github.com/docker/buildx/releases/download/v0.17.1/buildx-v0.17.1.windows-amd64.provenance.json",
"https://github.com/docker/buildx/releases/download/v0.17.1/buildx-v0.17.1.windows-amd64.sbom.json",
"https://github.com/docker/buildx/releases/download/v0.17.1/buildx-v0.17.1.windows-arm64.exe",
"https://github.com/docker/buildx/releases/download/v0.17.1/buildx-v0.17.1.windows-arm64.provenance.json",
"https://github.com/docker/buildx/releases/download/v0.17.1/buildx-v0.17.1.windows-arm64.sbom.json",
"https://github.com/docker/buildx/releases/download/v0.17.1/checksums.txt"
]
},
"v0.17.1": {
"id": 174985224,
"tag_name": "v0.17.1",
"html_url": "https://github.com/docker/buildx/releases/tag/v0.17.1",
"assets": [
"https://github.com/docker/buildx/releases/download/v0.17.1/buildx-v0.17.1.darwin-amd64",
"https://github.com/docker/buildx/releases/download/v0.17.1/buildx-v0.17.1.darwin-amd64.provenance.json",
"https://github.com/docker/buildx/releases/download/v0.17.1/buildx-v0.17.1.darwin-amd64.sbom.json",
"https://github.com/docker/buildx/releases/download/v0.17.1/buildx-v0.17.1.darwin-arm64",
"https://github.com/docker/buildx/releases/download/v0.17.1/buildx-v0.17.1.darwin-arm64.provenance.json",
"https://github.com/docker/buildx/releases/download/v0.17.1/buildx-v0.17.1.darwin-arm64.sbom.json",
"https://github.com/docker/buildx/releases/download/v0.17.1/buildx-v0.17.1.linux-amd64",
"https://github.com/docker/buildx/releases/download/v0.17.1/buildx-v0.17.1.linux-amd64.provenance.json",
"https://github.com/docker/buildx/releases/download/v0.17.1/buildx-v0.17.1.linux-amd64.sbom.json",
"https://github.com/docker/buildx/releases/download/v0.17.1/buildx-v0.17.1.linux-arm-v6",
"https://github.com/docker/buildx/releases/download/v0.17.1/buildx-v0.17.1.linux-arm-v6.provenance.json",
"https://github.com/docker/buildx/releases/download/v0.17.1/buildx-v0.17.1.linux-arm-v6.sbom.json",
"https://github.com/docker/buildx/releases/download/v0.17.1/buildx-v0.17.1.linux-arm-v7",
"https://github.com/docker/buildx/releases/download/v0.17.1/buildx-v0.17.1.linux-arm-v7.provenance.json",
"https://github.com/docker/buildx/releases/download/v0.17.1/buildx-v0.17.1.linux-arm-v7.sbom.json",
"https://github.com/docker/buildx/releases/download/v0.17.1/buildx-v0.17.1.linux-arm64",
"https://github.com/docker/buildx/releases/download/v0.17.1/buildx-v0.17.1.linux-arm64.provenance.json",
"https://github.com/docker/buildx/releases/download/v0.17.1/buildx-v0.17.1.linux-arm64.sbom.json",
"https://github.com/docker/buildx/releases/download/v0.17.1/buildx-v0.17.1.linux-ppc64le",
"https://github.com/docker/buildx/releases/download/v0.17.1/buildx-v0.17.1.linux-ppc64le.provenance.json",
"https://github.com/docker/buildx/releases/download/v0.17.1/buildx-v0.17.1.linux-ppc64le.sbom.json",
"https://github.com/docker/buildx/releases/download/v0.17.1/buildx-v0.17.1.linux-riscv64",
"https://github.com/docker/buildx/releases/download/v0.17.1/buildx-v0.17.1.linux-riscv64.provenance.json",
"https://github.com/docker/buildx/releases/download/v0.17.1/buildx-v0.17.1.linux-riscv64.sbom.json",
"https://github.com/docker/buildx/releases/download/v0.17.1/buildx-v0.17.1.linux-s390x",
"https://github.com/docker/buildx/releases/download/v0.17.1/buildx-v0.17.1.linux-s390x.provenance.json",
"https://github.com/docker/buildx/releases/download/v0.17.1/buildx-v0.17.1.linux-s390x.sbom.json",
"https://github.com/docker/buildx/releases/download/v0.17.1/buildx-v0.17.1.windows-amd64.exe",
"https://github.com/docker/buildx/releases/download/v0.17.1/buildx-v0.17.1.windows-amd64.provenance.json",
"https://github.com/docker/buildx/releases/download/v0.17.1/buildx-v0.17.1.windows-amd64.sbom.json",
"https://github.com/docker/buildx/releases/download/v0.17.1/buildx-v0.17.1.windows-arm64.exe",
"https://github.com/docker/buildx/releases/download/v0.17.1/buildx-v0.17.1.windows-arm64.provenance.json",
"https://github.com/docker/buildx/releases/download/v0.17.1/buildx-v0.17.1.windows-arm64.sbom.json",
"https://github.com/docker/buildx/releases/download/v0.17.1/checksums.txt"
]
},
"v0.17.0": {
"id": 174385492,
"tag_name": "v0.17.0",
"html_url": "https://github.com/docker/buildx/releases/tag/v0.17.0",
"assets": [
"https://github.com/docker/buildx/releases/download/v0.17.0/buildx-v0.17.0.darwin-amd64",
"https://github.com/docker/buildx/releases/download/v0.17.0/buildx-v0.17.0.darwin-amd64.provenance.json",
"https://github.com/docker/buildx/releases/download/v0.17.0/buildx-v0.17.0.darwin-amd64.sbom.json",
"https://github.com/docker/buildx/releases/download/v0.17.0/buildx-v0.17.0.darwin-arm64",
"https://github.com/docker/buildx/releases/download/v0.17.0/buildx-v0.17.0.darwin-arm64.provenance.json",
"https://github.com/docker/buildx/releases/download/v0.17.0/buildx-v0.17.0.darwin-arm64.sbom.json",
"https://github.com/docker/buildx/releases/download/v0.17.0/buildx-v0.17.0.linux-amd64",
"https://github.com/docker/buildx/releases/download/v0.17.0/buildx-v0.17.0.linux-amd64.provenance.json",
"https://github.com/docker/buildx/releases/download/v0.17.0/buildx-v0.17.0.linux-amd64.sbom.json",
"https://github.com/docker/buildx/releases/download/v0.17.0/buildx-v0.17.0.linux-arm-v6",
"https://github.com/docker/buildx/releases/download/v0.17.0/buildx-v0.17.0.linux-arm-v6.provenance.json",
"https://github.com/docker/buildx/releases/download/v0.17.0/buildx-v0.17.0.linux-arm-v6.sbom.json",
"https://github.com/docker/buildx/releases/download/v0.17.0/buildx-v0.17.0.linux-arm-v7",
"https://github.com/docker/buildx/releases/download/v0.17.0/buildx-v0.17.0.linux-arm-v7.provenance.json",
"https://github.com/docker/buildx/releases/download/v0.17.0/buildx-v0.17.0.linux-arm-v7.sbom.json",
"https://github.com/docker/buildx/releases/download/v0.17.0/buildx-v0.17.0.linux-arm64",
"https://github.com/docker/buildx/releases/download/v0.17.0/buildx-v0.17.0.linux-arm64.provenance.json",
"https://github.com/docker/buildx/releases/download/v0.17.0/buildx-v0.17.0.linux-arm64.sbom.json",
"https://github.com/docker/buildx/releases/download/v0.17.0/buildx-v0.17.0.linux-ppc64le",
"https://github.com/docker/buildx/releases/download/v0.17.0/buildx-v0.17.0.linux-ppc64le.provenance.json",
"https://github.com/docker/buildx/releases/download/v0.17.0/buildx-v0.17.0.linux-ppc64le.sbom.json",
"https://github.com/docker/buildx/releases/download/v0.17.0/buildx-v0.17.0.linux-riscv64",
"https://github.com/docker/buildx/releases/download/v0.17.0/buildx-v0.17.0.linux-riscv64.provenance.json",
"https://github.com/docker/buildx/releases/download/v0.17.0/buildx-v0.17.0.linux-riscv64.sbom.json",
"https://github.com/docker/buildx/releases/download/v0.17.0/buildx-v0.17.0.linux-s390x",
"https://github.com/docker/buildx/releases/download/v0.17.0/buildx-v0.17.0.linux-s390x.provenance.json",
"https://github.com/docker/buildx/releases/download/v0.17.0/buildx-v0.17.0.linux-s390x.sbom.json",
"https://github.com/docker/buildx/releases/download/v0.17.0/buildx-v0.17.0.windows-amd64.exe",
"https://github.com/docker/buildx/releases/download/v0.17.0/buildx-v0.17.0.windows-amd64.provenance.json",
"https://github.com/docker/buildx/releases/download/v0.17.0/buildx-v0.17.0.windows-amd64.sbom.json",
"https://github.com/docker/buildx/releases/download/v0.17.0/buildx-v0.17.0.windows-arm64.exe",
"https://github.com/docker/buildx/releases/download/v0.17.0/buildx-v0.17.0.windows-arm64.provenance.json",
"https://github.com/docker/buildx/releases/download/v0.17.0/buildx-v0.17.0.windows-arm64.sbom.json",
"https://github.com/docker/buildx/releases/download/v0.17.0/checksums.txt"
]
},
"v0.17.0-rc2": {
"id": 174230520,
"tag_name": "v0.17.0-rc2",
"html_url": "https://github.com/docker/buildx/releases/tag/v0.17.0-rc2",
"assets": [
"https://github.com/docker/buildx/releases/download/v0.17.0-rc2/buildx-v0.17.0-rc2.darwin-amd64",
"https://github.com/docker/buildx/releases/download/v0.17.0-rc2/buildx-v0.17.0-rc2.darwin-amd64.provenance.json",
"https://github.com/docker/buildx/releases/download/v0.17.0-rc2/buildx-v0.17.0-rc2.darwin-amd64.sbom.json",
"https://github.com/docker/buildx/releases/download/v0.17.0-rc2/buildx-v0.17.0-rc2.darwin-arm64",
"https://github.com/docker/buildx/releases/download/v0.17.0-rc2/buildx-v0.17.0-rc2.darwin-arm64.provenance.json",
"https://github.com/docker/buildx/releases/download/v0.17.0-rc2/buildx-v0.17.0-rc2.darwin-arm64.sbom.json",
"https://github.com/docker/buildx/releases/download/v0.17.0-rc2/buildx-v0.17.0-rc2.linux-amd64",
"https://github.com/docker/buildx/releases/download/v0.17.0-rc2/buildx-v0.17.0-rc2.linux-amd64.provenance.json",
"https://github.com/docker/buildx/releases/download/v0.17.0-rc2/buildx-v0.17.0-rc2.linux-amd64.sbom.json",
"https://github.com/docker/buildx/releases/download/v0.17.0-rc2/buildx-v0.17.0-rc2.linux-arm-v6",
"https://github.com/docker/buildx/releases/download/v0.17.0-rc2/buildx-v0.17.0-rc2.linux-arm-v6.provenance.json",
"https://github.com/docker/buildx/releases/download/v0.17.0-rc2/buildx-v0.17.0-rc2.linux-arm-v6.sbom.json",
"https://github.com/docker/buildx/releases/download/v0.17.0-rc2/buildx-v0.17.0-rc2.linux-arm-v7",
"https://github.com/docker/buildx/releases/download/v0.17.0-rc2/buildx-v0.17.0-rc2.linux-arm-v7.provenance.json",
"https://github.com/docker/buildx/releases/download/v0.17.0-rc2/buildx-v0.17.0-rc2.linux-arm-v7.sbom.json",
"https://github.com/docker/buildx/releases/download/v0.17.0-rc2/buildx-v0.17.0-rc2.linux-arm64",
"https://github.com/docker/buildx/releases/download/v0.17.0-rc2/buildx-v0.17.0-rc2.linux-arm64.provenance.json",
"https://github.com/docker/buildx/releases/download/v0.17.0-rc2/buildx-v0.17.0-rc2.linux-arm64.sbom.json",
"https://github.com/docker/buildx/releases/download/v0.17.0-rc2/buildx-v0.17.0-rc2.linux-ppc64le",
"https://github.com/docker/buildx/releases/download/v0.17.0-rc2/buildx-v0.17.0-rc2.linux-ppc64le.provenance.json",
"https://github.com/docker/buildx/releases/download/v0.17.0-rc2/buildx-v0.17.0-rc2.linux-ppc64le.sbom.json",
"https://github.com/docker/buildx/releases/download/v0.17.0-rc2/buildx-v0.17.0-rc2.linux-riscv64",
"https://github.com/docker/buildx/releases/download/v0.17.0-rc2/buildx-v0.17.0-rc2.linux-riscv64.provenance.json",
"https://github.com/docker/buildx/releases/download/v0.17.0-rc2/buildx-v0.17.0-rc2.linux-riscv64.sbom.json",
"https://github.com/docker/buildx/releases/download/v0.17.0-rc2/buildx-v0.17.0-rc2.linux-s390x",
"https://github.com/docker/buildx/releases/download/v0.17.0-rc2/buildx-v0.17.0-rc2.linux-s390x.provenance.json",
"https://github.com/docker/buildx/releases/download/v0.17.0-rc2/buildx-v0.17.0-rc2.linux-s390x.sbom.json",
"https://github.com/docker/buildx/releases/download/v0.17.0-rc2/buildx-v0.17.0-rc2.windows-amd64.exe",
"https://github.com/docker/buildx/releases/download/v0.17.0-rc2/buildx-v0.17.0-rc2.windows-amd64.provenance.json",
"https://github.com/docker/buildx/releases/download/v0.17.0-rc2/buildx-v0.17.0-rc2.windows-amd64.sbom.json",
"https://github.com/docker/buildx/releases/download/v0.17.0-rc2/buildx-v0.17.0-rc2.windows-arm64.exe",
"https://github.com/docker/buildx/releases/download/v0.17.0-rc2/buildx-v0.17.0-rc2.windows-arm64.provenance.json",
"https://github.com/docker/buildx/releases/download/v0.17.0-rc2/buildx-v0.17.0-rc2.windows-arm64.sbom.json",
"https://github.com/docker/buildx/releases/download/v0.17.0-rc2/checksums.txt"
]
},
"v0.17.0-rc1": {
"id": 173583122,
"tag_name": "v0.17.0-rc1",
"html_url": "https://github.com/docker/buildx/releases/tag/v0.17.0-rc1",
"assets": [
"https://github.com/docker/buildx/releases/download/v0.17.0-rc1/buildx-v0.17.0-rc1.darwin-amd64",
"https://github.com/docker/buildx/releases/download/v0.17.0-rc1/buildx-v0.17.0-rc1.darwin-amd64.provenance.json",
"https://github.com/docker/buildx/releases/download/v0.17.0-rc1/buildx-v0.17.0-rc1.darwin-amd64.sbom.json",
"https://github.com/docker/buildx/releases/download/v0.17.0-rc1/buildx-v0.17.0-rc1.darwin-arm64",
"https://github.com/docker/buildx/releases/download/v0.17.0-rc1/buildx-v0.17.0-rc1.darwin-arm64.provenance.json",
"https://github.com/docker/buildx/releases/download/v0.17.0-rc1/buildx-v0.17.0-rc1.darwin-arm64.sbom.json",
"https://github.com/docker/buildx/releases/download/v0.17.0-rc1/buildx-v0.17.0-rc1.linux-amd64",
"https://github.com/docker/buildx/releases/download/v0.17.0-rc1/buildx-v0.17.0-rc1.linux-amd64.provenance.json",
"https://github.com/docker/buildx/releases/download/v0.17.0-rc1/buildx-v0.17.0-rc1.linux-amd64.sbom.json",
"https://github.com/docker/buildx/releases/download/v0.17.0-rc1/buildx-v0.17.0-rc1.linux-arm-v6",
"https://github.com/docker/buildx/releases/download/v0.17.0-rc1/buildx-v0.17.0-rc1.linux-arm-v6.provenance.json",
"https://github.com/docker/buildx/releases/download/v0.17.0-rc1/buildx-v0.17.0-rc1.linux-arm-v6.sbom.json",
"https://github.com/docker/buildx/releases/download/v0.17.0-rc1/buildx-v0.17.0-rc1.linux-arm-v7",
"https://github.com/docker/buildx/releases/download/v0.17.0-rc1/buildx-v0.17.0-rc1.linux-arm-v7.provenance.json",
"https://github.com/docker/buildx/releases/download/v0.17.0-rc1/buildx-v0.17.0-rc1.linux-arm-v7.sbom.json",
"https://github.com/docker/buildx/releases/download/v0.17.0-rc1/buildx-v0.17.0-rc1.linux-arm64",
"https://github.com/docker/buildx/releases/download/v0.17.0-rc1/buildx-v0.17.0-rc1.linux-arm64.provenance.json",
"https://github.com/docker/buildx/releases/download/v0.17.0-rc1/buildx-v0.17.0-rc1.linux-arm64.sbom.json",
"https://github.com/docker/buildx/releases/download/v0.17.0-rc1/buildx-v0.17.0-rc1.linux-ppc64le",
"https://github.com/docker/buildx/releases/download/v0.17.0-rc1/buildx-v0.17.0-rc1.linux-ppc64le.provenance.json",
"https://github.com/docker/buildx/releases/download/v0.17.0-rc1/buildx-v0.17.0-rc1.linux-ppc64le.sbom.json",
"https://github.com/docker/buildx/releases/download/v0.17.0-rc1/buildx-v0.17.0-rc1.linux-riscv64",
"https://github.com/docker/buildx/releases/download/v0.17.0-rc1/buildx-v0.17.0-rc1.linux-riscv64.provenance.json",
"https://github.com/docker/buildx/releases/download/v0.17.0-rc1/buildx-v0.17.0-rc1.linux-riscv64.sbom.json",
"https://github.com/docker/buildx/releases/download/v0.17.0-rc1/buildx-v0.17.0-rc1.linux-s390x",
"https://github.com/docker/buildx/releases/download/v0.17.0-rc1/buildx-v0.17.0-rc1.linux-s390x.provenance.json",
"https://github.com/docker/buildx/releases/download/v0.17.0-rc1/buildx-v0.17.0-rc1.linux-s390x.sbom.json",
"https://github.com/docker/buildx/releases/download/v0.17.0-rc1/buildx-v0.17.0-rc1.windows-amd64.exe",
"https://github.com/docker/buildx/releases/download/v0.17.0-rc1/buildx-v0.17.0-rc1.windows-amd64.provenance.json",
"https://github.com/docker/buildx/releases/download/v0.17.0-rc1/buildx-v0.17.0-rc1.windows-amd64.sbom.json",
"https://github.com/docker/buildx/releases/download/v0.17.0-rc1/buildx-v0.17.0-rc1.windows-arm64.exe",
"https://github.com/docker/buildx/releases/download/v0.17.0-rc1/buildx-v0.17.0-rc1.windows-arm64.provenance.json",
"https://github.com/docker/buildx/releases/download/v0.17.0-rc1/buildx-v0.17.0-rc1.windows-arm64.sbom.json",
"https://github.com/docker/buildx/releases/download/v0.17.0-rc1/checksums.txt"
]
},
"v0.16.2": {
"id": 167152950,
"tag_name": "v0.16.2",
"html_url": "https://github.com/docker/buildx/releases/tag/v0.16.2",
"assets": [
"https://github.com/docker/buildx/releases/download/v0.16.2/buildx-v0.16.2.darwin-amd64",
"https://github.com/docker/buildx/releases/download/v0.16.2/buildx-v0.16.2.darwin-amd64.provenance.json",
"https://github.com/docker/buildx/releases/download/v0.16.2/buildx-v0.16.2.darwin-amd64.sbom.json",
"https://github.com/docker/buildx/releases/download/v0.16.2/buildx-v0.16.2.darwin-arm64",
"https://github.com/docker/buildx/releases/download/v0.16.2/buildx-v0.16.2.darwin-arm64.provenance.json",
"https://github.com/docker/buildx/releases/download/v0.16.2/buildx-v0.16.2.darwin-arm64.sbom.json",
"https://github.com/docker/buildx/releases/download/v0.16.2/buildx-v0.16.2.linux-amd64",
"https://github.com/docker/buildx/releases/download/v0.16.2/buildx-v0.16.2.linux-amd64.provenance.json",
"https://github.com/docker/buildx/releases/download/v0.16.2/buildx-v0.16.2.linux-amd64.sbom.json",
"https://github.com/docker/buildx/releases/download/v0.16.2/buildx-v0.16.2.linux-arm-v6",
"https://github.com/docker/buildx/releases/download/v0.16.2/buildx-v0.16.2.linux-arm-v6.provenance.json",
"https://github.com/docker/buildx/releases/download/v0.16.2/buildx-v0.16.2.linux-arm-v6.sbom.json",
"https://github.com/docker/buildx/releases/download/v0.16.2/buildx-v0.16.2.linux-arm-v7",
"https://github.com/docker/buildx/releases/download/v0.16.2/buildx-v0.16.2.linux-arm-v7.provenance.json",
"https://github.com/docker/buildx/releases/download/v0.16.2/buildx-v0.16.2.linux-arm-v7.sbom.json",
"https://github.com/docker/buildx/releases/download/v0.16.2/buildx-v0.16.2.linux-arm64",
"https://github.com/docker/buildx/releases/download/v0.16.2/buildx-v0.16.2.linux-arm64.provenance.json",
"https://github.com/docker/buildx/releases/download/v0.16.2/buildx-v0.16.2.linux-arm64.sbom.json",
"https://github.com/docker/buildx/releases/download/v0.16.2/buildx-v0.16.2.linux-ppc64le",
"https://github.com/docker/buildx/releases/download/v0.16.2/buildx-v0.16.2.linux-ppc64le.provenance.json",
"https://github.com/docker/buildx/releases/download/v0.16.2/buildx-v0.16.2.linux-ppc64le.sbom.json",
"https://github.com/docker/buildx/releases/download/v0.16.2/buildx-v0.16.2.linux-riscv64",
"https://github.com/docker/buildx/releases/download/v0.16.2/buildx-v0.16.2.linux-riscv64.provenance.json",
"https://github.com/docker/buildx/releases/download/v0.16.2/buildx-v0.16.2.linux-riscv64.sbom.json",
"https://github.com/docker/buildx/releases/download/v0.16.2/buildx-v0.16.2.linux-s390x",
"https://github.com/docker/buildx/releases/download/v0.16.2/buildx-v0.16.2.linux-s390x.provenance.json",
"https://github.com/docker/buildx/releases/download/v0.16.2/buildx-v0.16.2.linux-s390x.sbom.json",
"https://github.com/docker/buildx/releases/download/v0.16.2/buildx-v0.16.2.windows-amd64.exe",
"https://github.com/docker/buildx/releases/download/v0.16.2/buildx-v0.16.2.windows-amd64.provenance.json",
"https://github.com/docker/buildx/releases/download/v0.16.2/buildx-v0.16.2.windows-amd64.sbom.json",
"https://github.com/docker/buildx/releases/download/v0.16.2/buildx-v0.16.2.windows-arm64.exe",
"https://github.com/docker/buildx/releases/download/v0.16.2/buildx-v0.16.2.windows-arm64.provenance.json",
"https://github.com/docker/buildx/releases/download/v0.16.2/buildx-v0.16.2.windows-arm64.sbom.json",
"https://github.com/docker/buildx/releases/download/v0.16.2/checksums.txt"
]
},
"v0.16.1": {
"id": 166111587,
"tag_name": "v0.16.1",
"html_url": "https://github.com/docker/buildx/releases/tag/v0.16.1",
"assets": [
"https://github.com/docker/buildx/releases/download/v0.16.1/buildx-v0.16.1.darwin-amd64",
"https://github.com/docker/buildx/releases/download/v0.16.1/buildx-v0.16.1.darwin-amd64.provenance.json",
"https://github.com/docker/buildx/releases/download/v0.16.1/buildx-v0.16.1.darwin-amd64.sbom.json",
"https://github.com/docker/buildx/releases/download/v0.16.1/buildx-v0.16.1.darwin-arm64",
"https://github.com/docker/buildx/releases/download/v0.16.1/buildx-v0.16.1.darwin-arm64.provenance.json",
"https://github.com/docker/buildx/releases/download/v0.16.1/buildx-v0.16.1.darwin-arm64.sbom.json",
"https://github.com/docker/buildx/releases/download/v0.16.1/buildx-v0.16.1.linux-amd64",
"https://github.com/docker/buildx/releases/download/v0.16.1/buildx-v0.16.1.linux-amd64.provenance.json",
"https://github.com/docker/buildx/releases/download/v0.16.1/buildx-v0.16.1.linux-amd64.sbom.json",
"https://github.com/docker/buildx/releases/download/v0.16.1/buildx-v0.16.1.linux-arm-v6",
"https://github.com/docker/buildx/releases/download/v0.16.1/buildx-v0.16.1.linux-arm-v6.provenance.json",
"https://github.com/docker/buildx/releases/download/v0.16.1/buildx-v0.16.1.linux-arm-v6.sbom.json",
"https://github.com/docker/buildx/releases/download/v0.16.1/buildx-v0.16.1.linux-arm-v7",
"https://github.com/docker/buildx/releases/download/v0.16.1/buildx-v0.16.1.linux-arm-v7.provenance.json",
"https://github.com/docker/buildx/releases/download/v0.16.1/buildx-v0.16.1.linux-arm-v7.sbom.json",
"https://github.com/docker/buildx/releases/download/v0.16.1/buildx-v0.16.1.linux-arm64",
"https://github.com/docker/buildx/releases/download/v0.16.1/buildx-v0.16.1.linux-arm64.provenance.json",
"https://github.com/docker/buildx/releases/download/v0.16.1/buildx-v0.16.1.linux-arm64.sbom.json",
"https://github.com/docker/buildx/releases/download/v0.16.1/buildx-v0.16.1.linux-ppc64le",
"https://github.com/docker/buildx/releases/download/v0.16.1/buildx-v0.16.1.linux-ppc64le.provenance.json",
"https://github.com/docker/buildx/releases/download/v0.16.1/buildx-v0.16.1.linux-ppc64le.sbom.json",
"https://github.com/docker/buildx/releases/download/v0.16.1/buildx-v0.16.1.linux-riscv64",
"https://github.com/docker/buildx/releases/download/v0.16.1/buildx-v0.16.1.linux-riscv64.provenance.json",
"https://github.com/docker/buildx/releases/download/v0.16.1/buildx-v0.16.1.linux-riscv64.sbom.json",
"https://github.com/docker/buildx/releases/download/v0.16.1/buildx-v0.16.1.linux-s390x",
"https://github.com/docker/buildx/releases/download/v0.16.1/buildx-v0.16.1.linux-s390x.provenance.json",
"https://github.com/docker/buildx/releases/download/v0.16.1/buildx-v0.16.1.linux-s390x.sbom.json",
"https://github.com/docker/buildx/releases/download/v0.16.1/buildx-v0.16.1.windows-amd64.exe",
"https://github.com/docker/buildx/releases/download/v0.16.1/buildx-v0.16.1.windows-amd64.provenance.json",
"https://github.com/docker/buildx/releases/download/v0.16.1/buildx-v0.16.1.windows-amd64.sbom.json",
"https://github.com/docker/buildx/releases/download/v0.16.1/buildx-v0.16.1.windows-arm64.exe",
"https://github.com/docker/buildx/releases/download/v0.16.1/buildx-v0.16.1.windows-arm64.provenance.json",
"https://github.com/docker/buildx/releases/download/v0.16.1/buildx-v0.16.1.windows-arm64.sbom.json",
"https://github.com/docker/buildx/releases/download/v0.16.1/checksums.txt"
]
},
"v0.16.0": {
"id": 165067169,
"tag_name": "v0.16.0",
"html_url": "https://github.com/docker/buildx/releases/tag/v0.16.0",
"assets": [
"https://github.com/docker/buildx/releases/download/v0.16.0/buildx-v0.16.0.darwin-amd64",
"https://github.com/docker/buildx/releases/download/v0.16.0/buildx-v0.16.0.darwin-amd64.provenance.json",
"https://github.com/docker/buildx/releases/download/v0.16.0/buildx-v0.16.0.darwin-amd64.sbom.json",
"https://github.com/docker/buildx/releases/download/v0.16.0/buildx-v0.16.0.darwin-arm64",
"https://github.com/docker/buildx/releases/download/v0.16.0/buildx-v0.16.0.darwin-arm64.provenance.json",
"https://github.com/docker/buildx/releases/download/v0.16.0/buildx-v0.16.0.darwin-arm64.sbom.json",
"https://github.com/docker/buildx/releases/download/v0.16.0/buildx-v0.16.0.linux-amd64",
"https://github.com/docker/buildx/releases/download/v0.16.0/buildx-v0.16.0.linux-amd64.provenance.json",
"https://github.com/docker/buildx/releases/download/v0.16.0/buildx-v0.16.0.linux-amd64.sbom.json",
"https://github.com/docker/buildx/releases/download/v0.16.0/buildx-v0.16.0.linux-arm-v6",
"https://github.com/docker/buildx/releases/download/v0.16.0/buildx-v0.16.0.linux-arm-v6.provenance.json",
"https://github.com/docker/buildx/releases/download/v0.16.0/buildx-v0.16.0.linux-arm-v6.sbom.json",
"https://github.com/docker/buildx/releases/download/v0.16.0/buildx-v0.16.0.linux-arm-v7",
"https://github.com/docker/buildx/releases/download/v0.16.0/buildx-v0.16.0.linux-arm-v7.provenance.json",
"https://github.com/docker/buildx/releases/download/v0.16.0/buildx-v0.16.0.linux-arm-v7.sbom.json",
"https://github.com/docker/buildx/releases/download/v0.16.0/buildx-v0.16.0.linux-arm64",
"https://github.com/docker/buildx/releases/download/v0.16.0/buildx-v0.16.0.linux-arm64.provenance.json",
"https://github.com/docker/buildx/releases/download/v0.16.0/buildx-v0.16.0.linux-arm64.sbom.json",
"https://github.com/docker/buildx/releases/download/v0.16.0/buildx-v0.16.0.linux-ppc64le",
"https://github.com/docker/buildx/releases/download/v0.16.0/buildx-v0.16.0.linux-ppc64le.provenance.json",
"https://github.com/docker/buildx/releases/download/v0.16.0/buildx-v0.16.0.linux-ppc64le.sbom.json",
"https://github.com/docker/buildx/releases/download/v0.16.0/buildx-v0.16.0.linux-riscv64",
"https://github.com/docker/buildx/releases/download/v0.16.0/buildx-v0.16.0.linux-riscv64.provenance.json",
"https://github.com/docker/buildx/releases/download/v0.16.0/buildx-v0.16.0.linux-riscv64.sbom.json",
"https://github.com/docker/buildx/releases/download/v0.16.0/buildx-v0.16.0.linux-s390x",
"https://github.com/docker/buildx/releases/download/v0.16.0/buildx-v0.16.0.linux-s390x.provenance.json",
"https://github.com/docker/buildx/releases/download/v0.16.0/buildx-v0.16.0.linux-s390x.sbom.json",
"https://github.com/docker/buildx/releases/download/v0.16.0/buildx-v0.16.0.windows-amd64.exe",
"https://github.com/docker/buildx/releases/download/v0.16.0/buildx-v0.16.0.windows-amd64.provenance.json",
"https://github.com/docker/buildx/releases/download/v0.16.0/buildx-v0.16.0.windows-amd64.sbom.json",
"https://github.com/docker/buildx/releases/download/v0.16.0/buildx-v0.16.0.windows-arm64.exe",
"https://github.com/docker/buildx/releases/download/v0.16.0/buildx-v0.16.0.windows-arm64.provenance.json",
"https://github.com/docker/buildx/releases/download/v0.16.0/buildx-v0.16.0.windows-arm64.sbom.json",
"https://github.com/docker/buildx/releases/download/v0.16.0/checksums.txt"
]
},
"v0.16.0-rc2": {
"id": 164893757,
"tag_name": "v0.16.0-rc2",
"html_url": "https://github.com/docker/buildx/releases/tag/v0.16.0-rc2",
"assets": [
"https://github.com/docker/buildx/releases/download/v0.16.0-rc2/buildx-v0.16.0-rc2.darwin-amd64",
"https://github.com/docker/buildx/releases/download/v0.16.0-rc2/buildx-v0.16.0-rc2.darwin-amd64.provenance.json",
"https://github.com/docker/buildx/releases/download/v0.16.0-rc2/buildx-v0.16.0-rc2.darwin-amd64.sbom.json",
"https://github.com/docker/buildx/releases/download/v0.16.0-rc2/buildx-v0.16.0-rc2.darwin-arm64",
"https://github.com/docker/buildx/releases/download/v0.16.0-rc2/buildx-v0.16.0-rc2.darwin-arm64.provenance.json",
"https://github.com/docker/buildx/releases/download/v0.16.0-rc2/buildx-v0.16.0-rc2.darwin-arm64.sbom.json",
"https://github.com/docker/buildx/releases/download/v0.16.0-rc2/buildx-v0.16.0-rc2.linux-amd64",
"https://github.com/docker/buildx/releases/download/v0.16.0-rc2/buildx-v0.16.0-rc2.linux-amd64.provenance.json",
"https://github.com/docker/buildx/releases/download/v0.16.0-rc2/buildx-v0.16.0-rc2.linux-amd64.sbom.json",
"https://github.com/docker/buildx/releases/download/v0.16.0-rc2/buildx-v0.16.0-rc2.linux-arm-v6",
"https://github.com/docker/buildx/releases/download/v0.16.0-rc2/buildx-v0.16.0-rc2.linux-arm-v6.provenance.json",
"https://github.com/docker/buildx/releases/download/v0.16.0-rc2/buildx-v0.16.0-rc2.linux-arm-v6.sbom.json",
"https://github.com/docker/buildx/releases/download/v0.16.0-rc2/buildx-v0.16.0-rc2.linux-arm-v7",
"https://github.com/docker/buildx/releases/download/v0.16.0-rc2/buildx-v0.16.0-rc2.linux-arm-v7.provenance.json",
"https://github.com/docker/buildx/releases/download/v0.16.0-rc2/buildx-v0.16.0-rc2.linux-arm-v7.sbom.json",
"https://github.com/docker/buildx/releases/download/v0.16.0-rc2/buildx-v0.16.0-rc2.linux-arm64",
"https://github.com/docker/buildx/releases/download/v0.16.0-rc2/buildx-v0.16.0-rc2.linux-arm64.provenance.json",
"https://github.com/docker/buildx/releases/download/v0.16.0-rc2/buildx-v0.16.0-rc2.linux-arm64.sbom.json",
"https://github.com/docker/buildx/releases/download/v0.16.0-rc2/buildx-v0.16.0-rc2.linux-ppc64le",
"https://github.com/docker/buildx/releases/download/v0.16.0-rc2/buildx-v0.16.0-rc2.linux-ppc64le.provenance.json",
"https://github.com/docker/buildx/releases/download/v0.16.0-rc2/buildx-v0.16.0-rc2.linux-ppc64le.sbom.json",
"https://github.com/docker/buildx/releases/download/v0.16.0-rc2/buildx-v0.16.0-rc2.linux-riscv64",
"https://github.com/docker/buildx/releases/download/v0.16.0-rc2/buildx-v0.16.0-rc2.linux-riscv64.provenance.json",
"https://github.com/docker/buildx/releases/download/v0.16.0-rc2/buildx-v0.16.0-rc2.linux-riscv64.sbom.json",
"https://github.com/docker/buildx/releases/download/v0.16.0-rc2/buildx-v0.16.0-rc2.linux-s390x",
"https://github.com/docker/buildx/releases/download/v0.16.0-rc2/buildx-v0.16.0-rc2.linux-s390x.provenance.json",
"https://github.com/docker/buildx/releases/download/v0.16.0-rc2/buildx-v0.16.0-rc2.linux-s390x.sbom.json",
"https://github.com/docker/buildx/releases/download/v0.16.0-rc2/buildx-v0.16.0-rc2.windows-amd64.exe",
"https://github.com/docker/buildx/releases/download/v0.16.0-rc2/buildx-v0.16.0-rc2.windows-amd64.provenance.json",
"https://github.com/docker/buildx/releases/download/v0.16.0-rc2/buildx-v0.16.0-rc2.windows-amd64.sbom.json",
"https://github.com/docker/buildx/releases/download/v0.16.0-rc2/buildx-v0.16.0-rc2.windows-arm64.exe",
"https://github.com/docker/buildx/releases/download/v0.16.0-rc2/buildx-v0.16.0-rc2.windows-arm64.provenance.json",
"https://github.com/docker/buildx/releases/download/v0.16.0-rc2/buildx-v0.16.0-rc2.windows-arm64.sbom.json",
"https://github.com/docker/buildx/releases/download/v0.16.0-rc2/checksums.txt"
]
},
"v0.16.0-rc1": {
"id": 163887606,
"tag_name": "v0.16.0-rc1",
"html_url": "https://github.com/docker/buildx/releases/tag/v0.16.0-rc1",
"assets": [
"https://github.com/docker/buildx/releases/download/v0.16.0-rc1/buildx-v0.16.0-rc1.darwin-amd64",
"https://github.com/docker/buildx/releases/download/v0.16.0-rc1/buildx-v0.16.0-rc1.darwin-amd64.provenance.json",
"https://github.com/docker/buildx/releases/download/v0.16.0-rc1/buildx-v0.16.0-rc1.darwin-amd64.sbom.json",
"https://github.com/docker/buildx/releases/download/v0.16.0-rc1/buildx-v0.16.0-rc1.darwin-arm64",
"https://github.com/docker/buildx/releases/download/v0.16.0-rc1/buildx-v0.16.0-rc1.darwin-arm64.provenance.json",
"https://github.com/docker/buildx/releases/download/v0.16.0-rc1/buildx-v0.16.0-rc1.darwin-arm64.sbom.json",
"https://github.com/docker/buildx/releases/download/v0.16.0-rc1/buildx-v0.16.0-rc1.linux-amd64",
"https://github.com/docker/buildx/releases/download/v0.16.0-rc1/buildx-v0.16.0-rc1.linux-amd64.provenance.json",
"https://github.com/docker/buildx/releases/download/v0.16.0-rc1/buildx-v0.16.0-rc1.linux-amd64.sbom.json",
"https://github.com/docker/buildx/releases/download/v0.16.0-rc1/buildx-v0.16.0-rc1.linux-arm-v6",
"https://github.com/docker/buildx/releases/download/v0.16.0-rc1/buildx-v0.16.0-rc1.linux-arm-v6.provenance.json",
"https://github.com/docker/buildx/releases/download/v0.16.0-rc1/buildx-v0.16.0-rc1.linux-arm-v6.sbom.json",
"https://github.com/docker/buildx/releases/download/v0.16.0-rc1/buildx-v0.16.0-rc1.linux-arm-v7",
"https://github.com/docker/buildx/releases/download/v0.16.0-rc1/buildx-v0.16.0-rc1.linux-arm-v7.provenance.json",
"https://github.com/docker/buildx/releases/download/v0.16.0-rc1/buildx-v0.16.0-rc1.linux-arm-v7.sbom.json",
"https://github.com/docker/buildx/releases/download/v0.16.0-rc1/buildx-v0.16.0-rc1.linux-arm64",
"https://github.com/docker/buildx/releases/download/v0.16.0-rc1/buildx-v0.16.0-rc1.linux-arm64.provenance.json",
"https://github.com/docker/buildx/releases/download/v0.16.0-rc1/buildx-v0.16.0-rc1.linux-arm64.sbom.json",
"https://github.com/docker/buildx/releases/download/v0.16.0-rc1/buildx-v0.16.0-rc1.linux-ppc64le",
"https://github.com/docker/buildx/releases/download/v0.16.0-rc1/buildx-v0.16.0-rc1.linux-ppc64le.provenance.json",
"https://github.com/docker/buildx/releases/download/v0.16.0-rc1/buildx-v0.16.0-rc1.linux-ppc64le.sbom.json",
"https://github.com/docker/buildx/releases/download/v0.16.0-rc1/buildx-v0.16.0-rc1.linux-riscv64",
"https://github.com/docker/buildx/releases/download/v0.16.0-rc1/buildx-v0.16.0-rc1.linux-riscv64.provenance.json",
"https://github.com/docker/buildx/releases/download/v0.16.0-rc1/buildx-v0.16.0-rc1.linux-riscv64.sbom.json",
"https://github.com/docker/buildx/releases/download/v0.16.0-rc1/buildx-v0.16.0-rc1.linux-s390x",
"https://github.com/docker/buildx/releases/download/v0.16.0-rc1/buildx-v0.16.0-rc1.linux-s390x.provenance.json",
"https://github.com/docker/buildx/releases/download/v0.16.0-rc1/buildx-v0.16.0-rc1.linux-s390x.sbom.json",
"https://github.com/docker/buildx/releases/download/v0.16.0-rc1/buildx-v0.16.0-rc1.windows-amd64.exe",
"https://github.com/docker/buildx/releases/download/v0.16.0-rc1/buildx-v0.16.0-rc1.windows-amd64.provenance.json",
"https://github.com/docker/buildx/releases/download/v0.16.0-rc1/buildx-v0.16.0-rc1.windows-amd64.sbom.json",
"https://github.com/docker/buildx/releases/download/v0.16.0-rc1/buildx-v0.16.0-rc1.windows-arm64.exe",
"https://github.com/docker/buildx/releases/download/v0.16.0-rc1/buildx-v0.16.0-rc1.windows-arm64.provenance.json",
"https://github.com/docker/buildx/releases/download/v0.16.0-rc1/buildx-v0.16.0-rc1.windows-arm64.sbom.json",
"https://github.com/docker/buildx/releases/download/v0.16.0-rc1/checksums.txt"
]
},
"v0.15.1": {

View File

@@ -1,8 +1,86 @@
{
"latest": {
"id": 163311279,
"tag_name": "v27.0.3",
"html_url": "https://github.com/moby/moby/releases/tag/v27.0.3",
"id": 176167883,
"tag_name": "v27.3.1",
"html_url": "https://github.com/moby/moby/releases/tag/v27.3.1",
"assets": []
},
"v27.3.1": {
"id": 176167883,
"tag_name": "v27.3.1",
"html_url": "https://github.com/moby/moby/releases/tag/v27.3.1",
"assets": []
},
"v27.3.0": {
"id": 175978619,
"tag_name": "v27.3.0",
"html_url": "https://github.com/moby/moby/releases/tag/v27.3.0",
"assets": []
},
"v27.3.0-rc.2": {
"id": 175668160,
"tag_name": "v27.3.0-rc.2",
"html_url": "https://github.com/moby/moby/releases/tag/v27.3.0-rc.2",
"assets": []
},
"v27.3.0-rc.1": {
"id": 174993113,
"tag_name": "v27.3.0-rc.1",
"html_url": "https://github.com/moby/moby/releases/tag/v27.3.0-rc.1",
"assets": []
},
"v27.2.1": {
"id": 173107018,
"tag_name": "v27.2.1",
"html_url": "https://github.com/moby/moby/releases/tag/v27.2.1",
"assets": []
},
"v27.2.0": {
"id": 171953411,
"tag_name": "v27.2.0",
"html_url": "https://github.com/moby/moby/releases/tag/v27.2.0",
"assets": []
},
"v23.0.14": {
"id": 170923310,
"tag_name": "v23.0.14",
"html_url": "https://github.com/moby/moby/releases/tag/v23.0.14",
"assets": []
},
"v27.2.0-rc.1": {
"id": 170583738,
"tag_name": "v27.2.0-rc.1",
"html_url": "https://github.com/moby/moby/releases/tag/v27.2.0-rc.1",
"assets": []
},
"v27.1.2": {
"id": 169473565,
"tag_name": "v27.1.2",
"html_url": "https://github.com/moby/moby/releases/tag/v27.1.2",
"assets": []
},
"v25.0.6": {
"id": 167195013,
"tag_name": "v25.0.6",
"html_url": "https://github.com/moby/moby/releases/tag/v25.0.6",
"assets": []
},
"v27.1.1": {
"id": 166797236,
"tag_name": "v27.1.1",
"html_url": "https://github.com/moby/moby/releases/tag/v27.1.1",
"assets": []
},
"v26.1.5": {
"id": 166954867,
"tag_name": "v26.1.5",
"html_url": "https://github.com/moby/moby/releases/tag/v26.1.5",
"assets": []
},
"v27.1.0": {
"id": 166495917,
"tag_name": "v27.1.0",
"html_url": "https://github.com/moby/moby/releases/tag/v27.1.0",
"assets": []
},
"v27.0.3": {

View File

@@ -45,7 +45,7 @@ jobs:
git add -A .
-
name: Create PR
uses: peter-evans/create-pull-request@c5a7806660adbe173f04e3e038b0ccdcd758773c # v6.1.0
uses: peter-evans/create-pull-request@5e914681df9dc83aa4e4905692ca88beb2f9e91f # v7.0.5
with:
base: main
branch: bot/buildx-lab-releases-json

View File

@@ -45,7 +45,7 @@ jobs:
git add -A .
-
name: Create PR
uses: peter-evans/create-pull-request@c5a7806660adbe173f04e3e038b0ccdcd758773c # v6.1.0
uses: peter-evans/create-pull-request@5e914681df9dc83aa4e4905692ca88beb2f9e91f # v7.0.5
with:
base: main
branch: bot/buildx-releases-json

View File

@@ -45,7 +45,7 @@ jobs:
git add -A .
-
name: Create PR
uses: peter-evans/create-pull-request@c5a7806660adbe173f04e3e038b0ccdcd758773c # v6.1.0
uses: peter-evans/create-pull-request@5e914681df9dc83aa4e4905692ca88beb2f9e91f # v7.0.5
with:
base: main
branch: bot/docker-releases-json

View File

@@ -15,8 +15,8 @@ on:
env:
NODE_VERSION: "20"
BUILDX_VERSION: "https://github.com/docker/buildx.git#d8c9ebde1fdcf659f1fa3efa6ccc27a28b0f1564" # https://github.com/docker/buildx/pull/2551
BUILDKIT_IMAGE: "moby/buildkit:v0.14.1"
BUILDX_VERSION: "v0.17.1"
BUILDKIT_IMAGE: "moby/buildkit:v0.16.0"
jobs:
test:

View File

@@ -0,0 +1 @@
{"LocalPath":"/home/crazy/foo/bar/https:/github.com/docker/actions-toolkit.git#:__tests__/fixtures","DockerfilePath":"/home/crazy/foo/bar/hello.Dockerfile"}

View File

@@ -0,0 +1 @@
{"LocalPath":"/home/crazy/foo/bar/https:/github.com/docker/actions-toolkit.git#:__tests__/fixtures","DockerfilePath":"/home/crazy/foo/bar/-"}

View File

@@ -0,0 +1 @@
{"LocalPath":"/home/crazy/foo/bar/-","DockerfilePath":""}

View File

@@ -0,0 +1 @@
{"LocalPath":"/home/crazy/foo/bar/https:/github.com/docker/buildx.git","DockerfilePath":""}

View File

@@ -0,0 +1 @@
{"LocalPath":"https://github.com/docker/actions-toolkit.git#:__tests__/fixtures","DockerfilePath":"hello.Dockerfile"}

View File

@@ -0,0 +1 @@
{"LocalPath":"/home/crazy/hello","DockerfilePath":"/home/crazy/hello/-"}

View File

@@ -0,0 +1,26 @@
# syntax=docker/dockerfile-upstream:master
# Copyright 2024 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.
frOM busybox as base
cOpy lint-other.Dockerfile .
froM busybox aS notused
COPY lint-other.Dockerfile .
from scratch
COPy --from=base \
/lint-other.Dockerfile \
/

View File

@@ -17,6 +17,9 @@
frOM busybox as base
cOpy lint.Dockerfile .
# some special chars: distroless/python3-debian12のPythonは3.11
# https://github.com/docker/build-push-action/issues/1204#issuecomment-2274056016
from scratch
MAINTAINER moby@example.com
COPy --from=base \

View File

@@ -0,0 +1,26 @@
// Copyright 2024 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.
group "default" {
targets = ["lint", "lint-other", "lint-inline"]
}
target "lint" {
dockerfile = "lint.Dockerfile"
}
target "lint-other" {
dockerfile = "lint-other.Dockerfile"
}
target "lint-inline" {
dockerfile-inline = "FRoM alpine\nENTRYPOINT [\"echo\", \"hello\"]"
}

View File

@@ -0,0 +1,476 @@
{
"buildx.build.warnings": [
{
"vertex": "sha256:a5ba072453def0016837337b14eac8e587782c88e0f40bef076f63c91aa757b4",
"level": 1,
"short": "Q29uc2lzdGVudEluc3RydWN0aW9uQ2FzaW5nOiBDb21tYW5kICdmck9NJyBzaG91bGQgbWF0Y2ggdGhlIGNhc2Ugb2YgdGhlIGNvbW1hbmQgbWFqb3JpdHkgKHVwcGVyY2FzZSkgKGxpbmUgMTcp",
"detail": [
"QWxsIGNvbW1hbmRzIHdpdGhpbiB0aGUgRG9ja2VyZmlsZSBzaG91bGQgdXNlIHRoZSBzYW1lIGNhc2luZyAoZWl0aGVyIHVwcGVyIG9yIGxvd2VyKQ=="
],
"url": "https://docs.docker.com/go/dockerfile/rule/consistent-instruction-casing/",
"sourceInfo": {
"filename": "lint-other.Dockerfile",
"data": "IyBzeW50YXg9ZG9ja2VyL2RvY2tlcmZpbGUtdXBzdHJlYW06bWFzdGVyCgojIENvcHlyaWdodCAyMDI0IGFjdGlvbnMtdG9vbGtpdCBhdXRob3JzCiMKIyBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKIyB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCiMgWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CiMKIyAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAojCiMgVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQojIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCiMgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCiMgU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZAojIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgoKZnJPTSBidXN5Ym94IGFzIGJhc2UKY09weSBsaW50LW90aGVyLkRvY2tlcmZpbGUgLgoKZnJvTSBidXN5Ym94IGFTIG5vdHVzZWQKQ09QWSBsaW50LW90aGVyLkRvY2tlcmZpbGUgLgoKZnJvbSBzY3JhdGNoCkNPUHkgLS1mcm9tPWJhc2UgXAogIC9saW50LW90aGVyLkRvY2tlcmZpbGUgXAogIC8K",
"language": "Dockerfile"
},
"range": [
{
"start": {
"line": 17
},
"end": {
"line": 17
}
}
]
},
{
"vertex": "sha256:a5ba072453def0016837337b14eac8e587782c88e0f40bef076f63c91aa757b4",
"level": 1,
"short": "Q29uc2lzdGVudEluc3RydWN0aW9uQ2FzaW5nOiBDb21tYW5kICdmcm9NJyBzaG91bGQgbWF0Y2ggdGhlIGNhc2Ugb2YgdGhlIGNvbW1hbmQgbWFqb3JpdHkgKHVwcGVyY2FzZSkgKGxpbmUgMjAp",
"detail": [
"QWxsIGNvbW1hbmRzIHdpdGhpbiB0aGUgRG9ja2VyZmlsZSBzaG91bGQgdXNlIHRoZSBzYW1lIGNhc2luZyAoZWl0aGVyIHVwcGVyIG9yIGxvd2VyKQ=="
],
"url": "https://docs.docker.com/go/dockerfile/rule/consistent-instruction-casing/",
"sourceInfo": {
"filename": "lint-other.Dockerfile",
"data": "IyBzeW50YXg9ZG9ja2VyL2RvY2tlcmZpbGUtdXBzdHJlYW06bWFzdGVyCgojIENvcHlyaWdodCAyMDI0IGFjdGlvbnMtdG9vbGtpdCBhdXRob3JzCiMKIyBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKIyB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCiMgWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CiMKIyAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAojCiMgVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQojIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCiMgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCiMgU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZAojIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgoKZnJPTSBidXN5Ym94IGFzIGJhc2UKY09weSBsaW50LW90aGVyLkRvY2tlcmZpbGUgLgoKZnJvTSBidXN5Ym94IGFTIG5vdHVzZWQKQ09QWSBsaW50LW90aGVyLkRvY2tlcmZpbGUgLgoKZnJvbSBzY3JhdGNoCkNPUHkgLS1mcm9tPWJhc2UgXAogIC9saW50LW90aGVyLkRvY2tlcmZpbGUgXAogIC8K",
"language": "Dockerfile"
},
"range": [
{
"start": {
"line": 20
},
"end": {
"line": 20
}
}
]
},
{
"vertex": "sha256:a5ba072453def0016837337b14eac8e587782c88e0f40bef076f63c91aa757b4",
"level": 1,
"short": "Q29uc2lzdGVudEluc3RydWN0aW9uQ2FzaW5nOiBDb21tYW5kICdDT1B5JyBzaG91bGQgbWF0Y2ggdGhlIGNhc2Ugb2YgdGhlIGNvbW1hbmQgbWFqb3JpdHkgKHVwcGVyY2FzZSkgKGxpbmUgMjQp",
"detail": [
"QWxsIGNvbW1hbmRzIHdpdGhpbiB0aGUgRG9ja2VyZmlsZSBzaG91bGQgdXNlIHRoZSBzYW1lIGNhc2luZyAoZWl0aGVyIHVwcGVyIG9yIGxvd2VyKQ=="
],
"url": "https://docs.docker.com/go/dockerfile/rule/consistent-instruction-casing/",
"sourceInfo": {
"filename": "lint-other.Dockerfile",
"data": "IyBzeW50YXg9ZG9ja2VyL2RvY2tlcmZpbGUtdXBzdHJlYW06bWFzdGVyCgojIENvcHlyaWdodCAyMDI0IGFjdGlvbnMtdG9vbGtpdCBhdXRob3JzCiMKIyBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKIyB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCiMgWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CiMKIyAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAojCiMgVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQojIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCiMgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCiMgU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZAojIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgoKZnJPTSBidXN5Ym94IGFzIGJhc2UKY09weSBsaW50LW90aGVyLkRvY2tlcmZpbGUgLgoKZnJvTSBidXN5Ym94IGFTIG5vdHVzZWQKQ09QWSBsaW50LW90aGVyLkRvY2tlcmZpbGUgLgoKZnJvbSBzY3JhdGNoCkNPUHkgLS1mcm9tPWJhc2UgXAogIC9saW50LW90aGVyLkRvY2tlcmZpbGUgXAogIC8K",
"language": "Dockerfile"
},
"range": [
{
"start": {
"line": 24
},
"end": {
"line": 24
}
},
{
"start": {
"line": 25
},
"end": {
"line": 25
}
},
{
"start": {
"line": 26
},
"end": {
"line": 26
}
}
]
},
{
"vertex": "sha256:703fee0c090bf71539abdd28ae63eb49ced05ebd6da49db96224888f49db219d",
"level": 1,
"short": "Q29uc2lzdGVudEluc3RydWN0aW9uQ2FzaW5nOiBDb21tYW5kICdmcm9tJyBzaG91bGQgbWF0Y2ggdGhlIGNhc2Ugb2YgdGhlIGNvbW1hbmQgbWFqb3JpdHkgKHVwcGVyY2FzZSkgKGxpbmUgMjAp",
"detail": [
"QWxsIGNvbW1hbmRzIHdpdGhpbiB0aGUgRG9ja2VyZmlsZSBzaG91bGQgdXNlIHRoZSBzYW1lIGNhc2luZyAoZWl0aGVyIHVwcGVyIG9yIGxvd2VyKQ=="
],
"url": "https://docs.docker.com/go/dockerfile/rule/consistent-instruction-casing/",
"sourceInfo": {
"filename": "lint.Dockerfile",
"data": "IyBzeW50YXg9ZG9ja2VyL2RvY2tlcmZpbGUtdXBzdHJlYW06bWFzdGVyCgojIENvcHlyaWdodCAyMDI0IGFjdGlvbnMtdG9vbGtpdCBhdXRob3JzCiMKIyBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKIyB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCiMgWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CiMKIyAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAojCiMgVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQojIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCiMgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCiMgU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZAojIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgoKZnJPTSBidXN5Ym94IGFzIGJhc2UKY09weSBsaW50LkRvY2tlcmZpbGUgLgoKZnJvbSBzY3JhdGNoCk1BSU5UQUlORVIgbW9ieUBleGFtcGxlLmNvbQpDT1B5IC0tZnJvbT1iYXNlIFwKICAvbGludC5Eb2NrZXJmaWxlIFwKICAvCgpDTUQgWyAiZWNobyIsICJIZWxsbywgTm9yd2F5ISIgXQpDTUQgWyAiZWNobyIsICJIZWxsbywgU3dlZGVuISIgXQpFTlRSWVBPSU5UIG15LXByb2dyYW0gc3RhcnQK",
"language": "Dockerfile"
},
"range": [
{
"start": {
"line": 20
},
"end": {
"line": 20
}
}
]
},
{
"vertex": "sha256:703fee0c090bf71539abdd28ae63eb49ced05ebd6da49db96224888f49db219d",
"level": 1,
"short": "TWFpbnRhaW5lckRlcHJlY2F0ZWQ6IE1haW50YWluZXIgaW5zdHJ1Y3Rpb24gaXMgZGVwcmVjYXRlZCBpbiBmYXZvciBvZiB1c2luZyBsYWJlbCAobGluZSAyMSk=",
"detail": [
"VGhlIE1BSU5UQUlORVIgaW5zdHJ1Y3Rpb24gaXMgZGVwcmVjYXRlZCwgdXNlIGEgbGFiZWwgaW5zdGVhZCB0byBkZWZpbmUgYW4gaW1hZ2UgYXV0aG9y"
],
"url": "https://docs.docker.com/go/dockerfile/rule/maintainer-deprecated/",
"sourceInfo": {
"filename": "lint.Dockerfile",
"data": "IyBzeW50YXg9ZG9ja2VyL2RvY2tlcmZpbGUtdXBzdHJlYW06bWFzdGVyCgojIENvcHlyaWdodCAyMDI0IGFjdGlvbnMtdG9vbGtpdCBhdXRob3JzCiMKIyBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKIyB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCiMgWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CiMKIyAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAojCiMgVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQojIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCiMgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCiMgU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZAojIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgoKZnJPTSBidXN5Ym94IGFzIGJhc2UKY09weSBsaW50LkRvY2tlcmZpbGUgLgoKZnJvbSBzY3JhdGNoCk1BSU5UQUlORVIgbW9ieUBleGFtcGxlLmNvbQpDT1B5IC0tZnJvbT1iYXNlIFwKICAvbGludC5Eb2NrZXJmaWxlIFwKICAvCgpDTUQgWyAiZWNobyIsICJIZWxsbywgTm9yd2F5ISIgXQpDTUQgWyAiZWNobyIsICJIZWxsbywgU3dlZGVuISIgXQpFTlRSWVBPSU5UIG15LXByb2dyYW0gc3RhcnQK",
"language": "Dockerfile"
},
"range": [
{
"start": {
"line": 21
},
"end": {
"line": 21
}
}
]
},
{
"vertex": "sha256:703fee0c090bf71539abdd28ae63eb49ced05ebd6da49db96224888f49db219d",
"level": 1,
"short": "TXVsdGlwbGVJbnN0cnVjdGlvbnNEaXNhbGxvd2VkOiBNdWx0aXBsZSBDTUQgaW5zdHJ1Y3Rpb25zIHNob3VsZCBub3QgYmUgdXNlZCBpbiB0aGUgc2FtZSBzdGFnZSBiZWNhdXNlIG9ubHkgdGhlIGxhc3Qgb25lIHdpbGwgYmUgdXNlZCAobGluZSAyNik=",
"detail": [
"TXVsdGlwbGUgaW5zdHJ1Y3Rpb25zIG9mIHRoZSBzYW1lIHR5cGUgc2hvdWxkIG5vdCBiZSB1c2VkIGluIHRoZSBzYW1lIHN0YWdl"
],
"url": "https://docs.docker.com/go/dockerfile/rule/multiple-instructions-disallowed/",
"sourceInfo": {
"filename": "lint.Dockerfile",
"data": "IyBzeW50YXg9ZG9ja2VyL2RvY2tlcmZpbGUtdXBzdHJlYW06bWFzdGVyCgojIENvcHlyaWdodCAyMDI0IGFjdGlvbnMtdG9vbGtpdCBhdXRob3JzCiMKIyBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKIyB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCiMgWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CiMKIyAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAojCiMgVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQojIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCiMgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCiMgU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZAojIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgoKZnJPTSBidXN5Ym94IGFzIGJhc2UKY09weSBsaW50LkRvY2tlcmZpbGUgLgoKZnJvbSBzY3JhdGNoCk1BSU5UQUlORVIgbW9ieUBleGFtcGxlLmNvbQpDT1B5IC0tZnJvbT1iYXNlIFwKICAvbGludC5Eb2NrZXJmaWxlIFwKICAvCgpDTUQgWyAiZWNobyIsICJIZWxsbywgTm9yd2F5ISIgXQpDTUQgWyAiZWNobyIsICJIZWxsbywgU3dlZGVuISIgXQpFTlRSWVBPSU5UIG15LXByb2dyYW0gc3RhcnQK",
"language": "Dockerfile"
},
"range": [
{
"start": {
"line": 26
},
"end": {
"line": 26
}
}
]
},
{
"vertex": "sha256:703fee0c090bf71539abdd28ae63eb49ced05ebd6da49db96224888f49db219d",
"level": 1,
"short": "SlNPTkFyZ3NSZWNvbW1lbmRlZDogSlNPTiBhcmd1bWVudHMgcmVjb21tZW5kZWQgZm9yIEVOVFJZUE9JTlQgdG8gcHJldmVudCB1bmludGVuZGVkIGJlaGF2aW9yIHJlbGF0ZWQgdG8gT1Mgc2lnbmFscyAobGluZSAyOCk=",
"detail": [
"SlNPTiBhcmd1bWVudHMgcmVjb21tZW5kZWQgZm9yIEVOVFJZUE9JTlQvQ01EIHRvIHByZXZlbnQgdW5pbnRlbmRlZCBiZWhhdmlvciByZWxhdGVkIHRvIE9TIHNpZ25hbHM="
],
"url": "https://docs.docker.com/go/dockerfile/rule/json-args-recommended/",
"sourceInfo": {
"filename": "lint.Dockerfile",
"data": "IyBzeW50YXg9ZG9ja2VyL2RvY2tlcmZpbGUtdXBzdHJlYW06bWFzdGVyCgojIENvcHlyaWdodCAyMDI0IGFjdGlvbnMtdG9vbGtpdCBhdXRob3JzCiMKIyBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKIyB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCiMgWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CiMKIyAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAojCiMgVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQojIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCiMgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCiMgU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZAojIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgoKZnJPTSBidXN5Ym94IGFzIGJhc2UKY09weSBsaW50LkRvY2tlcmZpbGUgLgoKZnJvbSBzY3JhdGNoCk1BSU5UQUlORVIgbW9ieUBleGFtcGxlLmNvbQpDT1B5IC0tZnJvbT1iYXNlIFwKICAvbGludC5Eb2NrZXJmaWxlIFwKICAvCgpDTUQgWyAiZWNobyIsICJIZWxsbywgTm9yd2F5ISIgXQpDTUQgWyAiZWNobyIsICJIZWxsbywgU3dlZGVuISIgXQpFTlRSWVBPSU5UIG15LXByb2dyYW0gc3RhcnQK",
"language": "Dockerfile"
},
"range": [
{
"start": {
"line": 28
},
"end": {
"line": 28
}
}
]
},
{
"vertex": "sha256:a14452ec03a7f128fb0a1da8c4afdc78175fa9a97ff83ace427b3c39509d459b",
"level": 1,
"short": "Q29uc2lzdGVudEluc3RydWN0aW9uQ2FzaW5nOiBDb21tYW5kICdGUm9NJyBzaG91bGQgbWF0Y2ggdGhlIGNhc2Ugb2YgdGhlIGNvbW1hbmQgbWFqb3JpdHkgKHVwcGVyY2FzZSkgKGxpbmUgMSk=",
"detail": [
"QWxsIGNvbW1hbmRzIHdpdGhpbiB0aGUgRG9ja2VyZmlsZSBzaG91bGQgdXNlIHRoZSBzYW1lIGNhc2luZyAoZWl0aGVyIHVwcGVyIG9yIGxvd2VyKQ=="
],
"url": "https://docs.docker.com/go/dockerfile/rule/consistent-instruction-casing/",
"sourceInfo": {
"filename": "Dockerfile",
"data": "RlJvTSBhbHBpbmUKRU5UUllQT0lOVCBbImVjaG8iLCAiaGVsbG8iXQ==",
"language": "Dockerfile"
},
"range": [
{
"start": {
"line": 1
},
"end": {
"line": 1
}
}
]
},
{
"vertex": "sha256:a5ba072453def0016837337b14eac8e587782c88e0f40bef076f63c91aa757b4",
"level": 1,
"short": "Q29uc2lzdGVudEluc3RydWN0aW9uQ2FzaW5nOiBDb21tYW5kICdmcm9tJyBzaG91bGQgbWF0Y2ggdGhlIGNhc2Ugb2YgdGhlIGNvbW1hbmQgbWFqb3JpdHkgKHVwcGVyY2FzZSkgKGxpbmUgMjMp",
"detail": [
"QWxsIGNvbW1hbmRzIHdpdGhpbiB0aGUgRG9ja2VyZmlsZSBzaG91bGQgdXNlIHRoZSBzYW1lIGNhc2luZyAoZWl0aGVyIHVwcGVyIG9yIGxvd2VyKQ=="
],
"url": "https://docs.docker.com/go/dockerfile/rule/consistent-instruction-casing/",
"sourceInfo": {
"filename": "lint-other.Dockerfile",
"data": "IyBzeW50YXg9ZG9ja2VyL2RvY2tlcmZpbGUtdXBzdHJlYW06bWFzdGVyCgojIENvcHlyaWdodCAyMDI0IGFjdGlvbnMtdG9vbGtpdCBhdXRob3JzCiMKIyBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKIyB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCiMgWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CiMKIyAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAojCiMgVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQojIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCiMgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCiMgU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZAojIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgoKZnJPTSBidXN5Ym94IGFzIGJhc2UKY09weSBsaW50LW90aGVyLkRvY2tlcmZpbGUgLgoKZnJvTSBidXN5Ym94IGFTIG5vdHVzZWQKQ09QWSBsaW50LW90aGVyLkRvY2tlcmZpbGUgLgoKZnJvbSBzY3JhdGNoCkNPUHkgLS1mcm9tPWJhc2UgXAogIC9saW50LW90aGVyLkRvY2tlcmZpbGUgXAogIC8K",
"language": "Dockerfile"
},
"range": [
{
"start": {
"line": 23
},
"end": {
"line": 23
}
}
]
},
{
"vertex": "sha256:703fee0c090bf71539abdd28ae63eb49ced05ebd6da49db96224888f49db219d",
"level": 1,
"short": "Q29uc2lzdGVudEluc3RydWN0aW9uQ2FzaW5nOiBDb21tYW5kICdmck9NJyBzaG91bGQgbWF0Y2ggdGhlIGNhc2Ugb2YgdGhlIGNvbW1hbmQgbWFqb3JpdHkgKHVwcGVyY2FzZSkgKGxpbmUgMTcp",
"detail": [
"QWxsIGNvbW1hbmRzIHdpdGhpbiB0aGUgRG9ja2VyZmlsZSBzaG91bGQgdXNlIHRoZSBzYW1lIGNhc2luZyAoZWl0aGVyIHVwcGVyIG9yIGxvd2VyKQ=="
],
"url": "https://docs.docker.com/go/dockerfile/rule/consistent-instruction-casing/",
"sourceInfo": {
"filename": "lint.Dockerfile",
"data": "IyBzeW50YXg9ZG9ja2VyL2RvY2tlcmZpbGUtdXBzdHJlYW06bWFzdGVyCgojIENvcHlyaWdodCAyMDI0IGFjdGlvbnMtdG9vbGtpdCBhdXRob3JzCiMKIyBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKIyB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCiMgWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CiMKIyAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAojCiMgVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQojIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCiMgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCiMgU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZAojIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgoKZnJPTSBidXN5Ym94IGFzIGJhc2UKY09weSBsaW50LkRvY2tlcmZpbGUgLgoKZnJvbSBzY3JhdGNoCk1BSU5UQUlORVIgbW9ieUBleGFtcGxlLmNvbQpDT1B5IC0tZnJvbT1iYXNlIFwKICAvbGludC5Eb2NrZXJmaWxlIFwKICAvCgpDTUQgWyAiZWNobyIsICJIZWxsbywgTm9yd2F5ISIgXQpDTUQgWyAiZWNobyIsICJIZWxsbywgU3dlZGVuISIgXQpFTlRSWVBPSU5UIG15LXByb2dyYW0gc3RhcnQK",
"language": "Dockerfile"
},
"range": [
{
"start": {
"line": 17
},
"end": {
"line": 17
}
}
]
},
{
"vertex": "sha256:703fee0c090bf71539abdd28ae63eb49ced05ebd6da49db96224888f49db219d",
"level": 1,
"short": "Q29uc2lzdGVudEluc3RydWN0aW9uQ2FzaW5nOiBDb21tYW5kICdjT3B5JyBzaG91bGQgbWF0Y2ggdGhlIGNhc2Ugb2YgdGhlIGNvbW1hbmQgbWFqb3JpdHkgKHVwcGVyY2FzZSkgKGxpbmUgMTgp",
"detail": [
"QWxsIGNvbW1hbmRzIHdpdGhpbiB0aGUgRG9ja2VyZmlsZSBzaG91bGQgdXNlIHRoZSBzYW1lIGNhc2luZyAoZWl0aGVyIHVwcGVyIG9yIGxvd2VyKQ=="
],
"url": "https://docs.docker.com/go/dockerfile/rule/consistent-instruction-casing/",
"sourceInfo": {
"filename": "lint.Dockerfile",
"data": "IyBzeW50YXg9ZG9ja2VyL2RvY2tlcmZpbGUtdXBzdHJlYW06bWFzdGVyCgojIENvcHlyaWdodCAyMDI0IGFjdGlvbnMtdG9vbGtpdCBhdXRob3JzCiMKIyBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKIyB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCiMgWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CiMKIyAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAojCiMgVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQojIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCiMgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCiMgU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZAojIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgoKZnJPTSBidXN5Ym94IGFzIGJhc2UKY09weSBsaW50LkRvY2tlcmZpbGUgLgoKZnJvbSBzY3JhdGNoCk1BSU5UQUlORVIgbW9ieUBleGFtcGxlLmNvbQpDT1B5IC0tZnJvbT1iYXNlIFwKICAvbGludC5Eb2NrZXJmaWxlIFwKICAvCgpDTUQgWyAiZWNobyIsICJIZWxsbywgTm9yd2F5ISIgXQpDTUQgWyAiZWNobyIsICJIZWxsbywgU3dlZGVuISIgXQpFTlRSWVBPSU5UIG15LXByb2dyYW0gc3RhcnQK",
"language": "Dockerfile"
},
"range": [
{
"start": {
"line": 18
},
"end": {
"line": 18
}
}
]
},
{
"vertex": "sha256:703fee0c090bf71539abdd28ae63eb49ced05ebd6da49db96224888f49db219d",
"level": 1,
"short": "Q29uc2lzdGVudEluc3RydWN0aW9uQ2FzaW5nOiBDb21tYW5kICdDT1B5JyBzaG91bGQgbWF0Y2ggdGhlIGNhc2Ugb2YgdGhlIGNvbW1hbmQgbWFqb3JpdHkgKHVwcGVyY2FzZSkgKGxpbmUgMjIp",
"detail": [
"QWxsIGNvbW1hbmRzIHdpdGhpbiB0aGUgRG9ja2VyZmlsZSBzaG91bGQgdXNlIHRoZSBzYW1lIGNhc2luZyAoZWl0aGVyIHVwcGVyIG9yIGxvd2VyKQ=="
],
"url": "https://docs.docker.com/go/dockerfile/rule/consistent-instruction-casing/",
"sourceInfo": {
"filename": "lint.Dockerfile",
"data": "IyBzeW50YXg9ZG9ja2VyL2RvY2tlcmZpbGUtdXBzdHJlYW06bWFzdGVyCgojIENvcHlyaWdodCAyMDI0IGFjdGlvbnMtdG9vbGtpdCBhdXRob3JzCiMKIyBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKIyB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCiMgWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CiMKIyAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAojCiMgVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQojIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCiMgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCiMgU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZAojIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgoKZnJPTSBidXN5Ym94IGFzIGJhc2UKY09weSBsaW50LkRvY2tlcmZpbGUgLgoKZnJvbSBzY3JhdGNoCk1BSU5UQUlORVIgbW9ieUBleGFtcGxlLmNvbQpDT1B5IC0tZnJvbT1iYXNlIFwKICAvbGludC5Eb2NrZXJmaWxlIFwKICAvCgpDTUQgWyAiZWNobyIsICJIZWxsbywgTm9yd2F5ISIgXQpDTUQgWyAiZWNobyIsICJIZWxsbywgU3dlZGVuISIgXQpFTlRSWVBPSU5UIG15LXByb2dyYW0gc3RhcnQK",
"language": "Dockerfile"
},
"range": [
{
"start": {
"line": 22
},
"end": {
"line": 22
}
},
{
"start": {
"line": 23
},
"end": {
"line": 23
}
},
{
"start": {
"line": 24
},
"end": {
"line": 24
}
}
]
},
{
"vertex": "sha256:a5ba072453def0016837337b14eac8e587782c88e0f40bef076f63c91aa757b4",
"level": 1,
"short": "Q29uc2lzdGVudEluc3RydWN0aW9uQ2FzaW5nOiBDb21tYW5kICdjT3B5JyBzaG91bGQgbWF0Y2ggdGhlIGNhc2Ugb2YgdGhlIGNvbW1hbmQgbWFqb3JpdHkgKHVwcGVyY2FzZSkgKGxpbmUgMTgp",
"detail": [
"QWxsIGNvbW1hbmRzIHdpdGhpbiB0aGUgRG9ja2VyZmlsZSBzaG91bGQgdXNlIHRoZSBzYW1lIGNhc2luZyAoZWl0aGVyIHVwcGVyIG9yIGxvd2VyKQ=="
],
"url": "https://docs.docker.com/go/dockerfile/rule/consistent-instruction-casing/",
"sourceInfo": {
"filename": "lint-other.Dockerfile",
"data": "IyBzeW50YXg9ZG9ja2VyL2RvY2tlcmZpbGUtdXBzdHJlYW06bWFzdGVyCgojIENvcHlyaWdodCAyMDI0IGFjdGlvbnMtdG9vbGtpdCBhdXRob3JzCiMKIyBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKIyB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCiMgWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CiMKIyAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAojCiMgVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQojIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCiMgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCiMgU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZAojIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgoKZnJPTSBidXN5Ym94IGFzIGJhc2UKY09weSBsaW50LW90aGVyLkRvY2tlcmZpbGUgLgoKZnJvTSBidXN5Ym94IGFTIG5vdHVzZWQKQ09QWSBsaW50LW90aGVyLkRvY2tlcmZpbGUgLgoKZnJvbSBzY3JhdGNoCkNPUHkgLS1mcm9tPWJhc2UgXAogIC9saW50LW90aGVyLkRvY2tlcmZpbGUgXAogIC8K",
"language": "Dockerfile"
},
"range": [
{
"start": {
"line": 18
},
"end": {
"line": 18
}
}
]
}
],
"lint": {
"buildx.build.provenance": {
"buildType": "https://mobyproject.org/buildkit@v1",
"materials": [
{
"uri": "pkg:docker/docker/dockerfile-upstream@master",
"digest": {
"sha256": "bcfc291ad4ebc0fb1f53d2b2e4a4f6ba5a6a5df61d8a501aa6edb18f8dec339f"
}
},
{
"uri": "pkg:docker/busybox@latest?platform=linux%2Famd64",
"digest": {
"sha256": "9ae97d36d26566ff84e8893c64a6dc4fe8ca6d1144bf5b87b2b85a32def253c7"
}
}
],
"invocation": {
"configSource": {
"entryPoint": "lint.Dockerfile"
},
"parameters": {
"frontend": "gateway.v0",
"args": {
"cmdline": "docker/dockerfile-upstream:master",
"source": "docker/dockerfile-upstream:master"
},
"locals": [
{
"name": "context"
},
{
"name": "dockerfile"
}
]
},
"environment": {
"platform": "linux/amd64"
}
}
},
"buildx.build.ref": "default/default/x3tig9yrbzg2bp0ahn840m9hs",
"containerimage.config.digest": "sha256:0c1ae53d25e7cad9c1d81de558cdf959dfaf49e32d6918984eae14ae33197c2f",
"containerimage.digest": "sha256:0c1ae53d25e7cad9c1d81de558cdf959dfaf49e32d6918984eae14ae33197c2f"
},
"lint-inline": {
"buildx.build.provenance": {
"buildType": "https://mobyproject.org/buildkit@v1",
"materials": [
{
"uri": "pkg:docker/alpine@latest?platform=linux%2Famd64",
"digest": {
"sha256": "94e5f06ff8e3d4441dc3cd8b090ff38dc911bfa8ebdb0dc28395bc98f82f983f"
}
}
],
"invocation": {
"configSource": {
"entryPoint": "Dockerfile"
},
"parameters": {
"frontend": "dockerfile.v0",
"args": {
"dockerfilekey": "dockerfile"
},
"locals": [
{
"name": "context"
},
{
"name": "dockerfile"
}
]
},
"environment": {
"platform": "linux/amd64"
}
}
},
"buildx.build.ref": "default/default/f9i6og3j529lrezk83aw9k8fr",
"containerimage.config.digest": "sha256:b91f245896946759eb112149602f5638a9263d0ebc3d5e8b46533960494bda32",
"containerimage.digest": "sha256:b91f245896946759eb112149602f5638a9263d0ebc3d5e8b46533960494bda32"
},
"lint-other": {
"buildx.build.provenance": {
"buildType": "https://mobyproject.org/buildkit@v1",
"materials": [
{
"uri": "pkg:docker/docker/dockerfile-upstream@master",
"digest": {
"sha256": "bcfc291ad4ebc0fb1f53d2b2e4a4f6ba5a6a5df61d8a501aa6edb18f8dec339f"
}
},
{
"uri": "pkg:docker/busybox@latest?platform=linux%2Famd64",
"digest": {
"sha256": "9ae97d36d26566ff84e8893c64a6dc4fe8ca6d1144bf5b87b2b85a32def253c7"
}
}
],
"invocation": {
"configSource": {
"entryPoint": "lint-other.Dockerfile"
},
"parameters": {
"frontend": "gateway.v0",
"args": {
"cmdline": "docker/dockerfile-upstream:master",
"source": "docker/dockerfile-upstream:master"
},
"locals": [
{
"name": "context"
},
{
"name": "dockerfile"
}
]
},
"environment": {
"platform": "linux/amd64"
}
}
},
"buildx.build.ref": "default/default/yfq4itxr5kgustkcmp8jr4b9m",
"containerimage.config.digest": "sha256:897b83786d8d9158cd652f8ea0d3c8efcd098273d74f6fb9daa6904144a31537",
"containerimage.digest": "sha256:897b83786d8d9158cd652f8ea0d3c8efcd098273d74f6fb9daa6904144a31537"
}
}

View File

@@ -15,22 +15,20 @@
*/
import {describe, expect, jest, test, afterEach} from '@jest/globals';
import * as fs from 'fs';
import * as path from 'path';
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';
const fixturesDir = path.join(__dirname, '..', 'fixtures');
// prettier-ignore
const tmpDir = path.join(process.env.TEMP || '/tmp', 'buildkit-config-jest');
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');
jest.spyOn(Context, 'tmpDir').mockImplementation((): string => {
if (!fs.existsSync(tmpDir)) {
fs.mkdirSync(tmpDir, {recursive: true});
}
fs.mkdirSync(tmpDir, {recursive: true});
return tmpDir;
});

View File

@@ -21,7 +21,7 @@ import * as path from 'path';
import {Bake} from '../../src/buildx/bake';
import {BakeDefinition} from '../../src/types/buildx/bake';
const fixturesDir = path.join(__dirname, '..', 'fixtures');
const fixturesDir = path.join(__dirname, '..', '.fixtures');
const maybe = !process.env.GITHUB_ACTIONS || (process.env.GITHUB_ACTIONS === 'true' && process.env.ImageOS && process.env.ImageOS.startsWith('ubuntu')) ? describe : describe.skip;

View File

@@ -15,8 +15,9 @@
*/
import {afterEach, describe, expect, it, jest, test} from '@jest/globals';
import * as fs from 'fs';
import * as path from 'path';
import fs from 'fs';
import os from 'os';
import path from 'path';
import * as rimraf from 'rimraf';
import {Bake} from '../../src/buildx/bake';
@@ -26,23 +27,13 @@ import {ExecOptions} from '@actions/exec';
import {BakeDefinition} from '../../src/types/buildx/bake';
import {BuildMetadata} from '../../src/types/buildx/build';
const fixturesDir = path.join(__dirname, '..', 'fixtures');
// prettier-ignore
const tmpDir = path.join(process.env.TEMP || '/tmp', 'buildx-inputs-jest');
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 metadata: BuildMetadata = {
app: {
'buildx.build.ref': 'default/default/7frbdw1fmfozgtqavghowsepk'
},
db: {
'buildx.build.ref': 'default/default/onic7g2axylf56rxetob7qruy'
}
};
const metadata = JSON.parse(fs.readFileSync(path.join(fixturesDir, 'metadata-bake.json'), 'utf-8'));
jest.spyOn(Context, 'tmpDir').mockImplementation((): string => {
if (!fs.existsSync(tmpDir)) {
fs.mkdirSync(tmpDir, {recursive: true});
}
fs.mkdirSync(tmpDir, {recursive: true});
return tmpDir;
});
@@ -66,7 +57,17 @@ describe('resolveRefs', () => {
it('matches', async () => {
const bake = new Bake();
fs.writeFileSync(bake.getMetadataFilePath(), JSON.stringify(metadata));
expect(bake.resolveRefs()).toEqual(['default/default/7frbdw1fmfozgtqavghowsepk', 'default/default/onic7g2axylf56rxetob7qruy']);
expect(bake.resolveRefs()).toEqual(['default/default/x3tig9yrbzg2bp0ahn840m9hs', 'default/default/f9i6og3j529lrezk83aw9k8fr', 'default/default/yfq4itxr5kgustkcmp8jr4b9m']);
});
});
describe('resolveWarnings', () => {
it('matches', async () => {
const bake = new Bake();
fs.writeFileSync(bake.getMetadataFilePath(), JSON.stringify(metadata));
const warnings = bake.resolveWarnings();
expect(warnings).toBeDefined();
expect(warnings?.length).toEqual(13);
});
});

View File

@@ -15,23 +15,21 @@
*/
import {afterEach, beforeEach, describe, expect, it, jest, test} from '@jest/globals';
import * as fs from 'fs';
import * as path from 'path';
import fs from 'fs';
import os from 'os';
import path from 'path';
import * as rimraf from 'rimraf';
import {Context} from '../../src/context';
import {Build} from '../../src/buildx/build';
const fixturesDir = path.join(__dirname, '..', 'fixtures');
// prettier-ignore
const tmpDir = path.join(process.env.TEMP || '/tmp', 'buildx-inputs-jest');
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 metadata = JSON.parse(fs.readFileSync(path.join(fixturesDir, 'metadata.json'), 'utf-8'));
const metadata = JSON.parse(fs.readFileSync(path.join(fixturesDir, 'metadata-build.json'), 'utf-8'));
jest.spyOn(Context, 'tmpDir').mockImplementation((): string => {
if (!fs.existsSync(tmpDir)) {
fs.mkdirSync(tmpDir, {recursive: true});
}
fs.mkdirSync(tmpDir, {recursive: true});
return tmpDir;
});

View File

@@ -23,7 +23,7 @@ import {Exec} from '../../src/exec';
import {BuilderInfo} from '../../src/types/buildx/builder';
const fixturesDir = path.join(__dirname, '..', 'fixtures');
const fixturesDir = path.join(__dirname, '..', '.fixtures');
jest.spyOn(Builder.prototype, 'inspect').mockImplementation(async (): Promise<BuilderInfo> => {
return {

View File

@@ -0,0 +1,116 @@
/**
* Copyright 2024 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 '@jest/globals';
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';
const fixturesDir = path.join(__dirname, '..', '.fixtures');
const tmpDir = fs.mkdtempSync(path.join(process.env.TEMP || os.tmpdir(), 'buildx-buildx-itg-'));
const maybe = !process.env.GITHUB_ACTIONS || (process.env.GITHUB_ACTIONS === 'true' && process.env.ImageOS && process.env.ImageOS.startsWith('ubuntu')) ? describe : describe.skip;
maybe('convertWarningsToGitHubAnnotations', () => {
it('build lint issues', 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, 'lint.Dockerfile'),
fixturesDir,
'--metadata-file', build.getMetadataFilePath()
]);
await Exec.exec(buildCmd.command, buildCmd.args, {
env: Object.assign({}, process.env, {
BUILDX_METADATA_WARNINGS: 'true'
}) as {
[key: string]: string;
}
});
})()
).resolves.not.toThrow();
const metadata = build.resolveMetadata();
expect(metadata).toBeDefined();
const buildRef = build.resolveRef(metadata);
expect(buildRef).toBeDefined();
const buildWarnings = build.resolveWarnings(metadata);
expect(buildWarnings).toBeDefined();
const annotations = await Buildx.convertWarningsToGitHubAnnotations(buildWarnings ?? [], [buildRef ?? '']);
expect(annotations).toBeDefined();
expect(annotations?.length).toBeGreaterThan(0);
for (const annotation of annotations ?? []) {
core.warning(annotation.message, annotation);
}
});
it('bake lint issues', async () => {
const buildx = new Buildx();
const bake = new Bake({buildx: buildx});
fs.mkdirSync(tmpDir, {recursive: true});
await expect(
(async () => {
// prettier-ignore
const buildCmd = await buildx.getCommand([
'--builder', process.env.CTN_BUILDER_NAME ?? 'default',
'bake',
'-f', path.join(fixturesDir, 'lint.hcl'),
'--metadata-file', bake.getMetadataFilePath()
]);
await Exec.exec(buildCmd.command, buildCmd.args, {
cwd: fixturesDir,
env: Object.assign({}, process.env, {
BUILDX_METADATA_WARNINGS: 'true'
}) as {
[key: string]: string;
}
});
})()
).resolves.not.toThrow();
const metadata = bake.resolveMetadata();
expect(metadata).toBeDefined();
const buildRefs = bake.resolveRefs(metadata);
expect(buildRefs).toBeDefined();
expect(buildRefs?.length).toEqual(3);
const buildWarnings = bake.resolveWarnings(metadata);
expect(buildWarnings).toBeDefined();
const annotations = await Buildx.convertWarningsToGitHubAnnotations(buildWarnings ?? [], buildRefs ?? []);
expect(annotations).toBeDefined();
expect(annotations?.length).toBeGreaterThan(0);
for (const annotation of annotations ?? []) {
core.warning(annotation.message, annotation);
}
});
});

View File

@@ -15,8 +15,9 @@
*/
import {describe, expect, it, jest, test, beforeEach, afterEach} from '@jest/globals';
import * as fs from 'fs';
import * as path from 'path';
import fs from 'fs';
import os from 'os';
import path from 'path';
import * as rimraf from 'rimraf';
import * as semver from 'semver';
@@ -24,17 +25,14 @@ import {Buildx} from '../../src/buildx/buildx';
import {Context} from '../../src/context';
import {Exec} from '../../src/exec';
import {Cert} from '../../src/types/buildx/buildx';
import {Cert, LocalState} from '../../src/types/buildx/buildx';
const fixturesDir = path.join(__dirname, '..', 'fixtures');
// prettier-ignore
const tmpDir = path.join(process.env.TEMP || '/tmp', 'buildx-jest');
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');
jest.spyOn(Context, 'tmpDir').mockImplementation((): string => {
if (!fs.existsSync(tmpDir)) {
fs.mkdirSync(tmpDir, {recursive: true});
}
fs.mkdirSync(tmpDir, {recursive: true});
return tmpDir;
});
@@ -250,19 +248,77 @@ describe('resolveCertsDriverOpts', () => {
});
});
describe('localState', () => {
// prettier-ignore
test.each([
[
'default/default/ij71n3ubmhck85d03zdvye5nr',
{
LocalPath: '/home/crazymax/github/docker_org/buildx',
DockerfilePath: '/home/crazymax/github/docker_org/buildx/Dockerfile'
} as LocalState,
],
[
'default/default/7pnnqpgacnqq98oa1a1h5sz6t',
{
LocalPath: 'https://github.com/docker/actions-toolkit.git#:__tests__/fixtures',
DockerfilePath: 'hello.Dockerfile'
} as LocalState,
],
[
'default/default/84p2qpgacnqq98oa1a1h5sz6t',
{
LocalPath: 'https://github.com/docker/actions-toolkit.git#:__tests__/fixtures',
DockerfilePath: '-'
} as LocalState,
],
[
'default/default/a5s9rlg9cnqq98oa1a1h5sz6t',
{
LocalPath: '-',
DockerfilePath: ''
} as LocalState,
],
[
'default/default/aav2ix4nw5eky66fw045dkylr',
{
LocalPath: 'https://github.com/docker/buildx.git',
DockerfilePath: ''
} as LocalState,
],
[
'default/default/dfsz8r57a98zf789pmlyzqp3n',
{
LocalPath: 'https://github.com/docker/actions-toolkit.git#:__tests__/fixtures',
DockerfilePath: 'hello.Dockerfile'
} as LocalState,
],
[
'default/default/w38vcd5fo5cfvfyig77qjec0v',
{
LocalPath: '/home/crazy/hello',
DockerfilePath: '-'
} as LocalState,
]
])('given %p', async (ref: string, expected: LocalState) => {
const localState = Buildx.localState(ref, path.join(fixturesDir, 'buildx-refs'));
expect(localState).toEqual(expected);
});
});
describe('refs', () => {
it('returns all refs', async () => {
const refs = Buildx.refs({
dir: path.join(fixturesDir, 'buildx-refs')
});
expect(Object.keys(refs).length).toEqual(11);
expect(Object.keys(refs).length).toEqual(17);
});
it('returns default builder refs', async () => {
const refs = Buildx.refs({
dir: path.join(fixturesDir, 'buildx-refs'),
builderName: 'default'
});
expect(Object.keys(refs).length).toEqual(8);
expect(Object.keys(refs).length).toEqual(14);
});
it('returns foo builder refs', async () => {
const refs = Buildx.refs({
@@ -281,6 +337,6 @@ describe('refs', () => {
builderName: 'default',
since: new Date('2024-01-10T00:00:00Z')
});
expect(Object.keys(refs).length).toEqual(5);
expect(Object.keys(refs).length).toEqual(11);
});
});

View File

@@ -14,9 +14,10 @@
* limitations under the License.
*/
import {describe, expect, test} from '@jest/globals';
import * as fs from 'fs';
import * as path from 'path';
import {afterEach, beforeEach, describe, expect, it, jest, test} from '@jest/globals';
import fs from 'fs';
import os from 'os';
import path from 'path';
import {Buildx} from '../../src/buildx/buildx';
import {Bake} from '../../src/buildx/bake';
@@ -24,10 +25,8 @@ import {Build} from '../../src/buildx/build';
import {History} from '../../src/buildx/history';
import {Exec} from '../../src/exec';
const fixturesDir = path.join(__dirname, '..', 'fixtures');
// prettier-ignore
const tmpDir = path.join(process.env.TEMP || '/tmp', 'buildx-history-jest');
const fixturesDir = path.join(__dirname, '..', '.fixtures');
const tmpDir = fs.mkdtempSync(path.join(process.env.TEMP || os.tmpdir(), 'buildx-history-itg-'));
const maybe = !process.env.GITHUB_ACTIONS || (process.env.GITHUB_ACTIONS === 'true' && process.env.ImageOS && process.env.ImageOS.startsWith('ubuntu')) ? describe : describe.skip;
@@ -147,3 +146,52 @@ maybe('exportBuild', () => {
expect(exportRes?.summaries).toBeDefined();
});
});
maybe('exportBuild custom image', () => {
const originalEnv = process.env;
beforeEach(() => {
jest.resetModules();
process.env = {
...originalEnv,
DOCKER_BUILD_EXPORT_BUILD_IMAGE: 'docker.io/dockereng/export-build:0.2.2'
};
});
afterEach(() => {
process.env = originalEnv;
});
it('with custom image', 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 ?? '']
});
expect(exportRes).toBeDefined();
expect(exportRes?.dockerbuildFilename).toBeDefined();
expect(exportRes?.dockerbuildSize).toBeDefined();
expect(fs.existsSync(exportRes?.dockerbuildFilename)).toBe(true);
expect(exportRes?.summaries).toBeDefined();
});
});

View File

@@ -15,15 +15,15 @@
*/
import {describe, expect, it, jest, test, afterEach} from '@jest/globals';
import * as fs from 'fs';
import * as path from 'path';
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';
// prettier-ignore
const tmpDir = path.join(process.env.TEMP || '/tmp', 'buildx-jest');
const tmpDir = fs.mkdtempSync(path.join(process.env.TEMP || os.tmpdir(), 'buildx-install-'));
afterEach(function () {
rimraf.sync(tmpDir);

View File

@@ -14,15 +14,15 @@
* limitations under the License.
*/
import path from 'path';
import {describe, expect, it} from '@jest/globals';
import fs from 'fs';
import os from 'os';
import path from 'path';
import {Cache} from '../src/cache';
// prettier-ignore
const tmpDir = path.join(process.env.TEMP || '/tmp', 'cache-jest');
const fixturesDir = path.join(__dirname, 'fixtures');
const fixturesDir = path.join(__dirname, '.fixtures');
const tmpDir = fs.mkdtempSync(path.join(process.env.TEMP || os.tmpdir(), 'cache-itg-'));
describe('cache', () => {
it('github-repo', async () => {

View File

@@ -14,21 +14,19 @@
* limitations under the License.
*/
import * as fs from 'fs';
import * as path from 'path';
import * as rimraf from 'rimraf';
import {describe, expect, jest, it, afterEach} from '@jest/globals';
import fs from 'fs';
import os from 'os';
import path from 'path';
import * as rimraf from 'rimraf';
import {Context} from '../src/context';
// prettier-ignore
const tmpDir = path.join(process.env.TEMP || '/tmp', 'context-jest');
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 => {
if (!fs.existsSync(tmpDir)) {
fs.mkdirSync(tmpDir, {recursive: true});
}
fs.mkdirSync(tmpDir, {recursive: true});
return tmpDir;
});

View File

@@ -14,12 +14,18 @@
* limitations under the License.
*/
import {describe, expect, test} from '@jest/globals';
import {describe, expect, it, test} from '@jest/globals';
import {Docker} from '../../src/docker/docker';
const maybe = !process.env.GITHUB_ACTIONS || (process.env.GITHUB_ACTIONS === 'true' && process.env.ImageOS && process.env.ImageOS.startsWith('ubuntu')) ? describe : describe.skip;
maybe('isDaemonRunning', () => {
it('checks if daemon is running', async () => {
expect(await Docker.isDaemonRunning()).toBe(true);
});
});
maybe('pull', () => {
// prettier-ignore
test.each([
@@ -54,3 +60,14 @@ maybe('pull', () => {
}
}, 600000);
});
maybe('contextInspect', () => {
it('inspect default context', async () => {
const contextInfo = await Docker.contextInspect();
expect(contextInfo).toBeDefined();
console.log('contextInfo', contextInfo);
expect(contextInfo?.Name).toBeDefined();
expect(contextInfo?.Endpoints).toBeDefined();
expect(Object.keys(contextInfo?.Endpoints).length).toBeGreaterThan(0);
});
});

View File

@@ -15,21 +15,19 @@
*/
import {afterEach, beforeEach, describe, expect, it, jest} from '@jest/globals';
import * as fs from 'fs';
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 {Exec} from '../../src/exec';
import {ConfigFile} from '../../src/types/docker/docker';
const fixturesDir = path.join(__dirname, '..', 'fixtures');
// prettier-ignore
const tmpDir = path.join(process.env.TEMP || '/tmp', 'docker-jest');
const fixturesDir = path.join(__dirname, '..', '.fixtures');
const tmpDir = fs.mkdtempSync(path.join(process.env.TEMP || os.tmpdir(), 'docker-docker-'));
afterEach(function () {
rimraf.sync(tmpDir);
@@ -105,35 +103,132 @@ describe('isAvailable', () => {
});
});
describe('context', () => {
it('call docker context show', async () => {
const execSpy = jest.spyOn(Exec, 'getExecOutput');
await Docker.context().catch(() => {
// noop
});
expect(execSpy).toHaveBeenCalledWith(`docker`, ['context', 'inspect', '--format', '{{.Name}}'], {
describe('exec', () => {
it('returns docker version', async () => {
const execSpy = jest.spyOn(Docker, 'exec');
await Docker.exec(['version'], {
ignoreReturnCode: true,
silent: true
});
expect(execSpy).toHaveBeenCalledTimes(1);
const callfunc = execSpy.mock.calls[0];
expect(Object.keys(callfunc[1]?.env || {}).length).toBeGreaterThan(0);
const env = callfunc[1]?.env;
expect(env).toHaveProperty('DOCKER_CONTENT_TRUST');
expect(env?.DOCKER_CONTENT_TRUST).toBe('false');
if (callfunc[1]?.env) {
// already checked env
callfunc[1].env = undefined;
}
expect(callfunc).toEqual([
['version'],
{
ignoreReturnCode: true,
silent: true
}
]);
});
});
describe('getExecOutput', () => {
it('returns docker version', async () => {
const execSpy = jest.spyOn(Docker, 'getExecOutput');
await Docker.getExecOutput(['version'], {
ignoreReturnCode: true,
silent: true
});
expect(execSpy).toHaveBeenCalledTimes(1);
const callfunc = execSpy.mock.calls[0];
expect(Object.keys(callfunc[1]?.env || {}).length).toBeGreaterThan(0);
const env = callfunc[1]?.env;
expect(env).toHaveProperty('DOCKER_CONTENT_TRUST');
expect(env?.DOCKER_CONTENT_TRUST).toBe('false');
if (callfunc[1]?.env) {
// already checked env
callfunc[1].env = undefined;
}
expect(callfunc).toEqual([
['version'],
{
ignoreReturnCode: true,
silent: true
}
]);
});
});
describe('context', () => {
it('call docker context show', async () => {
const execSpy = jest.spyOn(Docker, 'getExecOutput');
await Docker.context().catch(() => {
// noop
});
expect(execSpy).toHaveBeenCalledTimes(1);
const callfunc = execSpy.mock.calls[0];
if (callfunc && callfunc[1]) {
// we don't want to check env opt
callfunc[1].env = undefined;
}
expect(callfunc).toEqual([
['context', 'inspect', '--format', '{{.Name}}'],
{
ignoreReturnCode: true,
silent: true
}
]);
});
});
describe('contextInspect', () => {
it('call docker context inspect', async () => {
const execSpy = jest.spyOn(Docker, 'getExecOutput');
await Docker.contextInspect('foo').catch(() => {
// noop
});
expect(execSpy).toHaveBeenCalledTimes(1);
const callfunc = execSpy.mock.calls[0];
if (callfunc && callfunc[1]) {
// we don't want to check env opt
callfunc[1].env = undefined;
}
expect(callfunc).toEqual([
['context', 'inspect', '--format=json', 'foo'],
{
ignoreReturnCode: true,
silent: true
}
]);
});
});
describe('printVersion', () => {
it('call docker version', async () => {
const execSpy = jest.spyOn(Exec, 'exec');
const execSpy = jest.spyOn(Docker, 'exec');
await Docker.printVersion().catch(() => {
// noop
});
expect(execSpy).toHaveBeenCalledWith(`docker`, ['version']);
expect(execSpy).toHaveBeenCalledTimes(1);
const callfunc = execSpy.mock.calls[0];
if (callfunc && callfunc[1]) {
// we don't want to check env opt
callfunc[1].env = undefined;
}
expect(callfunc).toEqual([['version']]);
});
});
describe('printInfo', () => {
it('call docker info', async () => {
const execSpy = jest.spyOn(Exec, 'exec');
const execSpy = jest.spyOn(Docker, 'exec');
await Docker.printInfo().catch(() => {
// noop
});
expect(execSpy).toHaveBeenCalledWith(`docker`, ['info']);
expect(execSpy).toHaveBeenCalledTimes(1);
const callfunc = execSpy.mock.calls[0];
if (callfunc && callfunc[1]) {
// we don't want to check env opt
callfunc[1].env = undefined;
}
expect(callfunc).toEqual([['info']]);
});
});

View File

@@ -14,15 +14,16 @@
* limitations under the License.
*/
import path from 'path';
import {jest, describe, expect, test, beforeEach, afterEach} from '@jest/globals';
import fs from 'fs';
import os from 'os';
import path from 'path';
import {Install} from '../../src/docker/install';
import {Docker} from '../../src/docker/docker';
import {Exec} from '../../src/exec';
// prettier-ignore
const tmpDir = path.join(process.env.TEMP || '/tmp', 'docker-install-jest');
const tmpDir = fs.mkdtempSync(path.join(process.env.TEMP || os.tmpdir(), 'docker-install-itg-'));
describe('install', () => {
const originalEnv = process.env;

View File

@@ -15,15 +15,15 @@
*/
import {describe, expect, jest, test, beforeEach, afterEach, it} from '@jest/globals';
import * as fs from 'fs';
import * as path from 'path';
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/docker/install';
// prettier-ignore
const tmpDir = path.join(process.env.TEMP || '/tmp', 'docker-install-jest');
const tmpDir = fs.mkdtempSync(path.join(process.env.TEMP || os.tmpdir(), 'docker-install-'));
afterEach(function () {
rimraf.sync(tmpDir);

View File

@@ -21,9 +21,9 @@ import * as path from 'path';
import {DockerHub} from '../src/dockerhub';
import {RepositoryResponse, RepositoryTagsResponse} from '../src/types/dockerhub';
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';
import repoTagsFixture from './.fixtures/dockerhub-repotags.json';
import repoAllTagsFixture from './.fixtures/dockerhub-repoalltags.json';
describe('getRepository', () => {
it('returns repo info', async () => {

View File

@@ -16,7 +16,8 @@
import {describe, expect, it, test} from '@jest/globals';
import fs from 'fs';
import * as path from 'path';
import os from 'os';
import path from 'path';
import {Buildx} from '../src/buildx/buildx';
import {Bake} from '../src/buildx/bake';
@@ -25,10 +26,8 @@ import {Exec} from '../src/exec';
import {GitHub} from '../src/github';
import {History} from '../src/buildx/history';
const fixturesDir = path.join(__dirname, 'fixtures');
// prettier-ignore
const tmpDir = path.join(process.env.TEMP || '/tmp', 'github-jest');
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;
@@ -248,10 +247,9 @@ maybe('writeBuildSummary', () => {
}
});
});
});
maybe('annotateBuildWarnings', () => {
it('annoate lint issues', async () => {
it('without build record', async () => {
const startedTime = new Date();
const buildx = new Buildx();
const build = new Build({buildx: buildx});
@@ -262,27 +260,37 @@ maybe('annotateBuildWarnings', () => {
const buildCmd = await buildx.getCommand([
'--builder', process.env.CTN_BUILDER_NAME ?? 'default',
'build',
'-f', path.join(fixturesDir, 'lint.Dockerfile'),
'-f', path.join(fixturesDir, 'hello.Dockerfile'),
fixturesDir,
'--metadata-file', build.getMetadataFilePath()
]);
await Exec.exec(buildCmd.command, buildCmd.args, {
env: Object.assign({}, process.env, {
BUILDX_METADATA_WARNINGS: 'true'
}) as {
[key: string]: string;
}
});
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 buildWarnings = build.resolveWarnings(metadata);
expect(buildWarnings).toBeDefined();
const refs = Buildx.refs({
dir: Buildx.refsDir,
builderName: process.env.CTN_BUILDER_NAME ?? 'default',
since: startedTime
});
expect(refs).toBeDefined();
expect(Object.keys(refs).length).toBeGreaterThan(0);
await GitHub.annotateBuildWarnings(path.join(fixturesDir, 'lint.Dockerfile'), buildWarnings);
const history = new History({buildx: buildx});
const exportRes = await history.export({
refs: [Object.keys(refs)[0] ?? '']
});
expect(exportRes).toBeDefined();
expect(exportRes?.dockerbuildFilename).toBeDefined();
expect(exportRes?.dockerbuildSize).toBeDefined();
expect(exportRes?.summaries).toBeDefined();
await GitHub.writeBuildSummary({
exportRes: exportRes,
inputs: {
context: fixturesDir,
file: path.join(fixturesDir, 'hello.Dockerfile')
}
});
});
});

View File

@@ -22,7 +22,7 @@ import * as core from '@actions/core';
import {GitHub} from '../src/github';
import {GitHubRepo} from '../src/types/github';
import repoFixture from './fixtures/github-repo.json';
import repoFixture from './.fixtures/github-repo.json';
jest.spyOn(GitHub.prototype, 'repoData').mockImplementation((): Promise<GitHubRepo> => {
return <Promise<GitHubRepo>>(repoFixture as unknown);
});
@@ -85,28 +85,6 @@ describe('apiURL', () => {
});
});
describe('isGHES', () => {
afterEach(() => {
process.env.GITHUB_SERVER_URL = '';
});
it('should return false when the request domain is github.com', () => {
process.env.GITHUB_SERVER_URL = 'https://github.com';
expect(GitHub.isGHES).toBe(false);
});
it('should return false when the request domain ends with ghe.com', () => {
process.env.GITHUB_SERVER_URL = 'https://my.domain.ghe.com';
expect(GitHub.isGHES).toBe(false);
});
it('should return false when the request domain ends with ghe.localhost', () => {
process.env.GITHUB_SERVER_URL = 'https://my.domain.ghe.localhost';
expect(GitHub.isGHES).toBe(false);
});
it('should return true when the request domain is specific to an enterprise', () => {
process.env.GITHUB_SERVER_URL = 'https://my-enterprise.github.com';
expect(GitHub.isGHES).toBe(true);
});
});
describe('repository', () => {
it('returns GitHub repository', async () => {
expect(GitHub.repository).toEqual('docker/actions-toolkit');
@@ -145,7 +123,7 @@ describe('actionsRuntimeToken', () => {
});
it('fixture', async () => {
process.env.ACTIONS_RUNTIME_TOKEN = fs
.readFileSync(path.join(__dirname, 'fixtures', 'runtimeToken.txt'))
.readFileSync(path.join(__dirname, '.fixtures', 'runtimeToken.txt'))
.toString()
.trim();
const runtimeToken = GitHub.actionsRuntimeToken;
@@ -176,7 +154,7 @@ describe('printActionsRuntimeTokenACs', () => {
it('refs/heads/master', async () => {
const infoSpy = jest.spyOn(core, 'info');
process.env.ACTIONS_RUNTIME_TOKEN = fs
.readFileSync(path.join(__dirname, 'fixtures', 'runtimeToken.txt'))
.readFileSync(path.join(__dirname, '.fixtures', 'runtimeToken.txt'))
.toString()
.trim();
await GitHub.printActionsRuntimeTokenACs();

View File

@@ -15,16 +15,15 @@
*/
import {afterEach, describe, expect, test} from '@jest/globals';
import * as fs from 'fs';
import fs from 'fs';
import os from 'os';
import path from 'path';
import * as rimraf from 'rimraf';
import {OCI} from '../../src/oci/oci';
const fixturesDir = path.join(__dirname, '..', 'fixtures');
// prettier-ignore
const tmpDir = path.join(process.env.TEMP || '/tmp', 'docker-jest');
const fixturesDir = path.join(__dirname, '..', '.fixtures');
const tmpDir = fs.mkdtempSync(path.join(process.env.TEMP || os.tmpdir(), 'oci-oci-'));
afterEach(function () {
rimraf.sync(tmpDir);

View File

@@ -165,7 +165,7 @@ FOO=bar`
});
it('large multiline values', async () => {
const pgp = fs.readFileSync(path.join(__dirname, 'fixtures', 'pgp.txt'), {encoding: 'utf-8'});
const pgp = fs.readFileSync(path.join(__dirname, '.fixtures', 'pgp.txt'), {encoding: 'utf-8'});
setInput(
'secrets',
`"GPG_KEY=${pgp}"
@@ -416,6 +416,34 @@ lines`;
});
});
describe('isPathRelativeTo', () => {
it('should return true for a child path directly inside the parent path', () => {
const parentPath = '/home/user/projects';
const childPath = '/home/user/projects/subproject';
expect(Util.isPathRelativeTo(parentPath, childPath)).toBe(true);
});
it('should return true for a deeply nested child path inside the parent path', () => {
const parentPath = '/home/user';
const childPath = '/home/user/projects/subproject/module';
expect(Util.isPathRelativeTo(parentPath, childPath)).toBe(true);
});
it('should return false for a child path outside the parent path', () => {
const parentPath = '/home/user/projects';
const childPath = '/home/user/otherprojects/subproject';
expect(Util.isPathRelativeTo(parentPath, childPath)).toBe(false);
});
it('should return true for a child path specified with relative segments', () => {
const parentPath = '/home/user/projects';
const childPath = '/home/user/projects/../projects/subproject';
expect(Util.isPathRelativeTo(parentPath, childPath)).toBe(true);
});
it('should return false when the child path is actually a parent path', () => {
const parentPath = '/home/user/projects/subproject';
const childPath = '/home/user/projects';
expect(Util.isPathRelativeTo(parentPath, childPath)).toBe(false);
});
});
// See: https://github.com/actions/toolkit/blob/a1b068ec31a042ff1e10a522d8fdf0b8869d53ca/packages/core/src/core.ts#L89
function getInputName(name: string): string {
return `INPUT_${name.replace(/ /g, '_').toUpperCase()}`;

View File

@@ -15,8 +15,8 @@
# limitations under the License.
ARG NODE_VERSION=20
ARG DOCKER_VERSION=26.0.2
ARG BUILDX_VERSION=0.15.1
ARG DOCKER_VERSION=27.2.1
ARG BUILDX_VERSION=0.17.1
FROM node:${NODE_VERSION}-alpine AS base
RUN apk add --no-cache cpio findutils git

View File

@@ -45,12 +45,12 @@
"registry": "https://registry.npmjs.org/"
},
"dependencies": {
"@actions/artifact": "^2.1.7",
"@actions/artifact": "^2.1.9",
"@actions/cache": "^3.2.4",
"@actions/core": "^1.10.1",
"@actions/exec": "^1.1.1",
"@actions/github": "^6.0.0",
"@actions/http-client": "^2.2.1",
"@actions/http-client": "^2.2.3",
"@actions/io": "^1.1.3",
"@actions/tool-cache": "^2.0.1",
"@azure/storage-blob": "^12.15.0",
@@ -63,7 +63,7 @@
"he": "^1.2.0",
"js-yaml": "^4.1.0",
"jwt-decode": "^4.0.0",
"semver": "^7.6.2",
"semver": "^7.6.3",
"tar-stream": "^3.1.7",
"tmp": "^0.2.3"
},

View File

@@ -19,8 +19,8 @@ import * as semver from 'semver';
import {Buildx} from '../buildx/buildx';
import {Builder} from '../buildx/builder';
import {Docker} from '../docker/docker';
import {Config} from './config';
import {Exec} from '../exec';
import {BuilderInfo, NodeInfo} from '../types/buildx/builder';
@@ -51,13 +51,13 @@ export class BuildKit {
private async getVersionWithinImage(nodeName: string): Promise<string> {
core.debug(`BuildKit.getVersionWithinImage nodeName: ${nodeName}`);
return Exec.getExecOutput(`docker`, ['inspect', '--format', '{{.Config.Image}}', `${Buildx.containerNamePrefix}${nodeName}`], {
return Docker.getExecOutput(['inspect', '--format', '{{.Config.Image}}', `${Buildx.containerNamePrefix}${nodeName}`], {
ignoreReturnCode: true,
silent: true
}).then(bkitimage => {
if (bkitimage.exitCode == 0 && bkitimage.stdout.length > 0) {
core.debug(`BuildKit.getVersionWithinImage image: ${bkitimage.stdout.trim()}`);
return Exec.getExecOutput(`docker`, ['run', '--rm', bkitimage.stdout.trim(), '--version'], {
return Docker.getExecOutput(['run', '--rm', bkitimage.stdout.trim(), '--version'], {
ignoreReturnCode: true,
silent: true
}).then(bkitversion => {

View File

@@ -26,6 +26,7 @@ import {Util} from '../util';
import {ExecOptions} from '@actions/exec';
import {BakeDefinition} from '../types/buildx/bake';
import {BuildMetadata} from '../types/buildx/build';
import {VertexWarning} from '../types/buildkit/client';
export interface BakeOpts {
buildx?: Buildx;
@@ -86,6 +87,19 @@ export class Bake {
return refs.length > 0 ? refs : undefined;
}
public resolveWarnings(metadata?: BuildMetadata): Array<VertexWarning> | undefined {
if (!metadata) {
metadata = this.resolveMetadata();
if (!metadata) {
return undefined;
}
}
if ('buildx.build.warnings' in metadata) {
return metadata['buildx.build.warnings'] as Array<VertexWarning>;
}
return undefined;
}
public async getDefinition(cmdOpts: BakeCmdOpts, execOptions?: ExecOptions): Promise<BakeDefinition> {
execOptions = execOptions || {ignoreReturnCode: true};
execOptions.ignoreReturnCode = true;

View File

@@ -19,10 +19,16 @@ import path from 'path';
import * as core from '@actions/core';
import * as semver from 'semver';
import {Git} from '../buildkit/git';
import {Docker} from '../docker/docker';
import {GitHub} from '../github';
import {Exec} from '../exec';
import {Util} from '../util';
import {VertexWarning} from '../types/buildkit/client';
import {GitURL} from '../types/buildkit/git';
import {Cert, LocalRefsOpts, LocalRefsResponse, LocalState} from '../types/buildx/buildx';
import {GitHubAnnotation} from '../types/github';
export interface BuildxOpts {
standalone?: boolean;
@@ -177,6 +183,54 @@ export class Buildx {
return driverOpts;
}
public static localState(ref: string, dir?: string): LocalState {
const [builderName, nodeName, id] = ref.split('/');
if (!builderName || !nodeName || !id) {
throw new Error(`Invalid build reference: ${ref}`);
}
const lsPath = path.join(dir || Buildx.refsDir, builderName, nodeName, id);
if (!fs.existsSync(lsPath)) {
throw new Error(`Local state not found in ${lsPath}`);
}
return Buildx.fixLocalState(<LocalState>JSON.parse(fs.readFileSync(lsPath, 'utf8')));
}
// https://github.com/docker/buildx/pull/2560
private static fixLocalState(ls: LocalState): LocalState {
const fnTrimToValidContext = function (inp: string): [string, string, boolean] {
const match = inp.match(/(.*)(https?:\/{1,2}\S+|ssh:\/{1,2}\S+|git:\/{1,2}\S+)/i);
if (match && match.length == 3) {
const trimed = match[1];
let url = match[2];
if (url.startsWith('https:/') && !url.startsWith('https://')) {
url = url.replace('https:/', 'https://');
}
if (url.startsWith('http:/') && !url.startsWith('http://')) {
url = url.replace('http:/', 'http://');
}
if (url.startsWith('ssh:/') && !url.startsWith('ssh://')) {
url = url.replace('ssh:/', 'ssh://');
}
if (url.startsWith('git:/') && !url.startsWith('git://')) {
url = url.replace('git:/', 'git://');
}
return [url, trimed, true];
}
return [inp, '', false];
};
const [contextPath, trimedPath, isURL] = fnTrimToValidContext(ls.LocalPath);
if (isURL) {
ls.LocalPath = contextPath;
if (ls.DockerfilePath.indexOf(trimedPath) === 0) {
ls.DockerfilePath = ls.DockerfilePath.substring(trimedPath.length);
}
}
ls.LocalPath = ls.LocalPath.endsWith('/-') ? '-' : ls.LocalPath;
ls.DockerfilePath = ls.DockerfilePath.endsWith('/-') ? '-' : ls.DockerfilePath;
return ls;
}
public static refs(opts: LocalRefsOpts, refs: LocalRefsResponse = {}): LocalRefsResponse {
const {dir, builderName, nodeName, since} = opts;
@@ -210,7 +264,7 @@ export class Buildx {
if (since && stat.mtime < since) {
continue;
}
const localState = <LocalState>JSON.parse(fs.readFileSync(filePath, 'utf8'));
const localState = Buildx.fixLocalState(<LocalState>JSON.parse(fs.readFileSync(filePath, 'utf8')));
const ref = `${builderName}/${nodeName}/${file}`;
refs[ref] = localState;
}
@@ -218,4 +272,151 @@ export class Buildx {
return refs;
}
public static async convertWarningsToGitHubAnnotations(warnings: Array<VertexWarning>, buildRefs: Array<string>, refsDir?: string): Promise<Array<GitHubAnnotation> | undefined> {
if (warnings.length === 0) {
return;
}
const fnGitURL = function (inp: string): GitURL | undefined {
try {
return Git.parseURL(inp);
} catch (e) {
// noop
}
};
const fnLocalState = function (ref: string): LocalState | undefined {
try {
return Buildx.localState(ref, refsDir);
} catch (e) {
core.debug(`Buildx.convertWarningsToGitHubAnnotations(${ref}): local state not found: ${e.message}`);
}
};
interface Dockerfile {
path: string;
// eslint-disable-next-line @typescript-eslint/no-explicit-any
content?: any;
remote?: boolean;
}
const dockerfiles: Array<Dockerfile> = [];
for (const ref of buildRefs) {
const ls = fnLocalState(ref);
if (!ls) {
continue;
}
if (ls.DockerfilePath == '-') {
// exclude dockerfile from stdin
core.debug(`Buildx.convertWarningsToGitHubAnnotations(${ref}): skipping stdin Dockerfile`);
continue;
} else if (ls.DockerfilePath == '') {
ls.DockerfilePath = 'Dockerfile';
}
const gitURL = fnGitURL(ls.LocalPath);
if (gitURL) {
core.debug(`Buildx.convertWarningsToGitHubAnnotations(${ref}): git context detected: ${ls.LocalPath}`);
const remoteHost = gitURL.host.replace(/:.*/, '');
if (remoteHost !== 'github.com' && !remoteHost.endsWith('.ghe.com')) {
// we only support running actions on GitHub for now
// we might add support for GitLab in the future
core.debug(`Buildx.convertWarningsToGitHubAnnotations(${ref}): not a GitHub repo: ${remoteHost}`);
continue;
}
// if repository matches then we can link to the Dockerfile
const remoteRepo = gitURL.path.replace(/^\//, '').replace(/\.git$/, '');
if (remoteRepo !== GitHub.repository) {
core.debug(`Buildx.convertWarningsToGitHubAnnotations(${ref}): not same GitHub repo: ${remoteRepo} != ${GitHub.repository}`);
continue;
}
dockerfiles.push({
path: ls.DockerfilePath, // dockerfile path is always relative for a git context
remote: true
});
continue;
}
if (!fs.existsSync(ls.DockerfilePath)) {
core.debug(`Buildx.convertWarningsToGitHubAnnotations: Dockerfile not found from localstate ref ${ref}: ${ls.DockerfilePath}`);
continue;
}
const workspaceDir = GitHub.workspace;
// only treat dockerfile path relative to GitHub actions workspace dir
if (Util.isPathRelativeTo(workspaceDir, ls.DockerfilePath)) {
dockerfiles.push({
path: path.relative(workspaceDir, ls.DockerfilePath),
content: Buffer.from(fs.readFileSync(ls.DockerfilePath, {encoding: 'utf-8'}), 'utf-8').toString('base64')
});
} else {
core.debug(`Buildx.convertWarningsToGitHubAnnotations: skipping Dockerfile outside of workspace: ${ls.DockerfilePath}`);
}
}
if (dockerfiles.length === 0) {
core.debug(`Buildx.convertWarningsToGitHubAnnotations: no Dockerfiles found`);
return;
}
core.debug(`Buildx.convertWarningsToGitHubAnnotations: found ${dockerfiles.length} Dockerfiles: ${JSON.stringify(dockerfiles, null, 2)}`);
const annotations: Array<GitHubAnnotation> = [];
for (const warning of warnings) {
if (!warning.detail || !warning.short) {
core.debug(`Buildx.convertWarningsToGitHubAnnotations: skipping warning without detail or short`);
continue;
}
const warningSourceFilename = warning.sourceInfo?.filename;
const warningSourceData = warning.sourceInfo?.data;
if (!warningSourceFilename || !warningSourceData) {
core.debug(`Buildx.convertWarningsToGitHubAnnotations: skipping warning without source info filename or data`);
continue;
}
const title = warning.detail.map(encoded => atob(encoded)).join(' ');
let message = atob(warning.short).replace(/\s\(line \d+\)$/, '');
if (warning.url) {
// https://github.com/docker/buildx/blob/d8c9ebde1fdcf659f1fa3efa6ccc27a28b0f1564/commands/build.go#L854
message += `\nMore info: ${warning.url}`;
}
// GitHub's annotations don't clearly show ranges of lines, so we'll just
// show the first line: https://github.com/orgs/community/discussions/129899
const startLine = warning.range && warning.range.length > 0 ? warning.range[0]?.start.line : undefined;
// TODO: When GitHub's annotations support showing ranges properly, we can use this code
// let startLine: number | undefined, endLine: number | undefined;
// for (const range of warning.range ?? []) {
// if (range.start.line && (!startLine || range.start.line < startLine)) {
// startLine = range.start.line;
// }
// if (range.end.line && (!endLine || range.end.line > endLine)) {
// endLine = range.end.line;
// }
// }
let annotated = false;
for (const dockerfile of dockerfiles) {
// a valid dockerfile path and content is required to match the warning
// source info or always assume it's valid if this is a remote git
// context as we can't read the content of the Dockerfile in this case.
if (dockerfile.remote || (dockerfile.path.endsWith(warningSourceFilename) && dockerfile.content === warningSourceData)) {
annotations.push({
title: title,
message: message,
file: dockerfile.path,
startLine: startLine
});
annotated = true;
break;
}
}
if (!annotated) {
core.debug(`Buildx.convertWarningsToGitHubAnnotations: skipping warning without matching Dockerfile ${warningSourceFilename}: ${title}`);
}
}
return annotations;
}
}

View File

@@ -16,9 +16,9 @@
import {ChildProcessByStdio, spawn} from 'child_process';
import fs from 'fs';
import {Readable, Writable} from 'node:stream';
import os from 'os';
import path from 'path';
import {Readable, Writable} from 'stream';
import * as core from '@actions/core';
import {Buildx} from './buildx';
@@ -36,7 +36,8 @@ export interface HistoryOpts {
export class History {
private readonly buildx: Buildx;
private static readonly EXPORT_TOOL_IMAGE: string = 'docker.io/dockereng/export-build:latest';
private static readonly EXPORT_BUILD_IMAGE_DEFAULT: string = 'docker.io/dockereng/export-build:latest';
private static readonly EXPORT_BUILD_IMAGE_ENV: string = 'DOCKER_BUILD_EXPORT_BUILD_IMAGE';
constructor(opts?: HistoryOpts) {
this.buildx = opts?.buildx || new Buildx();
@@ -49,6 +50,9 @@ export class History {
if (!(await Docker.isAvailable())) {
throw new Error('Docker is required to export a build record');
}
if (!(await Docker.isDaemonRunning())) {
throw new Error('Docker daemon needs to be running to export a build record');
}
if (!(await this.buildx.versionSatisfies('>=0.13.0'))) {
throw new Error('Buildx >= 0.13.0 is required to export a build record');
}
@@ -80,6 +84,9 @@ export class History {
core.info(`exporting build record to ${outDir}`);
fs.mkdirSync(outDir, {recursive: true});
// wait 3 seconds to ensure build records are finalized: https://github.com/moby/buildkit/pull/5109
await new Promise(resolve => setTimeout(resolve, 3000));
const buildxInFifoPath = Context.tmpName({
template: 'buildx-in-XXXXXX.fifo',
tmpdir: Context.tmpDir()
@@ -92,14 +99,29 @@ export class History {
});
await Exec.exec('mkfifo', [buildxOutFifoPath]);
const buildxCmd = await this.buildx.getCommand(['--builder', builderName, 'dial-stdio']);
const buildxDialStdioProc = History.spawn(buildxCmd.command, buildxCmd.args);
const buildxDialStdioCmd = await this.buildx.getCommand(['--builder', builderName, 'dial-stdio']);
core.info(`[command]${buildxDialStdioCmd.command} ${buildxDialStdioCmd.args.join(' ')}`);
const buildxDialStdioProc = spawn(buildxDialStdioCmd.command, buildxDialStdioCmd.args, {
stdio: ['pipe', 'pipe', 'inherit'],
detached: true
});
let buildxDialStdioKilled = false;
fs.createReadStream(buildxInFifoPath).pipe(buildxDialStdioProc.stdin);
buildxDialStdioProc.stdout.pipe(fs.createWriteStream(buildxOutFifoPath));
buildxDialStdioProc.on('exit', (code, signal) => {
buildxDialStdioKilled = true;
if (signal) {
core.info(`Process "buildx dial-stdio" was killed with signal ${signal}`);
} else {
core.info(`Process "buildx dial-stdio" exited with code ${code}`);
}
});
const tmpDockerbuildFilename = path.join(outDir, 'rec.dockerbuild');
const summaryFilename = path.join(outDir, 'summary.json');
let dockerRunProc: ChildProcessByStdio<Writable, Readable, null> | undefined;
let dockerRunProcKilled = false;
await new Promise<void>((resolve, reject) => {
const ebargs: Array<string> = ['--ref-state-dir=/buildx-refs', `--node=${builderName}/${nodeName}`];
for (const ref of refs) {
@@ -112,13 +134,21 @@ export class History {
ebargs.push(`--gid=${process.getgid()}`);
}
// prettier-ignore
const dockerRunProc = History.spawn('docker', [
const dockerRunArgs = [
'run', '--rm', '-i',
'-v', `${Buildx.refsDir}:/buildx-refs`,
'-v', `${outDir}:/out`,
opts.image || History.EXPORT_TOOL_IMAGE,
opts.image || process.env[History.EXPORT_BUILD_IMAGE_ENV] || History.EXPORT_BUILD_IMAGE_DEFAULT,
...ebargs
]);
]
core.info(`[command]docker ${dockerRunArgs.join(' ')}`);
dockerRunProc = spawn('docker', dockerRunArgs, {
stdio: ['pipe', 'pipe', 'inherit'],
env: {
...process.env,
DOCKER_CONTENT_TRUST: 'false'
}
});
fs.createReadStream(buildxOutFifoPath).pipe(dockerRunProc.stdin);
dockerRunProc.stdout.pipe(fs.createWriteStream(buildxInFifoPath));
dockerRunProc.on('close', code => {
@@ -129,16 +159,35 @@ export class History {
resolve();
}
} else {
reject(new Error(`Process "docker run" exited with code ${code}`));
reject(new Error(`Process "docker run" closed with code ${code}`));
}
});
dockerRunProc.on('error', err => {
core.error(`Error executing buildx dial-stdio: ${err}`);
core.error(`Error executing "docker run": ${err}`);
reject(err);
});
}).catch(err => {
throw err;
});
dockerRunProc.on('exit', (code, signal) => {
dockerRunProcKilled = true;
if (signal) {
core.info(`Process "docker run" was killed with signal ${signal}`);
} else {
core.info(`Process "docker run" exited with code ${code}`);
}
});
})
.catch(err => {
throw err;
})
.finally(() => {
if (buildxDialStdioProc && !buildxDialStdioKilled) {
core.debug('Force terminating "buildx dial-stdio" process');
buildxDialStdioProc.kill('SIGKILL');
}
if (dockerRunProc && !dockerRunProcKilled) {
core.debug('Force terminating "docker run" process');
dockerRunProc.kill('SIGKILL');
}
});
let dockerbuildFilename = `${GitHub.context.repo.owner}~${GitHub.context.repo.repo}~${refs[0].substring(0, 6).toUpperCase()}`;
if (refs.length > 1) {
@@ -162,11 +211,4 @@ export class History {
refs: refs
};
}
private static spawn(command: string, args?: ReadonlyArray<string>): ChildProcessByStdio<Writable, Readable, null> {
core.info(`[command]${command}${args ? ` ${args.join(' ')}` : ''}`);
return spawn(command, args || [], {
stdio: ['pipe', 'pipe', 'inherit']
});
}
}

View File

@@ -18,6 +18,7 @@ import fs from 'fs';
import os from 'os';
import path from 'path';
import * as core from '@actions/core';
import {ExecOptions, ExecOutput} from '@actions/exec';
import * as io from '@actions/io';
import {Context} from '../context';
@@ -25,7 +26,7 @@ import {Cache} from '../cache';
import {Exec} from '../exec';
import {Util} from '../util';
import {ConfigFile} from '../types/docker/docker';
import {ConfigFile, ContextInfo} from '../types/docker/docker';
export class Docker {
static get configDir(): string {
@@ -53,12 +54,47 @@ export class Docker {
});
}
public static async isDaemonRunning(): Promise<boolean> {
try {
await Docker.getExecOutput([`version`], {
silent: true
});
return true;
} catch (e) {
return false;
}
}
public static async exec(args?: string[], options?: ExecOptions): Promise<number> {
return Exec.exec('docker', args, Docker.execOptions(options));
}
public static async getExecOutput(args?: string[], options?: ExecOptions): Promise<ExecOutput> {
return Exec.getExecOutput('docker', args, Docker.execOptions(options));
}
private static execOptions(options?: ExecOptions): ExecOptions {
if (!options) {
options = {};
}
if (!options.env) {
options.env = Object.assign({}, process.env, {
DOCKER_CONTENT_TRUST: 'false'
}) as {
[key: string]: string;
};
} else {
options.env.DOCKER_CONTENT_TRUST = 'false';
}
return options;
}
public static async context(name?: string): Promise<string> {
const args = ['context', 'inspect', '--format', '{{.Name}}'];
if (name) {
args.push(name);
}
return await Exec.getExecOutput(`docker`, args, {
return await Docker.getExecOutput(args, {
ignoreReturnCode: true,
silent: true
}).then(res => {
@@ -69,12 +105,28 @@ export class Docker {
});
}
public static async contextInspect(name?: string): Promise<ContextInfo> {
const args = ['context', 'inspect', '--format=json'];
if (name) {
args.push(name);
}
return await Docker.getExecOutput(args, {
ignoreReturnCode: true,
silent: true
}).then(res => {
if (res.stderr.length > 0 && res.exitCode != 0) {
throw new Error(res.stderr.trim());
}
return (<Array<ContextInfo>>JSON.parse(res.stdout.trim()))[0];
});
}
public static async printVersion(): Promise<void> {
await Exec.exec('docker', ['version']);
await Docker.exec(['version']);
}
public static async printInfo(): Promise<void> {
await Exec.exec('docker', ['info']);
await Docker.exec(['info']);
}
public static parseRepoTag(image: string): {repository: string; tag: string} {
@@ -122,7 +174,7 @@ export class Docker {
cacheFoundPath = await imageCache.find();
if (cacheFoundPath) {
core.info(`Image found from cache in ${cacheFoundPath}`);
await Exec.getExecOutput(`docker`, ['load', '-i', cacheFoundPath], {
await Docker.getExecOutput(['load', '-i', cacheFoundPath], {
ignoreReturnCode: true
}).then(res => {
if (res.stderr.length > 0 && res.exitCode != 0) {
@@ -133,7 +185,7 @@ export class Docker {
}
let pulled = true;
await Exec.getExecOutput(`docker`, ['pull', image], {
await Docker.getExecOutput(['pull', image], {
ignoreReturnCode: true
}).then(res => {
if (res.stderr.length > 0 && res.exitCode != 0) {
@@ -149,7 +201,7 @@ export class Docker {
if (cache && pulled) {
const imageTarPath = path.join(Context.tmpDir(), `${Util.hash(image)}.tar`);
await Exec.getExecOutput(`docker`, ['save', '-o', imageTarPath, image], {
await Docker.getExecOutput(['save', '-o', imageTarPath, image], {
ignoreReturnCode: true
}).then(async res => {
if (res.stderr.length > 0 && res.exitCode != 0) {

View File

@@ -28,6 +28,7 @@ import * as io from '@actions/io';
import * as tc from '@actions/tool-cache';
import {Context} from '../context';
import {Docker} from './docker';
import {Exec} from '../exec';
import {Util} from '../util';
import {limaYamlData, dockerServiceLogsPs1, setupDockerWinPs1} from './assets';
@@ -219,8 +220,8 @@ export class Install {
});
await core.group('Create Docker context', async () => {
await Exec.exec('docker', ['context', 'create', this.contextName, '--docker', `host=${dockerHost}`]);
await Exec.exec('docker', ['context', 'use', this.contextName]);
await Docker.exec(['context', 'create', this.contextName, '--docker', `host=${dockerHost}`]);
await Docker.exec(['context', 'use', this.contextName]);
});
return dockerHost;
@@ -288,7 +289,8 @@ EOF`,
await Exec.getExecOutput(`docker version`, undefined, {
silent: true,
env: Object.assign({}, envs, {
DOCKER_HOST: dockerHost
DOCKER_HOST: dockerHost,
DOCKER_CONTENT_TRUST: 'false'
}) as {
[key: string]: string;
}
@@ -309,8 +311,8 @@ EOF`,
});
await core.group('Create Docker context', async () => {
await Exec.exec('docker', ['context', 'create', this.contextName, '--docker', `host=${dockerHost}`]);
await Exec.exec('docker', ['context', 'use', this.contextName]);
await Docker.exec(['context', 'create', this.contextName, '--docker', `host=${dockerHost}`]);
await Docker.exec(['context', 'use', this.contextName]);
});
return dockerHost;
@@ -352,8 +354,8 @@ EOF`,
});
await core.group('Create Docker context', async () => {
await Exec.exec('docker', ['context', 'create', this.contextName, '--docker', `host=${dockerHost}`]);
await Exec.exec('docker', ['context', 'use', this.contextName]);
await Docker.exec(['context', 'create', this.contextName, '--docker', `host=${dockerHost}`]);
await Docker.exec(['context', 'use', this.contextName]);
});
return dockerHost;
@@ -395,7 +397,7 @@ EOF`,
await Exec.exec('limactl', ['delete', '--tty=false', this.limaInstanceName, '--force']);
});
await core.group('Removing Docker context', async () => {
await Exec.exec('docker', ['context', 'rm', '-f', this.contextName]);
await Docker.exec(['context', 'rm', '-f', this.contextName]);
});
await core.group(`Cleaning up runDir`, async () => {
await Exec.exec('sudo', ['rm', '-rf', this.runDir]);
@@ -411,7 +413,7 @@ EOF`,
await Util.sleep(5);
});
await core.group('Removing Docker context', async () => {
await Exec.exec('docker', ['context', 'rm', '-f', this.contextName]);
await Docker.exec(['context', 'rm', '-f', this.contextName]);
});
await core.group(`Cleaning up runDir`, async () => {
await Exec.exec('sudo', ['rm', '-rf', this.runDir], {
@@ -427,7 +429,7 @@ EOF`,
await Exec.exec(logCmd.command, logCmd.args);
});
await core.group('Removing Docker context', async () => {
await Exec.exec('docker', ['context', 'rm', '-f', this.contextName]);
await Docker.exec(['context', 'rm', '-f', this.contextName]);
});
}

View File

@@ -22,6 +22,7 @@ import os from 'os';
import path from 'path';
import {CreateArtifactRequest, FinalizeArtifactRequest, StringValue} from '@actions/artifact/lib/generated';
import {internalArtifactTwirpClient} from '@actions/artifact/lib/internal/shared/artifact-twirp-client';
import {isGhes} from '@actions/artifact/lib/internal/shared/config';
import {getBackendIdsFromToken} from '@actions/artifact/lib/internal/shared/util';
import {getExpiration} from '@actions/artifact/lib/internal/upload/retention';
import {InvalidResponseError, NetworkError} from '@actions/artifact';
@@ -36,7 +37,6 @@ import {jwtDecode, JwtPayload} from 'jwt-decode';
import {Util} from './util';
import {VertexWarning} from './types/buildkit/client';
import {BuildSummaryOpts, GitHubActionsRuntimeToken, GitHubActionsRuntimeTokenAC, GitHubRepo, UploadArtifactOpts, UploadArtifactResponse} from './types/github';
export interface GitHubOpts {
@@ -67,17 +67,19 @@ export class GitHub {
}
static get isGHES(): boolean {
const serverURL = new URL(GitHub.serverURL);
const hostname = serverURL.hostname.trimEnd().toUpperCase();
const isGitHubHost = hostname === 'GITHUB.COM';
const isGHESHost = hostname.endsWith('.GHE.COM') || hostname.endsWith('.GHE.LOCALHOST');
return !isGitHubHost && !isGHESHost;
// FIXME: we are using the function from GitHub artifact module but should
// be within core module when available.
return isGhes();
}
static get repository(): string {
return `${github.context.repo.owner}/${github.context.repo.repo}`;
}
static get workspace(): string {
return process.env.GITHUB_WORKSPACE || process.cwd();
}
static get runId(): number {
return process.env.GITHUB_RUN_ID ? +process.env.GITHUB_RUN_ID : github.context.runId;
}
@@ -233,18 +235,19 @@ export class GitHub {
const refsSize = Object.keys(opts.exportRes.refs).length;
// we just need the last two parts of the URL as they are always relative
// to the workflow run URL otherwise URL could be broken if GitHub
// repository name is part of a secret value used in the workflow. e.g.:
// artifact: https://github.com/docker/actions-toolkit/actions/runs/9552208295/artifacts/1609622746
// workflow: https://github.com/docker/actions-toolkit/actions/runs/9552208295
// https://github.com/docker/actions-toolkit/issues/367
const artifactRelativeURL = `./${GitHub.runId}/${opts.uploadRes.url.split('/').slice(-2).join('/')}`;
const sum = core.summary.addHeading('Docker Build summary', 2);
// prettier-ignore
const sum = core.summary
.addHeading('Docker Build summary', 2)
.addRaw(`<p>`)
if (opts.uploadRes) {
// we just need the last two parts of the URL as they are always relative
// to the workflow run URL otherwise URL could be broken if GitHub
// repository name is part of a secret value used in the workflow. e.g.:
// artifact: https://github.com/docker/actions-toolkit/actions/runs/9552208295/artifacts/1609622746
// workflow: https://github.com/docker/actions-toolkit/actions/runs/9552208295
// https://github.com/docker/actions-toolkit/issues/367
const artifactRelativeURL = `./${GitHub.runId}/${opts.uploadRes.url.split('/').slice(-2).join('/')}`;
// prettier-ignore
sum.addRaw(`<p>`)
.addRaw(`For a detailed look at the build, download the following build record archive and import it into Docker Desktop's Builds view. `)
.addBreak()
.addRaw(`Build records include details such as timing, dependencies, results, logs, traces, and other information about a build. `)
@@ -252,11 +255,19 @@ export class GitHub {
.addRaw('</p>')
.addRaw(`<p>`)
.addRaw(`:arrow_down: ${addLink(`<strong>${Util.stringToUnicodeEntities(opts.uploadRes.filename)}</strong>`, artifactRelativeURL)} (${Util.formatFileSize(opts.uploadRes.size)} - includes <strong>${refsSize} build record${refsSize > 1 ? 's' : ''}</strong>)`)
.addRaw(`</p>`)
.addRaw(`<p>`)
.addRaw(`Find this useful? `)
.addRaw(addLink('Let us know', 'https://docs.docker.com/feedback/gha-build-summary'))
.addRaw('</p>');
.addRaw(`</p>`);
} else {
// prettier-ignore
sum.addRaw(`<p>`)
.addRaw(`The following table provides a brief summary of your build.`)
.addBreak()
.addRaw(`For a detailed look at the build, including timing, dependencies, results, logs, traces, and other information, consider enabling the export of the build record so you can import it into Docker Desktop's Builds view. `)
.addRaw(addLink('Learn more', 'https://www.docker.com/blog/new-beta-feature-deep-dive-into-github-actions-docker-builds-with-docker-desktop/?utm_source=github&utm_medium=actions'))
.addRaw(`</p>`);
}
// Feedback survey
sum.addRaw(`<p>`).addRaw(`Find this useful? `).addRaw(addLink('Let us know', 'https://docs.docker.com/feedback/gha-build-summary')).addRaw('</p>');
// Preview
sum.addRaw('<p>');
@@ -334,39 +345,4 @@ export class GitHub {
core.info(`Writing summary`);
await sum.addSeparator().write();
}
public static async annotateBuildWarnings(source: string, warnings?: Array<VertexWarning>): Promise<void> {
(warnings ?? []).forEach(warning => {
if (!warning.detail || !warning.short) {
return;
}
const title = warning.detail.map(encoded => atob(encoded)).join(' ');
let message = atob(warning.short).replace(/\s\(line \d+\)$/, '');
if (warning.url) {
// https://github.com/docker/buildx/blob/d8c9ebde1fdcf659f1fa3efa6ccc27a28b0f1564/commands/build.go#L854
message += `\nMore info: ${warning.url}`;
}
// GitHub annotations don't clearly show ranges of lines, so we'll just
// show the first line
const startLine = warning.range && warning.range.length > 0 ? warning.range[0]?.start.line : undefined;
// TODO: When GitHub annotations support showing ranges properly, we can use this code
// let startLine: number | undefined, endLine: number | undefined;
// for (const range of warning.range ?? []) {
// if (range.start.line && (!startLine || range.start.line < startLine)) {
// startLine = range.start.line;
// }
// if (range.end.line && (!endLine || range.end.line > endLine)) {
// endLine = range.end.line;
// }
// }
core.warning(message, {
title: title,
file: source,
startLine: startLine
});
});
}
}

View File

@@ -64,3 +64,33 @@ export interface AuthConfig {
identitytoken?: string;
registrytoken?: string;
}
export interface ContextInfo {
Name: string;
// eslint-disable-next-line @typescript-eslint/no-explicit-any
Metadata: any;
// eslint-disable-next-line @typescript-eslint/no-explicit-any
Endpoints: Record<string, EndpointInfo>;
TLSMaterial: Record<string, Array<string>>;
Storage: StorageInfo;
}
export interface EndpointInfo {
Host?: string;
SkipVerify: boolean;
TLSData?: TLSData;
}
export interface TLSData {
// eslint-disable-next-line @typescript-eslint/no-explicit-any
CA: any;
// eslint-disable-next-line @typescript-eslint/no-explicit-any
Key: any;
// eslint-disable-next-line @typescript-eslint/no-explicit-any
Cert: any;
}
export interface StorageInfo {
MetadataPath: string;
TLSPath: string;
}

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