Compare commits

..

711 Commits

Author SHA1 Message Date
CrazyMax
b5ae9ccb69 Merge pull request #375 from docker/dependabot/github_actions/peter-evans/create-pull-request-6.1.0
Some checks failed
publish / publish (push) Has been cancelled
build(deps): bump peter-evans/create-pull-request from 6.0.5 to 6.1.0
2024-06-19 20:28:10 +02:00
CrazyMax
8c81eef9ff Merge pull request #376 from crazy-max/export-buildx-version
buildx(history): check buildx version before exporting
2024-06-19 20:27:29 +02:00
CrazyMax
6668cc52b7 buildx(history): check buildx version before exporting
Signed-off-by: CrazyMax <1951866+crazy-max@users.noreply.github.com>
2024-06-19 18:30:56 +02:00
dependabot[bot]
58b2ef7640 build(deps): bump peter-evans/create-pull-request from 6.0.5 to 6.1.0
Bumps [peter-evans/create-pull-request](https://github.com/peter-evans/create-pull-request) from 6.0.5 to 6.1.0.
- [Release notes](https://github.com/peter-evans/create-pull-request/releases)
- [Commits](6d6857d369...c5a7806660)

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

Signed-off-by: dependabot[bot] <support@github.com>
2024-06-18 22:24:06 +00:00
CrazyMax
d791e46ccd Merge pull request #374 from tonistiigi/update-buildx-v0.15.1
update buildx to v0.15.1
2024-06-18 21:49:26 +02:00
Tonis Tiigi
1cb547a599 update buildx to v0.15.1
Signed-off-by: Tonis Tiigi <tonistiigi@gmail.com>
2024-06-18 12:05:39 -07:00
Tõnis Tiigi
b61fc5ff9c Merge pull request #373 from docker/bot/buildx-releases-json
Update `.github/buildx-releases.json`
2024-06-18 12:04:35 -07:00
tonistiigi
eb3bf3055e github: update .github/buildx-releases.json
Signed-off-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2024-06-18 19:03:57 +00:00
CrazyMax
6c6fdffd44 Merge pull request #368 from crazy-max/summary-artifact-relative-link
Some checks failed
publish / publish (push) Has been cancelled
github(summary): use relative path for artifact link and fix filename
2024-06-18 17:18:31 +02:00
CrazyMax
edcf239f49 github(summary): convert filename and build name to unicode
Signed-off-by: CrazyMax <1951866+crazy-max@users.noreply.github.com>
2024-06-18 12:10:07 +02:00
CrazyMax
e26a82d0aa util: stringToUnicodeEntities func
Signed-off-by: CrazyMax <1951866+crazy-max@users.noreply.github.com>
2024-06-18 11:21:06 +02:00
CrazyMax
3162c096bd github(summary): use relative path for artifact link
Signed-off-by: CrazyMax <1951866+crazy-max@users.noreply.github.com>
2024-06-18 11:21:06 +02:00
CrazyMax
0da8b903ef Merge pull request #372 from crazy-max/jest-fixes
jest: small configuration changes for mock
2024-06-18 11:20:43 +02:00
CrazyMax
953dc3bb00 jest: mocks already cleared through configuration
Signed-off-by: CrazyMax <1951866+crazy-max@users.noreply.github.com>
2024-06-18 11:07:29 +02:00
CrazyMax
f27d52d6b7 jest: keep original github env vars for integration tests
Signed-off-by: CrazyMax <1951866+crazy-max@users.noreply.github.com>
2024-06-18 10:59:04 +02:00
CrazyMax
5c3fc146af jest: no need to clear mock for integration tests
Signed-off-by: CrazyMax <1951866+crazy-max@users.noreply.github.com>
2024-06-18 10:59:04 +02:00
CrazyMax
ef2bd7607f Merge pull request #371 from docker/bot/docker-releases-json
Update `.github/docker-releases.json`
2024-06-18 10:30:02 +02:00
crazy-max
6352d92e3f github: update .github/docker-releases.json
Signed-off-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2024-06-18 08:09:40 +00:00
CrazyMax
a39cb53a8a Merge pull request #370 from docker/dependabot/github_actions/docker/bake-action-5
build(deps): bump docker/bake-action from 4 to 5
2024-06-18 10:09:11 +02:00
dependabot[bot]
9b811fbceb build(deps): bump docker/bake-action from 4 to 5
Bumps [docker/bake-action](https://github.com/docker/bake-action) from 4 to 5.
- [Release notes](https://github.com/docker/bake-action/releases)
- [Commits](https://github.com/docker/bake-action/compare/v4...v5)

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

Signed-off-by: dependabot[bot] <support@github.com>
2024-06-17 22:54:54 +00:00
CrazyMax
7b876a9e95 Merge pull request #366 from docker/bot/buildx-lab-releases-json
Update `.github/buildx-lab-releases.json`
2024-06-16 22:31:58 +02:00
crazy-max
fd2f683a14 github: update .github/buildx-lab-releases.json
Signed-off-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2024-06-15 00:15:01 +00:00
CrazyMax
5205f4197c Merge pull request #363 from docker/bot/buildx-lab-releases-json
Some checks failed
publish / publish (push) Has been cancelled
Update `.github/buildx-lab-releases.json`
2024-06-14 13:17:23 +02:00
crazy-max
c76674dd4a github: update .github/buildx-lab-releases.json
Signed-off-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2024-06-14 10:45:24 +00:00
CrazyMax
8471422135 Merge pull request #364 from crazy-max/buildx-build-resolveprovenance
buildx(build): resolveProvenance from metadata
2024-06-14 12:44:59 +02:00
CrazyMax
e266e3e984 buildx(build): resolveProvenance from metadata
Signed-off-by: CrazyMax <1951866+crazy-max@users.noreply.github.com>
2024-06-14 12:26:13 +02:00
CrazyMax
1b7201d572 Merge pull request #361 from crazy-max/intoto-types
intoto and provenance types
2024-06-14 12:19:22 +02:00
CrazyMax
6983a397f4 intoto and provenance types
Signed-off-by: CrazyMax <1951866+crazy-max@users.noreply.github.com>
2024-06-13 11:17:01 +02:00
CrazyMax
81e959d041 Merge pull request #360 from docker/bot/docker-releases-json
Update `.github/docker-releases.json`
2024-06-13 11:15:23 +02:00
crazy-max
475cefa34e github: update .github/docker-releases.json
Signed-off-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2024-06-13 00:23:09 +00:00
CrazyMax
c14688a151 Merge pull request #359 from crazy-max/buildkit-types
buildkit: add types
2024-06-12 10:33:48 +02:00
CrazyMax
dde9860104 buildkit: add types
Signed-off-by: CrazyMax <1951866+crazy-max@users.noreply.github.com>
2024-06-12 10:22:35 +02:00
CrazyMax
ee6e7bbd95 Merge pull request #358 from crazy-max/fix-workflow-run
Some checks failed
publish / publish (push) Has been cancelled
github: make attempts optional in workflowRunURL
2024-06-12 09:29:14 +02:00
CrazyMax
fe58cc26f5 github: make attempts optional in workflowRunURL
Signed-off-by: CrazyMax <1951866+crazy-max@users.noreply.github.com>
2024-06-12 09:22:43 +02:00
CrazyMax
1bf4b58db1 Merge pull request #357 from campbel/campbel/get-input-list-empty-test
Add a test to define behavior when empty parameters are passed
2024-06-11 23:49:31 +02:00
Chris Campbell
82d10009f7 Add a test to define behavior when empty parameters are passed
Signed-off-by: Chris Campbell <chris.campbell@dutchie.com>
2024-06-11 15:31:15 -06:00
CrazyMax
bf985d0056 Merge pull request #356 from docker/dependabot/npm_and_yarn/braces-3.0.3
build(deps): bump braces from 3.0.2 to 3.0.3
2024-06-11 21:05:52 +02:00
dependabot[bot]
129955ee04 build(deps): bump braces from 3.0.2 to 3.0.3
Bumps [braces](https://github.com/micromatch/braces) from 3.0.2 to 3.0.3.
- [Changelog](https://github.com/micromatch/braces/blob/master/CHANGELOG.md)
- [Commits](https://github.com/micromatch/braces/compare/3.0.2...3.0.3)

---
updated-dependencies:
- dependency-name: braces
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-06-11 18:56:34 +00:00
CrazyMax
6d74aad91b Merge pull request #355 from tonistiigi/update-buildx-v0.15.0
update buildx to v0.15.0
2024-06-11 20:52:47 +02:00
Tõnis Tiigi
24546185f6 Merge pull request #354 from docker/bot/buildx-releases-json
Update `.github/buildx-releases.json`
2024-06-11 11:38:17 -07:00
Tonis Tiigi
1b5c574732 update buildx to v0.15.0
Signed-off-by: Tonis Tiigi <tonistiigi@gmail.com>
2024-06-11 11:37:36 -07:00
tonistiigi
2ace0cd1f7 github: update .github/buildx-releases.json
Signed-off-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2024-06-11 18:36:48 +00:00
CrazyMax
33d4b448ac Merge pull request #350 from crazy-max/gha-rest
Some checks failed
publish / publish (push) Has been cancelled
buildx(build): resolveCacheToAttrs func
2024-06-10 13:39:47 +02:00
CrazyMax
ee91773603 Merge pull request #353 from crazy-max/fix-docker-install-linux
docker(install): add tooldir to path for linux and windows
2024-06-10 13:38:59 +02:00
CrazyMax
5186ba6fdf test: bump docker to 26.1.4
Signed-off-by: CrazyMax <1951866+crazy-max@users.noreply.github.com>
2024-06-10 13:34:09 +02:00
CrazyMax
1309d2023e docker(install): add tooldir to path for linux and windows
Signed-off-by: CrazyMax <1951866+crazy-max@users.noreply.github.com>
2024-06-10 13:34:09 +02:00
CrazyMax
6a4479ebc2 Merge pull request #340 from crazy-max/oci
oci: loadArchive to import an index from a tar archive image bundle
2024-06-07 14:50:14 +02:00
CrazyMax
cd9f97a8c5 Merge pull request #352 from docker/bot/buildx-releases-json
Update `.github/buildx-releases.json`
2024-06-07 10:00:51 +02:00
crazy-max
65f5b77696 github: update .github/buildx-releases.json
Signed-off-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2024-06-07 07:59:06 +00:00
CrazyMax
9ba5af418c Merge pull request #351 from docker/bot/docker-releases-json
Update `.github/docker-releases.json`
2024-06-07 09:58:38 +02:00
crazy-max
93ae2ded04 github: update .github/docker-releases.json
Signed-off-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2024-06-06 00:22:40 +00:00
CrazyMax
15788e8b93 buildx(build): resolveCacheToAttrs func
Signed-off-by: CrazyMax <1951866+crazy-max@users.noreply.github.com>
2024-06-05 13:59:57 +02:00
CrazyMax
92053e1988 Merge pull request #348 from docker/bot/docker-releases-json
Update `.github/docker-releases.json`
2024-06-04 09:22:31 +02:00
CrazyMax
6d856fd53e Merge pull request #349 from docker/bot/buildx-releases-json
Update `.github/buildx-releases.json`
2024-06-04 09:22:06 +02:00
crazy-max
e67313ac6d github: update .github/buildx-releases.json
Signed-off-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2024-06-04 00:16:35 +00:00
crazy-max
881230f4b0 github: update .github/docker-releases.json
Signed-off-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2024-05-30 00:22:56 +00:00
CrazyMax
6fb52d2a23 oci: loadArchive to import an index from a tar archive image bundle
Signed-off-by: CrazyMax <1951866+crazy-max@users.noreply.github.com>
2024-05-29 11:11:12 +02:00
CrazyMax
2941f52b66 Merge pull request #346 from crazy-max/gh-workflow-run-retries
github: set attempts to workflowRunURL
2024-05-28 09:44:05 +02:00
CrazyMax
760d0c2369 github: set attempts to workflowRunURL
Signed-off-by: CrazyMax <1951866+crazy-max@users.noreply.github.com>
2024-05-27 19:57:40 +02:00
CrazyMax
d344961874 Merge pull request #345 from crazy-max/move-types
Some checks failed
publish / publish (push) Has been cancelled
move types to the right place
2024-05-27 12:15:48 +02:00
CrazyMax
5958c823ef Merge pull request #344 from docker/bot/buildx-lab-releases-json
Update `.github/buildx-lab-releases.json`
2024-05-27 12:07:38 +02:00
CrazyMax
a033bb70cd move types to the right place
Signed-off-by: CrazyMax <1951866+crazy-max@users.noreply.github.com>
2024-05-27 12:06:52 +02:00
crazy-max
8f8c0bb7ec github: update .github/buildx-lab-releases.json
Signed-off-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2024-05-27 10:02:50 +00:00
CrazyMax
0903e498a4 Merge pull request #324 from crazy-max/build-summary
github: write build summary
2024-05-27 12:02:24 +02:00
CrazyMax
1e903f84b6 github: write build summary
Signed-off-by: CrazyMax <1951866+crazy-max@users.noreply.github.com>
2024-05-27 11:41:36 +02:00
CrazyMax
3a2e4a89a6 Merge pull request #342 from tonistiigi/update-buildx-v0.14.1
update buildx to v0.14.1
2024-05-22 21:07:46 +02:00
CrazyMax
b3dc87c0e0 Merge pull request #341 from docker/bot/docker-releases-json
Update `.github/docker-releases.json`
2024-05-22 21:07:21 +02:00
Tonis Tiigi
bd1955c564 update buildx to v0.14.1
Signed-off-by: Tonis Tiigi <tonistiigi@gmail.com>
2024-05-22 11:26:21 -07:00
tonistiigi
956acbf3c6 github: update .github/docker-releases.json
Signed-off-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2024-05-22 18:21:03 +00:00
Tõnis Tiigi
ea36deec7f Merge pull request #343 from docker/bot/buildx-releases-json
Update `.github/buildx-releases.json`
2024-05-22 11:20:38 -07:00
tonistiigi
9d829e4f4a github: update .github/buildx-releases.json
Signed-off-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2024-05-22 18:19:56 +00:00
CrazyMax
66c00b9bbd Merge pull request #339 from crazy-max/update-virtual-env
ci(virtual-env): add ubuntu-24.04 to the matrix
2024-05-15 14:38:26 +02:00
CrazyMax
448f9ac218 ci(virtual-env): add ubuntu-24.04 to the matrix
Signed-off-by: CrazyMax <1951866+crazy-max@users.noreply.github.com>
2024-05-15 14:28:30 +02:00
CrazyMax
624e16fb7c Merge pull request #307 from crazy-max/build-export
Some checks failed
publish / publish (push) Has been cancelled
buildx: build history export
2024-05-14 13:32:42 +02:00
CrazyMax
ee84f2ac79 buildx: build history export
Signed-off-by: CrazyMax <1951866+crazy-max@users.noreply.github.com>
2024-05-14 13:09:18 +02:00
CrazyMax
7eb10a1871 Merge pull request #338 from crazy-max/pin-azure-storage
chore: ignore azure/storage-blob updates
2024-05-14 11:19:39 +02:00
CrazyMax
27a4b44e2c chore: ignore azure/storage-blob updates
Signed-off-by: CrazyMax <1951866+crazy-max@users.noreply.github.com>
2024-05-14 11:11:29 +02:00
CrazyMax
75c874dd62 Merge pull request #336 from docker/dependabot/npm_and_yarn/csv-parse-5.5.6
build(deps): bump csv-parse from 5.5.5 to 5.5.6
2024-05-14 11:02:55 +02:00
CrazyMax
c94131a9e9 Merge pull request #337 from docker/bot/buildx-lab-releases-json
Update `.github/buildx-lab-releases.json`
2024-05-14 08:58:15 +02:00
crazy-max
ec0a6e279b github: update .github/buildx-lab-releases.json
Signed-off-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2024-05-14 00:14:28 +00:00
dependabot[bot]
e0dd35a21c build(deps): bump csv-parse from 5.5.5 to 5.5.6
Bumps [csv-parse](https://github.com/adaltas/node-csv/tree/HEAD/packages/csv-parse) from 5.5.5 to 5.5.6.
- [Changelog](https://github.com/adaltas/node-csv/blob/master/packages/csv-parse/CHANGELOG.md)
- [Commits](https://github.com/adaltas/node-csv/commits/csv-parse@5.5.6/packages/csv-parse)

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

Signed-off-by: dependabot[bot] <support@github.com>
2024-05-13 23:09:36 +00:00
CrazyMax
b25aadfb15 Merge pull request #332 from docker/bot/docker-releases-json
Update `.github/docker-releases.json`
2024-05-13 13:53:58 +02:00
CrazyMax
70f40871ae Merge pull request #333 from docker/dependabot/npm_and_yarn/semver-7.6.2
build(deps): bump semver from 7.6.0 to 7.6.2
2024-05-13 13:53:35 +02:00
dependabot[bot]
61d2e66416 build(deps): bump semver from 7.6.0 to 7.6.2
Bumps [semver](https://github.com/npm/node-semver) from 7.6.0 to 7.6.2.
- [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.0...v7.6.2)

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

Signed-off-by: dependabot[bot] <support@github.com>
2024-05-09 22:29:38 +00:00
crazy-max
c425c1b90c github: update .github/docker-releases.json
Signed-off-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2024-05-09 12:08:35 +00:00
CrazyMax
4a832ddb12 Merge pull request #328 from crazy-max/chore-rm-await
chore: remove unnecessary await
2024-05-07 12:47:37 +02:00
CrazyMax
adf692bdc3 Merge pull request #329 from docker/bot/docker-releases-json
Update `.github/docker-releases.json`
2024-05-07 12:47:02 +02:00
CrazyMax
022c68391f Merge pull request #330 from crazy-max/update-dev-deps
chore: update dev dependencies
2024-05-07 12:46:43 +02:00
CrazyMax
eea3ac78bc chore: update dev dependencies
Signed-off-by: CrazyMax <1951866+crazy-max@users.noreply.github.com>
2024-05-07 12:34:45 +02:00
crazy-max
76526d71ff github: update .github/docker-releases.json
Signed-off-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2024-05-07 00:22:11 +00:00
CrazyMax
4078ffc721 chore: remove unnecessary await
Signed-off-by: CrazyMax <1951866+crazy-max@users.noreply.github.com>
2024-05-03 10:20:42 +02:00
CrazyMax
ffa2fadd58 Merge pull request #326 from docker/bot/docker-releases-json
Update `.github/docker-releases.json`
2024-05-02 21:56:47 +02:00
CrazyMax
53d4eba877 Merge pull request #323 from crazy-max/corepack-yarn
chore: use corepack to install yarn
2024-05-02 21:56:18 +02:00
crazy-max
2c7c8d2118 github: update .github/docker-releases.json
Signed-off-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2024-05-01 00:23:39 +00:00
CrazyMax
4e56c9c296 chore: use corepack to install yarn
Signed-off-by: CrazyMax <1951866+crazy-max@users.noreply.github.com>
2024-04-29 13:39:36 +02:00
CrazyMax
ae20b6fb50 Merge pull request #322 from crazy-max/metadata-file-name
buildx: generate random metadata filename
2024-04-26 14:16:18 +02:00
CrazyMax
a99525f2f1 buildx: allow passing metadata file when resolving digest or refs
Signed-off-by: CrazyMax <1951866+crazy-max@users.noreply.github.com>
2024-04-26 14:04:58 +02:00
CrazyMax
5820a0ba86 buildx: generate random metadata filename
Signed-off-by: CrazyMax <1951866+crazy-max@users.noreply.github.com>
2024-04-26 13:55:59 +02:00
CrazyMax
62e3923775 util: generateRandomString func
Signed-off-by: CrazyMax <1951866+crazy-max@users.noreply.github.com>
2024-04-26 13:54:52 +02:00
CrazyMax
a459c7c911 buildx: ensure consistent metadata filename for bake and build
Signed-off-by: CrazyMax <1951866+crazy-max@users.noreply.github.com>
2024-04-26 13:27:04 +02:00
CrazyMax
4c3e9b6acf Merge pull request #320 from docker/dependabot/npm_and_yarn/actions/artifact-2.1.7
Some checks failed
publish / publish (push) Has been cancelled
build(deps): bump @actions/artifact from 2.1.5 to 2.1.7
2024-04-26 09:45:21 +02:00
CrazyMax
139c4c71de Merge pull request #321 from docker/dependabot/github_actions/peter-evans/create-pull-request-6.0.5
build(deps): bump peter-evans/create-pull-request from 6.0.4 to 6.0.5
2024-04-26 09:44:22 +02:00
CrazyMax
4383056550 Merge pull request #316 from crazy-max/buildx-refs
buildx: localstate refs
2024-04-26 09:43:51 +02:00
dependabot[bot]
40802f0aa9 build(deps): bump peter-evans/create-pull-request from 6.0.4 to 6.0.5
Bumps [peter-evans/create-pull-request](https://github.com/peter-evans/create-pull-request) from 6.0.4 to 6.0.5.
- [Release notes](https://github.com/peter-evans/create-pull-request/releases)
- [Commits](9153d834b6...6d6857d369)

---
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-04-25 23:03:17 +00:00
dependabot[bot]
8f9d3a3d14 build(deps): bump @actions/artifact from 2.1.5 to 2.1.7
Bumps [@actions/artifact](https://github.com/actions/toolkit/tree/HEAD/packages/artifact) from 2.1.5 to 2.1.7.
- [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-04-25 22:36:47 +00:00
CrazyMax
e41efdd2aa buildx: localstate refs
Signed-off-by: CrazyMax <1951866+crazy-max@users.noreply.github.com>
2024-04-25 11:43:00 +02:00
CrazyMax
33688c4ac8 Merge pull request #319 from crazy-max/buildx-builder-current
Some checks failed
publish / publish (push) Has been cancelled
buildx: make name opt optional when inspecting builder
2024-04-25 11:42:14 +02:00
CrazyMax
f549f7954e buildx: make name opt optional when inspecting builder
Signed-off-by: CrazyMax <1951866+crazy-max@users.noreply.github.com>
2024-04-25 11:10:44 +02:00
CrazyMax
5bbaf90158 Merge pull request #308 from crazy-max/github-upload-artifact
github: upload artifact
2024-04-25 10:30:52 +02:00
CrazyMax
00abdc0e59 Merge pull request #313 from crazy-max/util-format-size
util: formatFileSize
2024-04-25 10:27:38 +02:00
CrazyMax
0f39343265 Merge pull request #314 from crazy-max/metadata-obj
buildx: metadata and refs resolution for build and bake
2024-04-25 10:27:21 +02:00
CrazyMax
97b80719d2 buildx: metadata and refs resolution for build and bake
Signed-off-by: CrazyMax <1951866+crazy-max@users.noreply.github.com>
2024-04-25 10:21:16 +02:00
CrazyMax
e03b1899b0 buildx: rename inputs class to build
Signed-off-by: CrazyMax <1951866+crazy-max@users.noreply.github.com>
2024-04-25 10:21:15 +02:00
CrazyMax
aece826a8c Merge pull request #318 from crazy-max/ci-pin-macos
ci(test): pin to macos-13 for docker install
2024-04-25 10:20:33 +02:00
CrazyMax
e6bbe6fe93 ci(test): pin to macos-13 for docker install
Signed-off-by: CrazyMax <1951866+crazy-max@users.noreply.github.com>
2024-04-25 10:12:32 +02:00
CrazyMax
7621606be3 util: formatFileSize
Signed-off-by: CrazyMax <1951866+crazy-max@users.noreply.github.com>
2024-04-23 15:33:51 +02:00
CrazyMax
4ebe781891 Merge pull request #312 from docker/bot/docker-releases-json
Update `.github/docker-releases.json`
2024-04-23 09:51:58 +02:00
crazy-max
a783f79a57 github: update .github/docker-releases.json
Signed-off-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2024-04-23 00:22:00 +00:00
Tõnis Tiigi
8d18a4a3a8 Merge pull request #310 from crazy-max/bump-buildx
dockerfile: bump buildx to 0.14.0 and docker to 26.0.2
2024-04-22 10:06:15 -07:00
CrazyMax
045a9c213c dockerfile: bump buildx to 0.14.0 and docker to 26.0.2
Signed-off-by: CrazyMax <1951866+crazy-max@users.noreply.github.com>
2024-04-22 17:01:49 +02:00
CrazyMax
db0a36131e github: upload artifact
Signed-off-by: CrazyMax <1951866+crazy-max@users.noreply.github.com>
2024-04-22 15:10:35 +02:00
CrazyMax
8d4d79eeb7 tsconfig: switch to es6 target
to fix issue with Twirp client for next commit otherwise it returns:

node_modules/twirp-ts/build/twirp/errors.d.ts:28:5 - error TS2425: Class 'Error' defines instance member property 'cause', but extended class 'TwirpError' defines it as instance member function.

Signed-off-by: CrazyMax <1951866+crazy-max@users.noreply.github.com>
2024-04-22 15:10:34 +02:00
CrazyMax
d44748420a Merge pull request #303 from docker/dependabot/github_actions/peter-evans/create-pull-request-6.0.4
build(deps): bump peter-evans/create-pull-request from 6.0.3 to 6.0.4
2024-04-19 14:49:22 +02:00
CrazyMax
b4e58da038 Merge pull request #306 from crazy-max/cleanup-unused
buildx: remove unused printInspect method
2024-04-19 14:48:58 +02:00
CrazyMax
db6f070033 Merge pull request #309 from docker/bot/docker-releases-json
Update `.github/docker-releases.json`
2024-04-19 08:32:33 +02:00
CrazyMax
f35cc699c5 Merge pull request #305 from docker/bot/buildx-releases-json
Update `.github/buildx-releases.json`
2024-04-19 08:32:14 +02:00
crazy-max
be6d9ea002 github: update .github/docker-releases.json
Signed-off-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2024-04-19 00:22:02 +00:00
crazy-max
579376516d github: update .github/buildx-releases.json
Signed-off-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2024-04-19 00:15:55 +00:00
CrazyMax
3c3a909fe3 buildx: remove unused printInspect method
Signed-off-by: CrazyMax <1951866+crazy-max@users.noreply.github.com>
2024-04-18 13:18:05 +02:00
dependabot[bot]
53bcd3e6fe build(deps): bump peter-evans/create-pull-request from 6.0.3 to 6.0.4
Bumps [peter-evans/create-pull-request](https://github.com/peter-evans/create-pull-request) from 6.0.3 to 6.0.4.
- [Release notes](https://github.com/peter-evans/create-pull-request/releases)
- [Commits](c55203cfde...9153d834b6)

---
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-04-17 22:32:14 +00:00
CrazyMax
c6f16e945f Merge pull request #301 from docker/bot/buildx-lab-releases-json
Update `.github/buildx-lab-releases.json`
2024-04-17 10:11:11 +02:00
crazy-max
06acacde0e github: update .github/buildx-lab-releases.json
Signed-off-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2024-04-17 00:14:21 +00:00
CrazyMax
2bba1c12c1 Merge pull request #299 from docker/dependabot/github_actions/peter-evans/create-pull-request-6.0.3
build(deps): bump peter-evans/create-pull-request from 6.0.2 to 6.0.3
2024-04-14 18:32:10 +02:00
dependabot[bot]
ad54dd379e build(deps): bump peter-evans/create-pull-request from 6.0.2 to 6.0.3
Bumps [peter-evans/create-pull-request](https://github.com/peter-evans/create-pull-request) from 6.0.2 to 6.0.3.
- [Release notes](https://github.com/peter-evans/create-pull-request/releases)
- [Commits](70a41aba78...c55203cfde)

---
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-04-12 22:15:09 +00:00
CrazyMax
a40fd9420f Merge pull request #298 from crazy-max/fix-docker-pull
Some checks failed
publish / publish (push) Has been cancelled
docker: fix pull caching
2024-04-12 15:03:04 +02:00
CrazyMax
4d8bd68c1c docker: fix pull caching
Signed-off-by: CrazyMax <1951866+crazy-max@users.noreply.github.com>
2024-04-12 14:58:19 +02:00
CrazyMax
43d331f793 Merge pull request #200 from crazy-max/docker-pull
Some checks failed
publish / publish (push) Has been cancelled
docker: parseRepoTag and pull methods
2024-04-12 11:52:04 +02:00
CrazyMax
fc4dae47b6 docker: return actual error message when pull fails
Signed-off-by: CrazyMax <1951866+crazy-max@users.noreply.github.com>
2024-04-12 11:48:05 +02:00
CrazyMax
aa0228d826 docker: parseRepoTag and pull methods
Signed-off-by: CrazyMax <1951866+crazy-max@users.noreply.github.com>
2024-04-12 10:58:52 +02:00
CrazyMax
02007009cc Merge pull request #288 from crazy-max/bake-auth-token
bake: handle git auth token when parsing remote definition
2024-04-12 10:57:26 +02:00
CrazyMax
329c1c75cf bake: handle git auth token when parsing remote definition
Signed-off-by: CrazyMax <1951866+crazy-max@users.noreply.github.com>
2024-04-12 10:47:25 +02:00
CrazyMax
056cded622 Merge pull request #292 from docker/dependabot/npm_and_yarn/undici-5.28.4
build(deps): bump undici from 5.28.3 to 5.28.4
2024-04-12 10:05:05 +02:00
CrazyMax
c47291c3a8 Merge pull request #297 from docker/bot/docker-releases-json
Update `.github/docker-releases.json`
2024-04-12 09:39:37 +02:00
crazy-max
b73c694210 github: update .github/docker-releases.json
Signed-off-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2024-04-12 07:39:09 +00:00
CrazyMax
84b6763d80 Merge pull request #296 from docker/bot/buildx-releases-json
Update `.github/buildx-releases.json`
2024-04-12 09:38:43 +02:00
crazy-max
10b5647a43 github: update .github/buildx-releases.json
Signed-off-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2024-04-12 00:15:40 +00:00
dependabot[bot]
18e4452bac build(deps): bump undici from 5.28.3 to 5.28.4
Bumps [undici](https://github.com/nodejs/undici) from 5.28.3 to 5.28.4.
- [Release notes](https://github.com/nodejs/undici/releases)
- [Commits](https://github.com/nodejs/undici/compare/v5.28.3...v5.28.4)

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

Signed-off-by: dependabot[bot] <support@github.com>
2024-04-05 12:58:47 +00:00
CrazyMax
eb5663273f Merge pull request #289 from docker/dependabot/npm_and_yarn/multi-ad9948e606
build(deps): bump semver and @types/semver
2024-04-04 17:39:39 +02:00
dependabot[bot]
0bd3773680 build(deps): bump semver and @types/semver
Bumps [semver](https://github.com/npm/node-semver) and [@types/semver](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/HEAD/types/semver). These dependencies needed to be updated together.

Updates `semver` from 7.5.4 to 7.6.0
- [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.5.4...v7.6.0)

Updates `@types/semver` from 7.5.1 to 7.5.8
- [Release notes](https://github.com/DefinitelyTyped/DefinitelyTyped/releases)
- [Commits](https://github.com/DefinitelyTyped/DefinitelyTyped/commits/HEAD/types/semver)

---
updated-dependencies:
- dependency-name: semver
  dependency-type: direct:production
  update-type: version-update:semver-minor
- dependency-name: "@types/semver"
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-04-03 22:58:39 +00:00
CrazyMax
f6cafdfce1 Merge pull request #285 from crazy-max/bake-parse-opts
Some checks failed
publish / publish (push) Has been cancelled
bake: additional opts when parsing definition
2024-04-02 10:21:14 +02:00
CrazyMax
416c2914df bake: add shm-size and ulimits to target struct
Signed-off-by: CrazyMax <1951866+crazy-max@users.noreply.github.com>
2024-04-02 09:45:56 +02:00
CrazyMax
341bae465f bake: additional opts when parsing definition
Signed-off-by: CrazyMax <1951866+crazy-max@users.noreply.github.com>
2024-04-02 09:45:56 +02:00
CrazyMax
264a0eec2a Merge pull request #287 from crazy-max/buildx-hasAttestationType
buildx: hasAttestationType and resolveAttestationAttrs funcs
2024-04-02 09:38:05 +02:00
CrazyMax
545f7cd6ea buildx: hasAttestationType and resolveAttestationAttrs funcs
Signed-off-by: CrazyMax <1951866+crazy-max@users.noreply.github.com>
2024-03-26 16:23:12 +01:00
CrazyMax
de2888af87 Merge pull request #286 from crazy-max/bump-buildx-docker
dockerfile: bump buildx to 0.13.1 and docker to 26.0.0
2024-03-26 11:59:14 +01:00
CrazyMax
43f61228ec dockerfile: bump buildx to 0.13.1 and docker to 26.0.0
Signed-off-by: CrazyMax <1951866+crazy-max@users.noreply.github.com>
2024-03-26 10:14:17 +01:00
CrazyMax
8d1d731562 Merge pull request #284 from docker/dependabot/npm_and_yarn/undici-5.28.3
build(deps): bump undici from 5.27.0 to 5.28.3
2024-03-25 09:52:02 +01:00
CrazyMax
5706b95a7f Merge pull request #283 from docker/dependabot/npm_and_yarn/ip-2.0.1
build(deps): bump ip from 2.0.0 to 2.0.1
2024-03-25 09:49:11 +01:00
dependabot[bot]
5d8b7b4828 build(deps): bump undici from 5.27.0 to 5.28.3
Bumps [undici](https://github.com/nodejs/undici) from 5.27.0 to 5.28.3.
- [Release notes](https://github.com/nodejs/undici/releases)
- [Commits](https://github.com/nodejs/undici/compare/v5.27.0...v5.28.3)

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

Signed-off-by: dependabot[bot] <support@github.com>
2024-03-25 08:45:39 +00:00
dependabot[bot]
48e339fd34 build(deps): bump ip from 2.0.0 to 2.0.1
Bumps [ip](https://github.com/indutny/node-ip) from 2.0.0 to 2.0.1.
- [Commits](https://github.com/indutny/node-ip/compare/v2.0.0...v2.0.1)

---
updated-dependencies:
- dependency-name: ip
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-03-25 08:41:19 +00:00
CrazyMax
41cae83741 Merge pull request #282 from docker/bot/docker-releases-json
Update `.github/docker-releases.json`
2024-03-25 09:37:39 +01:00
crazy-max
d58f77be10 github: update .github/docker-releases.json
Signed-off-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2024-03-22 00:21:07 +00:00
Tõnis Tiigi
a24f5c12ca Merge pull request #281 from crazy-max/cache-post-group
Some checks failed
publish / publish (push) Has been cancelled
cache: run cache.post in core.group
2024-03-15 13:28:15 -07:00
CrazyMax
e73765a5ce cache: run cache.post in core.group
Signed-off-by: CrazyMax <1951866+crazy-max@users.noreply.github.com>
2024-03-15 18:10:31 +01:00
CrazyMax
cd14c5b580 Merge pull request #280 from crazy-max/post-cache
Some checks failed
publish / publish (push) Has been cancelled
cache: move gha cache save to post state
2024-03-15 17:14:39 +01:00
CrazyMax
9b446bf084 cache: move gha cache save to post state
Signed-off-by: CrazyMax <1951866+crazy-max@users.noreply.github.com>
2024-03-15 10:12:08 +01:00
CrazyMax
cbcf885731 Merge pull request #277 from docker/dependabot/github_actions/peter-evans/create-pull-request-6.0.2
Some checks failed
publish / publish (push) Has been cancelled
build(deps): bump peter-evans/create-pull-request from 6.0.1 to 6.0.2
2024-03-13 19:14:10 +01:00
CrazyMax
5fba0d0374 ci: disable tests on macos-13 runner
Signed-off-by: CrazyMax <1951866+crazy-max@users.noreply.github.com>
2024-03-13 19:11:50 +01:00
CrazyMax
d0e492964d ci: set version as comment for peter-evans/create-pull-request
Signed-off-by: CrazyMax <1951866+crazy-max@users.noreply.github.com>
2024-03-13 19:02:35 +01:00
Tõnis Tiigi
e1fa386cb5 Merge pull request #276 from crazy-max/update-builder-inspect
builder: update inspect command parsing
2024-03-13 11:00:51 -07:00
CrazyMax
3401826b29 Merge pull request #278 from docker/bot/buildx-releases-json
Update `.github/buildx-releases.json`
2024-03-13 08:15:14 +01:00
crazy-max
90c8d29f29 github: update .github/buildx-releases.json
Signed-off-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2024-03-13 00:15:08 +00:00
dependabot[bot]
22e390c8ba build(deps): bump peter-evans/create-pull-request from 6.0.1 to 6.0.2
Bumps [peter-evans/create-pull-request](https://github.com/peter-evans/create-pull-request) from 6.0.1 to 6.0.2.
- [Release notes](https://github.com/peter-evans/create-pull-request/releases)
- [Commits](a4f52f8033...70a41aba78)

---
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-03-12 22:31:07 +00:00
CrazyMax
70d3d9ae67 builder: enable debug for inspect cmd to display additional fields
Signed-off-by: CrazyMax <1951866+crazy-max@users.noreply.github.com>
2024-03-12 13:35:08 +01:00
CrazyMax
9436c6ca61 builder: support features in inspect command
Signed-off-by: CrazyMax <1951866+crazy-max@users.noreply.github.com>
2024-03-12 13:35:08 +01:00
CrazyMax
225d61b701 builder: update inspect command parsing
Signed-off-by: CrazyMax <1951866+crazy-max@users.noreply.github.com>
2024-03-12 13:35:08 +01:00
CrazyMax
5dacef0ba8 Merge pull request #275 from docker/bot/docker-releases-json
Update `.github/docker-releases.json`
2024-03-08 08:36:58 +01:00
crazy-max
26887092dc github: update .github/docker-releases.json
Signed-off-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2024-03-08 00:21:27 +00:00
CrazyMax
8dc7edb368 Merge pull request #271 from docker/dependabot/npm_and_yarn/actions/http-client-2.2.1
build(deps): bump @actions/http-client from 2.2.0 to 2.2.1
2024-03-07 13:14:08 +01:00
CrazyMax
5879437e96 Merge pull request #270 from docker/dependabot/npm_and_yarn/tmp-0.2.3
build(deps): bump tmp from 0.2.2 to 0.2.3
2024-03-07 13:13:47 +01:00
CrazyMax
1c0d7a58fd Merge pull request #274 from docker/bot/docker-releases-json
Update `.github/docker-releases.json`
2024-03-07 13:13:21 +01:00
crazy-max
e6c7da2fcd github: update .github/docker-releases.json
Signed-off-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2024-03-07 12:08:13 +00:00
CrazyMax
a98aa046a8 Merge pull request #273 from crazy-max/test-util-keep-quotes
test: keep quotes around fields
2024-03-06 15:11:42 +01:00
CrazyMax
63adf44466 test: keep quotes around fields
Signed-off-by: CrazyMax <1951866+crazy-max@users.noreply.github.com>
2024-03-06 15:00:15 +01:00
CrazyMax
7fb507050a Merge pull request #272 from docker/bot/buildx-releases-json
Update `.github/buildx-releases.json`
2024-03-06 07:32:46 +01:00
crazy-max
8e9a04559b github: update .github/buildx-releases.json
Signed-off-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2024-03-06 00:15:45 +00:00
dependabot[bot]
224d7ab315 build(deps): bump @actions/http-client from 2.2.0 to 2.2.1
Bumps [@actions/http-client](https://github.com/actions/toolkit/tree/HEAD/packages/http-client) from 2.2.0 to 2.2.1.
- [Changelog](https://github.com/actions/toolkit/blob/main/packages/http-client/RELEASES.md)
- [Commits](https://github.com/actions/toolkit/commits/HEAD/packages/http-client)

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

Signed-off-by: dependabot[bot] <support@github.com>
2024-03-04 22:57:05 +00:00
dependabot[bot]
755c685d84 build(deps): bump tmp from 0.2.2 to 0.2.3
Bumps [tmp](https://github.com/raszi/node-tmp) from 0.2.2 to 0.2.3.
- [Changelog](https://github.com/raszi/node-tmp/blob/master/CHANGELOG.md)
- [Commits](https://github.com/raszi/node-tmp/compare/v0.2.2...v0.2.3)

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

Signed-off-by: dependabot[bot] <support@github.com>
2024-02-29 22:35:37 +00:00
CrazyMax
7d8b4dc669 Merge pull request #269 from crazy-max/docker-return-sock
Some checks failed
publish / publish (push) Has been cancelled
docker: return docker sock path on install
2024-02-29 16:00:52 +01:00
CrazyMax
cae64f370a docker: return docker sock path on install
Signed-off-by: CrazyMax <1951866+crazy-max@users.noreply.github.com>
2024-02-29 15:57:50 +01:00
CrazyMax
7ed7bac5eb Merge pull request #263 from docker/dependabot/npm_and_yarn/csv-parse-5.5.5
build(deps): bump csv-parse from 5.5.3 to 5.5.5
2024-02-29 12:27:51 +01:00
CrazyMax
d86f59520c Merge pull request #264 from docker/dependabot/npm_and_yarn/tmp-0.2.2
build(deps): bump tmp from 0.2.1 to 0.2.2
2024-02-29 12:27:42 +01:00
CrazyMax
e1439ff231 Merge pull request #266 from docker/bot/docker-releases-json
Update `.github/docker-releases.json`
2024-02-29 12:27:05 +01:00
CrazyMax
cbb7546c52 Merge pull request #267 from docker/bot/buildx-releases-json
Update `.github/buildx-releases.json`
2024-02-29 12:26:40 +01:00
crazy-max
05a9e511a8 github: update .github/buildx-releases.json
Signed-off-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2024-02-29 11:24:29 +00:00
crazy-max
8125540486 github: update .github/docker-releases.json
Signed-off-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2024-02-29 11:24:19 +00:00
CrazyMax
aff5040515 Merge pull request #265 from docker/dependabot/github_actions/peter-evans/create-pull-request-6.0.1
build(deps): bump peter-evans/create-pull-request from 6.0.0 to 6.0.1
2024-02-29 12:16:42 +01:00
dependabot[bot]
30cd573d15 build(deps): bump peter-evans/create-pull-request from 6.0.0 to 6.0.1
Bumps [peter-evans/create-pull-request](https://github.com/peter-evans/create-pull-request) from 6.0.0 to 6.0.1.
- [Release notes](https://github.com/peter-evans/create-pull-request/releases)
- [Commits](b1ddad2c99...a4f52f8033)

---
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-02-28 22:36:11 +00:00
dependabot[bot]
3653f3bca9 build(deps): bump tmp from 0.2.1 to 0.2.2
Bumps [tmp](https://github.com/raszi/node-tmp) from 0.2.1 to 0.2.2.
- [Changelog](https://github.com/raszi/node-tmp/blob/master/CHANGELOG.md)
- [Commits](https://github.com/raszi/node-tmp/compare/v0.2.1...v0.2.2)

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

Signed-off-by: dependabot[bot] <support@github.com>
2024-02-28 22:26:00 +00:00
dependabot[bot]
250b2120b4 build(deps): bump csv-parse from 5.5.3 to 5.5.5
Bumps [csv-parse](https://github.com/adaltas/node-csv/tree/HEAD/packages/csv-parse) from 5.5.3 to 5.5.5.
- [Changelog](https://github.com/adaltas/node-csv/blob/master/packages/csv-parse/CHANGELOG.md)
- [Commits](https://github.com/adaltas/node-csv/commits/csv-parse@5.5.5/packages/csv-parse)

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

Signed-off-by: dependabot[bot] <support@github.com>
2024-02-28 22:25:17 +00:00
CrazyMax
7ea6ed7dab Merge pull request #258 from docker/bot/buildx-releases-json
Update `.github/buildx-releases.json`
2024-02-24 15:04:31 +01:00
crazy-max
3344f7b1c8 github: update .github/buildx-releases.json
Signed-off-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2024-02-24 12:05:04 +00:00
CrazyMax
619687375a Merge pull request #257 from crazy-max/buildx-install-nocache-opt
Some checks failed
publish / publish (push) Has been cancelled
buildx: ghaNoCache opt for download/build to disable binary cache
2024-02-23 10:20:57 +01:00
CrazyMax
cbc244c2f4 buildx: ghaNoCache opt for download/build to disable binary cache
Signed-off-by: CrazyMax <1951866+crazy-max@users.noreply.github.com>
2024-02-23 10:11:20 +01:00
CrazyMax
f1c76199be Merge pull request #256 from docker/dependabot/npm_and_yarn/octokit/plugin-rest-endpoint-methods-10.4.0
build(deps): bump @octokit/plugin-rest-endpoint-methods from 10.3.0 to 10.4.0
2024-02-23 09:25:36 +01:00
dependabot[bot]
b0d1226bb6 build(deps): bump @octokit/plugin-rest-endpoint-methods
Bumps [@octokit/plugin-rest-endpoint-methods](https://github.com/octokit/plugin-rest-endpoint-methods.js) from 10.3.0 to 10.4.0.
- [Release notes](https://github.com/octokit/plugin-rest-endpoint-methods.js/releases)
- [Commits](https://github.com/octokit/plugin-rest-endpoint-methods.js/compare/v10.3.0...v10.4.0)

---
updated-dependencies:
- dependency-name: "@octokit/plugin-rest-endpoint-methods"
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-02-22 22:33:47 +00:00
CrazyMax
039e7f9c6e Merge pull request #255 from crazy-max/codecov-token
ci: set codecov token
2024-02-22 17:13:06 +01:00
CrazyMax
048d6c3fbe ci: set codecov token
Signed-off-by: CrazyMax <1951866+crazy-max@users.noreply.github.com>
2024-02-22 17:01:50 +01:00
CrazyMax
59a3548fbb Merge pull request #254 from docker/bot/buildx-lab-releases-json
Update `.github/buildx-lab-releases.json`
2024-02-22 07:49:24 +01:00
crazy-max
c1429fefa4 github: update .github/buildx-lab-releases.json
Signed-off-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2024-02-22 00:13:33 +00:00
CrazyMax
1274cd2848 Merge pull request #253 from docker/dependabot/npm_and_yarn/octokit/plugin-rest-endpoint-methods-10.3.0
build(deps): bump @octokit/plugin-rest-endpoint-methods from 10.2.0 to 10.3.0
2024-02-16 08:16:06 +01:00
dependabot[bot]
48394d7948 build(deps): bump @octokit/plugin-rest-endpoint-methods
Bumps [@octokit/plugin-rest-endpoint-methods](https://github.com/octokit/plugin-rest-endpoint-methods.js) from 10.2.0 to 10.3.0.
- [Release notes](https://github.com/octokit/plugin-rest-endpoint-methods.js/releases)
- [Commits](https://github.com/octokit/plugin-rest-endpoint-methods.js/compare/v10.2.0...v10.3.0)

---
updated-dependencies:
- dependency-name: "@octokit/plugin-rest-endpoint-methods"
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-02-15 22:23:59 +00:00
CrazyMax
aebb2a6f58 Merge pull request #252 from docker/bot/docker-releases-json
Update `.github/docker-releases.json`
2024-02-07 14:20:23 +01:00
crazy-max
dff5cd7e88 github: update .github/docker-releases.json
Signed-off-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2024-02-07 12:07:55 +00:00
CrazyMax
7e4d49d3be Merge pull request #251 from crazy-max/bump-artifact-v4
bump actions/download-artifact to v4
2024-02-06 18:25:59 +01:00
CrazyMax
dee5356ab8 bump actions/download-artifact to v4
Signed-off-by: CrazyMax <1951866+crazy-max@users.noreply.github.com>
2024-02-06 15:15:07 +01:00
CrazyMax
2267dad53e Merge pull request #249 from crazy-max/test-check-coverage
test: use testResultsProcessor to check if all tests are skipped
2024-02-05 10:30:16 +01:00
CrazyMax
666b19e915 bump codecov/codecov-action to 4
Signed-off-by: CrazyMax <1951866+crazy-max@users.noreply.github.com>
2024-02-05 10:20:52 +01:00
CrazyMax
a5975adf41 test: use testResultsProcessor to check if all tests are skipped
Signed-off-by: CrazyMax <1951866+crazy-max@users.noreply.github.com>
2024-02-05 10:20:52 +01:00
CrazyMax
3f7d7f75b5 Merge pull request #248 from crazy-max/fix-itg-cond
test: fix typo on itg run condition
2024-02-05 09:37:11 +01:00
CrazyMax
299d4131fa test: fix typo on itg run condition
Signed-off-by: CrazyMax <1951866+crazy-max@users.noreply.github.com>
2024-02-05 09:34:49 +01:00
CrazyMax
ab1052f7e0 Merge pull request #247 from crazy-max/test-buildx-install
buildx: test install
2024-02-05 09:30:34 +01:00
CrazyMax
bf4bc3c036 test: move itg exclusions to jest
Signed-off-by: CrazyMax <1951866+crazy-max@users.noreply.github.com>
2024-02-05 09:26:59 +01:00
CrazyMax
49a22f7a3e buildx: test install
Signed-off-by: CrazyMax <1951866+crazy-max@users.noreply.github.com>
2024-02-05 09:06:27 +01:00
CrazyMax
03b8464ee3 Merge pull request #246 from crazy-max/cache-class
cache class for tool caching with gha
2024-02-05 08:52:26 +01:00
CrazyMax
0a1d2c2307 cache class for tool caching with gha
Signed-off-by: CrazyMax <1951866+crazy-max@users.noreply.github.com>
2024-02-04 18:10:00 +01:00
CrazyMax
0adac517e3 Merge pull request #244 from docker/dependabot/npm_and_yarn/actions/cache-3.2.4
build(deps): bump @actions/cache from 3.2.3 to 3.2.4
2024-02-04 11:56:15 +01:00
CrazyMax
012b121eb5 Merge pull request #245 from crazy-max/gh-workflow-run-url
github: workflowRunURL
2024-02-04 11:55:21 +01:00
CrazyMax
11cc7c697d github: workflowRunURL
Signed-off-by: CrazyMax <1951866+crazy-max@users.noreply.github.com>
2024-02-04 11:08:41 +01:00
dependabot[bot]
0721cb2aa9 build(deps): bump @actions/cache from 3.2.3 to 3.2.4
Bumps [@actions/cache](https://github.com/actions/toolkit/tree/HEAD/packages/cache) from 3.2.3 to 3.2.4.
- [Changelog](https://github.com/actions/toolkit/blob/main/packages/cache/RELEASES.md)
- [Commits](https://github.com/actions/toolkit/commits/HEAD/packages/cache)

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

Signed-off-by: dependabot[bot] <support@github.com>
2024-02-01 22:30:47 +00:00
CrazyMax
26949f5f39 Merge pull request #243 from docker/bot/docker-releases-json
Update `.github/docker-releases.json`
2024-02-01 15:12:41 +01:00
crazy-max
32b78e4566 github: update .github/docker-releases.json
Signed-off-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2024-02-01 13:59:24 +00:00
CrazyMax
2d240ca0fc Merge pull request #242 from docker/dependabot/github_actions/peter-evans/create-pull-request-6.0.0
build(deps): bump peter-evans/create-pull-request from 5.0.2 to 6.0.0
2024-02-01 14:58:53 +01:00
CrazyMax
8c09071628 Merge pull request #236 from docker/dependabot/npm_and_yarn/octokit/core-5.1.0
build(deps): bump @octokit/core from 5.0.2 to 5.1.0
2024-02-01 14:58:30 +01:00
CrazyMax
a9fec88f7a Merge pull request #240 from docker/bot/docker-releases-json
Update `.github/docker-releases.json`
2024-02-01 14:58:03 +01:00
crazy-max
066518ecec github: update .github/docker-releases.json
Signed-off-by: GitHub <noreply@github.com>
2024-02-01 12:08:06 +00:00
dependabot[bot]
d63347f68f build(deps): bump peter-evans/create-pull-request from 5.0.2 to 6.0.0
Bumps [peter-evans/create-pull-request](https://github.com/peter-evans/create-pull-request) from 5.0.2 to 6.0.0.
- [Release notes](https://github.com/peter-evans/create-pull-request/releases)
- [Commits](153407881e...b1ddad2c99)

---
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-01-31 22:35:51 +00:00
CrazyMax
9282d3e13b Merge pull request #237 from docker/bot/docker-releases-json
Update `.github/docker-releases.json`
2024-01-24 13:48:22 +01:00
crazy-max
d240b3146a github: update .github/docker-releases.json
Signed-off-by: GitHub <noreply@github.com>
2024-01-24 12:08:43 +00:00
dependabot[bot]
7063f758ae build(deps): bump @octokit/core from 5.0.2 to 5.1.0
Bumps [@octokit/core](https://github.com/octokit/core.js) from 5.0.2 to 5.1.0.
- [Release notes](https://github.com/octokit/core.js/releases)
- [Commits](https://github.com/octokit/core.js/compare/v5.0.2...v5.1.0)

---
updated-dependencies:
- dependency-name: "@octokit/core"
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-01-22 22:42:12 +00:00
CrazyMax
ad2fe8539c Merge pull request #235 from docker/bot/docker-releases-json
Update `.github/docker-releases.json`
2024-01-20 07:12:21 +01:00
crazy-max
5d0a08a448 github: update .github/docker-releases.json
Signed-off-by: GitHub <noreply@github.com>
2024-01-20 00:21:30 +00:00
CrazyMax
66f17c25e3 Merge pull request #234 from docker/bot/buildx-lab-releases-json
Update `.github/buildx-lab-releases.json`
2024-01-19 13:19:53 +01:00
crazy-max
bf9adbe540 github: update .github/buildx-lab-releases.json
Signed-off-by: GitHub <noreply@github.com>
2024-01-19 12:05:43 +00:00
CrazyMax
f2a56cda90 Merge pull request #233 from docker/bot/buildx-lab-releases-json
Update `.github/buildx-lab-releases.json`
2024-01-18 16:05:52 +01:00
crazy-max
a60fe56754 github: update .github/buildx-lab-releases.json
Signed-off-by: GitHub <noreply@github.com>
2024-01-18 15:05:23 +00:00
CrazyMax
9c42213ecc Merge pull request #232 from docker/bot/docker-releases-json
Update `.github/docker-releases.json`
2024-01-18 08:13:16 +01:00
crazy-max
2e9fde295e github: update .github/docker-releases.json
Signed-off-by: GitHub <noreply@github.com>
2024-01-18 00:22:20 +00:00
CrazyMax
942777afdc Merge pull request #231 from docker/bot/docker-releases-json
Update `.github/docker-releases.json`
2024-01-13 13:52:01 +01:00
crazy-max
d468250481 github: update .github/docker-releases.json
Signed-off-by: GitHub <noreply@github.com>
2024-01-13 12:07:29 +00:00
CrazyMax
8854de97ed Merge pull request #230 from docker/bot/buildx-releases-json
Update `.github/buildx-releases.json`
2024-01-12 09:36:33 +01:00
crazy-max
666e090b82 github: update .github/buildx-releases.json
Signed-off-by: GitHub <noreply@github.com>
2024-01-12 08:35:36 +00:00
CrazyMax
f04fa19563 Merge pull request #229 from docker/dependabot/npm_and_yarn/actions/cache-3.2.3
build(deps): bump @actions/cache from 3.2.2 to 3.2.3
2024-01-12 09:35:02 +01:00
dependabot[bot]
f8b8b5b18d build(deps): bump @actions/cache from 3.2.2 to 3.2.3
Bumps [@actions/cache](https://github.com/actions/toolkit/tree/HEAD/packages/cache) from 3.2.2 to 3.2.3.
- [Changelog](https://github.com/actions/toolkit/blob/main/packages/cache/RELEASES.md)
- [Commits](https://github.com/actions/toolkit/commits/HEAD/packages/cache)

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

Signed-off-by: dependabot[bot] <support@github.com>
2024-01-11 22:16:29 +00:00
CrazyMax
f92cc3db0b Merge pull request #227 from docker/bot/docker-releases-json
Update `.github/docker-releases.json`
2024-01-05 10:55:23 +01:00
crazy-max
032e16cf73 github: update .github/docker-releases.json
Signed-off-by: GitHub <noreply@github.com>
2024-01-05 00:21:59 +00:00
CrazyMax
a6a71daf88 Merge pull request #226 from docker/bot/docker-releases-json
Update `.github/docker-releases.json`
2024-01-04 09:14:09 +01:00
crazy-max
e298150fd7 github: update .github/docker-releases.json
Signed-off-by: GitHub <noreply@github.com>
2023-12-22 12:07:48 +00:00
CrazyMax
a99fb34091 Merge pull request #225 from crazy-max/fix-bake-error
Some checks failed
publish / publish (push) Has been cancelled
bake: correctly match error when parsing definition
2023-12-21 11:44:07 +01:00
CrazyMax
3a20771080 bake: correctly match error when parsing definition
Signed-off-by: CrazyMax <1951866+crazy-max@users.noreply.github.com>
2023-12-20 13:58:27 +01:00
CrazyMax
5430d017a5 Merge pull request #224 from neilime/fix/git-suuport-grafted-pull-refs
Some checks failed
publish / publish (push) Has been cancelled
fix(git): supports grafted pull refs
2023-12-15 16:58:16 +01:00
Emilien Escalle
e3bdf20325 fix(git): supports grafted pull refs
Signed-off-by: Emilien Escalle <emilien.escalle@escemi.com>
2023-12-15 16:37:02 +01:00
CrazyMax
f8ca396f63 Merge pull request #222 from docker/dependabot/github_actions/github/codeql-action-3
Some checks failed
publish / publish (push) Has been cancelled
build(deps): bump github/codeql-action from 2 to 3
2023-12-14 14:30:39 +01:00
dependabot[bot]
603112bbed build(deps): bump github/codeql-action from 2 to 3
Bumps [github/codeql-action](https://github.com/github/codeql-action) from 2 to 3.
- [Release notes](https://github.com/github/codeql-action/releases)
- [Changelog](https://github.com/github/codeql-action/blob/main/CHANGELOG.md)
- [Commits](https://github.com/github/codeql-action/compare/v2...v3)

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

Signed-off-by: dependabot[bot] <support@github.com>
2023-12-13 22:08:08 +00:00
CrazyMax
31a5828eff Merge pull request #219 from docker/dependabot/npm_and_yarn/csv-parse-5.5.3
build(deps): bump csv-parse from 5.5.2 to 5.5.3
2023-12-13 10:31:17 +01:00
CrazyMax
b3bb7713d9 Merge pull request #221 from docker/bot/docker-releases-json
Update `.github/docker-releases.json`
2023-12-13 10:30:43 +01:00
crazy-max
6273173795 github: update .github/docker-releases.json
Signed-off-by: GitHub <noreply@github.com>
2023-12-13 00:21:52 +00:00
dependabot[bot]
5fd725469f build(deps): bump csv-parse from 5.5.2 to 5.5.3
Bumps [csv-parse](https://github.com/adaltas/node-csv/tree/HEAD/packages/csv-parse) from 5.5.2 to 5.5.3.
- [Changelog](https://github.com/adaltas/node-csv/blob/master/packages/csv-parse/CHANGELOG.md)
- [Commits](https://github.com/adaltas/node-csv/commits/csv-parse@5.5.3/packages/csv-parse)

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

Signed-off-by: dependabot[bot] <support@github.com>
2023-12-12 14:03:18 +00:00
CrazyMax
7929028d80 Merge pull request #220 from crazy-max/lima-custom-images
docker(install): allow specifying custom lima images
2023-12-12 15:01:26 +01:00
CrazyMax
4995997eed docker(install): allow specifying custom lima images
Signed-off-by: CrazyMax <1951866+crazy-max@users.noreply.github.com>
2023-12-10 19:23:48 +01:00
CrazyMax
348446a8d6 docker(install): print lima version
Signed-off-by: CrazyMax <1951866+crazy-max@users.noreply.github.com>
2023-12-10 19:23:48 +01:00
CrazyMax
c8a1b7a531 docker(install): don't auto update brew when installing lima
Signed-off-by: CrazyMax <1951866+crazy-max@users.noreply.github.com>
2023-12-10 15:11:39 +01:00
CrazyMax
911d146f5f Merge pull request #218 from docker/bot/buildx-lab-releases-json
Update `.github/buildx-lab-releases.json`
2023-12-06 09:01:00 -08:00
crazy-max
0cc3169aa7 github: update .github/buildx-lab-releases.json
Signed-off-by: GitHub <noreply@github.com>
2023-12-06 16:55:28 +00:00
CrazyMax
1de2911b5e Merge pull request #216 from docker/bot/docker-releases-json
Some checks failed
publish / publish (push) Has been cancelled
Update `.github/docker-releases.json`
2023-12-03 15:38:34 -08:00
crazy-max
9e9fc490d2 github: update .github/docker-releases.json
Signed-off-by: GitHub <noreply@github.com>
2023-12-03 23:38:24 +00:00
CrazyMax
a45afd3161 Merge pull request #217 from hoverkraft-tech/fix/handle-detached-ref-shallow-clone
fix(git): handle detached ref in shallow clone context
2023-12-03 15:37:54 -08:00
Emilien Escalle
7d829c430b fix(git): handle detached ref in shallow clone context
Signed-off-by: Emilien Escalle <emilien.escalle@escemi.com>
2023-12-03 21:15:38 +01:00
CrazyMax
ddc04994d9 Merge pull request #215 from docker/bot/buildx-lab-releases-json
Update `.github/buildx-lab-releases.json`
2023-12-01 03:20:11 -08:00
crazy-max
b613f395b8 github: update .github/buildx-lab-releases.json
Signed-off-by: GitHub <noreply@github.com>
2023-12-01 11:19:42 +00:00
CrazyMax
9e405d775a Merge pull request #214 from docker/dependabot/npm_and_yarn/octokit/plugin-rest-endpoint-methods-10.2.0
Some checks failed
publish / publish (push) Has been cancelled
build(deps): bump @octokit/plugin-rest-endpoint-methods from 10.1.5 to 10.2.0
2023-11-29 02:59:11 -08:00
CrazyMax
248fc44d7e Merge pull request #213 from crazy-max/switch-to-lima
docker(install): switch to lima
2023-11-29 02:47:26 -08:00
dependabot[bot]
e907622be4 build(deps): bump @octokit/plugin-rest-endpoint-methods
Bumps [@octokit/plugin-rest-endpoint-methods](https://github.com/octokit/plugin-rest-endpoint-methods.js) from 10.1.5 to 10.2.0.
- [Release notes](https://github.com/octokit/plugin-rest-endpoint-methods.js/releases)
- [Commits](https://github.com/octokit/plugin-rest-endpoint-methods.js/compare/v10.1.5...v10.2.0)

---
updated-dependencies:
- dependency-name: "@octokit/plugin-rest-endpoint-methods"
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-11-28 22:26:11 +00:00
CrazyMax
5bc270dc53 Merge pull request #212 from docker/dependabot/npm_and_yarn/octokit/core-5.0.2
build(deps): bump @octokit/core from 5.0.1 to 5.0.2
2023-11-27 04:36:42 -08:00
CrazyMax
c1ecc4b621 docker(install): don't upgrade unrelated packages when installing lima
Signed-off-by: CrazyMax <1951866+crazy-max@users.noreply.github.com>
2023-11-27 01:58:24 +01:00
CrazyMax
0a04d5661f docker(install): switch to lima
Signed-off-by: CrazyMax <1951866+crazy-max@users.noreply.github.com>
2023-11-27 01:58:23 +01:00
dependabot[bot]
252cfd570c build(deps): bump @octokit/core from 5.0.1 to 5.0.2
Bumps [@octokit/core](https://github.com/octokit/core.js) from 5.0.1 to 5.0.2.
- [Release notes](https://github.com/octokit/core.js/releases)
- [Commits](https://github.com/octokit/core.js/compare/v5.0.1...v5.0.2)

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

Signed-off-by: dependabot[bot] <support@github.com>
2023-11-22 22:40:09 +00:00
CrazyMax
2f97829cfc Merge pull request #211 from docker/bot/buildx-lab-releases-json
Update `.github/buildx-lab-releases.json`
2023-11-21 08:45:32 -08:00
crazy-max
ea541ecec7 github: update .github/buildx-lab-releases.json
Signed-off-by: GitHub <noreply@github.com>
2023-11-21 16:44:54 +00:00
CrazyMax
64a550a5dc Merge pull request #209 from docker/bot/buildx-releases-json
Update `.github/buildx-releases.json`
2023-11-17 02:12:12 -08:00
crazy-max
73bb35d328 github: update .github/buildx-releases.json
Signed-off-by: GitHub <noreply@github.com>
2023-11-17 00:15:29 +00:00
CrazyMax
97573bff9a Merge pull request #201 from crazy-max/colima-update
Some checks failed
publish / publish (push) Has been cancelled
docker(install): fallback to journalctl to print docker daemon logs
2023-11-16 03:43:14 -08:00
CrazyMax
cef4c16170 ci(test): add macos-13 to the matrix
Signed-off-by: CrazyMax <1951866+crazy-max@users.noreply.github.com>
2023-11-16 12:28:24 +01:00
CrazyMax
3281ef2a12 docker(install): simplify provision
Signed-off-by: CrazyMax <1951866+crazy-max@users.noreply.github.com>
2023-11-16 11:55:01 +01:00
CrazyMax
03b93c3aee docker(install): fallback to journalctl to print docker daemon logs
colima only supports Ubuntu image since 0.6.0 which
runs docker as systemd unit.

Signed-off-by: CrazyMax <1951866+crazy-max@users.noreply.github.com>
2023-11-16 11:55:01 +01:00
CrazyMax
f8909e3265 docker(install): remove deprecated colima config
Signed-off-by: CrazyMax <1951866+crazy-max@users.noreply.github.com>
2023-11-16 11:55:00 +01:00
CrazyMax
624fee6e10 Merge pull request #206 from docker/dependabot/npm_and_yarn/octokit/plugin-rest-endpoint-methods-10.1.5
build(deps): bump @octokit/plugin-rest-endpoint-methods from 10.1.3 to 10.1.5
2023-11-16 02:20:13 -08:00
CrazyMax
e927ebb09c Merge pull request #207 from crazy-max/tempdir-runner-temp
Use RUNNER_TEMP as temp directory
2023-11-16 02:19:20 -08:00
CrazyMax
5250fc63c3 Merge pull request #204 from docker/bot/docker-releases-json
Update `.github/docker-releases.json`
2023-11-16 02:17:08 -08:00
CrazyMax
77c591b46c Merge pull request #208 from docker/bot/buildx-releases-json
Update `.github/buildx-releases.json`
2023-11-16 02:16:53 -08:00
CrazyMax
602235dcce Use RUNNER_TEMP as temp directory
Signed-off-by: CrazyMax <1951866+crazy-max@users.noreply.github.com>
2023-11-16 11:13:12 +01:00
crazy-max
3ca52c06b2 github: update .github/buildx-releases.json
Signed-off-by: GitHub <noreply@github.com>
2023-11-16 00:15:36 +00:00
dependabot[bot]
7c2659dc5d build(deps): bump @octokit/plugin-rest-endpoint-methods
Bumps [@octokit/plugin-rest-endpoint-methods](https://github.com/octokit/plugin-rest-endpoint-methods.js) from 10.1.3 to 10.1.5.
- [Release notes](https://github.com/octokit/plugin-rest-endpoint-methods.js/releases)
- [Commits](https://github.com/octokit/plugin-rest-endpoint-methods.js/compare/v10.1.3...v10.1.5)

---
updated-dependencies:
- dependency-name: "@octokit/plugin-rest-endpoint-methods"
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-11-14 22:43:45 +00:00
crazy-max
307731cacb github: update .github/docker-releases.json
Signed-off-by: GitHub <noreply@github.com>
2023-11-14 00:21:04 +00:00
CrazyMax
81355687c2 Merge pull request #202 from crazy-max/align-node-version
ci: align node version
2023-11-13 02:21:38 -08:00
CrazyMax
cca99038ee ci: align node version
Signed-off-by: CrazyMax <crazy-max@users.noreply.github.com>
2023-11-13 10:21:54 +01:00
CrazyMax
24a9fd8152 Merge pull request #198 from docker/dependabot/npm_and_yarn/octokit/plugin-rest-endpoint-methods-10.1.3
build(deps): bump @octokit/plugin-rest-endpoint-methods from 10.1.2 to 10.1.3
2023-11-11 06:14:22 -08:00
dependabot[bot]
53e9f24dd0 build(deps): bump @octokit/plugin-rest-endpoint-methods
Bumps [@octokit/plugin-rest-endpoint-methods](https://github.com/octokit/plugin-rest-endpoint-methods.js) from 10.1.2 to 10.1.3.
- [Release notes](https://github.com/octokit/plugin-rest-endpoint-methods.js/releases)
- [Commits](https://github.com/octokit/plugin-rest-endpoint-methods.js/compare/v10.1.2...v10.1.3)

---
updated-dependencies:
- dependency-name: "@octokit/plugin-rest-endpoint-methods"
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-11-09 22:51:15 +00:00
CrazyMax
b525cd9de8 Merge pull request #197 from crazy-max/ci-codeql
ci: enable SAST scanning with CodeQL
2023-10-30 02:23:18 -07:00
CrazyMax
21a7def1e9 Merge pull request #195 from docker/bot/docker-releases-json
Update `.github/docker-releases.json`
2023-10-30 01:54:05 -07:00
CrazyMax
243e746a8d Merge pull request #196 from docker/dependabot/npm_and_yarn/jwt-decode-4.0.0
build(deps): bump jwt-decode from 3.1.2 to 4.0.0
2023-10-30 01:53:46 -07:00
CrazyMax
b212b3b35e chore: fix incomplete string escaping
Signed-off-by: CrazyMax <crazy-max@users.noreply.github.com>
2023-10-28 08:38:35 +02:00
CrazyMax
191def3857 ci: enable SAST scanning with CodeQL
Signed-off-by: CrazyMax <crazy-max@users.noreply.github.com>
2023-10-28 08:31:56 +02:00
CrazyMax
0e5f8a766a github: fix jwt-decode import and test
Signed-off-by: CrazyMax <crazy-max@users.noreply.github.com>
2023-10-28 04:37:59 +02:00
dependabot[bot]
a625c7487f build(deps): bump jwt-decode from 3.1.2 to 4.0.0
Bumps [jwt-decode](https://github.com/auth0/jwt-decode) from 3.1.2 to 4.0.0.
- [Release notes](https://github.com/auth0/jwt-decode/releases)
- [Changelog](https://github.com/auth0/jwt-decode/blob/main/CHANGELOG.md)
- [Commits](https://github.com/auth0/jwt-decode/compare/v3.1.2...v4.0.0)

---
updated-dependencies:
- dependency-name: jwt-decode
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-10-27 22:45:49 +00:00
crazy-max
e8569c2d9b github: update .github/docker-releases.json
Signed-off-by: GitHub <noreply@github.com>
2023-10-27 12:07:45 +00:00
CrazyMax
7b1a9e4e34 Merge pull request #193 from docker/bot/buildx-releases-json
Update `.github/buildx-releases.json`
2023-10-26 21:38:53 -07:00
CrazyMax
8b3ff1beb0 Merge pull request #190 from docker/dependabot/npm_and_yarn/octokit/plugin-rest-endpoint-methods-10.1.2
build(deps): bump @octokit/plugin-rest-endpoint-methods from 10.0.1 to 10.1.2
2023-10-26 21:38:33 -07:00
crazy-max
35555f7a24 github: update .github/buildx-releases.json
Signed-off-by: GitHub <noreply@github.com>
2023-10-27 04:38:00 +00:00
CrazyMax
5562309585 Merge pull request #192 from docker/dependabot/npm_and_yarn/babel/traverse-7.23.2
build(deps): bump @babel/traverse from 7.17.3 to 7.23.2
2023-10-26 21:37:29 -07:00
CrazyMax
2848275bb4 Merge pull request #191 from docker/dependabot/npm_and_yarn/undici-5.27.0
build(deps): bump undici from 5.25.4 to 5.27.0
2023-10-26 21:37:10 -07:00
dependabot[bot]
48c7d682b4 build(deps): bump @babel/traverse from 7.17.3 to 7.23.2
Bumps [@babel/traverse](https://github.com/babel/babel/tree/HEAD/packages/babel-traverse) from 7.17.3 to 7.23.2.
- [Release notes](https://github.com/babel/babel/releases)
- [Changelog](https://github.com/babel/babel/blob/main/CHANGELOG.md)
- [Commits](https://github.com/babel/babel/commits/v7.23.2/packages/babel-traverse)

---
updated-dependencies:
- dependency-name: "@babel/traverse"
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-10-27 04:26:32 +00:00
dependabot[bot]
04d1940f48 build(deps): bump undici from 5.25.4 to 5.27.0
Bumps [undici](https://github.com/nodejs/undici) from 5.25.4 to 5.27.0.
- [Release notes](https://github.com/nodejs/undici/releases)
- [Commits](https://github.com/nodejs/undici/commits/v5.27.0)

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

Signed-off-by: dependabot[bot] <support@github.com>
2023-10-27 04:23:02 +00:00
dependabot[bot]
6af9ce25af build(deps): bump @octokit/plugin-rest-endpoint-methods
Bumps [@octokit/plugin-rest-endpoint-methods](https://github.com/octokit/plugin-rest-endpoint-methods.js) from 10.0.1 to 10.1.2.
- [Release notes](https://github.com/octokit/plugin-rest-endpoint-methods.js/releases)
- [Commits](https://github.com/octokit/plugin-rest-endpoint-methods.js/compare/v10.0.1...v10.1.2)

---
updated-dependencies:
- dependency-name: "@octokit/plugin-rest-endpoint-methods"
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-10-26 22:32:42 +00:00
CrazyMax
1e2ed9bcf1 Merge pull request #187 from docker/dependabot/github_actions/actions/setup-node-4
build(deps): bump actions/setup-node from 3 to 4
2023-10-23 15:36:17 -07:00
dependabot[bot]
3e8e9fc046 build(deps): bump actions/setup-node from 3 to 4
Bumps [actions/setup-node](https://github.com/actions/setup-node) from 3 to 4.
- [Release notes](https://github.com/actions/setup-node/releases)
- [Commits](https://github.com/actions/setup-node/compare/v3...v4)

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

Signed-off-by: dependabot[bot] <support@github.com>
2023-10-23 22:15:26 +00:00
CrazyMax
663d108e8d Merge pull request #185 from docker/dependabot/npm_and_yarn/actions/github-6.0.0
Some checks failed
publish / publish (push) Has been cancelled
build(deps): bump @actions/github from 5.1.1 to 6.0.0
2023-10-13 05:00:55 -07:00
CrazyMax
2629338e09 chore: ignore unresolved @octokit/openapi-types module
Signed-off-by: CrazyMax <crazy-max@users.noreply.github.com>
2023-10-13 13:52:41 +02:00
dependabot[bot]
7a01b3e2a4 build(deps): bump @actions/github from 5.1.1 to 6.0.0
Bumps [@actions/github](https://github.com/actions/toolkit/tree/HEAD/packages/github) from 5.1.1 to 6.0.0.
- [Changelog](https://github.com/actions/toolkit/blob/main/packages/github/RELEASES.md)
- [Commits](https://github.com/actions/toolkit/commits/HEAD/packages/github)

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

Signed-off-by: dependabot[bot] <support@github.com>
2023-10-13 10:32:07 +00:00
CrazyMax
c363216f0d Merge pull request #184 from docker/dependabot/npm_and_yarn/csv-parse-5.5.2
build(deps): bump csv-parse from 5.5.1 to 5.5.2
2023-10-12 07:19:56 -07:00
CrazyMax
0ebe5d1c2f Merge pull request #186 from docker/dependabot/npm_and_yarn/octokit/plugin-rest-endpoint-methods-10.0.1
build(deps): bump @octokit/plugin-rest-endpoint-methods from 10.0.0 to 10.0.1
2023-10-12 07:19:33 -07:00
dependabot[bot]
6d03d1708d build(deps): bump @octokit/plugin-rest-endpoint-methods
Bumps [@octokit/plugin-rest-endpoint-methods](https://github.com/octokit/plugin-rest-endpoint-methods.js) from 10.0.0 to 10.0.1.
- [Release notes](https://github.com/octokit/plugin-rest-endpoint-methods.js/releases)
- [Commits](https://github.com/octokit/plugin-rest-endpoint-methods.js/compare/v10.0.0...v10.0.1)

---
updated-dependencies:
- dependency-name: "@octokit/plugin-rest-endpoint-methods"
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-10-11 22:17:43 +00:00
dependabot[bot]
d6753812df build(deps): bump csv-parse from 5.5.1 to 5.5.2
Bumps [csv-parse](https://github.com/adaltas/node-csv/tree/HEAD/packages/csv-parse) from 5.5.1 to 5.5.2.
- [Changelog](https://github.com/adaltas/node-csv/blob/master/packages/csv-parse/CHANGELOG.md)
- [Commits](https://github.com/adaltas/node-csv/commits/csv-parse@5.5.2/packages/csv-parse)

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

Signed-off-by: dependabot[bot] <support@github.com>
2023-10-09 23:00:46 +00:00
CrazyMax
3f7939e71c Merge pull request #182 from docker/dependabot/npm_and_yarn/actions/http-client-2.2.0
build(deps): bump @actions/http-client from 2.1.1 to 2.2.0
2023-10-09 01:56:18 -07:00
dependabot[bot]
584493d659 build(deps): bump @actions/http-client from 2.1.1 to 2.2.0
Bumps [@actions/http-client](https://github.com/actions/toolkit/tree/HEAD/packages/http-client) from 2.1.1 to 2.2.0.
- [Changelog](https://github.com/actions/toolkit/blob/main/packages/http-client/RELEASES.md)
- [Commits](https://github.com/actions/toolkit/commits/HEAD/packages/http-client)

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

Signed-off-by: dependabot[bot] <support@github.com>
2023-10-06 22:59:35 +00:00
CrazyMax
dd4311c75e Merge pull request #181 from docker/dependabot/npm_and_yarn/csv-parse-5.5.1
build(deps): bump csv-parse from 5.5.0 to 5.5.1
2023-10-05 16:10:35 -07:00
dependabot[bot]
b91698741e build(deps): bump csv-parse from 5.5.0 to 5.5.1
Bumps [csv-parse](https://github.com/adaltas/node-csv/tree/HEAD/packages/csv-parse) from 5.5.0 to 5.5.1.
- [Changelog](https://github.com/adaltas/node-csv/blob/master/packages/csv-parse/CHANGELOG.md)
- [Commits](https://github.com/adaltas/node-csv/commits/csv-parse@5.5.1/packages/csv-parse)

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

Signed-off-by: dependabot[bot] <support@github.com>
2023-10-05 22:09:57 +00:00
CrazyMax
36e5638636 Merge pull request #175 from docker/dependabot/npm_and_yarn/octokit/plugin-rest-endpoint-methods-10.0.0
Some checks failed
publish / publish (push) Has been cancelled
build(deps): bump @octokit/plugin-rest-endpoint-methods from 9.0.0 to 10.0.0
2023-10-05 11:29:46 -07:00
dependabot[bot]
d852953482 build(deps): bump @octokit/plugin-rest-endpoint-methods
Bumps [@octokit/plugin-rest-endpoint-methods](https://github.com/octokit/plugin-rest-endpoint-methods.js) from 9.0.0 to 10.0.0.
- [Release notes](https://github.com/octokit/plugin-rest-endpoint-methods.js/releases)
- [Commits](https://github.com/octokit/plugin-rest-endpoint-methods.js/compare/v9.0.0...v10.0.0)

---
updated-dependencies:
- dependency-name: "@octokit/plugin-rest-endpoint-methods"
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-10-05 18:27:12 +00:00
CrazyMax
9bb2a9fe23 Merge pull request #174 from docker/dependabot/npm_and_yarn/octokit/core-5.0.1
build(deps): bump @octokit/core from 5.0.0 to 5.0.1
2023-10-05 11:26:11 -07:00
CrazyMax
f4fdb6a9f8 Merge pull request #180 from crazy-max/fix-docker-arm64
docker(install): fix download for arm64 arch
2023-10-05 11:25:33 -07:00
CrazyMax
558d76d017 Merge pull request #179 from docker/bot/buildx-lab-releases-json
Update `.github/buildx-lab-releases.json`
2023-10-05 11:24:33 -07:00
CrazyMax
f3dd07df13 docker(install): fix download for arm64 arch
Signed-off-by: CrazyMax <crazy-max@users.noreply.github.com>
2023-10-05 20:02:55 +02:00
crazy-max
0455460f6f github: update .github/buildx-lab-releases.json
Signed-off-by: GitHub <noreply@github.com>
2023-10-04 00:13:47 +00:00
CrazyMax
f5c9bb7acd Merge pull request #176 from elias-lundgren/fix-env-quoting
Remove quotes around env variable name in resolveBuildSecretEnv
2023-10-02 10:41:26 +02:00
CrazyMax
9d75f8f839 Merge pull request #177 from docker/bot/docker-releases-json
Update `.github/docker-releases.json`
2023-10-02 10:33:08 +02:00
crazy-max
b86f723512 github: update .github/docker-releases.json
Signed-off-by: GitHub <noreply@github.com>
2023-09-28 00:20:28 +00:00
Elias Lundgren
d3d7271f87 fix: remove quotes around env variable name 2023-09-26 17:36:45 +02:00
dependabot[bot]
fddef161c1 build(deps): bump @octokit/core from 5.0.0 to 5.0.1
Bumps [@octokit/core](https://github.com/octokit/core.js) from 5.0.0 to 5.0.1.
- [Release notes](https://github.com/octokit/core.js/releases)
- [Commits](https://github.com/octokit/core.js/compare/v5.0.0...v5.0.1)

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

Signed-off-by: dependabot[bot] <support@github.com>
2023-09-25 22:54:02 +00:00
CrazyMax
e75930a3a6 Merge pull request #173 from hoverkraft-tech/fix/handle-detached-ref
fix(git): handle properly detached HEAD ref
2023-09-23 14:28:38 +02:00
Emilien Escalle
bd5e1d1bab fix(git): handle properly detached HEAD ref 2023-09-19 18:35:04 +02:00
CrazyMax
354737b4fc Merge pull request #171 from docker/dependabot/github_actions/docker/setup-buildx-action-3
build(deps): bump docker/setup-buildx-action from 2 to 3
2023-09-13 08:29:51 +02:00
CrazyMax
eea8c07dcc Merge pull request #170 from docker/dependabot/github_actions/docker/bake-action-4
build(deps): bump docker/bake-action from 3 to 4
2023-09-13 08:29:39 +02:00
dependabot[bot]
f08154f2c4 build(deps): bump docker/setup-buildx-action from 2 to 3
Bumps [docker/setup-buildx-action](https://github.com/docker/setup-buildx-action) from 2 to 3.
- [Release notes](https://github.com/docker/setup-buildx-action/releases)
- [Commits](https://github.com/docker/setup-buildx-action/compare/v2...v3)

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

Signed-off-by: dependabot[bot] <support@github.com>
2023-09-12 22:12:43 +00:00
dependabot[bot]
aae835e4b4 build(deps): bump docker/bake-action from 3 to 4
Bumps [docker/bake-action](https://github.com/docker/bake-action) from 3 to 4.
- [Release notes](https://github.com/docker/bake-action/releases)
- [Commits](https://github.com/docker/bake-action/compare/v3...v4)

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

Signed-off-by: dependabot[bot] <support@github.com>
2023-09-12 22:12:39 +00:00
CrazyMax
6f9aedec5e Merge pull request #134 from docker/dependabot/npm_and_yarn/octokit/plugin-rest-endpoint-methods-9.0.0
build(deps): bump @octokit/plugin-rest-endpoint-methods from 7.2.3 to 9.0.0
2023-09-12 10:56:05 +02:00
CrazyMax
78cfd0384b chore: provide @octokit/core
Signed-off-by: CrazyMax <crazy-max@users.noreply.github.com>
2023-09-12 10:51:20 +02:00
dependabot[bot]
d5f67f772e build(deps): bump @octokit/plugin-rest-endpoint-methods
Bumps [@octokit/plugin-rest-endpoint-methods](https://github.com/octokit/plugin-rest-endpoint-methods.js) from 7.2.3 to 9.0.0.
- [Release notes](https://github.com/octokit/plugin-rest-endpoint-methods.js/releases)
- [Commits](https://github.com/octokit/plugin-rest-endpoint-methods.js/compare/v7.2.3...v9.0.0)

---
updated-dependencies:
- dependency-name: "@octokit/plugin-rest-endpoint-methods"
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-09-12 07:38:39 +00:00
CrazyMax
cb4777c2a5 Merge pull request #169 from docker/dependabot/npm_and_yarn/actions/core-1.10.1
build(deps): bump @actions/core from 1.10.0 to 1.10.1
2023-09-12 08:26:37 +02:00
dependabot[bot]
80845a187b build(deps): bump @actions/core from 1.10.0 to 1.10.1
Bumps [@actions/core](https://github.com/actions/toolkit/tree/HEAD/packages/core) from 1.10.0 to 1.10.1.
- [Changelog](https://github.com/actions/toolkit/blob/main/packages/core/RELEASES.md)
- [Commits](https://github.com/actions/toolkit/commits/HEAD/packages/core)

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

Signed-off-by: dependabot[bot] <support@github.com>
2023-09-11 22:19:30 +00:00
CrazyMax
66e22ce5a5 Merge pull request #167 from crazy-max/update-dev-deps
Some checks failed
publish / publish (push) Has been cancelled
chore: update dev dependencies
2023-09-07 10:10:08 +02:00
CrazyMax
7b63a1220d chore: update dev dependencies
Signed-off-by: CrazyMax <crazy-max@users.noreply.github.com>
2023-09-07 10:05:35 +02:00
CrazyMax
59715cf565 Merge pull request #168 from crazy-max/update-yarn
chore: update yarn to 3.6.3
2023-09-07 09:51:32 +02:00
CrazyMax
e8cb844045 chore: update yarn to 3.6.3
$ yarn set version stable
$ yarn plugin import interactive-tools

Signed-off-by: CrazyMax <crazy-max@users.noreply.github.com>
2023-09-07 09:29:22 +02:00
Tõnis Tiigi
a00c49179b Merge pull request #164 from crazy-max/node20
Some checks failed
publish / publish (push) Has been cancelled
dev: update to node 20
2023-09-06 10:33:51 -07:00
CrazyMax
dc2c313f17 dev: update to node 20
Signed-off-by: CrazyMax <crazy-max@users.noreply.github.com>
2023-09-06 16:26:01 +02:00
CrazyMax
c73f530a0e Merge pull request #161 from crazy-max/colima-error-logs
docker(install): print lima logs on "colima start" failure
2023-09-06 16:19:06 +02:00
CrazyMax
66fff011ac Merge pull request #165 from crazy-max/dev-update-docker-buildx
dev: update docker and buildx to latest
2023-09-06 16:09:05 +02:00
CrazyMax
c4085cc810 Merge pull request #166 from docker/bot/docker-releases-json
Update `.github/docker-releases.json`
2023-09-06 09:05:38 +02:00
crazy-max
79d8877773 github: update .github/docker-releases.json
Signed-off-by: GitHub <noreply@github.com>
2023-09-06 00:19:54 +00:00
CrazyMax
95ac6338f1 dev: update docker and buildx to latest
Signed-off-by: CrazyMax <crazy-max@users.noreply.github.com>
2023-09-05 12:36:02 +02:00
CrazyMax
7b72d5977b docker(install): print lima logs on "colima start" failure
Signed-off-by: CrazyMax <crazy-max@users.noreply.github.com>
2023-09-05 12:34:47 +02:00
CrazyMax
2ad0e2331e Merge pull request #163 from docker/dependabot/github_actions/actions/checkout-4
build(deps): bump actions/checkout from 3 to 4
2023-09-05 11:36:12 +02:00
dependabot[bot]
f2d14e7769 build(deps): bump actions/checkout from 3 to 4
Bumps [actions/checkout](https://github.com/actions/checkout) from 3 to 4.
- [Release notes](https://github.com/actions/checkout/releases)
- [Changelog](https://github.com/actions/checkout/blob/main/CHANGELOG.md)
- [Commits](https://github.com/actions/checkout/compare/v3...v4)

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

Signed-off-by: dependabot[bot] <support@github.com>
2023-09-04 22:40:48 +00:00
CrazyMax
33dc7b6ecb Merge pull request #162 from docker/bot/buildx-lab-releases-json
Update `.github/buildx-lab-releases.json`
2023-08-31 12:03:22 +02:00
crazy-max
6bf3dcef73 github: update .github/buildx-lab-releases.json
Signed-off-by: GitHub <noreply@github.com>
2023-08-31 10:02:55 +00:00
CrazyMax
31d5e42cc0 Merge pull request #159 from crazy-max/docker-install-colima-args
Some checks failed
publish / publish (push) Has been cancelled
docker(install): allow passing colima start args
2023-08-28 08:06:42 +02:00
CrazyMax
32e2a6bf6f docker(install): allow passing colima start args
Signed-off-by: CrazyMax <crazy-max@users.noreply.github.com>
2023-08-28 02:45:29 +02:00
CrazyMax
c8d666e020 Merge pull request #149 from docker/dependabot/npm_and_yarn/csv-parse-5.5.0
Some checks failed
publish / publish (push) Has been cancelled
build(deps): bump csv-parse from 5.4.0 to 5.5.0
2023-08-27 14:04:02 +02:00
CrazyMax
49ed594253 Merge pull request #156 from crazy-max/docker-install-daemon-config
docker(install): opt to set daemon config
2023-08-27 14:03:43 +02:00
CrazyMax
144df6eecc docker(install): opt to set daemon config
Signed-off-by: CrazyMax <crazy-max@users.noreply.github.com>
2023-08-27 13:30:14 +02:00
CrazyMax
c3e31dcc03 Merge pull request #155 from crazy-max/alt-buildx-releases
Some checks failed
publish / publish (push) Has been cancelled
buildx: alternative release repos to download buildx
2023-08-26 12:38:54 +02:00
CrazyMax
0f8ae202d6 buildx: alternative release repos to download buildx
Signed-off-by: CrazyMax <crazy-max@users.noreply.github.com>
2023-08-26 12:33:51 +02:00
CrazyMax
c674e727ec Merge pull request #154 from crazy-max/docker-install-stop
docker(install): stop docker daemon gracefully on linux
2023-08-26 12:20:53 +02:00
CrazyMax
a72977ca69 docker(install): stop docker daemon gracefully on linux
Signed-off-by: CrazyMax <crazy-max@users.noreply.github.com>
2023-08-26 12:15:49 +02:00
CrazyMax
a6558f6584 docker(install): enable debug for linux
Signed-off-by: CrazyMax <crazy-max@users.noreply.github.com>
2023-08-26 12:07:23 +02:00
CrazyMax
6a8f167e10 Merge pull request #153 from crazy-max/docker-install-linux-log
Some checks failed
publish / publish (push) Has been cancelled
docker(install): increase number of retries and log them
2023-08-26 11:30:02 +02:00
CrazyMax
19f5e39cc1 docker(install): increase number of retries and log them
Signed-off-by: CrazyMax <crazy-max@users.noreply.github.com>
2023-08-26 11:24:43 +02:00
CrazyMax
945af30d0c Merge pull request #152 from crazy-max/docker-install-colima-log
docker(install): SIGN_QEMU_BINARY env as workaround to replace existing signature
2023-08-26 11:17:58 +02:00
CrazyMax
24a56dbe42 docker(install): SIGN_QEMU_BINARY env as workaround to replace existing signature
Signed-off-by: CrazyMax <crazy-max@users.noreply.github.com>
2023-08-26 11:12:52 +02:00
CrazyMax
4e8d894523 docker(install): print ha.stderr.log on failure
Signed-off-by: CrazyMax <crazy-max@users.noreply.github.com>
2023-08-26 11:12:52 +02:00
CrazyMax
5b15c952e9 Merge pull request #151 from docker/bot/buildx-lab-releases-json
Update `.github/buildx-lab-releases.json`
2023-08-26 08:39:41 +02:00
crazy-max
9822f1ac09 github: update .github/buildx-lab-releases.json
Signed-off-by: GitHub <noreply@github.com>
2023-08-26 06:39:17 +00:00
CrazyMax
b9121242ac Merge pull request #150 from crazy-max/ci-buildx-lab-releases-json
ci: generate buildx-lab-releases.json
2023-08-26 08:38:48 +02:00
CrazyMax
c759388ee4 ci: generate buildx-lab-releases.json
Signed-off-by: CrazyMax <crazy-max@users.noreply.github.com>
2023-08-26 08:19:06 +02:00
dependabot[bot]
dfcd13e51e build(deps): bump csv-parse from 5.4.0 to 5.5.0
Bumps [csv-parse](https://github.com/adaltas/node-csv/tree/HEAD/packages/csv-parse) from 5.4.0 to 5.5.0.
- [Changelog](https://github.com/adaltas/node-csv/blob/master/packages/csv-parse/CHANGELOG.md)
- [Commits](https://github.com/adaltas/node-csv/commits/csv-parse@5.5.0/packages/csv-parse)

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

Signed-off-by: dependabot[bot] <support@github.com>
2023-08-25 22:19:29 +00:00
CrazyMax
2be3d9389c Merge pull request #147 from crazy-max/docker-install-backoff
docker(install): increase number of retries
2023-08-18 11:36:20 +02:00
CrazyMax
541f8784ed docker(install): increase number of retries
Signed-off-by: CrazyMax <crazy-max@users.noreply.github.com>
2023-08-18 11:32:07 +02:00
CrazyMax
4abccc4c6a test: docker install 24.0.5
Signed-off-by: CrazyMax <crazy-max@users.noreply.github.com>
2023-08-18 11:32:06 +02:00
CrazyMax
fcc92b092b Merge pull request #146 from crazy-max/bump-actions-io
Some checks failed
publish / publish (push) Has been cancelled
build(deps): bump @actions/io from 1.1.2 to 1.1.3
2023-08-11 15:03:09 +02:00
CrazyMax
6e043aee71 build(deps): bump @actions/io from 1.1.2 to 1.1.3
Signed-off-by: CrazyMax <crazy-max@users.noreply.github.com>
2023-08-11 13:55:04 +02:00
CrazyMax
7a37a260aa Merge pull request #143 from docker/dependabot/npm_and_yarn/actions/http-client-2.1.1
build(deps): bump @actions/http-client from 2.1.0 to 2.1.1
2023-08-08 09:54:31 +02:00
dependabot[bot]
1534dfad1b build(deps): bump @actions/http-client from 2.1.0 to 2.1.1
Bumps [@actions/http-client](https://github.com/actions/toolkit/tree/HEAD/packages/http-client) from 2.1.0 to 2.1.1.
- [Changelog](https://github.com/actions/toolkit/blob/main/packages/http-client/RELEASES.md)
- [Commits](https://github.com/actions/toolkit/commits/@actions/http-client@2.1.1/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>
2023-08-08 07:43:54 +00:00
CrazyMax
08e669e7d5 Merge pull request #144 from docker/dependabot/npm_and_yarn/actions/cache-3.2.2
build(deps): bump @actions/cache from 3.2.1 to 3.2.2
2023-08-08 09:43:07 +02:00
dependabot[bot]
83d366eb65 build(deps): bump @actions/cache from 3.2.1 to 3.2.2
Bumps [@actions/cache](https://github.com/actions/toolkit/tree/HEAD/packages/cache) from 3.2.1 to 3.2.2.
- [Changelog](https://github.com/actions/toolkit/blob/main/packages/cache/RELEASES.md)
- [Commits](https://github.com/actions/toolkit/commits/@actions/cache@3.2.2/packages/cache)

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

Signed-off-by: dependabot[bot] <support@github.com>
2023-08-08 07:38:56 +00:00
CrazyMax
5b760c8b3a Merge pull request #145 from crazy-max/update-dependabot
chore: set increase as versioning strategy
2023-08-08 09:00:08 +02:00
CrazyMax
674ee4994a chore: set increase as versioning strategy
Signed-off-by: CrazyMax <crazy-max@users.noreply.github.com>
2023-08-08 05:52:54 +02:00
CrazyMax
a56ca8f880 Merge pull request #142 from docker/dependabot/npm_and_yarn/handlebars-4.7.8
build(deps): bump handlebars from 4.7.7 to 4.7.8
2023-08-02 22:08:43 +02:00
CrazyMax
b833243795 bump handlebars to 4.7.8 in package.json
Signed-off-by: CrazyMax <crazy-max@users.noreply.github.com>
2023-08-02 22:03:10 +02:00
dependabot[bot]
823d1cfce9 build(deps): bump handlebars from 4.7.7 to 4.7.8
Bumps [handlebars](https://github.com/handlebars-lang/handlebars.js) from 4.7.7 to 4.7.8.
- [Release notes](https://github.com/handlebars-lang/handlebars.js/releases)
- [Changelog](https://github.com/handlebars-lang/handlebars.js/blob/v4.7.8/release-notes.md)
- [Commits](https://github.com/handlebars-lang/handlebars.js/compare/v4.7.7...v4.7.8)

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

Signed-off-by: dependabot[bot] <support@github.com>
2023-08-01 23:08:08 +00:00
CrazyMax
97bc88d30b Merge pull request #140 from docker/bot/docker-releases-json
Update `.github/docker-releases.json`
2023-07-28 16:31:15 +02:00
CrazyMax
ed4441e704 Merge pull request #139 from docker/dependabot/npm_and_yarn/word-wrap-1.2.5
build(deps): bump word-wrap from 1.2.3 to 1.2.5
2023-07-28 16:30:53 +02:00
crazy-max
7a4b2122b2 github: update .github/docker-releases.json
Signed-off-by: GitHub <noreply@github.com>
2023-07-25 00:25:29 +00:00
dependabot[bot]
959fb2fd2e build(deps): bump word-wrap from 1.2.3 to 1.2.5
Bumps [word-wrap](https://github.com/jonschlinkert/word-wrap) from 1.2.3 to 1.2.5.
- [Release notes](https://github.com/jonschlinkert/word-wrap/releases)
- [Commits](https://github.com/jonschlinkert/word-wrap/compare/1.2.3...1.2.5)

---
updated-dependencies:
- dependency-name: word-wrap
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-07-23 21:28:12 +00:00
CrazyMax
2c0d9d0c4e Merge pull request #137 from docker/bot/buildx-releases-json
Update `.github/buildx-releases.json`
2023-07-20 02:06:23 +02:00
crazy-max
3199bce461 github: update .github/buildx-releases.json
Signed-off-by: GitHub <noreply@github.com>
2023-07-19 00:28:09 +00:00
CrazyMax
f1593e3aa2 Merge pull request #135 from crazy-max/fix-buildx-install-platform
Some checks failed
publish / publish (push) Has been cancelled
buildx: build for local platform
2023-07-12 14:23:45 +02:00
CrazyMax
db5c712dec buildx: build for local platform
Signed-off-by: CrazyMax <crazy-max@users.noreply.github.com>
2023-07-12 14:15:26 +02:00
CrazyMax
fd97af130e Merge pull request #132 from docker/dependabot/npm_and_yarn/semver-7.5.4
build(deps): bump semver from 7.5.3 to 7.5.4
2023-07-12 14:05:14 +02:00
CrazyMax
ec700a3813 bump semver to 7.5.4 in package.json
Signed-off-by: CrazyMax <crazy-max@users.noreply.github.com>
2023-07-10 16:02:16 +02:00
CrazyMax
324e807d2e Merge pull request #133 from docker/bot/docker-releases-json
Update `.github/docker-releases.json`
2023-07-10 11:58:44 +02:00
crazy-max
8e45354f0c github: update .github/docker-releases.json
Signed-off-by: GitHub <noreply@github.com>
2023-07-08 00:25:11 +00:00
dependabot[bot]
906aacf7ff build(deps): bump semver from 7.5.3 to 7.5.4
Bumps [semver](https://github.com/npm/node-semver) from 7.5.3 to 7.5.4.
- [Release notes](https://github.com/npm/node-semver/releases)
- [Changelog](https://github.com/npm/node-semver/blob/main/CHANGELOG.md)
- [Commits](https://github.com/npm/node-semver/compare/v7.5.3...v7.5.4)

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

Signed-off-by: dependabot[bot] <support@github.com>
2023-07-07 22:25:49 +00:00
CrazyMax
1d9f94872d Merge pull request #130 from docker/bot/docker-releases-json
Some checks failed
publish / publish (push) Has been cancelled
Update `.github/docker-releases.json`
2023-07-06 21:07:22 +02:00
crazy-max
b99f9ec3ef github: update .github/docker-releases.json
Signed-off-by: GitHub <noreply@github.com>
2023-07-06 19:06:55 +00:00
CrazyMax
8d02bad9a9 Merge pull request #129 from crazy-max/buildx-bin-cache
buildx: cache binary to hosted tool cache and GHA cache backend
2023-07-06 21:06:29 +02:00
CrazyMax
c1edd0b5e3 buildx: improve vspec fingerprint for caching
Signed-off-by: CrazyMax <crazy-max@users.noreply.github.com>
2023-07-06 16:16:12 +02:00
CrazyMax
70c0e12f74 util: trimPrefix and trimSuffix methods
Signed-off-by: CrazyMax <crazy-max@users.noreply.github.com>
2023-07-06 16:15:15 +02:00
CrazyMax
ddcd63c92a buildx: cache binary to hosted tool cache and GHA cache backend
Signed-off-by: CrazyMax <crazy-max@users.noreply.github.com>
2023-07-06 16:15:15 +02:00
CrazyMax
0e5fc3661a Merge pull request #128 from docker/bot/buildx-releases-json
Update `.github/buildx-releases.json`
2023-07-06 09:34:29 +02:00
crazy-max
3d49d98580 github: update .github/buildx-releases.json
Signed-off-by: GitHub <noreply@github.com>
2023-07-06 00:01:26 +00:00
CrazyMax
ca519e1aa8 Merge pull request #122 from crazy-max/buildx-inspect-fup
Some checks failed
publish / publish (push) Has been cancelled
buildx: handle new fields when parsing inspect output
2023-06-28 16:21:14 +02:00
CrazyMax
b13ef76b5e Merge pull request #126 from docker/dependabot/npm_and_yarn/semver-7.5.3
build(deps): bump semver from 7.5.2 to 7.5.3
2023-06-26 20:11:15 +02:00
CrazyMax
2043356c92 bump semver to 7.5.3 in package.json
Signed-off-by: CrazyMax <crazy-max@users.noreply.github.com>
2023-06-26 15:19:34 +02:00
dependabot[bot]
84371bb189 build(deps): bump semver from 7.5.2 to 7.5.3
Bumps [semver](https://github.com/npm/node-semver) from 7.5.2 to 7.5.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.5.2...v7.5.3)

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

Signed-off-by: dependabot[bot] <support@github.com>
2023-06-26 13:13:11 +00:00
CrazyMax
ad6e71b881 Merge pull request #123 from docker/dependabot/npm_and_yarn/semver-7.5.2
build(deps): bump semver from 7.5.1 to 7.5.2
2023-06-26 15:09:58 +02:00
CrazyMax
e47142d45b bump semver to 7.5.2 in package.json
Signed-off-by: CrazyMax <crazy-max@users.noreply.github.com>
2023-06-21 01:39:15 +02:00
CrazyMax
e79f79bcd9 Merge pull request #121 from docker/dependabot/npm_and_yarn/octokit/plugin-rest-endpoint-methods-7.2.3
build(deps): bump @octokit/plugin-rest-endpoint-methods from 7.2.1 to 7.2.3
2023-06-21 01:37:47 +02:00
CrazyMax
ab02f62089 buildx: handle new fields for inspect output
Signed-off-by: CrazyMax <crazy-max@users.noreply.github.com>
2023-06-16 22:28:21 +02:00
dependabot[bot]
8cef70fefb build(deps): bump semver from 7.5.1 to 7.5.2
Bumps [semver](https://github.com/npm/node-semver) from 7.5.1 to 7.5.2.
- [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.5.1...v7.5.2)

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

Signed-off-by: dependabot[bot] <support@github.com>
2023-06-15 23:04:28 +00:00
CrazyMax
321a028303 update package.json
Signed-off-by: CrazyMax <crazy-max@users.noreply.github.com>
2023-06-15 16:25:58 +02:00
CrazyMax
80eaf0972b Merge pull request #119 from docker/bot/buildx-releases-json
Update `.github/buildx-releases.json`
2023-06-15 16:24:15 +02:00
CrazyMax
101a44b0a7 Merge pull request #120 from docker/dependabot/github_actions/peter-evans/create-pull-request-5.0.2
build(deps): bump peter-evans/create-pull-request from 5.0.1 to 5.0.2
2023-06-15 16:23:57 +02:00
dependabot[bot]
22cc0b6c27 build(deps): bump @octokit/plugin-rest-endpoint-methods
Bumps [@octokit/plugin-rest-endpoint-methods](https://github.com/octokit/plugin-rest-endpoint-methods.js) from 7.2.1 to 7.2.3.
- [Release notes](https://github.com/octokit/plugin-rest-endpoint-methods.js/releases)
- [Commits](https://github.com/octokit/plugin-rest-endpoint-methods.js/compare/v7.2.1...v7.2.3)

---
updated-dependencies:
- dependency-name: "@octokit/plugin-rest-endpoint-methods"
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-06-14 23:05:16 +00:00
dependabot[bot]
21fdfc52c4 build(deps): bump peter-evans/create-pull-request from 5.0.1 to 5.0.2
Bumps [peter-evans/create-pull-request](https://github.com/peter-evans/create-pull-request) from 5.0.1 to 5.0.2.
- [Release notes](https://github.com/peter-evans/create-pull-request/releases)
- [Commits](284f54f989...153407881e)

---
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>
2023-06-14 23:02:24 +00:00
crazy-max
eebb677d5a github: update .github/buildx-releases.json
Signed-off-by: GitHub <noreply@github.com>
2023-06-14 00:15:48 +00:00
CrazyMax
495c96b050 Merge pull request #115 from crazy-max/input-comment-opt
Some checks failed
publish / publish (push) Has been cancelled
util: comment opt for getInputList
2023-06-13 10:31:11 +02:00
CrazyMax
b1e0aeed50 Merge pull request #114 from crazy-max/docker-config
docker: configFile method
2023-06-12 19:32:33 +02:00
CrazyMax
d0ee813215 Merge pull request #118 from crazy-max/git-remoteSha-token
git: use GitHub API for remoteSha if token provided
2023-06-12 19:30:14 +02:00
CrazyMax
b2a51dd6b4 git: use GitHub API for remoteSha if token provided
Signed-off-by: CrazyMax <crazy-max@users.noreply.github.com>
2023-06-12 19:20:42 +02:00
CrazyMax
acd3c9df19 Merge pull request #116 from crazy-max/buildx-install-private
Some checks failed
publish / publish (push) Has been cancelled
buildx: install from private repo support
2023-06-10 01:59:18 +02:00
CrazyMax
8ad595b445 buildx: install from private repo support
Signed-off-by: CrazyMax <crazy-max@users.noreply.github.com>
2023-06-09 17:56:36 +02:00
CrazyMax
9450a454a7 util: comment opt for getInputList
Signed-off-by: CrazyMax <crazy-max@users.noreply.github.com>
2023-06-09 14:11:57 +02:00
CrazyMax
a7221012c8 docker: configFile method
Signed-off-by: CrazyMax <crazy-max@users.noreply.github.com>
2023-06-09 00:02:06 +02:00
CrazyMax
6fc5565c73 Merge pull request #113 from docker/bot/buildx-releases-json
Update `.github/buildx-releases.json`
2023-06-08 15:22:37 +02:00
crazy-max
7492c7193a github: update .github/buildx-releases.json
Signed-off-by: GitHub <noreply@github.com>
2023-06-08 00:17:11 +00:00
CrazyMax
f05a598a08 Merge pull request #112 from crazy-max/fix-git-ref
Some checks failed
publish / publish (push) Has been cancelled
git: fall back to git tag in detached HEAD state
2023-06-07 15:17:00 +02:00
CrazyMax
fc85cef9e1 git: fall back to git tag in detached HEAD state
Signed-off-by: CrazyMax <crazy-max@users.noreply.github.com>
2023-06-07 14:57:37 +02:00
CrazyMax
a5b683b46e Merge pull request #111 from crazy-max/fix-buildx-build-err
buildx(install): throw error on failed build
2023-06-07 14:54:24 +02:00
CrazyMax
0b166c63ef Merge pull request #110 from vinicius73/feature/add-support-to-secret-env
Add support to secret env
2023-06-06 14:18:01 +02:00
CrazyMax
e072607266 buildx(install): throw error on failed build
Signed-off-by: CrazyMax <crazy-max@users.noreply.github.com>
2023-06-05 10:19:30 +02:00
Vinicius Reis
a1ffbe9606 Add support to secret env 2023-06-01 10:19:50 -03:00
CrazyMax
fdd740da2d Merge pull request #108 from docker/dependabot/npm_and_yarn/csv-parse-5.4.0
build(deps): bump csv-parse from 5.3.10 to 5.4.0
2023-05-30 13:23:43 +02:00
CrazyMax
8a9577d5e2 bump csv-parse to 5.4.0 in package.json
Signed-off-by: CrazyMax <crazy-max@users.noreply.github.com>
2023-05-28 22:19:41 +02:00
CrazyMax
ca7a29d2d7 Merge pull request #107 from docker/bot/buildx-releases-json
Update `.github/buildx-releases.json`
2023-05-28 22:16:52 +02:00
CrazyMax
d39585b339 Merge pull request #106 from docker/bot/docker-releases-json
Update `.github/docker-releases.json`
2023-05-28 22:16:36 +02:00
dependabot[bot]
2e3ba6678f build(deps): bump csv-parse from 5.3.10 to 5.4.0
Bumps [csv-parse](https://github.com/adaltas/node-csv/tree/HEAD/packages/csv-parse) from 5.3.10 to 5.4.0.
- [Changelog](https://github.com/adaltas/node-csv/blob/master/packages/csv-parse/CHANGELOG.md)
- [Commits](https://github.com/adaltas/node-csv/commits/csv-parse@5.4.0/packages/csv-parse)

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

Signed-off-by: dependabot[bot] <support@github.com>
2023-05-26 23:03:33 +00:00
crazy-max
337a7240a5 github: update .github/docker-releases.json
Signed-off-by: GitHub <noreply@github.com>
2023-05-26 12:07:18 +00:00
crazy-max
728fcdbea9 github: update .github/buildx-releases.json
Signed-off-by: GitHub <noreply@github.com>
2023-05-23 00:15:40 +00:00
CrazyMax
dfa1a320c4 Merge pull request #104 from docker/dependabot/npm_and_yarn/semver-7.5.1
build(deps): bump semver from 7.5.0 to 7.5.1
2023-05-17 15:17:31 +02:00
CrazyMax
4ff86b974f bump @types/semver to 7.5.0 in package.json
Signed-off-by: CrazyMax <crazy-max@users.noreply.github.com>
2023-05-17 14:13:50 +02:00
CrazyMax
181782ba21 bump semver to 7.5.1 in package.json
Signed-off-by: CrazyMax <crazy-max@users.noreply.github.com>
2023-05-17 14:12:43 +02:00
CrazyMax
dd977d3597 Merge pull request #105 from docker/bot/buildx-releases-json
Update `.github/buildx-releases.json`
2023-05-17 14:10:53 +02:00
CrazyMax
776422c908 Merge pull request #103 from docker/bot/docker-releases-json
Update `.github/docker-releases.json`
2023-05-17 14:10:36 +02:00
crazy-max
d86a125551 github: update .github/docker-releases.json
Signed-off-by: GitHub <noreply@github.com>
2023-05-17 00:24:07 +00:00
crazy-max
633f41191f github: update .github/buildx-releases.json
Signed-off-by: GitHub <noreply@github.com>
2023-05-13 00:14:08 +00:00
dependabot[bot]
79def6b218 build(deps): bump semver from 7.5.0 to 7.5.1
Bumps [semver](https://github.com/npm/node-semver) from 7.5.0 to 7.5.1.
- [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.5.0...v7.5.1)

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

Signed-off-by: dependabot[bot] <support@github.com>
2023-05-12 23:05:26 +00:00
CrazyMax
31e5d12fd9 Merge pull request #101 from docker/dependabot/github_actions/peter-evans/create-pull-request-5.0.1
build(deps): bump peter-evans/create-pull-request from 5.0.0 to 5.0.1
2023-05-08 14:53:09 +02:00
CrazyMax
1eda4b6a6c Merge pull request #102 from docker/dependabot/npm_and_yarn/csv-parse-5.3.10
build(deps): bump csv-parse from 5.3.8 to 5.3.10
2023-05-08 14:52:54 +02:00
CrazyMax
c71f3fe1ba Merge pull request #99 from docker/bot/docker-releases-json
Update `.github/docker-releases.json`
2023-05-08 14:52:25 +02:00
crazy-max
8c8294806e github: update .github/docker-releases.json
Signed-off-by: GitHub <noreply@github.com>
2023-05-08 12:07:20 +00:00
dependabot[bot]
ec382328c4 build(deps): bump csv-parse from 5.3.8 to 5.3.10
Bumps [csv-parse](https://github.com/adaltas/node-csv/tree/HEAD/packages/csv-parse) from 5.3.8 to 5.3.10.
- [Changelog](https://github.com/adaltas/node-csv/blob/master/packages/csv-parse/CHANGELOG.md)
- [Commits](https://github.com/adaltas/node-csv/commits/csv-parse@5.3.10/packages/csv-parse)

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

Signed-off-by: dependabot[bot] <support@github.com>
2023-05-04 23:04:20 +00:00
dependabot[bot]
051c91700a build(deps): bump peter-evans/create-pull-request from 5.0.0 to 5.0.1
Bumps [peter-evans/create-pull-request](https://github.com/peter-evans/create-pull-request) from 5.0.0 to 5.0.1.
- [Release notes](https://github.com/peter-evans/create-pull-request/releases)
- [Commits](5b4a9f6a9e...284f54f989)

---
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>
2023-05-02 23:01:40 +00:00
CrazyMax
471068fc6f Merge pull request #97 from docker/dependabot/github_actions/docker/bake-action-3
build(deps): bump docker/bake-action from 2 to 3
2023-04-19 11:06:35 +02:00
dependabot[bot]
60feaf2f84 build(deps): bump docker/bake-action from 2 to 3
Bumps [docker/bake-action](https://github.com/docker/bake-action) from 2 to 3.
- [Release notes](https://github.com/docker/bake-action/releases)
- [Commits](https://github.com/docker/bake-action/compare/v2...v3)

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

Signed-off-by: dependabot[bot] <support@github.com>
2023-04-18 23:02:30 +00:00
CrazyMax
ec33a95de8 Merge pull request #92 from docker/dependabot/npm_and_yarn/csv-parse-5.3.8
Some checks failed
publish / publish (push) Has been cancelled
build(deps): bump csv-parse from 5.3.6 to 5.3.8
2023-04-18 17:26:04 +02:00
CrazyMax
b45f7f151f fix package.json
Signed-off-by: CrazyMax <crazy-max@users.noreply.github.com>
2023-04-18 17:15:03 +02:00
dependabot[bot]
0ad6a34d2a build(deps): bump csv-parse from 5.3.6 to 5.3.8
Bumps [csv-parse](https://github.com/adaltas/node-csv/tree/HEAD/packages/csv-parse) from 5.3.6 to 5.3.8.
- [Release notes](https://github.com/adaltas/node-csv/releases)
- [Changelog](https://github.com/adaltas/node-csv/blob/master/packages/csv-parse/CHANGELOG.md)
- [Commits](https://github.com/adaltas/node-csv/commits/csv-parse@5.3.8/packages/csv-parse)

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

Signed-off-by: dependabot[bot] <support@github.com>
2023-04-18 15:11:26 +00:00
CrazyMax
4445b1e4fc Merge pull request #93 from docker/dependabot/npm_and_yarn/semver-7.5.0
build(deps): bump semver from 7.4.0 to 7.5.0
2023-04-18 17:07:18 +02:00
CrazyMax
9cca84f1d8 fix package.json
Signed-off-by: CrazyMax <crazy-max@users.noreply.github.com>
2023-04-18 16:54:10 +02:00
CrazyMax
cf39a26d01 Merge pull request #94 from docker/bot/docker-releases-json
Update `.github/docker-releases.json`
2023-04-18 16:52:29 +02:00
CrazyMax
3ebf172e37 Merge pull request #95 from crazy-max/fix-bake-def-parse
bake: missing overrides when parsing definition
2023-04-18 16:52:12 +02:00
CrazyMax
dba2a69f61 bake: missing overrides when parsing definition
Signed-off-by: CrazyMax <crazy-max@users.noreply.github.com>
2023-04-18 14:16:46 +02:00
crazy-max
dd07d9ea06 github: update .github/docker-releases.json
Signed-off-by: GitHub <noreply@github.com>
2023-04-18 00:20:32 +00:00
dependabot[bot]
0af70ae7cf build(deps): bump semver from 7.4.0 to 7.5.0
Bumps [semver](https://github.com/npm/node-semver) from 7.4.0 to 7.5.0.
- [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.4.0...v7.5.0)

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

Signed-off-by: dependabot[bot] <support@github.com>
2023-04-17 23:08:59 +00:00
CrazyMax
0f6ebcb798 Merge pull request #91 from docker/bot/docker-releases-json
Update `.github/docker-releases.json`
2023-04-16 09:12:43 +02:00
crazy-max
3f543accc6 github: update .github/docker-releases.json
Signed-off-by: GitHub <noreply@github.com>
2023-04-15 00:22:48 +00:00
CrazyMax
16bbae82de Merge pull request #88 from docker/dependabot/github_actions/peter-evans/create-pull-request-5.0.0
Some checks failed
publish / publish (push) Has been cancelled
build(deps): bump peter-evans/create-pull-request from 4.2.4 to 5.0.0
2023-04-11 09:34:34 +02:00
CrazyMax
8b597ca8bc Merge pull request #90 from docker/dependabot/npm_and_yarn/semver-7.4.0
build(deps): bump semver from 7.3.8 to 7.4.0
2023-04-11 07:57:08 +02:00
CrazyMax
dc9c9bc2b7 bump semver in package.json
Signed-off-by: CrazyMax <crazy-max@users.noreply.github.com>
2023-04-11 07:09:05 +02:00
dependabot[bot]
63659873d5 build(deps): bump semver from 7.3.8 to 7.4.0
Bumps [semver](https://github.com/npm/node-semver) from 7.3.8 to 7.4.0.
- [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.3.8...v7.4.0)

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

Signed-off-by: dependabot[bot] <support@github.com>
2023-04-10 23:07:39 +00:00
CrazyMax
6327a9b5dc Merge pull request #89 from crazy-max/ci-virtual-env
ci: fix virtual env workflow
2023-04-08 21:32:17 +02:00
CrazyMax
50b16df20c ci: fix virtual env workflow
Signed-off-by: CrazyMax <crazy-max@users.noreply.github.com>
2023-04-08 07:38:09 +02:00
dependabot[bot]
0b1e18cfc2 build(deps): bump peter-evans/create-pull-request from 4.2.4 to 5.0.0
Bumps [peter-evans/create-pull-request](https://github.com/peter-evans/create-pull-request) from 4.2.4 to 5.0.0.
- [Release notes](https://github.com/peter-evans/create-pull-request/releases)
- [Commits](38e0b6e68b...5b4a9f6a9e)

---
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>
2023-04-05 23:02:30 +00:00
CrazyMax
741d2e1319 Merge pull request #87 from docker/bot/docker-releases-json
Update `.github/docker-releases.json`
2023-04-05 15:32:42 +02:00
crazy-max
9e10ac6818 github: update .github/docker-releases.json
Signed-off-by: GitHub <noreply@github.com>
2023-04-05 12:08:18 +00:00
CrazyMax
65f12dcfd0 Merge pull request #86 from docker/bot/docker-releases-json
Update `.github/docker-releases.json`
2023-04-01 02:32:06 +02:00
crazy-max
46da20f01d github: update .github/docker-releases.json
Signed-off-by: GitHub <noreply@github.com>
2023-04-01 00:22:44 +00:00
CrazyMax
0af3fda4f0 Merge pull request #85 from docker/bot/docker-releases-json
Update `.github/docker-releases.json`
2023-03-29 02:31:03 +02:00
crazy-max
6179a5a445 github: update .github/docker-releases.json
Signed-off-by: GitHub <noreply@github.com>
2023-03-29 00:24:54 +00:00
CrazyMax
26d9901f07 Merge pull request #84 from crazy-max/bake-toolkit
Some checks failed
publish / publish (push) Has been cancelled
toolkit: add bake
2023-03-28 08:56:30 +02:00
CrazyMax
462c95e83d toolkit: add bake
Signed-off-by: CrazyMax <crazy-max@users.noreply.github.com>
2023-03-28 08:51:43 +02:00
CrazyMax
e185293749 Merge pull request #83 from crazy-max/bake-empty-source
bake: check for empty source
2023-03-28 08:50:32 +02:00
CrazyMax
2d1ce9a223 bake: check for empty source
Signed-off-by: CrazyMax <crazy-max@users.noreply.github.com>
2023-03-27 17:52:54 +02:00
CrazyMax
2d105f7337 Merge pull request #82 from crazy-max/update-dev
Some checks failed
publish / publish (push) Has been cancelled
chore: update dev dependencies
2023-03-26 21:31:01 +02:00
CrazyMax
5df47fe964 chore: update dev dependencies
Signed-off-by: CrazyMax <crazy-max@users.noreply.github.com>
2023-03-26 21:16:09 +02:00
CrazyMax
61527248dd Merge pull request #77 from crazy-max/fix-tc-cache
buildx: set consistent platform when caching binary
2023-03-26 20:43:07 +02:00
CrazyMax
210b7421e4 Merge pull request #81 from crazy-max/bake-workdir
bake: workdir support for parsing definitions
2023-03-26 20:14:00 +02:00
CrazyMax
e9aa8365e3 bake: workdir support for parsing definitions
Signed-off-by: CrazyMax <crazy-max@users.noreply.github.com>
2023-03-26 19:42:37 +02:00
CrazyMax
85557d0e0d Merge pull request #80 from crazy-max/fix-bake-def
bake: fix undefined output property
2023-03-26 19:36:31 +02:00
CrazyMax
a7448298e0 bake: fix undefined output property
Signed-off-by: CrazyMax <crazy-max@users.noreply.github.com>
2023-03-26 19:26:59 +02:00
CrazyMax
d0929eeb16 Merge pull request #79 from crazy-max/itg
chore: rename e2e to itg tests
2023-03-26 19:12:40 +02:00
CrazyMax
da9600bbef docker: retries for install integration tests
Signed-off-by: CrazyMax <crazy-max@users.noreply.github.com>
2023-03-26 19:03:34 +02:00
CrazyMax
70fba4e078 ci: concurrency check
Signed-off-by: CrazyMax <crazy-max@users.noreply.github.com>
2023-03-26 19:03:34 +02:00
CrazyMax
a89868cdc5 ci: move validate to a dedicated workflow
Signed-off-by: CrazyMax <crazy-max@users.noreply.github.com>
2023-03-26 19:03:34 +02:00
CrazyMax
49bde5a54a chore: rename e2e to itg tests
Signed-off-by: CrazyMax <crazy-max@users.noreply.github.com>
2023-03-26 19:03:18 +02:00
CrazyMax
4fcbf75fc4 Merge pull request #78 from crazy-max/bake-remote-def
bake: support remote definition when parsing
2023-03-26 19:02:57 +02:00
CrazyMax
314f8f431e bake: support remote definition when parsing
Signed-off-by: CrazyMax <crazy-max@users.noreply.github.com>
2023-03-25 17:06:09 +01:00
CrazyMax
7fb0476dc8 util: isValidRef method
Signed-off-by: CrazyMax <crazy-max@users.noreply.github.com>
2023-03-25 16:01:24 +01:00
CrazyMax
9b9ff70b75 util: fix isValidURL
Signed-off-by: CrazyMax <crazy-max@users.noreply.github.com>
2023-03-25 16:01:10 +01:00
CrazyMax
e7eee6e401 buildx: set consistent platform when caching binary
Signed-off-by: CrazyMax <crazy-max@users.noreply.github.com>
2023-03-25 13:58:21 +01:00
CrazyMax
b2fd32e0ef Merge pull request #74 from docker/dependabot/npm_and_yarn/actions/io-1.1.3
build(deps): bump @actions/io from 1.1.2 to 1.1.3
2023-03-25 13:45:29 +01:00
CrazyMax
417136db1e Merge pull request #73 from docker/dependabot/github_actions/peter-evans/create-pull-request-4.2.4
build(deps): bump peter-evans/create-pull-request from 4.2.3 to 4.2.4
2023-03-16 10:07:40 +00:00
dependabot[bot]
e033e82024 build(deps): bump @actions/io from 1.1.2 to 1.1.3
Bumps [@actions/io](https://github.com/actions/toolkit/tree/HEAD/packages/io) from 1.1.2 to 1.1.3.
- [Release notes](https://github.com/actions/toolkit/releases)
- [Changelog](https://github.com/actions/toolkit/blob/main/packages/io/RELEASES.md)
- [Commits](https://github.com/actions/toolkit/commits/HEAD/packages/io)

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

Signed-off-by: dependabot[bot] <support@github.com>
2023-03-15 23:07:27 +00:00
dependabot[bot]
b3328f5ec4 build(deps): bump peter-evans/create-pull-request from 4.2.3 to 4.2.4
Bumps [peter-evans/create-pull-request](https://github.com/peter-evans/create-pull-request) from 4.2.3 to 4.2.4.
- [Release notes](https://github.com/peter-evans/create-pull-request/releases)
- [Commits](2b011faafd...38e0b6e68b)

---
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>
2023-03-15 23:04:20 +00:00
CrazyMax
b0518231d0 Merge pull request #72 from crazy-max/bump-csv-parse
Some checks failed
publish / publish (push) Has been cancelled
build(deps): bump csv-parse from 5.3.5 to 5.3.6
2023-03-13 09:55:51 +00:00
CrazyMax
c0da63f810 build(deps): bump csv-parse from 5.3.5 to 5.3.6
Signed-off-by: CrazyMax <crazy-max@users.noreply.github.com>
2023-03-13 10:51:00 +01:00
CrazyMax
041d9693ab Merge pull request #71 from crazy-max/bake
bake class to parse definitions and handle exporters type
2023-03-13 09:49:01 +00:00
CrazyMax
39158d8047 bake class to parse definitions and handle exporters type
Signed-off-by: CrazyMax <crazy-max@users.noreply.github.com>
2023-03-13 10:44:48 +01:00
CrazyMax
a6c94b5167 Merge pull request #70 from crazy-max/static-inputs
buildx: make inputs methods static
2023-03-13 09:42:37 +00:00
CrazyMax
a5943234fd Merge pull request #69 from crazy-max/bump-releases-json
Bump releases-json action to 6dc3187
2023-03-13 08:54:48 +00:00
CrazyMax
03977693c1 buildx: make inputs methods static
Signed-off-by: CrazyMax <crazy-max@users.noreply.github.com>
2023-03-12 23:40:54 +01:00
CrazyMax
d6d770f303 Bump releases-json action to 6dc3187
Signed-off-by: CrazyMax <crazy-max@users.noreply.github.com>
2023-03-12 13:13:02 +01:00
CrazyMax
8df8cee02f Merge pull request #68 from crazy-max/fix-driver-opts-parsing
Some checks failed
publish / publish (push) Has been cancelled
builder: fix regex to parse driver-opts
2023-03-11 16:47:42 +00:00
CrazyMax
94febd1da7 builder: fix regex to parse driver-opts
Signed-off-by: CrazyMax <crazy-max@users.noreply.github.com>
2023-03-11 16:48:56 +01:00
CrazyMax
b7cdc617ce Merge pull request #65 from docker/dependabot/npm_and_yarn/csv-parse-5.3.6
build(deps): bump csv-parse from 5.3.5 to 5.3.6
2023-03-08 18:16:10 +00:00
CrazyMax
75c0c7fac0 Merge pull request #66 from docker/dependabot/npm_and_yarn/actions/http-client-2.1.0
build(deps): bump @actions/http-client from 2.0.1 to 2.1.0
2023-03-08 18:15:51 +00:00
CrazyMax
e9cfd63e16 Merge pull request #67 from docker/bot/buildx-releases-json
Some checks failed
publish / publish (push) Has been cancelled
Update `.github/buildx-releases.json`
2023-03-07 10:07:18 +01:00
crazy-max
ac61bd8949 github: update .github/buildx-releases.json
Signed-off-by: GitHub <noreply@github.com>
2023-03-07 00:18:02 +00:00
dependabot[bot]
7b50104faa build(deps): bump @actions/http-client from 2.0.1 to 2.1.0
Bumps [@actions/http-client](https://github.com/actions/toolkit/tree/HEAD/packages/http-client) from 2.0.1 to 2.1.0.
- [Release notes](https://github.com/actions/toolkit/releases)
- [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-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-03-06 23:20:20 +00:00
dependabot[bot]
d7735e9ddf build(deps): bump csv-parse from 5.3.5 to 5.3.6
Bumps [csv-parse](https://github.com/adaltas/node-csv/tree/HEAD/packages/csv-parse) from 5.3.5 to 5.3.6.
- [Release notes](https://github.com/adaltas/node-csv/releases)
- [Changelog](https://github.com/adaltas/node-csv/blob/master/packages/csv-parse/CHANGELOG.md)
- [Commits](https://github.com/adaltas/node-csv/commits/csv-parse@5.3.6/packages/csv-parse)

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

Signed-off-by: dependabot[bot] <support@github.com>
2023-03-06 23:18:48 +00:00
CrazyMax
dd1544e1be Merge pull request #64 from crazy-max/builder-exists
builder: exists method
2023-03-03 15:24:01 +01:00
CrazyMax
32af66cb28 builder: exists method
Signed-off-by: CrazyMax <crazy-max@users.noreply.github.com>
2023-03-03 14:49:22 +01:00
CrazyMax
2090433c0d Merge pull request #63 from crazy-max/docker-latest
docker: support latest on install
2023-03-03 14:15:40 +01:00
CrazyMax
50c11e6dce docker: support latest on install
Signed-off-by: CrazyMax <crazy-max@users.noreply.github.com>
2023-03-03 14:07:27 +01:00
CrazyMax
0f9cc7c29f Merge pull request #62 from crazy-max/docker-custom-context
docker: allow custom context name on install
2023-03-03 14:00:23 +01:00
CrazyMax
dfc72fd31c docker: allow custom context name on install
Signed-off-by: CrazyMax <crazy-max@users.noreply.github.com>
2023-03-03 10:40:00 +01:00
CrazyMax
317ef51ab5 Merge pull request #60 from docker/bot/docker-releases-json
Update `.github/docker-releases.json`
2023-03-03 10:37:21 +01:00
crazy-max
3a30337d24 github: update .github/docker-releases.json
Signed-off-by: GitHub <noreply@github.com>
2023-03-03 09:36:41 +00:00
CrazyMax
fc16ecda91 Merge pull request #59 from crazy-max/docker-releases
ci: generate docker-releases.json
2023-03-03 10:36:10 +01:00
CrazyMax
48cefc1da0 ci: generate docker-releases.json
Signed-off-by: CrazyMax <crazy-max@users.noreply.github.com>
2023-03-02 19:16:57 +01:00
CrazyMax
fda3be9699 Merge pull request #58 from crazy-max/docker-install
Some checks failed
publish / publish (push) Has been cancelled
docker: install, download and tearDown methods
2023-03-02 15:58:16 +01:00
CrazyMax
53ca96fcc4 Merge pull request #55 from crazy-max/git-context
git: alternative github context and additional methods
2023-03-02 15:50:12 +01:00
CrazyMax
70390c899b docker: tearDown method
Signed-off-by: CrazyMax <crazy-max@users.noreply.github.com>
2023-03-02 15:39:26 +01:00
CrazyMax
ac9d9d9a1b docker: detach dockerd for linux install
Signed-off-by: CrazyMax <crazy-max@users.noreply.github.com>
2023-03-02 15:39:26 +01:00
CrazyMax
3c2fe5ddb2 docker: move assets to ts
Signed-off-by: CrazyMax <crazy-max@users.noreply.github.com>
2023-03-02 15:39:26 +01:00
CrazyMax
adad1e3786 ci: build workflow
Signed-off-by: CrazyMax <crazy-max@users.noreply.github.com>
2023-03-02 15:39:25 +01:00
CrazyMax
3a0f4db686 fix license headers
Signed-off-by: CrazyMax <crazy-max@users.noreply.github.com>
2023-03-02 15:39:25 +01:00
CrazyMax
2201fc1194 e2e: coverage reports
Signed-off-by: CrazyMax <crazy-max@users.noreply.github.com>
2023-03-02 15:39:25 +01:00
CrazyMax
6210eb507a docker: print logs from windows service after install
Signed-off-by: CrazyMax <crazy-max@users.noreply.github.com>
2023-03-02 15:39:25 +01:00
CrazyMax
3b532d1b91 docker: install with custom runDir
Signed-off-by: CrazyMax <crazy-max@users.noreply.github.com>
2023-03-02 15:39:25 +01:00
CrazyMax
93fa96f54f docker: install for linux
Signed-off-by: CrazyMax <crazy-max@users.noreply.github.com>
2023-03-02 15:39:24 +01:00
CrazyMax
3ec6f00f46 docker: custom colima cfg on install
Signed-off-by: CrazyMax <crazy-max@users.noreply.github.com>
2023-03-02 15:39:24 +01:00
CrazyMax
4d66b2fa08 docker: install and download methods for macos and windows
Signed-off-by: CrazyMax <crazy-max@users.noreply.github.com>
2023-03-02 15:39:24 +01:00
CrazyMax
964381b7e9 move docker under dedicated folder
Signed-off-by: CrazyMax <crazy-max@users.noreply.github.com>
2023-03-02 15:39:24 +01:00
CrazyMax
f78f708678 Merge pull request #57 from crazy-max/fix-docker-context
Some checks failed
publish / publish (push) Has been cancelled
docker: fix context command
2023-02-25 17:50:03 +01:00
CrazyMax
6fe7d54029 docker: fix context command
Signed-off-by: CrazyMax <crazy-max@users.noreply.github.com>
2023-02-25 16:40:35 +01:00
CrazyMax
8a69d6cb01 git: alternative github context and additional methods
Signed-off-by: CrazyMax <crazy-max@users.noreply.github.com>
2023-02-25 12:37:09 +01:00
CrazyMax
1cc5fc87fb Merge pull request #56 from crazy-max/docker-context
Some checks failed
publish / publish (push) Has been cancelled
docker: context method
2023-02-25 12:24:04 +01:00
CrazyMax
97e647fdd0 docker: context method
Signed-off-by: CrazyMax <crazy-max@users.noreply.github.com>
2023-02-25 12:20:06 +01:00
CrazyMax
e08fc168a1 Merge pull request #54 from crazy-max/fix-node
builder: fix breaking change on node fields
2023-02-25 12:06:41 +01:00
CrazyMax
9128f56258 builder: fix breaking change on node fields
Signed-off-by: CrazyMax <crazy-max@users.noreply.github.com>
2023-02-24 19:41:10 +01:00
CrazyMax
2e59ae7030 Merge pull request #53 from crazy-max/docker-io
Some checks failed
publish / publish (push) Has been cancelled
docker: check command using actions/io module
2023-02-21 08:46:20 +01:00
CrazyMax
99487d6986 docker: check command using actions/io module
Signed-off-by: CrazyMax <crazy-max@users.noreply.github.com>
2023-02-21 08:40:27 +01:00
CrazyMax
3d9ec9f02d Merge pull request #52 from crazy-max/index
run function to handle GitHub Action main and post runs
2023-02-21 08:21:59 +01:00
CrazyMax
f2b1224b00 run function to handle GitHub Action main and post runs
Signed-off-by: CrazyMax <crazy-max@users.noreply.github.com>
2023-02-21 08:18:56 +01:00
CrazyMax
1383a2bcaf Merge pull request #51 from crazy-max/fix-docker-exporter
Some checks failed
publish / publish (push) Has been cancelled
buildx: fix docker exporter check
2023-02-20 10:28:01 +01:00
CrazyMax
1acd6c2fc0 buildx: fix docker exporter check
Signed-off-by: CrazyMax <crazy-max@users.noreply.github.com>
2023-02-20 10:25:50 +01:00
CrazyMax
d153cfaf3c Merge pull request #50 from crazy-max/github-throw-runtime-token
github: throw if runtime token invalid
2023-02-20 10:17:13 +01:00
CrazyMax
d09114e0c5 Merge pull request #49 from crazy-max/buildx-version
buildx: fix version method
2023-02-20 10:17:01 +01:00
CrazyMax
c3aa7f205d github: throw if runtime token invalid
Signed-off-by: CrazyMax <crazy-max@users.noreply.github.com>
2023-02-20 10:14:11 +01:00
CrazyMax
62f8c6bef6 buildkit: fix debug logs for versionSatisfies
Signed-off-by: CrazyMax <crazy-max@users.noreply.github.com>
2023-02-20 10:13:04 +01:00
CrazyMax
a9ce06b57e docker: do not set undefined args for checking availability
Signed-off-by: CrazyMax <crazy-max@users.noreply.github.com>
2023-02-20 10:13:04 +01:00
CrazyMax
cb6ca3829f buildx: fix version method
Signed-off-by: CrazyMax <crazy-max@users.noreply.github.com>
2023-02-20 09:59:44 +01:00
CrazyMax
1098847fe7 Merge pull request #48 from crazy-max/exec
Exec class
2023-02-20 09:21:41 +01:00
CrazyMax
35a8193474 Exec class
Signed-off-by: CrazyMax <crazy-max@users.noreply.github.com>
2023-02-20 09:18:53 +01:00
CrazyMax
2915834633 Merge pull request #47 from crazy-max/context-static
make Context static
2023-02-20 07:27:00 +01:00
CrazyMax
a0e8f0bf18 make Context static
Signed-off-by: CrazyMax <crazy-max@users.noreply.github.com>
2023-02-20 07:24:32 +01:00
CrazyMax
580aee99c0 Merge pull request #46 from crazy-max/buildx-split-install
Some checks failed
publish / publish (push) Has been cancelled
buildx: split install from download and build methods
2023-02-19 03:39:55 +01:00
CrazyMax
89ecd37681 buildx: info logs on install
Signed-off-by: CrazyMax <crazy-max@users.noreply.github.com>
2023-02-19 03:34:30 +01:00
CrazyMax
139fb39ab0 buildx: split install from download and build methods
Signed-off-by: CrazyMax <crazy-max@users.noreply.github.com>
2023-02-19 03:25:07 +01:00
CrazyMax
67957d8c7a Merge pull request #45 from crazy-max/docker-fix
docker: various fixes
2023-02-19 02:57:48 +01:00
CrazyMax
768df5fbf4 buildx: debug logs in isAvailable method
Signed-off-by: CrazyMax <crazy-max@users.noreply.github.com>
2023-02-19 02:54:07 +01:00
CrazyMax
e9db81b6a1 docker: fix printVersion and printInfo
Signed-off-by: CrazyMax <crazy-max@users.noreply.github.com>
2023-02-19 02:54:06 +01:00
CrazyMax
cd825ae548 docker: remove singleton
Signed-off-by: CrazyMax <crazy-max@users.noreply.github.com>
2023-02-19 02:54:06 +01:00
CrazyMax
28c11a1819 Merge pull request #44 from crazy-max/cleanup
chore: remove path sep conversion
2023-02-19 01:52:35 +01:00
CrazyMax
ed087e5b0d chore: remove path sep conversion
Signed-off-by: CrazyMax <crazy-max@users.noreply.github.com>
2023-02-19 00:59:04 +01:00
CrazyMax
2038d87306 Merge pull request #43 from crazy-max/fix-standalone
Some checks failed
publish / publish (push) Has been cancelled
fix buildx standalone and check for docker availability
2023-02-18 10:15:26 +01:00
CrazyMax
252c717cc3 fix buildx standalone and check for docker availability
Signed-off-by: CrazyMax <crazy-max@users.noreply.github.com>
2023-02-18 10:09:41 +01:00
CrazyMax
9b338b58a7 toolkit: docker property not needed
Signed-off-by: CrazyMax <crazy-max@users.noreply.github.com>
2023-02-18 10:08:21 +01:00
CrazyMax
abe37ab72b Merge pull request #42 from crazy-max/buildkit-fix-version
Some checks failed
publish / publish (push) Has been cancelled
buildkit: use node info to retrieve version
2023-02-18 07:34:55 +01:00
CrazyMax
b3a30a9e32 Merge pull request #41 from crazy-max/fix-docker
docker: fix instance
2023-02-18 07:32:33 +01:00
CrazyMax
31e915c017 buildkit: use node info to retrieve version
Signed-off-by: CrazyMax <crazy-max@users.noreply.github.com>
2023-02-18 07:31:21 +01:00
CrazyMax
05bbe49fe1 toolkit: add docker
Signed-off-by: CrazyMax <crazy-max@users.noreply.github.com>
2023-02-18 07:06:29 +01:00
CrazyMax
c80fedbbae docker: fix instance
Signed-off-by: CrazyMax <crazy-max@users.noreply.github.com>
2023-02-18 07:06:20 +01:00
CrazyMax
2c60cad840 Merge pull request #40 from crazy-max/debug
Some checks failed
publish / publish (push) Has been cancelled
some debug logs
2023-02-18 06:00:54 +01:00
CrazyMax
847887b312 some debug logs
Signed-off-by: CrazyMax <crazy-max@users.noreply.github.com>
2023-02-18 04:36:32 +01:00
CrazyMax
d9984214c9 Merge pull request #39 from crazy-max/buildkit-ctn-prefix
buildx: make containerNamePrefix static and public
2023-02-18 02:20:37 +01:00
CrazyMax
33b4390bc2 buildx: make containerNamePrefix static and public
Signed-off-by: CrazyMax <crazy-max@users.noreply.github.com>
2023-02-18 02:12:09 +01:00
CrazyMax
5e8f679709 Merge pull request #38 from crazy-max/util-quote
Some checks failed
publish / publish (push) Has been cancelled
util: handle quote opt with the same api for input list
2023-02-18 01:57:40 +01:00
CrazyMax
f288f4f7ea util: handle quote opt with the same api for input list
Signed-off-by: CrazyMax <crazy-max@users.noreply.github.com>
2023-02-18 01:53:59 +01:00
CrazyMax
cb9121174a Merge pull request #37 from crazy-max/toolkit-builder
toolkit: add builder
2023-02-18 01:37:42 +01:00
CrazyMax
464dfbe1ec toolkit: add builder
Signed-off-by: CrazyMax <crazy-max@users.noreply.github.com>
2023-02-18 01:33:37 +01:00
CrazyMax
5695c0049b Merge pull request #36 from crazy-max/update-input-list
Some checks failed
publish / publish (push) Has been cancelled
util: opt to escape quotes for input list
2023-02-18 01:12:26 +01:00
CrazyMax
44b1545abd util: opt to escape quotes for input list
Signed-off-by: CrazyMax <crazy-max@users.noreply.github.com>
2023-02-18 01:02:56 +01:00
CrazyMax
4d9d62d542 Merge pull request #35 from crazy-max/node-type
builder: add Node type
2023-02-18 00:01:23 +01:00
CrazyMax
aa3c8ef106 Merge pull request #34 from crazy-max/buildx-optional-dest
buildx: dest dir optional on install
2023-02-17 23:58:35 +01:00
CrazyMax
259abb56df builder: add Node type
Signed-off-by: CrazyMax <crazy-max@users.noreply.github.com>
2023-02-17 23:56:13 +01:00
CrazyMax
76e5a25cff buildx: dest dir optional on install
Signed-off-by: CrazyMax <crazy-max@users.noreply.github.com>
2023-02-17 23:54:28 +01:00
CrazyMax
bb8a659d9e Merge pull request #33 from crazy-max/package-json-ver
Some checks failed
publish / publish (push) Has been cancelled
set dev version in package json
2023-02-17 22:34:10 +01:00
CrazyMax
6ab0483b34 set dev version in package json
Signed-off-by: CrazyMax <crazy-max@users.noreply.github.com>
2023-02-17 22:31:14 +01:00
CrazyMax
d7dbf54456 Merge pull request #32 from crazy-max/buildx-build
buildx: build buildx as install method
2023-02-17 22:04:44 +01:00
CrazyMax
496d7e2c9d toolkit: add buildxInstall
Signed-off-by: CrazyMax <crazy-max@users.noreply.github.com>
2023-02-17 21:56:55 +01:00
CrazyMax
094239d9eb buildx: build buildx as install method
Signed-off-by: CrazyMax <crazy-max@users.noreply.github.com>
2023-02-17 21:56:41 +01:00
CrazyMax
c8a13a2352 buildx: remove install method from main module
Signed-off-by: CrazyMax <crazy-max@users.noreply.github.com>
2023-02-17 21:52:11 +01:00
CrazyMax
875c6c9e95 Merge pull request #31 from crazy-max/buildx-install
buildx: install method
2023-02-17 20:14:42 +01:00
CrazyMax
12e3bd7469 cleanup temp dir after each test when installing buildx
Signed-off-by: CrazyMax <crazy-max@users.noreply.github.com>
2023-02-17 20:00:56 +01:00
CrazyMax
2abe456e6b buildx: install method
Signed-off-by: CrazyMax <crazy-max@users.noreply.github.com>
2023-02-17 20:00:18 +01:00
CrazyMax
80dc124c6b Merge pull request #30 from docker/bot/buildx-releases-json
Some checks failed
publish / publish (push) Has been cancelled
Update `.github/buildx-releases.json`
2023-02-17 07:02:51 +01:00
crazy-max
6ac2b2eb02 github: update .github/buildx-releases.json
Signed-off-by: GitHub <noreply@github.com>
2023-02-17 00:18:01 +00:00
CrazyMax
8cb1698b20 Merge pull request #29 from crazy-max/dockerhub-tags
dockerhub: getRepositoryTags
2023-02-14 04:44:42 +01:00
CrazyMax
b13d2bd668 Merge pull request #28 from docker/dependabot/github_actions/crazy-max/ghaction-dump-context-2
build(deps): bump crazy-max/ghaction-dump-context from 1 to 2
2023-02-14 04:42:16 +01:00
CrazyMax
c2dfc9dae8 dockerhub: getRepositoryTags
Signed-off-by: CrazyMax <crazy-max@users.noreply.github.com>
2023-02-14 04:37:39 +01:00
dependabot[bot]
beff1d58b7 build(deps): bump crazy-max/ghaction-dump-context from 1 to 2
Bumps [crazy-max/ghaction-dump-context](https://github.com/crazy-max/ghaction-dump-context) from 1 to 2.
- [Release notes](https://github.com/crazy-max/ghaction-dump-context/releases)
- [Changelog](https://github.com/crazy-max/ghaction-dump-context/blob/master/CHANGELOG.md)
- [Commits](https://github.com/crazy-max/ghaction-dump-context/compare/v1...v2)

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

Signed-off-by: dependabot[bot] <support@github.com>
2023-02-13 22:36:53 +00:00
CrazyMax
01219141e4 Merge pull request #27 from crazy-max/buildx-certs
buildx: resolveCertsDriverOpts
2023-02-12 18:14:23 +01:00
CrazyMax
ec7bb99421 buildx: resolveCertsDriverOpts
Signed-off-by: CrazyMax <crazy-max@users.noreply.github.com>
2023-02-12 18:10:34 +01:00
CrazyMax
b223e0a42b buildx: certsDir
Signed-off-by: CrazyMax <crazy-max@users.noreply.github.com>
2023-02-10 11:34:58 +01:00
CrazyMax
5e365b5a48 buildx: configDir
Signed-off-by: CrazyMax <crazy-max@users.noreply.github.com>
2023-02-10 11:34:58 +01:00
CrazyMax
392903fad6 Merge pull request #26 from docker/dependabot/npm_and_yarn/csv-parse-5.3.5
build(deps): bump csv-parse from 5.3.4 to 5.3.5
2023-02-09 17:35:10 +01:00
dependabot[bot]
406e440bcb build(deps): bump csv-parse from 5.3.4 to 5.3.5
Bumps [csv-parse](https://github.com/adaltas/node-csv/tree/HEAD/packages/csv-parse) from 5.3.4 to 5.3.5.
- [Release notes](https://github.com/adaltas/node-csv/releases)
- [Changelog](https://github.com/adaltas/node-csv/blob/master/packages/csv-parse/CHANGELOG.md)
- [Commits](https://github.com/adaltas/node-csv/commits/csv-parse@5.3.5/packages/csv-parse)

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

Signed-off-by: dependabot[bot] <support@github.com>
2023-02-08 22:21:53 +00:00
CrazyMax
64c6f33406 Merge pull request #25 from crazy-max/codecov
ci: upload coverage to codecov
2023-02-04 05:44:06 +01:00
CrazyMax
f0f0b76920 readme: badges
Signed-off-by: CrazyMax <crazy-max@users.noreply.github.com>
2023-02-04 04:51:49 +01:00
CrazyMax
5e3916dce6 ci: upload coverage to codecov
Signed-off-by: CrazyMax <crazy-max@users.noreply.github.com>
2023-02-04 04:42:47 +01:00
CrazyMax
815affc0ed Merge pull request #24 from crazy-max/dockerhub-api-client
dockerhub: api client to get repo details and update description
2023-02-04 03:33:00 +01:00
CrazyMax
96ad2a52f8 dockerhub: api client to get repo details and update description
Signed-off-by: CrazyMax <crazy-max@users.noreply.github.com>
2023-02-04 03:06:55 +01:00
CrazyMax
556fff451f test: rename github repo fixture
Signed-off-by: CrazyMax <crazy-max@users.noreply.github.com>
2023-02-04 03:03:11 +01:00
CrazyMax
d1181e8a16 chore: allow disabled tests
Signed-off-by: CrazyMax <crazy-max@users.noreply.github.com>
2023-02-04 03:02:49 +01:00
CrazyMax
11bdb1082a buildkit(config): rename methods
Signed-off-by: CrazyMax <crazy-max@users.noreply.github.com>
2023-02-03 14:45:32 +01:00
CrazyMax
fdfeb2486a Merge pull request #23 from crazy-max/github-print-art
github: printActionsRuntimeTokenACs
2023-02-03 13:22:41 +01:00
CrazyMax
7a9a28cd90 github: handle malformed runtime token
Signed-off-by: CrazyMax <crazy-max@users.noreply.github.com>
2023-02-03 13:17:00 +01:00
CrazyMax
3e2548a8ed github: translate access controls permissions
Signed-off-by: CrazyMax <crazy-max@users.noreply.github.com>
2023-02-03 04:11:14 +01:00
CrazyMax
ad59af8cf2 github: printActionsRuntimeToken
Signed-off-by: CrazyMax <crazy-max@users.noreply.github.com>
2023-02-03 03:33:22 +01:00
CrazyMax
40e9a15129 buildx(inputs): rename some methods
Signed-off-by: CrazyMax <crazy-max@users.noreply.github.com>
2023-02-03 03:33:09 +01:00
CrazyMax
7d5ed416da Merge pull request #22 from crazy-max/fix-buildx-install
Some checks failed
publish / publish (push) Has been cancelled
buildx: use correct url for getRelease
2023-02-02 17:21:34 +01:00
CrazyMax
87a4161671 buildx: use correct url for getRelease
Signed-off-by: CrazyMax <crazy-max@users.noreply.github.com>
2023-02-02 17:19:28 +01:00
CrazyMax
63427f8ff1 Merge pull request #21 from docker/bot/buildx-releases-json
Update `.github/buildx-releases.json`
2023-02-02 17:14:33 +01:00
crazy-max
77bb494420 github: update .github/buildx-releases.json
Signed-off-by: GitHub <noreply@github.com>
2023-02-02 16:14:09 +00:00
CrazyMax
48addf39b6 Merge pull request #20 from crazy-max/fix-ci
ci: fix releases-json workflow
2023-02-02 17:13:40 +01:00
CrazyMax
efe21e504c ci: fix releases-json workflow
Signed-off-by: CrazyMax <crazy-max@users.noreply.github.com>
2023-02-02 17:10:36 +01:00
CrazyMax
7fb4112dd4 Merge pull request #19 from crazy-max/enable-openpr-job
ci: enable open-pr job
2023-02-02 17:09:12 +01:00
CrazyMax
a14339c1d2 ci: enable open-pr job
Signed-off-by: CrazyMax <crazy-max@users.noreply.github.com>
2023-02-02 17:04:52 +01:00
CrazyMax
c8e980fc49 Merge pull request #18 from crazy-max/fix-publish
Some checks failed
publish / publish (push) Has been cancelled
chore: fix publish
2023-02-01 17:30:39 +01:00
CrazyMax
3f81bea2c1 chore: fix publish
Signed-off-by: CrazyMax <crazy-max@users.noreply.github.com>
2023-02-01 17:27:24 +01:00
CrazyMax
d21d31d108 Merge pull request #17 from crazy-max/docker-configdir
docker: configDir
2023-02-01 17:06:03 +01:00
CrazyMax
765b23685c docker: isAvailable use get
Signed-off-by: CrazyMax <crazy-max@users.noreply.github.com>
2023-02-01 16:49:46 +01:00
CrazyMax
c89aa60986 docker: configDir
Signed-off-by: CrazyMax <crazy-max@users.noreply.github.com>
2023-02-01 16:47:01 +01:00
CrazyMax
3150492079 Merge pull request #16 from crazy-max/buildx-install
buildx: install
2023-02-01 15:39:08 +01:00
CrazyMax
b193ec6e9e common base tmpDir for tests
Signed-off-by: CrazyMax <crazy-max@users.noreply.github.com>
2023-02-01 15:37:03 +01:00
CrazyMax
257dd09431 buildx: install
Signed-off-by: CrazyMax <crazy-max@users.noreply.github.com>
2023-02-01 14:21:44 +01:00
CrazyMax
e47d166c4f fix jest config
Signed-off-by: CrazyMax <crazy-max@users.noreply.github.com>
2023-02-01 14:18:45 +01:00
CrazyMax
98e69d9e72 toolkit: remove unneeded exports
Signed-off-by: CrazyMax <crazy-max@users.noreply.github.com>
2023-02-01 13:41:44 +01:00
CrazyMax
81d78d2ce7 Merge pull request #15 from crazy-max/split
Split some logic
2023-02-01 13:12:21 +01:00
CrazyMax
fe8b21ecf5 github: move types
Signed-off-by: CrazyMax <crazy-max@users.noreply.github.com>
2023-02-01 13:06:20 +01:00
CrazyMax
dea2294b93 buildkit: split module
Signed-off-by: CrazyMax <crazy-max@users.noreply.github.com>
2023-02-01 12:58:12 +01:00
CrazyMax
cc48ecede1 buildx: split module
Signed-off-by: CrazyMax <crazy-max@users.noreply.github.com>
2023-02-01 12:58:12 +01:00
CrazyMax
388280c282 Merge pull request #14 from crazy-max/fix-lint
fix eslint config and lint issues
2023-02-01 12:53:46 +01:00
CrazyMax
c11b80183c fix eslint config and lint issues
Signed-off-by: CrazyMax <crazy-max@users.noreply.github.com>
2023-02-01 12:51:48 +01:00
CrazyMax
ae3911e977 Merge pull request #13 from crazy-max/yarn-cfg
chore: tweak yarn config
2023-02-01 02:04:18 +01:00
CrazyMax
535aedce51 chore: discard some specific yarn logs
Signed-off-by: CrazyMax <crazy-max@users.noreply.github.com>
2023-02-01 02:00:56 +01:00
CrazyMax
104c7babf8 chore: use yarn to publish module
Signed-off-by: CrazyMax <crazy-max@users.noreply.github.com>
2023-02-01 01:51:34 +01:00
CrazyMax
c617b15f70 Merge pull request #12 from crazy-max/github-apiurl
github: apiUrl
2023-02-01 01:46:12 +01:00
CrazyMax
17f9c80d9c github: apiURL
Also took the opportunity to make some methods static

Signed-off-by: CrazyMax <crazy-max@users.noreply.github.com>
2023-02-01 01:42:10 +01:00
CrazyMax
ffdd47b148 Merge pull request #11 from docker/dependabot/npm_and_yarn/csv-parse-5.3.4
build(deps): bump csv-parse from 5.3.3 to 5.3.4
2023-01-31 23:26:06 +01:00
dependabot[bot]
eca9342d11 build(deps): bump csv-parse from 5.3.3 to 5.3.4
Bumps [csv-parse](https://github.com/adaltas/node-csv/tree/HEAD/packages/csv-parse) from 5.3.3 to 5.3.4.
- [Release notes](https://github.com/adaltas/node-csv/releases)
- [Changelog](https://github.com/adaltas/node-csv/blob/master/packages/csv-parse/CHANGELOG.md)
- [Commits](https://github.com/adaltas/node-csv/commits/csv-parse@5.3.4/packages/csv-parse)

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

Signed-off-by: dependabot[bot] <support@github.com>
2023-01-31 22:13:33 +00:00
CrazyMax
433952b109 Merge pull request #10 from crazy-max/update-readme
Some checks failed
publish / publish (push) Has been cancelled
Update README
2023-01-31 10:53:06 +01:00
CrazyMax
1d52cba4ed Merge pull request #9 from crazy-max/license-headers
set license headers
2023-01-31 10:50:09 +01:00
CrazyMax
00f55b8385 chore: set license headers
Signed-off-by: CrazyMax <crazy-max@users.noreply.github.com>
2023-01-31 03:34:59 +01:00
CrazyMax
063d88c841 ci: update validate job
Signed-off-by: CrazyMax <crazy-max@users.noreply.github.com>
2023-01-31 03:34:59 +01:00
CrazyMax
152b37e0f7 hack: add license headers tool
Signed-off-by: CrazyMax <crazy-max@users.noreply.github.com>
2023-01-31 03:34:59 +01:00
CrazyMax
28b6e2512c Update README
Signed-off-by: CrazyMax <crazy-max@users.noreply.github.com>
2023-01-31 03:23:38 +01:00
CrazyMax
e218647127 Merge pull request #8 from crazy-max/ci-disable-job
ci: disable open-pr job for now
2023-01-31 02:48:05 +01:00
CrazyMax
a9c554ec83 ci: disable open-pr job for now
Signed-off-by: CrazyMax <crazy-max@users.noreply.github.com>
2023-01-31 02:46:48 +01:00
CrazyMax
48fba6e0d9 Merge pull request #7 from crazy-max/buildx-releases-json
ci: generate buildx-releases.json
2023-01-31 02:40:56 +01:00
CrazyMax
bd4df13130 buildx: add fixme for releases url
Signed-off-by: CrazyMax <crazy-max@users.noreply.github.com>
2023-01-31 02:38:44 +01:00
CrazyMax
201b1942bf ci: generate buildx-releases.json
Signed-off-by: CrazyMax <crazy-max@users.noreply.github.com>
2023-01-31 02:35:21 +01:00
CrazyMax
b40e86b8f4 Merge pull request #6 from crazy-max/buildx-getrelease
buildx: getRelease
2023-01-31 02:23:00 +01:00
CrazyMax
96c92fc206 buildx: getRelease
Signed-off-by: CrazyMax <crazy-max@users.noreply.github.com>
2023-01-31 00:11:16 +01:00
CrazyMax
e070c13d66 Merge pull request #5 from crazy-max/improve-ci
ci: split validate and test targets
2023-01-30 20:34:27 +01:00
CrazyMax
9df71fe601 ci: split validate and test targets
Signed-off-by: CrazyMax <crazy-max@users.noreply.github.com>
2023-01-30 20:30:44 +01:00
CrazyMax
f9b34f0e95 Merge pull request #4 from crazy-max/buildx-version
buildx: do not set version in constructor
2023-01-30 20:11:23 +01:00
CrazyMax
32a260e6e5 buildx: do not set version in constructor
Signed-off-by: CrazyMax <crazy-max@users.noreply.github.com>
2023-01-30 20:08:54 +01:00
150 changed files with 25869 additions and 4481 deletions

4
.eslintignore Normal file
View File

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

View File

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

1
.gitattributes vendored
View File

@@ -1,2 +1,3 @@
/.yarn/releases/** binary
/.yarn/plugins/** binary
/__tests__/fixtures/oci-archive/** binary

494
.github/buildx-lab-releases.json vendored Normal file
View File

@@ -0,0 +1,494 @@
{
"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",
"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"
]
},
"v0.15.0-desktop.1": {
"id": 160473592,
"tag_name": "v0.15.0-desktop.1",
"html_url": "https://github.com/docker/buildx-desktop/releases/tag/v0.15.0-desktop.1",
"assets": [
"https://github.com/docker/buildx-desktop/releases/download/v0.15.0-desktop.1/buildx-v0.15.0-desktop.1.darwin-amd64",
"https://github.com/docker/buildx-desktop/releases/download/v0.15.0-desktop.1/buildx-v0.15.0-desktop.1.darwin-amd64.provenance.json",
"https://github.com/docker/buildx-desktop/releases/download/v0.15.0-desktop.1/buildx-v0.15.0-desktop.1.darwin-amd64.sbom.json",
"https://github.com/docker/buildx-desktop/releases/download/v0.15.0-desktop.1/buildx-v0.15.0-desktop.1.darwin-arm64",
"https://github.com/docker/buildx-desktop/releases/download/v0.15.0-desktop.1/buildx-v0.15.0-desktop.1.darwin-arm64.provenance.json",
"https://github.com/docker/buildx-desktop/releases/download/v0.15.0-desktop.1/buildx-v0.15.0-desktop.1.darwin-arm64.sbom.json",
"https://github.com/docker/buildx-desktop/releases/download/v0.15.0-desktop.1/buildx-v0.15.0-desktop.1.linux-amd64",
"https://github.com/docker/buildx-desktop/releases/download/v0.15.0-desktop.1/buildx-v0.15.0-desktop.1.linux-amd64.provenance.json",
"https://github.com/docker/buildx-desktop/releases/download/v0.15.0-desktop.1/buildx-v0.15.0-desktop.1.linux-amd64.sbom.json",
"https://github.com/docker/buildx-desktop/releases/download/v0.15.0-desktop.1/buildx-v0.15.0-desktop.1.linux-arm-v6",
"https://github.com/docker/buildx-desktop/releases/download/v0.15.0-desktop.1/buildx-v0.15.0-desktop.1.linux-arm-v6.provenance.json",
"https://github.com/docker/buildx-desktop/releases/download/v0.15.0-desktop.1/buildx-v0.15.0-desktop.1.linux-arm-v6.sbom.json",
"https://github.com/docker/buildx-desktop/releases/download/v0.15.0-desktop.1/buildx-v0.15.0-desktop.1.linux-arm-v7",
"https://github.com/docker/buildx-desktop/releases/download/v0.15.0-desktop.1/buildx-v0.15.0-desktop.1.linux-arm-v7.provenance.json",
"https://github.com/docker/buildx-desktop/releases/download/v0.15.0-desktop.1/buildx-v0.15.0-desktop.1.linux-arm-v7.sbom.json",
"https://github.com/docker/buildx-desktop/releases/download/v0.15.0-desktop.1/buildx-v0.15.0-desktop.1.linux-arm64",
"https://github.com/docker/buildx-desktop/releases/download/v0.15.0-desktop.1/buildx-v0.15.0-desktop.1.linux-arm64.provenance.json",
"https://github.com/docker/buildx-desktop/releases/download/v0.15.0-desktop.1/buildx-v0.15.0-desktop.1.linux-arm64.sbom.json",
"https://github.com/docker/buildx-desktop/releases/download/v0.15.0-desktop.1/buildx-v0.15.0-desktop.1.linux-ppc64le",
"https://github.com/docker/buildx-desktop/releases/download/v0.15.0-desktop.1/buildx-v0.15.0-desktop.1.linux-ppc64le.provenance.json",
"https://github.com/docker/buildx-desktop/releases/download/v0.15.0-desktop.1/buildx-v0.15.0-desktop.1.linux-ppc64le.sbom.json",
"https://github.com/docker/buildx-desktop/releases/download/v0.15.0-desktop.1/buildx-v0.15.0-desktop.1.linux-riscv64",
"https://github.com/docker/buildx-desktop/releases/download/v0.15.0-desktop.1/buildx-v0.15.0-desktop.1.linux-riscv64.provenance.json",
"https://github.com/docker/buildx-desktop/releases/download/v0.15.0-desktop.1/buildx-v0.15.0-desktop.1.linux-riscv64.sbom.json",
"https://github.com/docker/buildx-desktop/releases/download/v0.15.0-desktop.1/buildx-v0.15.0-desktop.1.linux-s390x",
"https://github.com/docker/buildx-desktop/releases/download/v0.15.0-desktop.1/buildx-v0.15.0-desktop.1.linux-s390x.provenance.json",
"https://github.com/docker/buildx-desktop/releases/download/v0.15.0-desktop.1/buildx-v0.15.0-desktop.1.linux-s390x.sbom.json",
"https://github.com/docker/buildx-desktop/releases/download/v0.15.0-desktop.1/buildx-v0.15.0-desktop.1.windows-amd64.exe",
"https://github.com/docker/buildx-desktop/releases/download/v0.15.0-desktop.1/buildx-v0.15.0-desktop.1.windows-amd64.provenance.json",
"https://github.com/docker/buildx-desktop/releases/download/v0.15.0-desktop.1/buildx-v0.15.0-desktop.1.windows-amd64.sbom.json",
"https://github.com/docker/buildx-desktop/releases/download/v0.15.0-desktop.1/buildx-v0.15.0-desktop.1.windows-arm64.exe",
"https://github.com/docker/buildx-desktop/releases/download/v0.15.0-desktop.1/buildx-v0.15.0-desktop.1.windows-arm64.provenance.json",
"https://github.com/docker/buildx-desktop/releases/download/v0.15.0-desktop.1/buildx-v0.15.0-desktop.1.windows-arm64.sbom.json",
"https://github.com/docker/buildx-desktop/releases/download/v0.15.0-desktop.1/checksums.txt"
]
},
"v0.14.1-desktop.1": {
"id": 157588052,
"tag_name": "v0.14.1-desktop.1",
"html_url": "https://github.com/docker/buildx-desktop/releases/tag/v0.14.1-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"
]
},
"v0.14.0-desktop.1": {
"id": 155523887,
"tag_name": "v0.14.0-desktop.1",
"html_url": "https://github.com/docker/buildx-desktop/releases/tag/v0.14.0-desktop.1",
"assets": [
"https://github.com/docker/buildx-desktop/releases/download/v0.14.0-desktop.1/buildx-v0.14.0-desktop.1.darwin-amd64",
"https://github.com/docker/buildx-desktop/releases/download/v0.14.0-desktop.1/buildx-v0.14.0-desktop.1.darwin-amd64.provenance.json",
"https://github.com/docker/buildx-desktop/releases/download/v0.14.0-desktop.1/buildx-v0.14.0-desktop.1.darwin-amd64.sbom.json",
"https://github.com/docker/buildx-desktop/releases/download/v0.14.0-desktop.1/buildx-v0.14.0-desktop.1.darwin-arm64",
"https://github.com/docker/buildx-desktop/releases/download/v0.14.0-desktop.1/buildx-v0.14.0-desktop.1.darwin-arm64.provenance.json",
"https://github.com/docker/buildx-desktop/releases/download/v0.14.0-desktop.1/buildx-v0.14.0-desktop.1.darwin-arm64.sbom.json",
"https://github.com/docker/buildx-desktop/releases/download/v0.14.0-desktop.1/buildx-v0.14.0-desktop.1.linux-amd64",
"https://github.com/docker/buildx-desktop/releases/download/v0.14.0-desktop.1/buildx-v0.14.0-desktop.1.linux-amd64.provenance.json",
"https://github.com/docker/buildx-desktop/releases/download/v0.14.0-desktop.1/buildx-v0.14.0-desktop.1.linux-amd64.sbom.json",
"https://github.com/docker/buildx-desktop/releases/download/v0.14.0-desktop.1/buildx-v0.14.0-desktop.1.linux-arm-v6",
"https://github.com/docker/buildx-desktop/releases/download/v0.14.0-desktop.1/buildx-v0.14.0-desktop.1.linux-arm-v6.provenance.json",
"https://github.com/docker/buildx-desktop/releases/download/v0.14.0-desktop.1/buildx-v0.14.0-desktop.1.linux-arm-v6.sbom.json",
"https://github.com/docker/buildx-desktop/releases/download/v0.14.0-desktop.1/buildx-v0.14.0-desktop.1.linux-arm-v7",
"https://github.com/docker/buildx-desktop/releases/download/v0.14.0-desktop.1/buildx-v0.14.0-desktop.1.linux-arm-v7.provenance.json",
"https://github.com/docker/buildx-desktop/releases/download/v0.14.0-desktop.1/buildx-v0.14.0-desktop.1.linux-arm-v7.sbom.json",
"https://github.com/docker/buildx-desktop/releases/download/v0.14.0-desktop.1/buildx-v0.14.0-desktop.1.linux-arm64",
"https://github.com/docker/buildx-desktop/releases/download/v0.14.0-desktop.1/buildx-v0.14.0-desktop.1.linux-arm64.provenance.json",
"https://github.com/docker/buildx-desktop/releases/download/v0.14.0-desktop.1/buildx-v0.14.0-desktop.1.linux-arm64.sbom.json",
"https://github.com/docker/buildx-desktop/releases/download/v0.14.0-desktop.1/buildx-v0.14.0-desktop.1.linux-ppc64le",
"https://github.com/docker/buildx-desktop/releases/download/v0.14.0-desktop.1/buildx-v0.14.0-desktop.1.linux-ppc64le.provenance.json",
"https://github.com/docker/buildx-desktop/releases/download/v0.14.0-desktop.1/buildx-v0.14.0-desktop.1.linux-ppc64le.sbom.json",
"https://github.com/docker/buildx-desktop/releases/download/v0.14.0-desktop.1/buildx-v0.14.0-desktop.1.linux-riscv64",
"https://github.com/docker/buildx-desktop/releases/download/v0.14.0-desktop.1/buildx-v0.14.0-desktop.1.linux-riscv64.provenance.json",
"https://github.com/docker/buildx-desktop/releases/download/v0.14.0-desktop.1/buildx-v0.14.0-desktop.1.linux-riscv64.sbom.json",
"https://github.com/docker/buildx-desktop/releases/download/v0.14.0-desktop.1/buildx-v0.14.0-desktop.1.linux-s390x",
"https://github.com/docker/buildx-desktop/releases/download/v0.14.0-desktop.1/buildx-v0.14.0-desktop.1.linux-s390x.provenance.json",
"https://github.com/docker/buildx-desktop/releases/download/v0.14.0-desktop.1/buildx-v0.14.0-desktop.1.linux-s390x.sbom.json",
"https://github.com/docker/buildx-desktop/releases/download/v0.14.0-desktop.1/buildx-v0.14.0-desktop.1.windows-amd64.exe",
"https://github.com/docker/buildx-desktop/releases/download/v0.14.0-desktop.1/buildx-v0.14.0-desktop.1.windows-amd64.provenance.json",
"https://github.com/docker/buildx-desktop/releases/download/v0.14.0-desktop.1/buildx-v0.14.0-desktop.1.windows-amd64.sbom.json",
"https://github.com/docker/buildx-desktop/releases/download/v0.14.0-desktop.1/buildx-v0.14.0-desktop.1.windows-arm64.exe",
"https://github.com/docker/buildx-desktop/releases/download/v0.14.0-desktop.1/buildx-v0.14.0-desktop.1.windows-arm64.provenance.json",
"https://github.com/docker/buildx-desktop/releases/download/v0.14.0-desktop.1/buildx-v0.14.0-desktop.1.windows-arm64.sbom.json",
"https://github.com/docker/buildx-desktop/releases/download/v0.14.0-desktop.1/checksums.txt"
]
},
"v0.13.1-desktop-preview.2": {
"id": 151417247,
"tag_name": "v0.13.1-desktop-preview.2",
"html_url": "https://github.com/docker/buildx-desktop/releases/tag/v0.13.1-desktop-preview.2",
"assets": [
"https://github.com/docker/buildx-desktop/releases/download/v0.13.1-desktop-preview.2/buildx-v0.13.1-desktop-preview.2.darwin-amd64",
"https://github.com/docker/buildx-desktop/releases/download/v0.13.1-desktop-preview.2/buildx-v0.13.1-desktop-preview.2.darwin-amd64.provenance.json",
"https://github.com/docker/buildx-desktop/releases/download/v0.13.1-desktop-preview.2/buildx-v0.13.1-desktop-preview.2.darwin-amd64.sbom.json",
"https://github.com/docker/buildx-desktop/releases/download/v0.13.1-desktop-preview.2/buildx-v0.13.1-desktop-preview.2.darwin-arm64",
"https://github.com/docker/buildx-desktop/releases/download/v0.13.1-desktop-preview.2/buildx-v0.13.1-desktop-preview.2.darwin-arm64.provenance.json",
"https://github.com/docker/buildx-desktop/releases/download/v0.13.1-desktop-preview.2/buildx-v0.13.1-desktop-preview.2.darwin-arm64.sbom.json",
"https://github.com/docker/buildx-desktop/releases/download/v0.13.1-desktop-preview.2/buildx-v0.13.1-desktop-preview.2.linux-amd64",
"https://github.com/docker/buildx-desktop/releases/download/v0.13.1-desktop-preview.2/buildx-v0.13.1-desktop-preview.2.linux-amd64.provenance.json",
"https://github.com/docker/buildx-desktop/releases/download/v0.13.1-desktop-preview.2/buildx-v0.13.1-desktop-preview.2.linux-amd64.sbom.json",
"https://github.com/docker/buildx-desktop/releases/download/v0.13.1-desktop-preview.2/buildx-v0.13.1-desktop-preview.2.linux-arm-v6",
"https://github.com/docker/buildx-desktop/releases/download/v0.13.1-desktop-preview.2/buildx-v0.13.1-desktop-preview.2.linux-arm-v6.provenance.json",
"https://github.com/docker/buildx-desktop/releases/download/v0.13.1-desktop-preview.2/buildx-v0.13.1-desktop-preview.2.linux-arm-v6.sbom.json",
"https://github.com/docker/buildx-desktop/releases/download/v0.13.1-desktop-preview.2/buildx-v0.13.1-desktop-preview.2.linux-arm-v7",
"https://github.com/docker/buildx-desktop/releases/download/v0.13.1-desktop-preview.2/buildx-v0.13.1-desktop-preview.2.linux-arm-v7.provenance.json",
"https://github.com/docker/buildx-desktop/releases/download/v0.13.1-desktop-preview.2/buildx-v0.13.1-desktop-preview.2.linux-arm-v7.sbom.json",
"https://github.com/docker/buildx-desktop/releases/download/v0.13.1-desktop-preview.2/buildx-v0.13.1-desktop-preview.2.linux-arm64",
"https://github.com/docker/buildx-desktop/releases/download/v0.13.1-desktop-preview.2/buildx-v0.13.1-desktop-preview.2.linux-arm64.provenance.json",
"https://github.com/docker/buildx-desktop/releases/download/v0.13.1-desktop-preview.2/buildx-v0.13.1-desktop-preview.2.linux-arm64.sbom.json",
"https://github.com/docker/buildx-desktop/releases/download/v0.13.1-desktop-preview.2/buildx-v0.13.1-desktop-preview.2.linux-ppc64le",
"https://github.com/docker/buildx-desktop/releases/download/v0.13.1-desktop-preview.2/buildx-v0.13.1-desktop-preview.2.linux-ppc64le.provenance.json",
"https://github.com/docker/buildx-desktop/releases/download/v0.13.1-desktop-preview.2/buildx-v0.13.1-desktop-preview.2.linux-ppc64le.sbom.json",
"https://github.com/docker/buildx-desktop/releases/download/v0.13.1-desktop-preview.2/buildx-v0.13.1-desktop-preview.2.linux-riscv64",
"https://github.com/docker/buildx-desktop/releases/download/v0.13.1-desktop-preview.2/buildx-v0.13.1-desktop-preview.2.linux-riscv64.provenance.json",
"https://github.com/docker/buildx-desktop/releases/download/v0.13.1-desktop-preview.2/buildx-v0.13.1-desktop-preview.2.linux-riscv64.sbom.json",
"https://github.com/docker/buildx-desktop/releases/download/v0.13.1-desktop-preview.2/buildx-v0.13.1-desktop-preview.2.linux-s390x",
"https://github.com/docker/buildx-desktop/releases/download/v0.13.1-desktop-preview.2/buildx-v0.13.1-desktop-preview.2.linux-s390x.provenance.json",
"https://github.com/docker/buildx-desktop/releases/download/v0.13.1-desktop-preview.2/buildx-v0.13.1-desktop-preview.2.linux-s390x.sbom.json",
"https://github.com/docker/buildx-desktop/releases/download/v0.13.1-desktop-preview.2/buildx-v0.13.1-desktop-preview.2.windows-amd64.exe",
"https://github.com/docker/buildx-desktop/releases/download/v0.13.1-desktop-preview.2/buildx-v0.13.1-desktop-preview.2.windows-amd64.provenance.json",
"https://github.com/docker/buildx-desktop/releases/download/v0.13.1-desktop-preview.2/buildx-v0.13.1-desktop-preview.2.windows-amd64.sbom.json",
"https://github.com/docker/buildx-desktop/releases/download/v0.13.1-desktop-preview.2/buildx-v0.13.1-desktop-preview.2.windows-arm64.exe",
"https://github.com/docker/buildx-desktop/releases/download/v0.13.1-desktop-preview.2/buildx-v0.13.1-desktop-preview.2.windows-arm64.provenance.json",
"https://github.com/docker/buildx-desktop/releases/download/v0.13.1-desktop-preview.2/buildx-v0.13.1-desktop-preview.2.windows-arm64.sbom.json",
"https://github.com/docker/buildx-desktop/releases/download/v0.13.1-desktop-preview.2/checksums.txt"
]
},
"v0.12.1-desktop.4": {
"id": 137689487,
"tag_name": "v0.12.1-desktop.4",
"html_url": "https://github.com/docker/buildx-desktop/releases/tag/v0.12.1-desktop.4",
"assets": [
"https://github.com/docker/buildx-desktop/releases/download/v0.12.1-desktop.4/buildx-v0.12.1-desktop.4.darwin-amd64",
"https://github.com/docker/buildx-desktop/releases/download/v0.12.1-desktop.4/buildx-v0.12.1-desktop.4.darwin-amd64.provenance.json",
"https://github.com/docker/buildx-desktop/releases/download/v0.12.1-desktop.4/buildx-v0.12.1-desktop.4.darwin-amd64.sbom.json",
"https://github.com/docker/buildx-desktop/releases/download/v0.12.1-desktop.4/buildx-v0.12.1-desktop.4.darwin-arm64",
"https://github.com/docker/buildx-desktop/releases/download/v0.12.1-desktop.4/buildx-v0.12.1-desktop.4.darwin-arm64.provenance.json",
"https://github.com/docker/buildx-desktop/releases/download/v0.12.1-desktop.4/buildx-v0.12.1-desktop.4.darwin-arm64.sbom.json",
"https://github.com/docker/buildx-desktop/releases/download/v0.12.1-desktop.4/buildx-v0.12.1-desktop.4.linux-amd64",
"https://github.com/docker/buildx-desktop/releases/download/v0.12.1-desktop.4/buildx-v0.12.1-desktop.4.linux-amd64.provenance.json",
"https://github.com/docker/buildx-desktop/releases/download/v0.12.1-desktop.4/buildx-v0.12.1-desktop.4.linux-amd64.sbom.json",
"https://github.com/docker/buildx-desktop/releases/download/v0.12.1-desktop.4/buildx-v0.12.1-desktop.4.linux-arm-v6",
"https://github.com/docker/buildx-desktop/releases/download/v0.12.1-desktop.4/buildx-v0.12.1-desktop.4.linux-arm-v6.provenance.json",
"https://github.com/docker/buildx-desktop/releases/download/v0.12.1-desktop.4/buildx-v0.12.1-desktop.4.linux-arm-v6.sbom.json",
"https://github.com/docker/buildx-desktop/releases/download/v0.12.1-desktop.4/buildx-v0.12.1-desktop.4.linux-arm-v7",
"https://github.com/docker/buildx-desktop/releases/download/v0.12.1-desktop.4/buildx-v0.12.1-desktop.4.linux-arm-v7.provenance.json",
"https://github.com/docker/buildx-desktop/releases/download/v0.12.1-desktop.4/buildx-v0.12.1-desktop.4.linux-arm-v7.sbom.json",
"https://github.com/docker/buildx-desktop/releases/download/v0.12.1-desktop.4/buildx-v0.12.1-desktop.4.linux-arm64",
"https://github.com/docker/buildx-desktop/releases/download/v0.12.1-desktop.4/buildx-v0.12.1-desktop.4.linux-arm64.provenance.json",
"https://github.com/docker/buildx-desktop/releases/download/v0.12.1-desktop.4/buildx-v0.12.1-desktop.4.linux-arm64.sbom.json",
"https://github.com/docker/buildx-desktop/releases/download/v0.12.1-desktop.4/buildx-v0.12.1-desktop.4.linux-ppc64le",
"https://github.com/docker/buildx-desktop/releases/download/v0.12.1-desktop.4/buildx-v0.12.1-desktop.4.linux-ppc64le.provenance.json",
"https://github.com/docker/buildx-desktop/releases/download/v0.12.1-desktop.4/buildx-v0.12.1-desktop.4.linux-ppc64le.sbom.json",
"https://github.com/docker/buildx-desktop/releases/download/v0.12.1-desktop.4/buildx-v0.12.1-desktop.4.linux-riscv64",
"https://github.com/docker/buildx-desktop/releases/download/v0.12.1-desktop.4/buildx-v0.12.1-desktop.4.linux-riscv64.provenance.json",
"https://github.com/docker/buildx-desktop/releases/download/v0.12.1-desktop.4/buildx-v0.12.1-desktop.4.linux-riscv64.sbom.json",
"https://github.com/docker/buildx-desktop/releases/download/v0.12.1-desktop.4/buildx-v0.12.1-desktop.4.linux-s390x",
"https://github.com/docker/buildx-desktop/releases/download/v0.12.1-desktop.4/buildx-v0.12.1-desktop.4.linux-s390x.provenance.json",
"https://github.com/docker/buildx-desktop/releases/download/v0.12.1-desktop.4/buildx-v0.12.1-desktop.4.linux-s390x.sbom.json",
"https://github.com/docker/buildx-desktop/releases/download/v0.12.1-desktop.4/buildx-v0.12.1-desktop.4.windows-amd64.exe",
"https://github.com/docker/buildx-desktop/releases/download/v0.12.1-desktop.4/buildx-v0.12.1-desktop.4.windows-amd64.provenance.json",
"https://github.com/docker/buildx-desktop/releases/download/v0.12.1-desktop.4/buildx-v0.12.1-desktop.4.windows-amd64.sbom.json",
"https://github.com/docker/buildx-desktop/releases/download/v0.12.1-desktop.4/buildx-v0.12.1-desktop.4.windows-arm64.exe",
"https://github.com/docker/buildx-desktop/releases/download/v0.12.1-desktop.4/buildx-v0.12.1-desktop.4.windows-arm64.provenance.json",
"https://github.com/docker/buildx-desktop/releases/download/v0.12.1-desktop.4/buildx-v0.12.1-desktop.4.windows-arm64.sbom.json",
"https://github.com/docker/buildx-desktop/releases/download/v0.12.1-desktop.4/checksums.txt"
]
},
"v0.12.1-desktop.3": {
"id": 137560191,
"tag_name": "v0.12.1-desktop.3",
"html_url": "https://github.com/docker/buildx-desktop/releases/tag/v0.12.1-desktop.3",
"assets": [
"https://github.com/docker/buildx-desktop/releases/download/v0.12.1-desktop.3/buildx-v0.12.1-desktop.3.darwin-amd64",
"https://github.com/docker/buildx-desktop/releases/download/v0.12.1-desktop.3/buildx-v0.12.1-desktop.3.darwin-amd64.provenance.json",
"https://github.com/docker/buildx-desktop/releases/download/v0.12.1-desktop.3/buildx-v0.12.1-desktop.3.darwin-amd64.sbom.json",
"https://github.com/docker/buildx-desktop/releases/download/v0.12.1-desktop.3/buildx-v0.12.1-desktop.3.darwin-arm64",
"https://github.com/docker/buildx-desktop/releases/download/v0.12.1-desktop.3/buildx-v0.12.1-desktop.3.darwin-arm64.provenance.json",
"https://github.com/docker/buildx-desktop/releases/download/v0.12.1-desktop.3/buildx-v0.12.1-desktop.3.darwin-arm64.sbom.json",
"https://github.com/docker/buildx-desktop/releases/download/v0.12.1-desktop.3/buildx-v0.12.1-desktop.3.linux-amd64",
"https://github.com/docker/buildx-desktop/releases/download/v0.12.1-desktop.3/buildx-v0.12.1-desktop.3.linux-amd64.provenance.json",
"https://github.com/docker/buildx-desktop/releases/download/v0.12.1-desktop.3/buildx-v0.12.1-desktop.3.linux-amd64.sbom.json",
"https://github.com/docker/buildx-desktop/releases/download/v0.12.1-desktop.3/buildx-v0.12.1-desktop.3.linux-arm-v6",
"https://github.com/docker/buildx-desktop/releases/download/v0.12.1-desktop.3/buildx-v0.12.1-desktop.3.linux-arm-v6.provenance.json",
"https://github.com/docker/buildx-desktop/releases/download/v0.12.1-desktop.3/buildx-v0.12.1-desktop.3.linux-arm-v6.sbom.json",
"https://github.com/docker/buildx-desktop/releases/download/v0.12.1-desktop.3/buildx-v0.12.1-desktop.3.linux-arm-v7",
"https://github.com/docker/buildx-desktop/releases/download/v0.12.1-desktop.3/buildx-v0.12.1-desktop.3.linux-arm-v7.provenance.json",
"https://github.com/docker/buildx-desktop/releases/download/v0.12.1-desktop.3/buildx-v0.12.1-desktop.3.linux-arm-v7.sbom.json",
"https://github.com/docker/buildx-desktop/releases/download/v0.12.1-desktop.3/buildx-v0.12.1-desktop.3.linux-arm64",
"https://github.com/docker/buildx-desktop/releases/download/v0.12.1-desktop.3/buildx-v0.12.1-desktop.3.linux-arm64.provenance.json",
"https://github.com/docker/buildx-desktop/releases/download/v0.12.1-desktop.3/buildx-v0.12.1-desktop.3.linux-arm64.sbom.json",
"https://github.com/docker/buildx-desktop/releases/download/v0.12.1-desktop.3/buildx-v0.12.1-desktop.3.linux-ppc64le",
"https://github.com/docker/buildx-desktop/releases/download/v0.12.1-desktop.3/buildx-v0.12.1-desktop.3.linux-ppc64le.provenance.json",
"https://github.com/docker/buildx-desktop/releases/download/v0.12.1-desktop.3/buildx-v0.12.1-desktop.3.linux-ppc64le.sbom.json",
"https://github.com/docker/buildx-desktop/releases/download/v0.12.1-desktop.3/buildx-v0.12.1-desktop.3.linux-riscv64",
"https://github.com/docker/buildx-desktop/releases/download/v0.12.1-desktop.3/buildx-v0.12.1-desktop.3.linux-riscv64.provenance.json",
"https://github.com/docker/buildx-desktop/releases/download/v0.12.1-desktop.3/buildx-v0.12.1-desktop.3.linux-riscv64.sbom.json",
"https://github.com/docker/buildx-desktop/releases/download/v0.12.1-desktop.3/buildx-v0.12.1-desktop.3.linux-s390x",
"https://github.com/docker/buildx-desktop/releases/download/v0.12.1-desktop.3/buildx-v0.12.1-desktop.3.linux-s390x.provenance.json",
"https://github.com/docker/buildx-desktop/releases/download/v0.12.1-desktop.3/buildx-v0.12.1-desktop.3.linux-s390x.sbom.json",
"https://github.com/docker/buildx-desktop/releases/download/v0.12.1-desktop.3/buildx-v0.12.1-desktop.3.windows-amd64.exe",
"https://github.com/docker/buildx-desktop/releases/download/v0.12.1-desktop.3/buildx-v0.12.1-desktop.3.windows-amd64.provenance.json",
"https://github.com/docker/buildx-desktop/releases/download/v0.12.1-desktop.3/buildx-v0.12.1-desktop.3.windows-amd64.sbom.json",
"https://github.com/docker/buildx-desktop/releases/download/v0.12.1-desktop.3/buildx-v0.12.1-desktop.3.windows-arm64.exe",
"https://github.com/docker/buildx-desktop/releases/download/v0.12.1-desktop.3/buildx-v0.12.1-desktop.3.windows-arm64.provenance.json",
"https://github.com/docker/buildx-desktop/releases/download/v0.12.1-desktop.3/buildx-v0.12.1-desktop.3.windows-arm64.sbom.json",
"https://github.com/docker/buildx-desktop/releases/download/v0.12.1-desktop.3/checksums.txt"
]
},
"v0.12.0-desktop.2": {
"id": 132264953,
"tag_name": "v0.12.0-desktop.2",
"html_url": "https://github.com/docker/buildx-desktop/releases/tag/v0.12.0-desktop.2",
"assets": [
"https://github.com/docker/buildx-desktop/releases/download/v0.12.0-desktop.2/buildx-v0.12.0-desktop.2.darwin-amd64",
"https://github.com/docker/buildx-desktop/releases/download/v0.12.0-desktop.2/buildx-v0.12.0-desktop.2.darwin-amd64.provenance.json",
"https://github.com/docker/buildx-desktop/releases/download/v0.12.0-desktop.2/buildx-v0.12.0-desktop.2.darwin-amd64.sbom.json",
"https://github.com/docker/buildx-desktop/releases/download/v0.12.0-desktop.2/buildx-v0.12.0-desktop.2.darwin-arm64",
"https://github.com/docker/buildx-desktop/releases/download/v0.12.0-desktop.2/buildx-v0.12.0-desktop.2.darwin-arm64.provenance.json",
"https://github.com/docker/buildx-desktop/releases/download/v0.12.0-desktop.2/buildx-v0.12.0-desktop.2.darwin-arm64.sbom.json",
"https://github.com/docker/buildx-desktop/releases/download/v0.12.0-desktop.2/buildx-v0.12.0-desktop.2.linux-amd64",
"https://github.com/docker/buildx-desktop/releases/download/v0.12.0-desktop.2/buildx-v0.12.0-desktop.2.linux-amd64.provenance.json",
"https://github.com/docker/buildx-desktop/releases/download/v0.12.0-desktop.2/buildx-v0.12.0-desktop.2.linux-amd64.sbom.json",
"https://github.com/docker/buildx-desktop/releases/download/v0.12.0-desktop.2/buildx-v0.12.0-desktop.2.linux-arm-v6",
"https://github.com/docker/buildx-desktop/releases/download/v0.12.0-desktop.2/buildx-v0.12.0-desktop.2.linux-arm-v6.provenance.json",
"https://github.com/docker/buildx-desktop/releases/download/v0.12.0-desktop.2/buildx-v0.12.0-desktop.2.linux-arm-v6.sbom.json",
"https://github.com/docker/buildx-desktop/releases/download/v0.12.0-desktop.2/buildx-v0.12.0-desktop.2.linux-arm-v7",
"https://github.com/docker/buildx-desktop/releases/download/v0.12.0-desktop.2/buildx-v0.12.0-desktop.2.linux-arm-v7.provenance.json",
"https://github.com/docker/buildx-desktop/releases/download/v0.12.0-desktop.2/buildx-v0.12.0-desktop.2.linux-arm-v7.sbom.json",
"https://github.com/docker/buildx-desktop/releases/download/v0.12.0-desktop.2/buildx-v0.12.0-desktop.2.linux-arm64",
"https://github.com/docker/buildx-desktop/releases/download/v0.12.0-desktop.2/buildx-v0.12.0-desktop.2.linux-arm64.provenance.json",
"https://github.com/docker/buildx-desktop/releases/download/v0.12.0-desktop.2/buildx-v0.12.0-desktop.2.linux-arm64.sbom.json",
"https://github.com/docker/buildx-desktop/releases/download/v0.12.0-desktop.2/buildx-v0.12.0-desktop.2.linux-ppc64le",
"https://github.com/docker/buildx-desktop/releases/download/v0.12.0-desktop.2/buildx-v0.12.0-desktop.2.linux-ppc64le.provenance.json",
"https://github.com/docker/buildx-desktop/releases/download/v0.12.0-desktop.2/buildx-v0.12.0-desktop.2.linux-ppc64le.sbom.json",
"https://github.com/docker/buildx-desktop/releases/download/v0.12.0-desktop.2/buildx-v0.12.0-desktop.2.linux-riscv64",
"https://github.com/docker/buildx-desktop/releases/download/v0.12.0-desktop.2/buildx-v0.12.0-desktop.2.linux-riscv64.provenance.json",
"https://github.com/docker/buildx-desktop/releases/download/v0.12.0-desktop.2/buildx-v0.12.0-desktop.2.linux-riscv64.sbom.json",
"https://github.com/docker/buildx-desktop/releases/download/v0.12.0-desktop.2/buildx-v0.12.0-desktop.2.linux-s390x",
"https://github.com/docker/buildx-desktop/releases/download/v0.12.0-desktop.2/buildx-v0.12.0-desktop.2.linux-s390x.provenance.json",
"https://github.com/docker/buildx-desktop/releases/download/v0.12.0-desktop.2/buildx-v0.12.0-desktop.2.linux-s390x.sbom.json",
"https://github.com/docker/buildx-desktop/releases/download/v0.12.0-desktop.2/buildx-v0.12.0-desktop.2.windows-amd64.exe",
"https://github.com/docker/buildx-desktop/releases/download/v0.12.0-desktop.2/buildx-v0.12.0-desktop.2.windows-amd64.provenance.json",
"https://github.com/docker/buildx-desktop/releases/download/v0.12.0-desktop.2/buildx-v0.12.0-desktop.2.windows-amd64.sbom.json",
"https://github.com/docker/buildx-desktop/releases/download/v0.12.0-desktop.2/buildx-v0.12.0-desktop.2.windows-arm64.exe",
"https://github.com/docker/buildx-desktop/releases/download/v0.12.0-desktop.2/buildx-v0.12.0-desktop.2.windows-arm64.provenance.json",
"https://github.com/docker/buildx-desktop/releases/download/v0.12.0-desktop.2/buildx-v0.12.0-desktop.2.windows-arm64.sbom.json",
"https://github.com/docker/buildx-desktop/releases/download/v0.12.0-desktop.2/checksums.txt"
]
},
"v0.12.0-desktop.1": {
"id": 130699107,
"tag_name": "v0.12.0-desktop.1",
"html_url": "https://github.com/docker/buildx-desktop/releases/tag/v0.12.0-desktop.1",
"assets": [
"https://github.com/docker/buildx-desktop/releases/download/v0.12.0-desktop.1/buildx-v0.12.0-desktop.1.darwin-amd64",
"https://github.com/docker/buildx-desktop/releases/download/v0.12.0-desktop.1/buildx-v0.12.0-desktop.1.darwin-amd64.provenance.json",
"https://github.com/docker/buildx-desktop/releases/download/v0.12.0-desktop.1/buildx-v0.12.0-desktop.1.darwin-amd64.sbom.json",
"https://github.com/docker/buildx-desktop/releases/download/v0.12.0-desktop.1/buildx-v0.12.0-desktop.1.darwin-arm64",
"https://github.com/docker/buildx-desktop/releases/download/v0.12.0-desktop.1/buildx-v0.12.0-desktop.1.darwin-arm64.provenance.json",
"https://github.com/docker/buildx-desktop/releases/download/v0.12.0-desktop.1/buildx-v0.12.0-desktop.1.darwin-arm64.sbom.json",
"https://github.com/docker/buildx-desktop/releases/download/v0.12.0-desktop.1/buildx-v0.12.0-desktop.1.linux-amd64",
"https://github.com/docker/buildx-desktop/releases/download/v0.12.0-desktop.1/buildx-v0.12.0-desktop.1.linux-amd64.provenance.json",
"https://github.com/docker/buildx-desktop/releases/download/v0.12.0-desktop.1/buildx-v0.12.0-desktop.1.linux-amd64.sbom.json",
"https://github.com/docker/buildx-desktop/releases/download/v0.12.0-desktop.1/buildx-v0.12.0-desktop.1.linux-arm-v6",
"https://github.com/docker/buildx-desktop/releases/download/v0.12.0-desktop.1/buildx-v0.12.0-desktop.1.linux-arm-v6.provenance.json",
"https://github.com/docker/buildx-desktop/releases/download/v0.12.0-desktop.1/buildx-v0.12.0-desktop.1.linux-arm-v6.sbom.json",
"https://github.com/docker/buildx-desktop/releases/download/v0.12.0-desktop.1/buildx-v0.12.0-desktop.1.linux-arm-v7",
"https://github.com/docker/buildx-desktop/releases/download/v0.12.0-desktop.1/buildx-v0.12.0-desktop.1.linux-arm-v7.provenance.json",
"https://github.com/docker/buildx-desktop/releases/download/v0.12.0-desktop.1/buildx-v0.12.0-desktop.1.linux-arm-v7.sbom.json",
"https://github.com/docker/buildx-desktop/releases/download/v0.12.0-desktop.1/buildx-v0.12.0-desktop.1.linux-arm64",
"https://github.com/docker/buildx-desktop/releases/download/v0.12.0-desktop.1/buildx-v0.12.0-desktop.1.linux-arm64.provenance.json",
"https://github.com/docker/buildx-desktop/releases/download/v0.12.0-desktop.1/buildx-v0.12.0-desktop.1.linux-arm64.sbom.json",
"https://github.com/docker/buildx-desktop/releases/download/v0.12.0-desktop.1/buildx-v0.12.0-desktop.1.linux-ppc64le",
"https://github.com/docker/buildx-desktop/releases/download/v0.12.0-desktop.1/buildx-v0.12.0-desktop.1.linux-ppc64le.provenance.json",
"https://github.com/docker/buildx-desktop/releases/download/v0.12.0-desktop.1/buildx-v0.12.0-desktop.1.linux-ppc64le.sbom.json",
"https://github.com/docker/buildx-desktop/releases/download/v0.12.0-desktop.1/buildx-v0.12.0-desktop.1.linux-riscv64",
"https://github.com/docker/buildx-desktop/releases/download/v0.12.0-desktop.1/buildx-v0.12.0-desktop.1.linux-riscv64.provenance.json",
"https://github.com/docker/buildx-desktop/releases/download/v0.12.0-desktop.1/buildx-v0.12.0-desktop.1.linux-riscv64.sbom.json",
"https://github.com/docker/buildx-desktop/releases/download/v0.12.0-desktop.1/buildx-v0.12.0-desktop.1.linux-s390x",
"https://github.com/docker/buildx-desktop/releases/download/v0.12.0-desktop.1/buildx-v0.12.0-desktop.1.linux-s390x.provenance.json",
"https://github.com/docker/buildx-desktop/releases/download/v0.12.0-desktop.1/buildx-v0.12.0-desktop.1.linux-s390x.sbom.json",
"https://github.com/docker/buildx-desktop/releases/download/v0.12.0-desktop.1/buildx-v0.12.0-desktop.1.windows-amd64.exe",
"https://github.com/docker/buildx-desktop/releases/download/v0.12.0-desktop.1/buildx-v0.12.0-desktop.1.windows-amd64.provenance.json",
"https://github.com/docker/buildx-desktop/releases/download/v0.12.0-desktop.1/buildx-v0.12.0-desktop.1.windows-amd64.sbom.json",
"https://github.com/docker/buildx-desktop/releases/download/v0.12.0-desktop.1/buildx-v0.12.0-desktop.1.windows-arm64.exe",
"https://github.com/docker/buildx-desktop/releases/download/v0.12.0-desktop.1/buildx-v0.12.0-desktop.1.windows-arm64.provenance.json",
"https://github.com/docker/buildx-desktop/releases/download/v0.12.0-desktop.1/buildx-v0.12.0-desktop.1.windows-arm64.sbom.json",
"https://github.com/docker/buildx-desktop/releases/download/v0.12.0-desktop.1/checksums.txt"
]
},
"v0.11.2-desktop.5": {
"id": 123496811,
"tag_name": "v0.11.2-desktop.5",
"html_url": "https://github.com/docker/buildx-desktop/releases/tag/v0.11.2-desktop.5",
"assets": [
"https://github.com/docker/buildx-desktop/releases/download/v0.11.2-desktop.5/buildx-v0.11.2-desktop.5.darwin-amd64",
"https://github.com/docker/buildx-desktop/releases/download/v0.11.2-desktop.5/buildx-v0.11.2-desktop.5.darwin-amd64.provenance.json",
"https://github.com/docker/buildx-desktop/releases/download/v0.11.2-desktop.5/buildx-v0.11.2-desktop.5.darwin-amd64.sbom.json",
"https://github.com/docker/buildx-desktop/releases/download/v0.11.2-desktop.5/buildx-v0.11.2-desktop.5.darwin-arm64",
"https://github.com/docker/buildx-desktop/releases/download/v0.11.2-desktop.5/buildx-v0.11.2-desktop.5.darwin-arm64.provenance.json",
"https://github.com/docker/buildx-desktop/releases/download/v0.11.2-desktop.5/buildx-v0.11.2-desktop.5.darwin-arm64.sbom.json",
"https://github.com/docker/buildx-desktop/releases/download/v0.11.2-desktop.5/buildx-v0.11.2-desktop.5.linux-amd64",
"https://github.com/docker/buildx-desktop/releases/download/v0.11.2-desktop.5/buildx-v0.11.2-desktop.5.linux-amd64.provenance.json",
"https://github.com/docker/buildx-desktop/releases/download/v0.11.2-desktop.5/buildx-v0.11.2-desktop.5.linux-amd64.sbom.json",
"https://github.com/docker/buildx-desktop/releases/download/v0.11.2-desktop.5/buildx-v0.11.2-desktop.5.linux-arm-v6",
"https://github.com/docker/buildx-desktop/releases/download/v0.11.2-desktop.5/buildx-v0.11.2-desktop.5.linux-arm-v6.provenance.json",
"https://github.com/docker/buildx-desktop/releases/download/v0.11.2-desktop.5/buildx-v0.11.2-desktop.5.linux-arm-v6.sbom.json",
"https://github.com/docker/buildx-desktop/releases/download/v0.11.2-desktop.5/buildx-v0.11.2-desktop.5.linux-arm-v7",
"https://github.com/docker/buildx-desktop/releases/download/v0.11.2-desktop.5/buildx-v0.11.2-desktop.5.linux-arm-v7.provenance.json",
"https://github.com/docker/buildx-desktop/releases/download/v0.11.2-desktop.5/buildx-v0.11.2-desktop.5.linux-arm-v7.sbom.json",
"https://github.com/docker/buildx-desktop/releases/download/v0.11.2-desktop.5/buildx-v0.11.2-desktop.5.linux-arm64",
"https://github.com/docker/buildx-desktop/releases/download/v0.11.2-desktop.5/buildx-v0.11.2-desktop.5.linux-arm64.provenance.json",
"https://github.com/docker/buildx-desktop/releases/download/v0.11.2-desktop.5/buildx-v0.11.2-desktop.5.linux-arm64.sbom.json",
"https://github.com/docker/buildx-desktop/releases/download/v0.11.2-desktop.5/buildx-v0.11.2-desktop.5.linux-ppc64le",
"https://github.com/docker/buildx-desktop/releases/download/v0.11.2-desktop.5/buildx-v0.11.2-desktop.5.linux-ppc64le.provenance.json",
"https://github.com/docker/buildx-desktop/releases/download/v0.11.2-desktop.5/buildx-v0.11.2-desktop.5.linux-ppc64le.sbom.json",
"https://github.com/docker/buildx-desktop/releases/download/v0.11.2-desktop.5/buildx-v0.11.2-desktop.5.linux-riscv64",
"https://github.com/docker/buildx-desktop/releases/download/v0.11.2-desktop.5/buildx-v0.11.2-desktop.5.linux-riscv64.provenance.json",
"https://github.com/docker/buildx-desktop/releases/download/v0.11.2-desktop.5/buildx-v0.11.2-desktop.5.linux-riscv64.sbom.json",
"https://github.com/docker/buildx-desktop/releases/download/v0.11.2-desktop.5/buildx-v0.11.2-desktop.5.linux-s390x",
"https://github.com/docker/buildx-desktop/releases/download/v0.11.2-desktop.5/buildx-v0.11.2-desktop.5.linux-s390x.provenance.json",
"https://github.com/docker/buildx-desktop/releases/download/v0.11.2-desktop.5/buildx-v0.11.2-desktop.5.linux-s390x.sbom.json",
"https://github.com/docker/buildx-desktop/releases/download/v0.11.2-desktop.5/buildx-v0.11.2-desktop.5.windows-amd64.exe",
"https://github.com/docker/buildx-desktop/releases/download/v0.11.2-desktop.5/buildx-v0.11.2-desktop.5.windows-amd64.provenance.json",
"https://github.com/docker/buildx-desktop/releases/download/v0.11.2-desktop.5/buildx-v0.11.2-desktop.5.windows-amd64.sbom.json",
"https://github.com/docker/buildx-desktop/releases/download/v0.11.2-desktop.5/buildx-v0.11.2-desktop.5.windows-arm64.exe",
"https://github.com/docker/buildx-desktop/releases/download/v0.11.2-desktop.5/buildx-v0.11.2-desktop.5.windows-arm64.provenance.json",
"https://github.com/docker/buildx-desktop/releases/download/v0.11.2-desktop.5/buildx-v0.11.2-desktop.5.windows-arm64.sbom.json",
"https://github.com/docker/buildx-desktop/releases/download/v0.11.2-desktop.5/checksums.txt"
]
},
"v0.11.2-desktop.4": {
"id": 119399782,
"tag_name": "v0.11.2-desktop.4",
"html_url": "https://github.com/docker/buildx-desktop/releases/tag/v0.11.2-desktop.4",
"assets": [
"https://github.com/docker/buildx-desktop/releases/download/v0.11.2-desktop.4/buildx-v0.11.2-desktop.4.darwin-amd64",
"https://github.com/docker/buildx-desktop/releases/download/v0.11.2-desktop.4/buildx-v0.11.2-desktop.4.darwin-amd64.provenance.json",
"https://github.com/docker/buildx-desktop/releases/download/v0.11.2-desktop.4/buildx-v0.11.2-desktop.4.darwin-amd64.sbom.json",
"https://github.com/docker/buildx-desktop/releases/download/v0.11.2-desktop.4/buildx-v0.11.2-desktop.4.darwin-arm64",
"https://github.com/docker/buildx-desktop/releases/download/v0.11.2-desktop.4/buildx-v0.11.2-desktop.4.darwin-arm64.provenance.json",
"https://github.com/docker/buildx-desktop/releases/download/v0.11.2-desktop.4/buildx-v0.11.2-desktop.4.darwin-arm64.sbom.json",
"https://github.com/docker/buildx-desktop/releases/download/v0.11.2-desktop.4/buildx-v0.11.2-desktop.4.linux-amd64",
"https://github.com/docker/buildx-desktop/releases/download/v0.11.2-desktop.4/buildx-v0.11.2-desktop.4.linux-amd64.provenance.json",
"https://github.com/docker/buildx-desktop/releases/download/v0.11.2-desktop.4/buildx-v0.11.2-desktop.4.linux-amd64.sbom.json",
"https://github.com/docker/buildx-desktop/releases/download/v0.11.2-desktop.4/buildx-v0.11.2-desktop.4.linux-arm-v6",
"https://github.com/docker/buildx-desktop/releases/download/v0.11.2-desktop.4/buildx-v0.11.2-desktop.4.linux-arm-v6.provenance.json",
"https://github.com/docker/buildx-desktop/releases/download/v0.11.2-desktop.4/buildx-v0.11.2-desktop.4.linux-arm-v6.sbom.json",
"https://github.com/docker/buildx-desktop/releases/download/v0.11.2-desktop.4/buildx-v0.11.2-desktop.4.linux-arm-v7",
"https://github.com/docker/buildx-desktop/releases/download/v0.11.2-desktop.4/buildx-v0.11.2-desktop.4.linux-arm-v7.provenance.json",
"https://github.com/docker/buildx-desktop/releases/download/v0.11.2-desktop.4/buildx-v0.11.2-desktop.4.linux-arm-v7.sbom.json",
"https://github.com/docker/buildx-desktop/releases/download/v0.11.2-desktop.4/buildx-v0.11.2-desktop.4.linux-arm64",
"https://github.com/docker/buildx-desktop/releases/download/v0.11.2-desktop.4/buildx-v0.11.2-desktop.4.linux-arm64.provenance.json",
"https://github.com/docker/buildx-desktop/releases/download/v0.11.2-desktop.4/buildx-v0.11.2-desktop.4.linux-arm64.sbom.json",
"https://github.com/docker/buildx-desktop/releases/download/v0.11.2-desktop.4/buildx-v0.11.2-desktop.4.linux-ppc64le",
"https://github.com/docker/buildx-desktop/releases/download/v0.11.2-desktop.4/buildx-v0.11.2-desktop.4.linux-ppc64le.provenance.json",
"https://github.com/docker/buildx-desktop/releases/download/v0.11.2-desktop.4/buildx-v0.11.2-desktop.4.linux-ppc64le.sbom.json",
"https://github.com/docker/buildx-desktop/releases/download/v0.11.2-desktop.4/buildx-v0.11.2-desktop.4.linux-riscv64",
"https://github.com/docker/buildx-desktop/releases/download/v0.11.2-desktop.4/buildx-v0.11.2-desktop.4.linux-riscv64.provenance.json",
"https://github.com/docker/buildx-desktop/releases/download/v0.11.2-desktop.4/buildx-v0.11.2-desktop.4.linux-riscv64.sbom.json",
"https://github.com/docker/buildx-desktop/releases/download/v0.11.2-desktop.4/buildx-v0.11.2-desktop.4.linux-s390x",
"https://github.com/docker/buildx-desktop/releases/download/v0.11.2-desktop.4/buildx-v0.11.2-desktop.4.linux-s390x.provenance.json",
"https://github.com/docker/buildx-desktop/releases/download/v0.11.2-desktop.4/buildx-v0.11.2-desktop.4.linux-s390x.sbom.json",
"https://github.com/docker/buildx-desktop/releases/download/v0.11.2-desktop.4/buildx-v0.11.2-desktop.4.windows-amd64.exe",
"https://github.com/docker/buildx-desktop/releases/download/v0.11.2-desktop.4/buildx-v0.11.2-desktop.4.windows-amd64.provenance.json",
"https://github.com/docker/buildx-desktop/releases/download/v0.11.2-desktop.4/buildx-v0.11.2-desktop.4.windows-amd64.sbom.json",
"https://github.com/docker/buildx-desktop/releases/download/v0.11.2-desktop.4/buildx-v0.11.2-desktop.4.windows-arm64.exe",
"https://github.com/docker/buildx-desktop/releases/download/v0.11.2-desktop.4/buildx-v0.11.2-desktop.4.windows-arm64.provenance.json",
"https://github.com/docker/buildx-desktop/releases/download/v0.11.2-desktop.4/buildx-v0.11.2-desktop.4.windows-arm64.sbom.json",
"https://github.com/docker/buildx-desktop/releases/download/v0.11.2-desktop.4/checksums.txt"
]
},
"v0.11.2-desktop.2": {
"id": 118213369,
"tag_name": "v0.11.2-desktop.2",
"html_url": "https://github.com/docker/buildx-desktop/releases/tag/v0.11.2-desktop.2",
"assets": [
"https://github.com/docker/buildx-desktop/releases/download/v0.11.2-desktop.2/buildx-v0.11.2-desktop.2.darwin-amd64",
"https://github.com/docker/buildx-desktop/releases/download/v0.11.2-desktop.2/buildx-v0.11.2-desktop.2.darwin-amd64.provenance.json",
"https://github.com/docker/buildx-desktop/releases/download/v0.11.2-desktop.2/buildx-v0.11.2-desktop.2.darwin-amd64.sbom.json",
"https://github.com/docker/buildx-desktop/releases/download/v0.11.2-desktop.2/buildx-v0.11.2-desktop.2.darwin-arm64",
"https://github.com/docker/buildx-desktop/releases/download/v0.11.2-desktop.2/buildx-v0.11.2-desktop.2.darwin-arm64.provenance.json",
"https://github.com/docker/buildx-desktop/releases/download/v0.11.2-desktop.2/buildx-v0.11.2-desktop.2.darwin-arm64.sbom.json",
"https://github.com/docker/buildx-desktop/releases/download/v0.11.2-desktop.2/buildx-v0.11.2-desktop.2.linux-amd64",
"https://github.com/docker/buildx-desktop/releases/download/v0.11.2-desktop.2/buildx-v0.11.2-desktop.2.linux-amd64.provenance.json",
"https://github.com/docker/buildx-desktop/releases/download/v0.11.2-desktop.2/buildx-v0.11.2-desktop.2.linux-amd64.sbom.json",
"https://github.com/docker/buildx-desktop/releases/download/v0.11.2-desktop.2/buildx-v0.11.2-desktop.2.linux-arm-v6",
"https://github.com/docker/buildx-desktop/releases/download/v0.11.2-desktop.2/buildx-v0.11.2-desktop.2.linux-arm-v6.provenance.json",
"https://github.com/docker/buildx-desktop/releases/download/v0.11.2-desktop.2/buildx-v0.11.2-desktop.2.linux-arm-v6.sbom.json",
"https://github.com/docker/buildx-desktop/releases/download/v0.11.2-desktop.2/buildx-v0.11.2-desktop.2.linux-arm-v7",
"https://github.com/docker/buildx-desktop/releases/download/v0.11.2-desktop.2/buildx-v0.11.2-desktop.2.linux-arm-v7.provenance.json",
"https://github.com/docker/buildx-desktop/releases/download/v0.11.2-desktop.2/buildx-v0.11.2-desktop.2.linux-arm-v7.sbom.json",
"https://github.com/docker/buildx-desktop/releases/download/v0.11.2-desktop.2/buildx-v0.11.2-desktop.2.linux-arm64",
"https://github.com/docker/buildx-desktop/releases/download/v0.11.2-desktop.2/buildx-v0.11.2-desktop.2.linux-arm64.provenance.json",
"https://github.com/docker/buildx-desktop/releases/download/v0.11.2-desktop.2/buildx-v0.11.2-desktop.2.linux-arm64.sbom.json",
"https://github.com/docker/buildx-desktop/releases/download/v0.11.2-desktop.2/buildx-v0.11.2-desktop.2.linux-ppc64le",
"https://github.com/docker/buildx-desktop/releases/download/v0.11.2-desktop.2/buildx-v0.11.2-desktop.2.linux-ppc64le.provenance.json",
"https://github.com/docker/buildx-desktop/releases/download/v0.11.2-desktop.2/buildx-v0.11.2-desktop.2.linux-ppc64le.sbom.json",
"https://github.com/docker/buildx-desktop/releases/download/v0.11.2-desktop.2/buildx-v0.11.2-desktop.2.linux-riscv64",
"https://github.com/docker/buildx-desktop/releases/download/v0.11.2-desktop.2/buildx-v0.11.2-desktop.2.linux-riscv64.provenance.json",
"https://github.com/docker/buildx-desktop/releases/download/v0.11.2-desktop.2/buildx-v0.11.2-desktop.2.linux-riscv64.sbom.json",
"https://github.com/docker/buildx-desktop/releases/download/v0.11.2-desktop.2/buildx-v0.11.2-desktop.2.linux-s390x",
"https://github.com/docker/buildx-desktop/releases/download/v0.11.2-desktop.2/buildx-v0.11.2-desktop.2.linux-s390x.provenance.json",
"https://github.com/docker/buildx-desktop/releases/download/v0.11.2-desktop.2/buildx-v0.11.2-desktop.2.linux-s390x.sbom.json",
"https://github.com/docker/buildx-desktop/releases/download/v0.11.2-desktop.2/buildx-v0.11.2-desktop.2.windows-amd64.exe",
"https://github.com/docker/buildx-desktop/releases/download/v0.11.2-desktop.2/buildx-v0.11.2-desktop.2.windows-amd64.provenance.json",
"https://github.com/docker/buildx-desktop/releases/download/v0.11.2-desktop.2/buildx-v0.11.2-desktop.2.windows-amd64.sbom.json",
"https://github.com/docker/buildx-desktop/releases/download/v0.11.2-desktop.2/buildx-v0.11.2-desktop.2.windows-arm64.exe",
"https://github.com/docker/buildx-desktop/releases/download/v0.11.2-desktop.2/buildx-v0.11.2-desktop.2.windows-arm64.provenance.json",
"https://github.com/docker/buildx-desktop/releases/download/v0.11.2-desktop.2/buildx-v0.11.2-desktop.2.windows-arm64.sbom.json",
"https://github.com/docker/buildx-desktop/releases/download/v0.11.2-desktop.2/checksums.txt"
]
}
}

1719
.github/buildx-releases.json vendored Normal file

File diff suppressed because it is too large Load Diff

View File

@@ -11,8 +11,13 @@ updates:
directory: "/"
schedule:
interval: "daily"
versioning-strategy: "increase"
allow:
- dependency-type: "production"
ignore:
- # we want to match the same version as the one used by @actions/artifact
# https://github.com/actions/toolkit/blob/ae38557bb0dba824cdda26ce787bd6b66cf07a83/packages/artifact/package.json#L46
dependency-name: "@azure/storage-blob"
labels:
- "dependencies"
- "bot"

1064
.github/docker-releases.json vendored Normal file

File diff suppressed because it is too large Load Diff

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

@@ -0,0 +1,26 @@
name: build
concurrency:
group: ${{ github.workflow }}-${{ github.ref }}
cancel-in-progress: true
on:
push:
branches:
- 'main'
pull_request:
paths-ignore:
- '.github/*-releases.json'
jobs:
build:
runs-on: ubuntu-latest
steps:
-
name: Checkout
uses: actions/checkout@v4
-
name: Build
uses: docker/bake-action@v5
with:
targets: build

View File

@@ -0,0 +1,58 @@
name: buildx-lab-releases-json
concurrency:
group: ${{ github.workflow }}-${{ github.ref }}
cancel-in-progress: true
on:
workflow_dispatch:
schedule:
- cron: '0 */12 * * *'
push:
branches:
- 'main'
pull_request:
paths-ignore:
- '.github/*-releases.json'
jobs:
generate:
uses: crazy-max/.github/.github/workflows/releases-json.yml@fa6141aedf23596fb8bdcceab9cce8dadaa31bd9
with:
repository: docker/buildx-desktop
artifact_name: buildx-lab-releases-json
filename: buildx-lab-releases.json
secrets: inherit
open-pr:
runs-on: ubuntu-22.04
if: github.event_name != 'pull_request'
needs:
- generate
steps:
-
name: Checkout
uses: actions/checkout@v4
-
name: Download
uses: actions/download-artifact@v4
with:
name: buildx-lab-releases-json
path: .github
-
name: Commit changes
run: |
git add -A .
-
name: Create PR
uses: peter-evans/create-pull-request@c5a7806660adbe173f04e3e038b0ccdcd758773c # v6.1.0
with:
base: main
branch: bot/buildx-lab-releases-json
commit-message: "github: update .github/buildx-lab-releases.json"
signoff: true
delete-branch: true
title: "Update `.github/buildx-lab-releases.json`"
body: |
Update `.github/buildx-lab-releases.json` to keep in sync with [https://github.com/docker/buildx-desktop](https://github.com/docker/buildx-desktop).
draft: false

View File

@@ -0,0 +1,58 @@
name: buildx-releases-json
concurrency:
group: ${{ github.workflow }}-${{ github.ref }}
cancel-in-progress: true
on:
workflow_dispatch:
schedule:
- cron: '0 */12 * * *'
push:
branches:
- 'main'
pull_request:
paths-ignore:
- '.github/*-releases.json'
jobs:
generate:
uses: crazy-max/.github/.github/workflows/releases-json.yml@fa6141aedf23596fb8bdcceab9cce8dadaa31bd9
with:
repository: docker/buildx
artifact_name: buildx-releases-json
filename: buildx-releases.json
secrets: inherit
open-pr:
runs-on: ubuntu-22.04
if: github.event_name != 'pull_request'
needs:
- generate
steps:
-
name: Checkout
uses: actions/checkout@v4
-
name: Download
uses: actions/download-artifact@v4
with:
name: buildx-releases-json
path: .github
-
name: Commit changes
run: |
git add -A .
-
name: Create PR
uses: peter-evans/create-pull-request@c5a7806660adbe173f04e3e038b0ccdcd758773c # v6.1.0
with:
base: main
branch: bot/buildx-releases-json
commit-message: "github: update .github/buildx-releases.json"
signoff: true
delete-branch: true
title: "Update `.github/buildx-releases.json`"
body: |
Update `.github/buildx-releases.json` to keep in sync with [https://github.com/docker/buildx](https://github.com/docker/buildx).
draft: false

46
.github/workflows/codeql.yml vendored Normal file
View File

@@ -0,0 +1,46 @@
name: codeql
on:
push:
branches:
- 'main'
pull_request:
permissions:
actions: read
contents: read
security-events: write
env:
NODE_VERSION: 20
jobs:
analyze:
runs-on: ubuntu-latest
steps:
-
name: Checkout
uses: actions/checkout@v4
-
name: Enable corepack
run: |
corepack enable
yarn --version
-
name: Set up Node
uses: actions/setup-node@v4
with:
node-version: ${{ env.NODE_VERSION }}
-
name: Initialize CodeQL
uses: github/codeql-action/init@v3
with:
languages: javascript-typescript
-
name: Autobuild
uses: github/codeql-action/autobuild@v3
-
name: Perform CodeQL Analysis
uses: github/codeql-action/analyze@v3
with:
category: "/language:javascript-typescript"

View File

@@ -0,0 +1,58 @@
name: docker-releases-json
concurrency:
group: ${{ github.workflow }}-${{ github.ref }}
cancel-in-progress: true
on:
workflow_dispatch:
schedule:
- cron: '0 */12 * * *'
push:
branches:
- 'main'
pull_request:
paths-ignore:
- '.github/*-releases.json'
jobs:
generate:
uses: crazy-max/.github/.github/workflows/releases-json.yml@fa6141aedf23596fb8bdcceab9cce8dadaa31bd9
with:
repository: moby/moby
artifact_name: docker-releases-json
filename: docker-releases.json
secrets: inherit
open-pr:
runs-on: ubuntu-22.04
if: github.event_name != 'pull_request'
needs:
- generate
steps:
-
name: Checkout
uses: actions/checkout@v4
-
name: Download
uses: actions/download-artifact@v4
with:
name: docker-releases-json
path: .github
-
name: Commit changes
run: |
git add -A .
-
name: Create PR
uses: peter-evans/create-pull-request@c5a7806660adbe173f04e3e038b0ccdcd758773c # v6.1.0
with:
base: main
branch: bot/docker-releases-json
commit-message: "github: update .github/docker-releases.json"
signoff: true
delete-branch: true
title: "Update `.github/docker-releases.json`"
body: |
Update `.github/docker-releases.json` to keep in sync with [https://github.com/moby/moby](https://github.com/moby/moby).
draft: false

View File

@@ -1,5 +1,9 @@
name: publish
concurrency:
group: ${{ github.workflow }}-${{ github.ref }}
cancel-in-progress: true
on:
push:
tags:
@@ -11,13 +15,13 @@ jobs:
steps:
-
name: Checkout
uses: actions/checkout@v3
uses: actions/checkout@v4
-
name: Set up Docker Buildx
uses: docker/setup-buildx-action@v2
uses: docker/setup-buildx-action@v3
-
name: Publish
uses: docker/bake-action@v2
uses: docker/bake-action@v5
with:
targets: publish
env:

View File

@@ -1,10 +1,21 @@
name: test
concurrency:
group: ${{ github.workflow }}-${{ github.ref }}
cancel-in-progress: true
on:
workflow_dispatch:
push:
branches:
- 'main'
pull_request:
paths-ignore:
- '.github/*-releases.json'
env:
NODE_VERSION: "20"
BUILDX_VERSION: "v0.15.1"
jobs:
test:
@@ -12,21 +23,147 @@ jobs:
steps:
-
name: Checkout
uses: actions/checkout@v3
-
name: Validate
uses: docker/bake-action@v2
with:
targets: validate
uses: actions/checkout@v4
-
name: Test
uses: docker/bake-action@v2
uses: docker/bake-action@v5
with:
targets: test-coverage
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
# -
# name: Upload coverage
# uses: codecov/codecov-action@v3
# with:
# file: ./coverage/clover.xml
-
name: Check coverage
run: |
if [ -f ./coverage/clover.xml ] && [ ! -f ./coverage/allSkipped.txt ]; then
echo "RUN_CODECOV=true" >> $GITHUB_ENV
else
echo "RUN_CODECOV=false" >> $GITHUB_ENV
fi
shell: bash
-
name: Upload coverage
uses: codecov/codecov-action@v4
if: env.RUN_CODECOV == 'true'
with:
file: ./coverage/clover.xml
flags: unit
token: ${{ secrets.CODECOV_TOKEN }}
prepare-itg:
runs-on: ubuntu-latest
outputs:
matrix: ${{ steps.tests.outputs.matrix }}
steps:
-
name: Checkout
uses: actions/checkout@v4
-
name: Enable corepack
run: |
corepack enable
yarn --version
-
name: Setup Node
uses: actions/setup-node@v4
with:
node-version: ${{ env.NODE_VERSION }}
cache: 'yarn'
-
name: Install
run: yarn install
-
name: Create matrix
id: tests
run: |
declare -a tests
for test in $(yarn run test:itg-list); do
tests+=("${test#$(pwd)/__tests__/}")
done
echo "matrix=$(echo ${tests[@]} | jq -cR 'split(" ")')" >>${GITHUB_OUTPUT}
-
name: Show matrix
run: |
echo ${{ steps.tests.outputs.matrix }}
test-itg:
runs-on: ${{ matrix.os }}
needs:
- prepare-itg
strategy:
fail-fast: false
matrix:
test: ${{ fromJson(needs.prepare-itg.outputs.matrix) }}
os:
- ubuntu-latest
#- macos-14 # no virt: https://github.com/docker/actions-toolkit/issues/317
- macos-13
- macos-12
- windows-latest
steps:
-
name: Checkout
uses: actions/checkout@v4
-
name: Expose GitHub Runtime
uses: crazy-max/ghaction-github-runtime@v3
-
# FIXME: Needs to setup node twice on Windows due to a bug with runner
name: Setup Node
if: startsWith(matrix.os, 'windows')
uses: actions/setup-node@v4
with:
node-version: ${{ env.NODE_VERSION }}
-
name: Enable corepack
run: |
corepack enable
yarn --version
-
name: Setup Node
uses: actions/setup-node@v4
with:
node-version: ${{ env.NODE_VERSION }}
cache: 'yarn'
-
name: Set up Docker Buildx
if: startsWith(matrix.os, 'ubuntu')
uses: docker/setup-buildx-action@v3
with:
version: ${{ env.BUILDX_VERSION }}
driver: docker
-
name: Set up container builder
if: startsWith(matrix.os, 'ubuntu')
id: builder
uses: docker/setup-buildx-action@v3
with:
version: ${{ env.BUILDX_VERSION }}
use: false
-
name: Install
run: yarn install
-
name: Test
run: |
yarn test:itg-coverage --runTestsByPath __tests__/${{ matrix.test }} --coverageDirectory=./coverage
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
CTN_BUILDER_NAME: ${{ steps.builder.outputs.name }}
TEST_FOR_SUMMARY: ${{ secrets.TEST_FOR_SUMMARY }}
-
name: Check coverage
run: |
if [ -f ./coverage/clover.xml ] && [ ! -f ./coverage/allSkipped.txt ]; then
echo "RUN_CODECOV=true" >> $GITHUB_ENV
else
echo "RUN_CODECOV=false" >> $GITHUB_ENV
fi
shell: bash
-
name: Upload coverage
uses: codecov/codecov-action@v4
if: env.RUN_CODECOV == 'true'
with:
file: ./coverage/clover.xml
flags: itg
token: ${{ secrets.CODECOV_TOKEN }}

47
.github/workflows/validate.yml vendored Normal file
View File

@@ -0,0 +1,47 @@
name: validate
concurrency:
group: ${{ github.workflow }}-${{ github.ref }}
cancel-in-progress: true
on:
workflow_dispatch:
push:
branches:
- 'main'
pull_request:
paths-ignore:
- '.github/*-releases.json'
jobs:
prepare:
runs-on: ubuntu-20.04
outputs:
targets: ${{ steps.targets.outputs.matrix }}
steps:
-
name: Checkout
uses: actions/checkout@v4
-
name: Matrix
id: targets
run: |
echo "matrix=$(docker buildx bake validate --print | jq -cr '.group.validate.targets')" >> $GITHUB_OUTPUT
validate:
runs-on: ubuntu-latest
needs:
- prepare
strategy:
fail-fast: false
matrix:
target: ${{ fromJson(needs.prepare.outputs.targets) }}
steps:
-
name: Checkout
uses: actions/checkout@v4
-
name: Validate
uses: docker/bake-action@v5
with:
targets: ${{ matrix.target }}

View File

@@ -21,9 +21,9 @@ jobs:
matrix:
os:
- ubuntu-latest
- ubuntu-24.04
- ubuntu-22.04
- ubuntu-20.04
- ubuntu-18.04
steps:
-
name: File system
@@ -43,7 +43,7 @@ jobs:
-
name: Docker daemon conf
run: |
cat /etc/docker/daemon.json
cat /etc/docker/daemon.json || true
-
name: Docker info
run: docker info
@@ -67,4 +67,4 @@ jobs:
-
name: Dump context
if: always()
uses: crazy-max/ghaction-dump-context@v1
uses: crazy-max/ghaction-dump-context@v2

View File

@@ -1,6 +1,9 @@
# Dependency directories
node_modules/
jspm_packages/
/node_modules/**
/jspm_packages/**
# yarn v2
.yarn/
/.yarn/**
# build
/lib/**

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

@@ -1,7 +1,15 @@
logFilters:
- code: YN0013
level: discard
- code: YN0019
level: discard
- code: YN0076
level: discard
nodeLinker: node-modules
npmAuthToken: "${NODE_AUTH_TOKEN:-fallback}"
plugins:
- path: .yarn/plugins/@yarnpkg/plugin-interactive-tools.cjs
spec: "@yarnpkg/plugin-interactive-tools"
yarnPath: .yarn/releases/yarn-3.3.1.cjs

View File

@@ -1,3 +1,51 @@
[![Version](https://img.shields.io/npm/v/@docker/actions-toolkit?label=version&logo=npm&style=flat-square)](https://www.npmjs.com/package/@docker/actions-toolkit)
[![Downloads](https://img.shields.io/npm/dw/@docker/actions-toolkit?logo=npm&style=flat-square)](https://www.npmjs.com/package/@docker/actions-toolkit)
[![Build workflow](https://img.shields.io/github/actions/workflow/status/docker/actions-toolkit/build.yml?label=build&logo=github&style=flat-square)](https://github.com/docker/actions-toolkit/actions?workflow=build)
[![Test workflow](https://img.shields.io/github/actions/workflow/status/docker/actions-toolkit/test.yml?label=test&logo=github&style=flat-square)](https://github.com/docker/actions-toolkit/actions?workflow=test)
[![Validate workflow](https://img.shields.io/github/actions/workflow/status/docker/actions-toolkit/validate.yml?label=validate&logo=github&style=flat-square)](https://github.com/docker/actions-toolkit/actions?workflow=validate)
[![Codecov](https://img.shields.io/codecov/c/github/docker/actions-toolkit?logo=codecov&style=flat-square)](https://codecov.io/gh/docker/actions-toolkit)
# Actions Toolkit
Toolkit for Docker (GitHub) Actions.
## :test_tube: Experimental
This repository is considered **EXPERIMENTAL** and under active development
until further notice. It is subject to non-backward compatible changes or
removal in any future version.
## About
This repository contains the source code for the toolkit that is consumed as
a library by most of our GitHub Actions:
* [docker/bake-action](https://github.com/docker/bake-action)
* [docker/build-push-action](https://github.com/docker/build-push-action)
* [docker/login-action](https://github.com/docker/login-action)
* [docker/metadata-action](https://github.com/docker/metadata-action)
* [docker/setup-buildx-action](https://github.com/docker/setup-buildx-action)
* [docker/setup-qemu-action](https://github.com/docker/setup-qemu-action)
This toolkit provides some utilities and common logic when developing GitHub
Actions and also acts as a minimal wrapper around our build tooling such as
[Buildx](https://github.com/docker/buildx) and [BuildKit](https://github.com/moby/buildkit)
and provides an easier API for interacting with them.
## Installation
```console
$ npm install @docker/actions-toolkit
```
## Usage
```js
const { Toolkit } = require('@docker/actions-toolkit/lib/toolkit')
const toolkit = new Toolkit()
```
## Contributing
Want to contribute to the Actions Toolkit? Awesome! You can find information
about contributing to this project in the [CONTRIBUTING.md](/.github/CONTRIBUTING.md)

View File

@@ -1,3 +1,19 @@
/**
* Copyright 2023 actions-toolkit authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
import {jest} from '@jest/globals';
export const context = {
@@ -6,7 +22,8 @@ export const context = {
repo: 'actions-toolkit'
},
ref: 'refs/heads/master',
runId: 123,
runId: 2188748038,
runNumber: 15,
payload: {
after: '860c1904a1ce19322e91ac35af1ab07466440c37',
base_ref: null,

View File

@@ -1,185 +0,0 @@
import {beforeEach, describe, expect, it, jest, test} from '@jest/globals';
import * as fs from 'fs';
import * as path from 'path';
import {Builder, BuilderInfo} from '../src/builder';
import {Context} from '../src/context';
beforeEach(() => {
jest.clearAllMocks();
});
jest.spyOn(Builder.prototype, 'inspect').mockImplementation(async (): Promise<BuilderInfo> => {
return {
name: 'builder2',
driver: 'docker-container',
lastActivity: new Date('2023-01-16 09:45:23 +0000 UTC'),
nodes: [
{
buildkitVersion: 'v0.11.0',
buildkitdFlags: '--debug --allow-insecure-entitlement security.insecure --allow-insecure-entitlement network.host',
driverOpts: ['BUILDKIT_STEP_LOG_MAX_SIZE=10485760', 'BUILDKIT_STEP_LOG_MAX_SPEED=10485760', 'JAEGER_TRACE=localhost:6831', 'image=moby/buildkit:latest', 'network=host'],
endpoint: 'unix:///var/run/docker.sock',
name: 'builder20',
platforms: 'linux/amd64,linux/amd64/v2,linux/amd64/v3,linux/arm64,linux/riscv64,linux/ppc64le,linux/s390x,linux/386,linux/mips64le,linux/mips64,linux/arm/v7,linux/arm/v6',
status: 'running'
}
]
};
});
describe('inspect', () => {
it('valid', async () => {
const builder = new Builder({
context: new Context()
});
const builderInfo = await builder.inspect('');
expect(builderInfo).not.toBeUndefined();
expect(builderInfo.name).not.toEqual('');
expect(builderInfo.driver).not.toEqual('');
expect(builderInfo.nodes).not.toEqual({});
}, 100000);
});
describe('parseInspect', () => {
// prettier-ignore
test.each([
[
'inspect1.txt',
{
"name": "builder-5cb467f7-0940-47e1-b94b-d51f54054d62",
"driver": "docker-container",
"nodes": [
{
"name": "builder-5cb467f7-0940-47e1-b94b-d51f54054d620",
"endpoint": "unix:///var/run/docker.sock",
"status": "running",
"buildkitdFlags": "--allow-insecure-entitlement security.insecure --allow-insecure-entitlement network.host",
"buildkitVersion": "v0.10.4",
"platforms": "linux/amd64,linux/amd64/v2,linux/amd64/v3,linux/amd64/v4,linux/arm64,linux/riscv64,linux/386,linux/arm/v7,linux/arm/v6"
}
]
}
],
[
'inspect2.txt',
{
"name": "builder-5f449644-ff29-48af-8344-abb0292d0673",
"driver": "docker-container",
"nodes": [
{
"name": "builder-5f449644-ff29-48af-8344-abb0292d06730",
"endpoint": "unix:///var/run/docker.sock",
"driverOpts": [
"image=moby/buildkit:latest"
],
"status": "running",
"buildkitdFlags": "--allow-insecure-entitlement security.insecure --allow-insecure-entitlement network.host",
"buildkitVersion": "v0.10.4",
"platforms": "linux/amd64,linux/amd64/v2,linux/amd64/v3,linux/amd64/v4,linux/386"
}
]
}
],
[
'inspect3.txt',
{
"name": "builder-9929e463-7954-4dc3-89cd-514cca29ff80",
"driver": "docker-container",
"nodes": [
{
"name": "builder-9929e463-7954-4dc3-89cd-514cca29ff800",
"endpoint": "unix:///var/run/docker.sock",
"driverOpts": [
"image=moby/buildkit:master",
"network=host"
],
"status": "running",
"buildkitdFlags": "--allow-insecure-entitlement security.insecure --allow-insecure-entitlement network.host",
"buildkitVersion": "3fab389",
"platforms": "linux/amd64,linux/amd64/v2,linux/amd64/v3,linux/amd64/v4,linux/386"
}
]
}
],
[
'inspect4.txt',
{
"name": "default",
"driver": "docker",
"nodes": [
{
"name": "default",
"endpoint": "default",
"status": "running",
"buildkitVersion": "20.10.17",
"platforms": "linux/amd64,linux/arm64,linux/riscv64,linux/ppc64le,linux/s390x,linux/386,linux/arm/v7,linux/arm/v6"
}
]
}
],
[
'inspect5.txt',
{
"name": "remote-builder",
"driver": "remote",
"nodes": [
{
"name": "aws_graviton2",
"endpoint": "tcp://1.23.45.67:1234",
"driverOpts": [
"cert=/home/user/.certs/aws_graviton2/cert.pem",
"key=/home/user/.certs/aws_graviton2/key.pem",
"cacert=/home/user/.certs/aws_graviton2/ca.pem"
],
"status": "running",
"platforms": "darwin/arm64,linux/arm64,linux/arm/v5,linux/arm/v6,linux/arm/v7,windows/arm64"
}
]
}
],
[
'inspect6.txt',
{
"nodes": [
{
"name": "builder-17cfff01-48d9-4c3d-9332-9992e308a5100",
"endpoint": "unix:///var/run/docker.sock",
"status": "running",
"buildkitdFlags": "--allow-insecure-entitlement security.insecure --allow-insecure-entitlement network.host",
"platforms": "linux/amd64,linux/amd64/v2,linux/amd64/v3,linux/386"
}
],
"name": "builder-17cfff01-48d9-4c3d-9332-9992e308a510",
"driver": "docker-container"
}
],
[
'inspect7.txt',
{
"name": "builder2",
"driver": "docker-container",
"lastActivity": new Date("2023-01-16T09:45:23.000Z"),
"nodes": [
{
"buildkitVersion": "v0.11.0",
"buildkitdFlags": "--debug --allow-insecure-entitlement security.insecure --allow-insecure-entitlement network.host",
"driverOpts": [
"BUILDKIT_STEP_LOG_MAX_SIZE=10485760",
"BUILDKIT_STEP_LOG_MAX_SPEED=10485760",
"JAEGER_TRACE=localhost:6831",
"image=moby/buildkit:latest",
"network=host"
],
"endpoint": "unix:///var/run/docker.sock",
"name": "builder20",
"platforms": "linux/amd64,linux/amd64/v2,linux/amd64/v3,linux/arm64,linux/riscv64,linux/ppc64le,linux/s390x,linux/386,linux/mips64le,linux/mips64,linux/arm/v7,linux/arm/v6",
"status": "running"
}
]
}
]
])('given %p', async (inspectFile, expected) => {
expect(await Builder.parseInspect(fs.readFileSync(path.join(__dirname, 'fixtures', inspectFile)).toString())).toEqual(expected);
});
});

View File

@@ -1,105 +0,0 @@
import {describe, expect, it, jest, test, beforeEach, afterEach} from '@jest/globals';
import * as fs from 'fs';
import * as path from 'path';
import rimraf from 'rimraf';
import * as semver from 'semver';
import {BuildKit} from '../src/buildkit';
import {Builder, BuilderInfo} from '../src/builder';
import {Context} from '../src/context';
const tmpDir = path.join('/tmp/.docker-actions-toolkit-jest').split(path.sep).join(path.posix.sep);
const tmpName = path.join(tmpDir, '.tmpname-jest').split(path.sep).join(path.posix.sep);
jest.spyOn(Context.prototype as any, 'tmpDir').mockImplementation((): string => {
if (!fs.existsSync(tmpDir)) {
fs.mkdirSync(tmpDir, {recursive: true});
}
return tmpDir;
});
jest.spyOn(Context.prototype as any, 'tmpName').mockImplementation((): string => {
return tmpName;
});
beforeEach(() => {
jest.clearAllMocks();
});
afterEach(() => {
rimraf.sync(tmpDir);
});
jest.spyOn(Builder.prototype, 'inspect').mockImplementation(async (): Promise<BuilderInfo> => {
return {
name: 'builder2',
driver: 'docker-container',
lastActivity: new Date('2023-01-16 09:45:23 +0000 UTC'),
nodes: [
{
buildkitVersion: 'v0.11.0',
buildkitdFlags: '--debug --allow-insecure-entitlement security.insecure --allow-insecure-entitlement network.host',
driverOpts: ['BUILDKIT_STEP_LOG_MAX_SIZE=10485760', 'BUILDKIT_STEP_LOG_MAX_SPEED=10485760', 'JAEGER_TRACE=localhost:6831', 'image=moby/buildkit:latest', 'network=host'],
endpoint: 'unix:///var/run/docker.sock',
name: 'builder20',
platforms: 'linux/amd64,linux/amd64/v2,linux/amd64/v3,linux/arm64,linux/riscv64,linux/ppc64le,linux/s390x,linux/386,linux/mips64le,linux/mips64,linux/arm/v7,linux/arm/v6',
status: 'running'
}
]
};
});
describe('getVersion', () => {
it('valid', async () => {
const buildkit = new BuildKit({
context: new Context()
});
const version = await buildkit.getVersion('builder2');
expect(semver.valid(version)).not.toBeNull();
});
});
describe('satisfies', () => {
test.each([
['builder2', '>=0.10.0', true],
['builder2', '>0.11.0', false]
])('given %p', async (builderName, range, expected) => {
const buildkit = new BuildKit({
context: new Context()
});
expect(await buildkit.versionSatisfies(builderName, range)).toBe(expected);
});
});
describe('generateConfig', () => {
test.each([
['debug = true', false, 'debug = true', null],
[`notfound.toml`, true, '', new Error('config file notfound.toml not found')],
[
`${path.join(__dirname, 'fixtures', 'buildkitd.toml').split(path.sep).join(path.posix.sep)}`,
true,
`debug = true
[registry."docker.io"]
mirrors = ["mirror.gcr.io"]
`,
null
]
])('given %p config', async (val, file, exValue, error: Error) => {
try {
const buildkit = new BuildKit({
context: new Context()
});
let config: string;
if (file) {
config = buildkit.generateConfigFile(val);
} else {
config = buildkit.generateConfigInline(val);
}
expect(config).toEqual(tmpName);
const configValue = fs.readFileSync(tmpName, 'utf-8');
expect(configValue).toEqual(exValue);
} catch (e) {
// eslint-disable-next-line jest/no-conditional-expect
expect(e.message).toEqual(error?.message);
}
});
});

View File

@@ -0,0 +1,61 @@
/**
* Copyright 2023 actions-toolkit authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
import {describe, expect, it, jest, test} from '@jest/globals';
import {BuildKit} from '../../src/buildkit/buildkit';
import {Builder} from '../../src/buildx/builder';
import {BuilderInfo} from '../../src/types/buildx/builder';
jest.spyOn(Builder.prototype, 'inspect').mockImplementation(async (): Promise<BuilderInfo> => {
return {
name: 'builder2',
driver: 'docker-container',
lastActivity: new Date('2023-01-16 09:45:23 +0000 UTC'),
nodes: [
{
buildkit: 'v0.11.0',
'buildkitd-flags': '--debug --allow-insecure-entitlement security.insecure --allow-insecure-entitlement network.host',
'driver-opts': ['BUILDKIT_STEP_LOG_MAX_SIZE=10485760', 'BUILDKIT_STEP_LOG_MAX_SPEED=10485760', 'JAEGER_TRACE=localhost:6831', 'image=moby/buildkit:latest', 'network=host'],
endpoint: 'unix:///var/run/docker.sock',
name: 'builder20',
platforms: 'linux/amd64,linux/amd64/v2,linux/amd64/v3,linux/arm64,linux/riscv64,linux/ppc64le,linux/s390x,linux/386,linux/mips64le,linux/mips64,linux/arm/v7,linux/arm/v6',
status: 'running'
}
]
};
});
describe('getVersion', () => {
it('valid', async () => {
const builder = new Builder();
const builderInfo = await builder.inspect('builder2');
const buildkit = new BuildKit();
const version = await buildkit.getVersion(builderInfo.nodes[0]);
expect(version).toBe('v0.11.0');
});
});
describe('satisfies', () => {
test.each([
['builder2', '>=0.10.0', true],
['builder2', '>0.11.0', false]
])('given %p', async (builderName, range, expected) => {
const buildkit = new BuildKit();
expect(await buildkit.versionSatisfies(builderName, range)).toBe(expected);
});
});

View File

@@ -0,0 +1,75 @@
/**
* Copyright 2023 actions-toolkit authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
import {describe, expect, jest, test, afterEach} from '@jest/globals';
import * as fs from 'fs';
import * as 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 tmpName = path.join(tmpDir, '.tmpname-jest');
jest.spyOn(Context, 'tmpDir').mockImplementation((): string => {
if (!fs.existsSync(tmpDir)) {
fs.mkdirSync(tmpDir, {recursive: true});
}
return tmpDir;
});
jest.spyOn(Context, 'tmpName').mockImplementation((): string => {
return tmpName;
});
afterEach(() => {
rimraf.sync(tmpDir);
});
describe('resolve', () => {
test.each([
['debug = true', false, 'debug = true', null],
[`notfound.toml`, true, '', new Error('config file notfound.toml not found')],
[
`${path.join(fixturesDir, 'buildkitd.toml')}`,
true,
`debug = true
[registry."docker.io"]
mirrors = ["mirror.gcr.io"]
`,
null
]
])('given %p config', async (val: string, file: boolean, exValue: string, error: Error | null) => {
try {
const buildkit = new BuildKit();
let config: string;
if (file) {
config = buildkit.config.resolveFromFile(val);
} else {
config = buildkit.config.resolveFromString(val);
}
expect(config).toEqual(tmpName);
const configValue = fs.readFileSync(tmpName, 'utf-8');
expect(configValue).toEqual(exValue);
} catch (e) {
// eslint-disable-next-line jest/no-conditional-expect
expect(e.message).toEqual(error?.message);
}
});
});

View File

@@ -1,355 +0,0 @@
import {describe, expect, it, jest, test, beforeEach, afterEach} from '@jest/globals';
import * as fs from 'fs';
import * as path from 'path';
import rimraf from 'rimraf';
import * as semver from 'semver';
import * as exec from '@actions/exec';
import {Buildx} from '../src/buildx';
import {Context} from '../src/context';
const tmpDir = path.join('/tmp/.docker-actions-toolkit-jest').split(path.sep).join(path.posix.sep);
const tmpName = path.join(tmpDir, '.tmpname-jest').split(path.sep).join(path.posix.sep);
const metadata = `{
"containerimage.config.digest": "sha256:059b68a595b22564a1cbc167af369349fdc2ecc1f7bc092c2235cbf601a795fd",
"containerimage.digest": "sha256:b09b9482c72371486bb2c1d2c2a2633ed1d0b8389e12c8d52b9e052725c0c83c"
}`;
jest.spyOn(Context.prototype as any, 'tmpDir').mockImplementation((): string => {
if (!fs.existsSync(tmpDir)) {
fs.mkdirSync(tmpDir, {recursive: true});
}
return tmpDir;
});
jest.spyOn(Context.prototype as any, 'tmpName').mockImplementation((): string => {
return tmpName;
});
beforeEach(() => {
jest.clearAllMocks();
});
afterEach(() => {
rimraf.sync(tmpDir);
});
describe('isAvailable', () => {
it('docker cli', async () => {
const execSpy = jest.spyOn(exec, 'getExecOutput');
const buildx = new Buildx({
context: new Context(),
standalone: false
});
buildx.isAvailable().catch(() => {
// noop
});
// eslint-disable-next-line jest/no-standalone-expect
expect(execSpy).toHaveBeenCalledWith(`docker`, ['buildx'], {
silent: true,
ignoreReturnCode: true
});
});
it('standalone', async () => {
const execSpy = jest.spyOn(exec, 'getExecOutput');
const buildx = new Buildx({
context: new Context(),
standalone: true
});
buildx.isAvailable().catch(() => {
// noop
});
// eslint-disable-next-line jest/no-standalone-expect
expect(execSpy).toHaveBeenCalledWith(`buildx`, [], {
silent: true,
ignoreReturnCode: true
});
});
});
describe('printInspect', () => {
it('prints builder2 instance', () => {
const execSpy = jest.spyOn(exec, 'exec');
const buildx = new Buildx({
context: new Context(),
standalone: true
});
buildx.printInspect('builder2').catch(() => {
// noop
});
expect(execSpy).toHaveBeenCalledWith(`buildx`, ['inspect', 'builder2'], {
failOnStdErr: false
});
});
});
describe('printVersion', () => {
it('docker cli', () => {
const execSpy = jest.spyOn(exec, 'exec');
const buildx = new Buildx({
context: new Context(),
standalone: false
});
buildx.printVersion();
expect(execSpy).toHaveBeenCalledWith(`docker`, ['buildx', 'version'], {
failOnStdErr: false
});
});
it('standalone', () => {
const execSpy = jest.spyOn(exec, 'exec');
const buildx = new Buildx({
context: new Context(),
standalone: true
});
buildx.printVersion();
expect(execSpy).toHaveBeenCalledWith(`buildx`, ['version'], {
failOnStdErr: false
});
});
});
describe('getVersion', () => {
it('valid', async () => {
const buildx = new Buildx({
context: new Context()
});
expect(semver.valid(await buildx.version)).not.toBeNull();
});
});
describe('parseVersion', () => {
test.each([
['github.com/docker/buildx 0.4.1+azure bda4882a65349ca359216b135896bddc1d92461c', '0.4.1'],
['github.com/docker/buildx v0.4.1 bda4882a65349ca359216b135896bddc1d92461c', '0.4.1'],
['github.com/docker/buildx v0.4.2 fb7b670b764764dc4716df3eba07ffdae4cc47b2', '0.4.2'],
['github.com/docker/buildx f117971 f11797113e5a9b86bd976329c5dbb8a8bfdfadfa', 'f117971']
])('given %p', async (stdout, expected) => {
expect(Buildx.parseVersion(stdout)).toEqual(expected);
});
});
describe('versionSatisfies', () => {
test.each([
['0.4.1', '>=0.3.2', true],
['bda4882a65349ca359216b135896bddc1d92461c', '>0.1.0', false],
['f117971', '>0.6.0', true]
])('given %p', async (version, range, expected) => {
const buildx = new Buildx({
context: new Context()
});
expect(await buildx.versionSatisfies(range, version)).toBe(expected);
});
});
describe('getBuildImageID', () => {
it('matches', async () => {
const buildx = new Buildx({
context: new Context()
});
const imageID = 'sha256:bfb45ab72e46908183546477a08f8867fc40cebadd00af54b071b097aed127a9';
const imageIDFile = buildx.getBuildImageIDFilePath();
await fs.writeFileSync(imageIDFile, imageID);
const expected = buildx.getBuildImageID();
expect(expected).toEqual(imageID);
});
});
describe('getBuildMetadata', () => {
it('matches', async () => {
const buildx = new Buildx({
context: new Context()
});
const metadataFile = buildx.getBuildMetadataFilePath();
await fs.writeFileSync(metadataFile, metadata);
const expected = buildx.getBuildMetadata();
expect(expected).toEqual(metadata);
});
});
describe('getDigest', () => {
it('matches', async () => {
const buildx = new Buildx({
context: new Context()
});
const metadataFile = buildx.getBuildMetadataFilePath();
await fs.writeFileSync(metadataFile, metadata);
const expected = buildx.getDigest();
expect(expected).toEqual('sha256:b09b9482c72371486bb2c1d2c2a2633ed1d0b8389e12c8d52b9e052725c0c83c');
});
});
describe('getProvenanceInput', () => {
beforeEach(() => {
process.env = Object.keys(process.env).reduce((object, key) => {
if (!key.startsWith('INPUT_')) {
object[key] = process.env[key];
}
return object;
}, {});
});
// prettier-ignore
test.each([
[
'true',
'builder-id=https://github.com/docker/actions-toolkit/actions/runs/123'
],
[
'false',
'false'
],
[
'mode=min',
'mode=min,builder-id=https://github.com/docker/actions-toolkit/actions/runs/123'
],
[
'mode=max',
'mode=max,builder-id=https://github.com/docker/actions-toolkit/actions/runs/123'
],
[
'builder-id=foo',
'builder-id=foo'
],
[
'mode=max,builder-id=foo',
'mode=max,builder-id=foo'
],
[
'',
''
],
])('given input %p', async (input: string, expected: string) => {
await setInput('provenance', input);
const buildx = new Buildx({
context: new Context()
});
expect(buildx.getProvenanceInput('provenance')).toEqual(expected);
});
});
describe('getProvenanceAttrs', () => {
// prettier-ignore
test.each([
[
'mode=min',
'mode=min,builder-id=https://github.com/docker/actions-toolkit/actions/runs/123'
],
[
'mode=max',
'mode=max,builder-id=https://github.com/docker/actions-toolkit/actions/runs/123'
],
[
'builder-id=foo',
'builder-id=foo'
],
[
'mode=max,builder-id=foo',
'mode=max,builder-id=foo'
],
[
'',
'builder-id=https://github.com/docker/actions-toolkit/actions/runs/123'
],
])('given %p', async (input: string, expected: string) => {
const buildx = new Buildx({
context: new Context()
});
expect(buildx.getProvenanceAttrs(input)).toEqual(expected);
});
});
describe('generateBuildSecret', () => {
test.each([
['A_SECRET=abcdef0123456789', false, 'A_SECRET', 'abcdef0123456789', null],
['GIT_AUTH_TOKEN=abcdefghijklmno=0123456789', false, 'GIT_AUTH_TOKEN', 'abcdefghijklmno=0123456789', null],
['MY_KEY=c3RyaW5nLXdpdGgtZXF1YWxzCg==', false, 'MY_KEY', 'c3RyaW5nLXdpdGgtZXF1YWxzCg==', null],
['aaaaaaaa', false, '', '', new Error('aaaaaaaa is not a valid secret')],
['aaaaaaaa=', false, '', '', new Error('aaaaaaaa= is not a valid secret')],
['=bbbbbbb', false, '', '', new Error('=bbbbbbb is not a valid secret')],
[`foo=${path.join(__dirname, 'fixtures', 'secret.txt').split(path.sep).join(path.posix.sep)}`, true, 'foo', 'bar', null],
[`notfound=secret`, true, '', '', new Error('secret file secret not found')]
])('given %p key and %p secret', async (kvp: string, file: boolean, exKey: string, exValue: string, error: Error) => {
try {
const buildx = new Buildx({
context: new Context()
});
let secret: string;
if (file) {
secret = buildx.generateBuildSecretFile(kvp);
} else {
secret = buildx.generateBuildSecretString(kvp);
}
expect(secret).toEqual(`id=${exKey},src=${tmpName}`);
expect(fs.readFileSync(tmpName, 'utf-8')).toEqual(exValue);
} catch (e) {
// eslint-disable-next-line jest/no-conditional-expect
expect(e.message).toEqual(error?.message);
}
});
});
describe('hasLocalExporter', () => {
// prettier-ignore
test.each([
[['type=registry,ref=user/app'], false],
[['type=docker'], false],
[['type=local,dest=./release-out'], true],
[['type=tar,dest=/tmp/image.tar'], false],
[['type=docker', 'type=tar,dest=/tmp/image.tar'], false],
[['"type=tar","dest=/tmp/image.tar"'], false],
[['" type= local" , dest=./release-out'], true],
[['.'], true]
])('given %p returns %p', async (exporters: Array<string>, expected: boolean) => {
expect(Buildx.hasLocalExporter(exporters)).toEqual(expected);
});
});
describe('hasTarExporter', () => {
// prettier-ignore
test.each([
[['type=registry,ref=user/app'], false],
[['type=docker'], false],
[['type=local,dest=./release-out'], false],
[['type=tar,dest=/tmp/image.tar'], true],
[['type=docker', 'type=tar,dest=/tmp/image.tar'], true],
[['"type=tar","dest=/tmp/image.tar"'], true],
[['" type= local" , dest=./release-out'], false],
[['.'], false]
])('given %p returns %p', async (exporters: Array<string>, expected: boolean) => {
expect(Buildx.hasTarExporter(exporters)).toEqual(expected);
});
});
describe('hasDockerExporter', () => {
// prettier-ignore
test.each([
[['type=registry,ref=user/app'], false, undefined],
[['type=docker'], true, undefined],
[['type=local,dest=./release-out'], false, undefined],
[['type=tar,dest=/tmp/image.tar'], false, undefined],
[['type=docker', 'type=tar,dest=/tmp/image.tar'], true, undefined],
[['"type=tar","dest=/tmp/image.tar"'], false, undefined],
[['" type= local" , dest=./release-out'], false, undefined],
[['.'], true, true],
])('given %p returns %p', async (exporters: Array<string>, expected: boolean, load: boolean | undefined) => {
expect(Buildx.hasDockerExporter(exporters, load)).toEqual(expected);
});
});
describe('hasGitAuthTokenSecret', () => {
// prettier-ignore
test.each([
[['A_SECRET=abcdef0123456789'], false],
[['GIT_AUTH_TOKEN=abcdefghijklmno=0123456789'], true],
])('given %p secret', async (kvp: Array<string>, expected: boolean) => {
expect(Buildx.hasGitAuthTokenSecret(kvp)).toBe(expected);
});
});
// 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()}`;
}
function setInput(name: string, value: string): void {
process.env[getInputName(name)] = value;
}

View File

@@ -0,0 +1,58 @@
/**
* Copyright 2023 actions-toolkit authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
import {describe, expect, test} from '@jest/globals';
import * as fs from 'fs';
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 maybe = !process.env.GITHUB_ACTIONS || (process.env.GITHUB_ACTIONS === 'true' && process.env.ImageOS && process.env.ImageOS.startsWith('ubuntu')) ? describe : describe.skip;
maybe('getDefinition', () => {
// prettier-ignore
test.each([
[
'https://github.com/docker/buildx.git#v0.10.4',
['binaries-cross'],
path.join(fixturesDir, 'bake-buildx-0.10.4-binaries-cross.json'),
false,
],
// TODO: uncomment this test case when we have access to the private repo using an access token
// [
// 'https://github.com/docker/test-docker-action.git#remote-private',
// ['default'],
// path.join(fixturesDir, 'bake-test-docker-action-remote-private.json'),
// true,
// ]
])('given %p', async (source: string, targets: string[], out: string, auth) => {
const gitAuthToken = process.env.GITHUB_TOKEN || '';
if (auth && !gitAuthToken) {
console.log(`Git auth token not available, skipping test`);
return;
}
const bake = new Bake();
const expectedDef = <BakeDefinition>JSON.parse(fs.readFileSync(out, {encoding: 'utf-8'}).trim())
expect(await bake.getDefinition({
source: source,
targets: targets,
githubToken: gitAuthToken,
})).toEqual(expectedDef);
});
});

View File

@@ -0,0 +1,479 @@
/**
* Copyright 2023 actions-toolkit authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
import {afterEach, describe, expect, it, jest, test} from '@jest/globals';
import * as fs from 'fs';
import * as path from 'path';
import * as rimraf from 'rimraf';
import {Bake} from '../../src/buildx/bake';
import {Context} from '../../src/context';
import {ExecOptions} from '@actions/exec';
import {BakeDefinition, BakeMetadata} from '../../src/types/buildx/bake';
const fixturesDir = path.join(__dirname, '..', 'fixtures');
// prettier-ignore
const tmpDir = path.join(process.env.TEMP || '/tmp', 'buildx-inputs-jest');
const tmpName = path.join(tmpDir, '.tmpname-jest');
const metadata: BakeMetadata = {
app: {
'buildx.build.ref': 'default/default/7frbdw1fmfozgtqavghowsepk'
},
db: {
'buildx.build.ref': 'default/default/onic7g2axylf56rxetob7qruy'
}
};
jest.spyOn(Context, 'tmpDir').mockImplementation((): string => {
if (!fs.existsSync(tmpDir)) {
fs.mkdirSync(tmpDir, {recursive: true});
}
return tmpDir;
});
jest.spyOn(Context, 'tmpName').mockImplementation((): string => {
return tmpName;
});
afterEach(() => {
rimraf.sync(tmpDir);
});
describe('resolveMetadata', () => {
it('matches', async () => {
const bake = new Bake();
fs.writeFileSync(bake.getMetadataFilePath(), JSON.stringify(metadata));
expect(bake.resolveMetadata()).toEqual(metadata as BakeMetadata);
});
});
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']);
});
});
describe('getDefinition', () => {
// prettier-ignore
test.each([
[
[path.join(fixturesDir, 'bake-01.hcl')],
['validate'],
[],
{silent: true},
path.join(fixturesDir, 'bake-01-validate.json')
],
[
[path.join(fixturesDir, 'bake-02.hcl')],
['build'],
[],
undefined,
path.join(fixturesDir, 'bake-02-build.json')
],
[
[path.join(fixturesDir, 'bake-01.hcl')],
['image'],
['*.output=type=docker', '*.platform=linux/amd64'],
undefined,
path.join(fixturesDir, 'bake-01-overrides.json')
]
])('given %p', async (files: string[], targets: string[], overrides: string[], execOptions: ExecOptions | undefined, out: string) => {
const bake = new Bake();
const expectedDef = <BakeDefinition>JSON.parse(fs.readFileSync(out, {encoding: 'utf-8'}).trim())
expect(await bake.getDefinition({
files: files,
targets: targets,
overrides: overrides
}, execOptions)).toEqual(expectedDef);
});
});
describe('hasLocalExporter', () => {
// prettier-ignore
test.each([
[
{
"target": {
"build": {
"output": [
"type=docker"
]
},
}
} as unknown as BakeDefinition,
false
],
[
{
"target": {
"build": {
"target": "build"
},
}
} as unknown as BakeDefinition,
false
],
[
{
"target": {
"local": {
"output": [
"type=local,dest=./release-out"
]
},
}
} as unknown as BakeDefinition,
true
],
[
{
"target": {
"tar": {
"output": [
"type=tar,dest=/tmp/image.tar"
]
},
}
} as unknown as BakeDefinition,
false
],
[
{
"target": {
"tar": {
"output": [
'"type=tar","dest=/tmp/image.tar"',
]
},
}
} as unknown as BakeDefinition,
false
],
[
{
"target": {
"local": {
"output": [
'" type= local" , dest=./release-out',
]
},
}
} as unknown as BakeDefinition,
true
],
[
{
"target": {
"local": {
"output": [
".",
]
},
}
} as unknown as BakeDefinition,
true
]
])('given %o returns %p', async (def: BakeDefinition, expected: boolean) => {
expect(Bake.hasLocalExporter(def)).toEqual(expected);
});
});
describe('hasTarExporter', () => {
// prettier-ignore
test.each([
[
{
"target": {
"reg": {
"output": [
"type=registry,ref=user/app"
]
},
}
} as unknown as BakeDefinition,
false
],
[
{
"target": {
"build": {
"output": [
"type=docker"
]
},
}
} as unknown as BakeDefinition,
false
],
[
{
"target": {
"local": {
"output": [
"type=local,dest=./release-out"
]
},
}
} as unknown as BakeDefinition,
false
],
[
{
"target": {
"tar": {
"output": [
"type=tar,dest=/tmp/image.tar"
]
},
}
} as unknown as BakeDefinition,
true
],
[
{
"target": {
"multi": {
"output": [
"type=docker",
"type=tar,dest=/tmp/image.tar"
]
},
}
} as unknown as BakeDefinition,
true
],
[
{
"target": {
"tar": {
"output": [
'"type=tar","dest=/tmp/image.tar"',
]
},
}
} as unknown as BakeDefinition,
true
],
[
{
"target": {
"local": {
"output": [
'" type= local" , dest=./release-out',
]
},
}
} as unknown as BakeDefinition,
false
],
[
{
"target": {
"local": {
"output": [
".",
]
},
}
} as unknown as BakeDefinition,
false
],
])('given %o returns %p', async (def: BakeDefinition, expected: boolean) => {
expect(Bake.hasTarExporter(def)).toEqual(expected);
});
});
describe('hasDockerExporter', () => {
// prettier-ignore
test.each([
[
{
"target": {
"reg": {
"output": [
"type=registry,ref=user/app"
]
},
}
} as unknown as BakeDefinition,
false,
undefined
],
[
{
"target": {
"build": {
"output": [
"type=docker"
]
},
}
} as unknown as BakeDefinition,
true,
undefined
],
[
{
"target": {
"multi": {
"output": [
"type=docker",
"type=tar,dest=/tmp/image.tar"
]
},
}
} as unknown as BakeDefinition,
true,
undefined
],
[
{
"target": {
"local": {
"output": [
'" type= local" , dest=./release-out'
]
},
}
} as unknown as BakeDefinition,
false,
undefined
],
[
{
"target": {
"local": {
"output": [
"type=local,dest=./release-out"
]
},
}
} as unknown as BakeDefinition,
false,
undefined
],
[
{
"target": {
"tar": {
"output": [
"type=tar,dest=/tmp/image.tar"
]
},
}
} as unknown as BakeDefinition,
false,
undefined
],
[
{
"target": {
"multi": {
"output": [
"type=docker",
"type=tar,dest=/tmp/image.tar"
]
},
}
} as unknown as BakeDefinition,
true,
undefined
],
[
{
"target": {
"tar": {
"output": [
'"type=tar","dest=/tmp/image.tar"'
]
},
}
} as unknown as BakeDefinition,
false,
undefined
],
[
{
"target": {
"tar": {
"output": [
'"type=tar","dest=/tmp/image.tar"'
]
},
}
} as unknown as BakeDefinition,
false,
undefined
],
[
{
"target": {
"local": {
"output": [
'" type= local" , dest=./release-out'
]
},
}
} as unknown as BakeDefinition,
false,
undefined
],
[
{
"target": {
"build": {
"output": [
"type=docker"
]
},
}
} as unknown as BakeDefinition,
true,
false
],
[
{
"target": {
"build": {
"output": [
"type=docker"
]
},
}
} as unknown as BakeDefinition,
true,
true
],
[
{
"target": {
"build": {
"output": [
"."
]
},
}
} as unknown as BakeDefinition,
true,
true
],
])('given %o and load:%p returns %p', async (def: BakeDefinition, expected: boolean, load: boolean | undefined) => {
expect(Bake.hasDockerExporter(def, load)).toEqual(expected);
});
});

View File

@@ -0,0 +1,357 @@
/**
* Copyright 2023 actions-toolkit authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
import {afterEach, beforeEach, describe, expect, it, jest, test} from '@jest/globals';
import * as fs from 'fs';
import * as 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 tmpName = path.join(tmpDir, '.tmpname-jest');
const metadata = JSON.parse(fs.readFileSync(path.join(fixturesDir, 'metadata.json'), 'utf-8'));
jest.spyOn(Context, 'tmpDir').mockImplementation((): string => {
if (!fs.existsSync(tmpDir)) {
fs.mkdirSync(tmpDir, {recursive: true});
}
return tmpDir;
});
jest.spyOn(Context, 'tmpName').mockImplementation((): string => {
return tmpName;
});
afterEach(() => {
rimraf.sync(tmpDir);
});
describe('resolveImageID', () => {
it('matches', async () => {
const imageID = 'sha256:bfb45ab72e46908183546477a08f8867fc40cebadd00af54b071b097aed127a9';
const build = new Build();
fs.writeFileSync(build.getImageIDFilePath(), imageID);
expect(build.resolveImageID()).toEqual(imageID);
});
});
describe('resolveMetadata', () => {
it('matches', async () => {
const build = new Build();
fs.writeFileSync(build.getMetadataFilePath(), JSON.stringify(metadata));
expect(build.resolveMetadata()).toEqual(metadata);
});
});
describe('resolveRef', () => {
it('matches', async () => {
const build = new Build();
fs.writeFileSync(build.getMetadataFilePath(), JSON.stringify(metadata));
expect(build.resolveRef()).toEqual('default/default/n6ibcp9b2pw108rrz7ywdznvo');
});
});
describe('resolveProvenance', () => {
it('matches', async () => {
const build = new Build();
fs.writeFileSync(build.getMetadataFilePath(), JSON.stringify(metadata));
const provenance = build.resolveProvenance();
expect(provenance).toBeDefined();
expect(provenance?.buildType).toEqual('https://mobyproject.org/buildkit@v1');
expect(provenance?.materials).toBeDefined();
expect(provenance?.materials?.length).toEqual(2);
});
});
describe('resolveDigest', () => {
it('matches', async () => {
const build = new Build();
fs.writeFileSync(build.getMetadataFilePath(), JSON.stringify(metadata));
expect(build.resolveDigest()).toEqual('sha256:b09b9482c72371486bb2c1d2c2a2633ed1d0b8389e12c8d52b9e052725c0c83c');
});
});
describe('getProvenanceInput', () => {
beforeEach(() => {
process.env = Object.keys(process.env).reduce((object, key) => {
if (!key.startsWith('INPUT_')) {
object[key] = process.env[key];
}
return object;
}, {});
});
// prettier-ignore
test.each([
[
'true',
'builder-id=https://github.com/docker/actions-toolkit/actions/runs/2188748038/attempts/2'
],
[
'false',
'false'
],
[
'mode=min',
'mode=min,builder-id=https://github.com/docker/actions-toolkit/actions/runs/2188748038/attempts/2'
],
[
'mode=max',
'mode=max,builder-id=https://github.com/docker/actions-toolkit/actions/runs/2188748038/attempts/2'
],
[
'builder-id=foo',
'builder-id=foo'
],
[
'mode=max,builder-id=foo',
'mode=max,builder-id=foo'
],
[
'',
''
],
])('given input %p', async (input: string, expected: string) => {
setInput('provenance', input);
expect(Build.getProvenanceInput('provenance')).toEqual(expected);
});
});
describe('resolveProvenanceAttrs', () => {
// prettier-ignore
test.each([
[
'mode=min',
'mode=min,builder-id=https://github.com/docker/actions-toolkit/actions/runs/2188748038/attempts/2'
],
[
'mode=max',
'mode=max,builder-id=https://github.com/docker/actions-toolkit/actions/runs/2188748038/attempts/2'
],
[
'builder-id=foo',
'builder-id=foo'
],
[
'mode=max,builder-id=foo',
'mode=max,builder-id=foo'
],
[
'',
'builder-id=https://github.com/docker/actions-toolkit/actions/runs/2188748038/attempts/2'
],
])('given %p', async (input: string, expected: string) => {
expect(Build.resolveProvenanceAttrs(input)).toEqual(expected);
});
});
describe('resolveSecret', () => {
test.each([
['A_SECRET=abcdef0123456789', false, 'A_SECRET', 'abcdef0123456789', null],
['GIT_AUTH_TOKEN=abcdefghijklmno=0123456789', false, 'GIT_AUTH_TOKEN', 'abcdefghijklmno=0123456789', null],
['MY_KEY=c3RyaW5nLXdpdGgtZXF1YWxzCg==', false, 'MY_KEY', 'c3RyaW5nLXdpdGgtZXF1YWxzCg==', null],
['aaaaaaaa', false, '', '', new Error('aaaaaaaa is not a valid secret')],
['aaaaaaaa=', false, '', '', new Error('aaaaaaaa= is not a valid secret')],
['=bbbbbbb', false, '', '', new Error('=bbbbbbb is not a valid secret')],
[`foo=${path.join(fixturesDir, 'secret.txt')}`, true, 'foo', 'bar', null],
[`notfound=secret`, true, '', '', new Error('secret file secret not found')]
])('given %p key and %p secret', async (kvp: string, file: boolean, exKey: string, exValue: string, error: Error | null) => {
try {
let secret: string;
if (file) {
secret = Build.resolveSecretFile(kvp);
} else {
secret = Build.resolveSecretString(kvp);
}
expect(secret).toEqual(`id=${exKey},src=${tmpName}`);
expect(fs.readFileSync(tmpName, 'utf-8')).toEqual(exValue);
} catch (e) {
// eslint-disable-next-line jest/no-conditional-expect
expect(e.message).toEqual(error?.message);
}
});
test.each([
['FOO=bar', 'FOO', 'bar', null],
['FOO=', 'FOO', '', new Error('FOO= is not a valid secret')],
['=bar', '', '', new Error('=bar is not a valid secret')],
['FOO=bar=baz', 'FOO', 'bar=baz', null]
])('given %p key and %p env', async (kvp: string, exKey: string, exValue: string, error: Error | null) => {
try {
const secret = Build.resolveSecretEnv(kvp);
expect(secret).toEqual(`id=${exKey},env=${exValue}`);
} catch (e) {
// eslint-disable-next-line jest/no-conditional-expect
expect(e.message).toEqual(error?.message);
}
});
});
describe('resolveCacheToAttrs', () => {
// prettier-ignore
test.each([
[
'',
undefined,
''
],
[
'user/app:cache',
undefined,
'user/app:cache'
],
[
'type=inline',
undefined,
'type=inline'
],
[
'type=gha',
undefined,
'type=gha,repository=docker/actions-toolkit',
],
[
'type=gha,mode=max',
undefined,
'type=gha,mode=max,repository=docker/actions-toolkit',
],
[
'type=gha,mode=max',
'abcd1234',
'type=gha,mode=max,repository=docker/actions-toolkit,ghtoken=abcd1234',
],
[
'type=gha,repository=foo/bar,mode=max',
undefined,
'type=gha,repository=foo/bar,mode=max',
],
[
'type=gha,repository=foo/bar,mode=max',
'abcd1234',
'type=gha,repository=foo/bar,mode=max,ghtoken=abcd1234',
],
])('given %p', async (input: string, githubToken: string | undefined, expected: string) => {
expect(Build.resolveCacheToAttrs(input, githubToken)).toEqual(expected);
});
});
describe('hasLocalExporter', () => {
// prettier-ignore
test.each([
[['type=registry,ref=user/app'], false],
[['type=docker'], false],
[['type=local,dest=./release-out'], true],
[['type=tar,dest=/tmp/image.tar'], false],
[['type=docker', 'type=tar,dest=/tmp/image.tar'], false],
[['"type=tar","dest=/tmp/image.tar"'], false],
[['" type= local" , dest=./release-out'], true],
[['.'], true]
])('given %p returns %p', async (exporters: Array<string>, expected: boolean) => {
expect(Build.hasLocalExporter(exporters)).toEqual(expected);
});
});
describe('hasTarExporter', () => {
// prettier-ignore
test.each([
[['type=registry,ref=user/app'], false],
[['type=docker'], false],
[['type=local,dest=./release-out'], false],
[['type=tar,dest=/tmp/image.tar'], true],
[['type=docker', 'type=tar,dest=/tmp/image.tar'], true],
[['"type=tar","dest=/tmp/image.tar"'], true],
[['" type= local" , dest=./release-out'], false],
[['.'], false]
])('given %p returns %p', async (exporters: Array<string>, expected: boolean) => {
expect(Build.hasTarExporter(exporters)).toEqual(expected);
});
});
describe('hasDockerExporter', () => {
// prettier-ignore
test.each([
[['type=registry,ref=user/app'], false, undefined],
[['type=docker'], true, undefined],
[['type=local,dest=./release-out'], false, undefined],
[['type=tar,dest=/tmp/image.tar'], false, undefined],
[['type=docker', 'type=tar,dest=/tmp/image.tar'], true, undefined],
[['"type=tar","dest=/tmp/image.tar"'], false, undefined],
[['" type= local" , dest=./release-out'], false, undefined],
[['type=docker'], true, false],
[['type=docker'], true, true],
[['.'], true, true],
])('given %p returns %p', async (exporters: Array<string>, expected: boolean, load: boolean | undefined) => {
expect(Build.hasDockerExporter(exporters, load)).toEqual(expected);
});
});
describe('hasAttestationType', () => {
// prettier-ignore
test.each([
['type=provenance,mode=min', 'provenance', true],
['type=sbom,true', 'sbom', true],
['type=foo,bar', 'provenance', false],
])('given %p for %p returns %p', async (attrs: string, name: string, expected: boolean) => {
expect(Build.hasAttestationType(name, attrs)).toEqual(expected);
});
});
describe('resolveAttestationAttrs', () => {
// prettier-ignore
test.each([
[
'type=provenance,mode=min',
'type=provenance,mode=min'
],
[
'type=provenance,true',
'type=provenance,disabled=false'
],
[
'type=provenance,false',
'type=provenance,disabled=true'
],
[
'',
''
],
])('given %p', async (input: string, expected: string) => {
expect(Build.resolveAttestationAttrs(input)).toEqual(expected);
});
});
describe('hasGitAuthTokenSecret', () => {
// prettier-ignore
test.each([
[['A_SECRET=abcdef0123456789'], false],
[['GIT_AUTH_TOKEN=abcdefghijklmno=0123456789'], true],
])('given %p secret', async (kvp: Array<string>, expected: boolean) => {
expect(Build.hasGitAuthTokenSecret(kvp)).toBe(expected);
});
});
// 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()}`;
}
function setInput(name: string, value: string): void {
process.env[getInputName(name)] = value;
}

View File

@@ -0,0 +1,460 @@
/**
* Copyright 2023 actions-toolkit authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
import {describe, expect, it, jest, test} from '@jest/globals';
import * as fs from 'fs';
import * as path from 'path';
import {Builder} from '../../src/buildx/builder';
import {Exec} from '../../src/exec';
import {BuilderInfo} from '../../src/types/buildx/builder';
const fixturesDir = path.join(__dirname, '..', 'fixtures');
jest.spyOn(Builder.prototype, 'inspect').mockImplementation(async (): Promise<BuilderInfo> => {
return {
name: 'builder2',
driver: 'docker-container',
lastActivity: new Date('2023-01-16 09:45:23 +0000 UTC'),
nodes: [
{
buildkit: 'v0.11.0',
'buildkitd-flags': '--debug --allow-insecure-entitlement security.insecure --allow-insecure-entitlement network.host',
'driver-opts': ['BUILDKIT_STEP_LOG_MAX_SIZE=10485760', 'BUILDKIT_STEP_LOG_MAX_SPEED=10485760', 'JAEGER_TRACE=localhost:6831', 'image=moby/buildkit:latest', 'network=host', 'qemu.install=true'],
endpoint: 'unix:///var/run/docker.sock',
name: 'builder20',
platforms: 'linux/amd64,linux/amd64/v2,linux/amd64/v3,linux/arm64,linux/riscv64,linux/ppc64le,linux/s390x,linux/386,linux/mips64le,linux/mips64,linux/arm/v7,linux/arm/v6',
status: 'running'
}
]
};
});
describe('exists', () => {
it('valid', async () => {
const execSpy = jest.spyOn(Exec, 'getExecOutput');
const builder = new Builder();
await builder.exists('foo');
// eslint-disable-next-line jest/no-standalone-expect
expect(execSpy).toHaveBeenCalledWith(`docker`, ['buildx', 'inspect', 'foo'], {
silent: true,
ignoreReturnCode: true
});
});
});
describe('inspect', () => {
it('valid', async () => {
const builder = new Builder();
const builderInfo = await builder.inspect('');
expect(builderInfo).not.toBeUndefined();
expect(builderInfo.name).not.toEqual('');
expect(builderInfo.driver).not.toEqual('');
expect(builderInfo.nodes).not.toEqual({});
}, 100000);
});
describe('parseInspect', () => {
// prettier-ignore
test.each([
[
'inspect1.txt',
{
"name": "builder-5cb467f7-0940-47e1-b94b-d51f54054d62",
"driver": "docker-container",
"nodes": [
{
"name": "builder-5cb467f7-0940-47e1-b94b-d51f54054d620",
"endpoint": "unix:///var/run/docker.sock",
"status": "running",
"buildkitd-flags": "--allow-insecure-entitlement security.insecure --allow-insecure-entitlement network.host",
"buildkit": "v0.10.4",
"platforms": "linux/amd64,linux/amd64/v2,linux/amd64/v3,linux/amd64/v4,linux/arm64,linux/riscv64,linux/386,linux/arm/v7,linux/arm/v6"
}
]
}
],
[
'inspect2.txt',
{
"name": "builder-5f449644-ff29-48af-8344-abb0292d0673",
"driver": "docker-container",
"nodes": [
{
"name": "builder-5f449644-ff29-48af-8344-abb0292d06730",
"endpoint": "unix:///var/run/docker.sock",
"driver-opts": [
"image=moby/buildkit:latest"
],
"status": "running",
"buildkitd-flags": "--allow-insecure-entitlement security.insecure --allow-insecure-entitlement network.host",
"buildkit": "v0.10.4",
"platforms": "linux/amd64,linux/amd64/v2,linux/amd64/v3,linux/amd64/v4,linux/386"
}
]
}
],
[
'inspect3.txt',
{
"name": "builder-9929e463-7954-4dc3-89cd-514cca29ff80",
"driver": "docker-container",
"nodes": [
{
"name": "builder-9929e463-7954-4dc3-89cd-514cca29ff800",
"endpoint": "unix:///var/run/docker.sock",
"driver-opts": [
"image=moby/buildkit:master",
"network=host"
],
"status": "running",
"buildkitd-flags": "--allow-insecure-entitlement security.insecure --allow-insecure-entitlement network.host",
"buildkit": "3fab389",
"platforms": "linux/amd64,linux/amd64/v2,linux/amd64/v3,linux/amd64/v4,linux/386"
}
]
}
],
[
'inspect4.txt',
{
"name": "default",
"driver": "docker",
"nodes": [
{
"name": "default",
"endpoint": "default",
"status": "running",
"buildkit": "20.10.17",
"platforms": "linux/amd64,linux/arm64,linux/riscv64,linux/ppc64le,linux/s390x,linux/386,linux/arm/v7,linux/arm/v6"
}
]
}
],
[
'inspect5.txt',
{
"name": "remote-builder",
"driver": "remote",
"nodes": [
{
"name": "aws_graviton2",
"endpoint": "tcp://1.23.45.67:1234",
"driver-opts": [
"cert=/home/user/.certs/aws_graviton2/cert.pem",
"key=/home/user/.certs/aws_graviton2/key.pem",
"cacert=/home/user/.certs/aws_graviton2/ca.pem"
],
"status": "running",
"platforms": "darwin/arm64,linux/arm64,linux/arm/v5,linux/arm/v6,linux/arm/v7,windows/arm64"
}
]
}
],
[
'inspect6.txt',
{
"nodes": [
{
"name": "builder-17cfff01-48d9-4c3d-9332-9992e308a5100",
"endpoint": "unix:///var/run/docker.sock",
"status": "running",
"buildkitd-flags": "--allow-insecure-entitlement security.insecure --allow-insecure-entitlement network.host",
"platforms": "linux/amd64,linux/amd64/v2,linux/amd64/v3,linux/386"
}
],
"name": "builder-17cfff01-48d9-4c3d-9332-9992e308a510",
"driver": "docker-container"
}
],
[
'inspect7.txt',
{
"name": "builder2",
"driver": "docker-container",
"lastActivity": new Date("2023-01-16T09:45:23.000Z"),
"nodes": [
{
"buildkit": "v0.11.0",
"buildkitd-flags": "--debug --allow-insecure-entitlement security.insecure --allow-insecure-entitlement network.host",
"driver-opts": [
"env.BUILDKIT_STEP_LOG_MAX_SIZE=10485760",
"env.BUILDKIT_STEP_LOG_MAX_SPEED=10485760",
"env.JAEGER_TRACE=localhost:6831",
"image=moby/buildkit:latest",
"network=host",
"qemu.install=true"
],
"endpoint": "unix:///var/run/docker.sock",
"name": "builder20",
"platforms": "linux/amd64,linux/amd64/v2,linux/amd64/v3,linux/arm64,linux/riscv64,linux/ppc64le,linux/s390x,linux/386,linux/mips64le,linux/mips64,linux/arm/v7,linux/arm/v6",
"status": "running"
}
]
}
],
[
'inspect8.txt',
{
"name": "builder-52aa0611-faf0-42ac-a940-461e4e287d68",
"driver": "docker-container",
"lastActivity": new Date("2023-06-13T13:52:31.000Z"),
"nodes": [
{
"buildkit": "v0.11.6",
"buildkitd-flags": "--debug --allow-insecure-entitlement security.insecure --allow-insecure-entitlement network.host",
"driver-opts": [
"image=moby/buildkit:buildx-stable-1",
"network=host",
],
"endpoint": "unix:///var/run/docker.sock",
"name": "builder-52aa0611-faf0-42ac-a940-461e4e287d680",
"platforms": "linux/amd64,linux/amd64/v2,linux/amd64/v3,linux/amd64/v4,linux/arm64,linux/riscv64,linux/ppc64le,linux/s390x,linux/386,linux/mips64le,linux/mips64,linux/arm/v7,linux/arm/v6",
"status": "running",
"labels": {
"org.mobyproject.buildkit.worker.executor": "oci",
"org.mobyproject.buildkit.worker.hostname": "fv-az572-38",
"org.mobyproject.buildkit.worker.network": "host",
"org.mobyproject.buildkit.worker.oci.process-mode": "sandbox",
"org.mobyproject.buildkit.worker.selinux.enabled": "false",
"org.mobyproject.buildkit.worker.snapshotter": "overlayfs",
},
"gcPolicy": [
{
"all": false,
"filter": [
"type==source.local",
"type==exec.cachemount",
"type==source.git.checkout"
],
"keepDuration": "48h0m0s",
"keepBytes": "488.3MiB",
},
{
"all": false,
"keepDuration": "1440h0m0s",
"keepBytes": "8.382GiB",
},
{
"all": false,
"keepBytes": "8.382GiB",
},
{
"all": true,
"keepBytes": "8.382GiB",
}
]
}
]
}
],
[
'inspect9.txt',
{
"name": "default",
"driver": "docker",
"lastActivity": new Date("2023-06-13T18:13:43.000Z"),
"nodes": [
{
"buildkit": "v0.11.7-0.20230525183624-798ad6b0ce9f",
"endpoint": "default",
"name": "default",
"platforms": "linux/amd64,linux/amd64/v2,linux/amd64/v3,linux/arm64,linux/riscv64,linux/ppc64le,linux/s390x,linux/386,linux/mips64le,linux/mips64,linux/arm/v7,linux/arm/v6",
"status": "running",
"gcPolicy": [
{
"all": true,
"keepBytes": "100GiB",
}
]
}
]
}
],
[
'inspect10.txt',
{
"name": "remote-builder",
"driver": "remote",
"lastActivity": new Date("2023-04-20T12:47:49.000Z"),
"nodes": [
{
"name": "remote-builder0",
"endpoint": "docker-container://buildx_buildkit_dk-remote-builder0",
"status": "inactive"
},
{
"name": "aws_graviton2",
"endpoint": "tcp://10.0.0.1:1234",
"driver-opts": [
"cacert=/home/user/.certs/aws_graviton2/ca.pem",
"cert=/home/user/.certs/aws_graviton2/cert.pem",
"key=/home/user/.certs/aws_graviton2/key.pem"
],
"status": "running",
"buildkit": "v0.11.6",
"platforms": "darwin/arm64,linux/arm64,linux/arm/v5,linux/arm/v6,linux/arm/v7,windows/arm64",
"labels": {
"org.mobyproject.buildkit.worker.executor": "oci",
"org.mobyproject.buildkit.worker.hostname": "77ebc22e2d82",
"org.mobyproject.buildkit.worker.network": "host",
"org.mobyproject.buildkit.worker.oci.process-mode": "sandbox",
"org.mobyproject.buildkit.worker.selinux.enabled": "false",
"org.mobyproject.buildkit.worker.snapshotter": "overlayfs"
},
"gcPolicy": [
{
"all": false,
"filter": [
"type==source.local",
"type==exec.cachemount",
"type==source.git.checkout"
],
"keepDuration": "48h0m0s",
"keepBytes": "488.3MiB"
},
{
"all": false,
"keepDuration": "1440h0m0s",
"keepBytes": "23.28GiB"
},
{
"all": false,
"keepBytes": "23.28GiB"
},
{
"all": true,
"keepBytes": "23.28GiB"
}
]
},
{
"name": "linuxone_s390x",
"endpoint": "tcp://10.0.0.2:1234",
"driver-opts": [
"cacert=/home/user/.certs/linuxone_s390x/ca.pem",
"cert=/home/user/.certs/linuxone_s390x/cert.pem",
"key=/home/user/.certs/linuxone_s390x/key.pem"
],
"status": "running",
"buildkit": "v0.11.6",
"platforms": "linux/s390x",
"labels": {
"org.mobyproject.buildkit.worker.executor": "oci",
"org.mobyproject.buildkit.worker.hostname": "9d0d62a96818",
"org.mobyproject.buildkit.worker.network": "host",
"org.mobyproject.buildkit.worker.oci.process-mode": "sandbox",
"org.mobyproject.buildkit.worker.selinux.enabled": "false",
"org.mobyproject.buildkit.worker.snapshotter": "overlayfs"
},
"gcPolicy": [
{
"all": false,
"keepBytes": "488.3MiB",
"filter": [
"type==source.local",
"type==exec.cachemount",
"type==source.git.checkout"
],
"keepDuration": "48h0m0s"
},
{
"all": false,
"keepDuration": "1440h0m0s",
"keepBytes": "9.313GiB"
},
{
"all": false,
"keepBytes": "9.313GiB"
},
{
"all": true,
"keepBytes": "9.313GiB"
}
]
}
],
}
],
[
'inspect11.txt',
{
"name": "builder",
"driver": "docker-container",
"lastActivity": new Date("2024-03-01T14:25:03.000Z"),
"nodes": [
{
"buildkit": "37657a1",
"buildkitd-flags": "--debug --allow-insecure-entitlement security.insecure --allow-insecure-entitlement network.host --allow-insecure-entitlement=network.host",
"driver-opts": [
"env.JAEGER_TRACE=localhost:6831",
"image=moby/buildkit:master",
"network=host",
"env.BUILDKIT_STEP_LOG_MAX_SIZE=10485760",
"env.BUILDKIT_STEP_LOG_MAX_SPEED=10485760",
],
"endpoint": "unix:///var/run/docker.sock",
"name": "builder0",
"platforms": "linux/amd64,linux/amd64/v2,linux/amd64/v3,linux/arm64,linux/riscv64,linux/ppc64le,linux/s390x,linux/386,linux/mips64le,linux/mips64,linux/arm/v7,linux/arm/v6",
"status": "running",
"features": {
"Cache export": true,
"Docker exporter": true,
"Multi-platform build": true,
"OCI exporter": true,
},
"labels": {
"org.mobyproject.buildkit.worker.executor": "oci",
"org.mobyproject.buildkit.worker.hostname": "docker-desktop",
"org.mobyproject.buildkit.worker.network": "host",
"org.mobyproject.buildkit.worker.oci.process-mode": "sandbox",
"org.mobyproject.buildkit.worker.selinux.enabled": "false",
"org.mobyproject.buildkit.worker.snapshotter": "overlayfs",
},
"gcPolicy": [
{
"all": false,
"filter": [
"type==source.local",
"type==exec.cachemount",
"type==source.git.checkout"
],
"keepDuration": "48h0m0s",
"keepBytes": "488.3MiB",
},
{
"all": false,
"keepDuration": "1440h0m0s",
"keepBytes": "94.06GiB",
},
{
"all": false,
"keepBytes": "94.06GiB",
},
{
"all": true,
"keepBytes": "94.06GiB",
}
]
}
]
}
],
])('given %p', async (inspectFile, expected) => {
expect(await Builder.parseInspect(fs.readFileSync(path.join(fixturesDir, inspectFile)).toString())).toEqual(expected);
});
});

View File

@@ -0,0 +1,286 @@
/**
* Copyright 2023 actions-toolkit authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
import {describe, expect, it, jest, test, beforeEach, afterEach} from '@jest/globals';
import * as fs from 'fs';
import * as path from 'path';
import * as rimraf from 'rimraf';
import * as semver from 'semver';
import {Buildx} from '../../src/buildx/buildx';
import {Context} from '../../src/context';
import {Exec} from '../../src/exec';
import {Cert} from '../../src/types/buildx/buildx';
const fixturesDir = path.join(__dirname, '..', 'fixtures');
// prettier-ignore
const tmpDir = path.join(process.env.TEMP || '/tmp', 'buildx-jest');
const tmpName = path.join(tmpDir, '.tmpname-jest');
jest.spyOn(Context, 'tmpDir').mockImplementation((): string => {
if (!fs.existsSync(tmpDir)) {
fs.mkdirSync(tmpDir, {recursive: true});
}
return tmpDir;
});
jest.spyOn(Context, 'tmpName').mockImplementation((): string => {
return tmpName;
});
afterEach(() => {
rimraf.sync(tmpDir);
});
describe('configDir', () => {
const originalEnv = process.env;
beforeEach(() => {
jest.resetModules();
process.env = {
...originalEnv,
BUILDX_CONFIG: '/var/docker/buildx',
DOCKER_CONFIG: '/var/docker/config'
};
});
afterEach(() => {
process.env = originalEnv;
});
it('returns default', async () => {
process.env.BUILDX_CONFIG = '';
expect(Buildx.configDir).toEqual(path.join('/var/docker/config', 'buildx'));
});
it('returns from env', async () => {
expect(Buildx.configDir).toEqual('/var/docker/buildx');
});
});
describe('certsDir', () => {
const originalEnv = process.env;
beforeEach(() => {
jest.resetModules();
process.env = {
...originalEnv,
BUILDX_CONFIG: '/var/docker/buildx'
};
});
afterEach(() => {
process.env = originalEnv;
});
it('returns default', async () => {
process.env.BUILDX_CONFIG = '/var/docker/buildx';
expect(Buildx.certsDir).toEqual(path.join('/var/docker/buildx', 'certs'));
});
});
describe('isAvailable', () => {
it('docker cli', async () => {
const execSpy = jest.spyOn(Exec, 'getExecOutput');
const buildx = new Buildx({
standalone: false
});
await buildx.isAvailable();
// eslint-disable-next-line jest/no-standalone-expect
expect(execSpy).toHaveBeenCalledWith(`docker`, ['buildx'], {
silent: true,
ignoreReturnCode: true
});
});
it('standalone', async () => {
const execSpy = jest.spyOn(Exec, 'getExecOutput');
const buildx = new Buildx({
standalone: true
});
await buildx.isAvailable();
// eslint-disable-next-line jest/no-standalone-expect
expect(execSpy).toHaveBeenCalledWith(`buildx`, [], {
silent: true,
ignoreReturnCode: true
});
});
});
describe('printVersion', () => {
it('docker cli', async () => {
const execSpy = jest.spyOn(Exec, 'exec');
const buildx = new Buildx({
standalone: false
});
await buildx.printVersion();
expect(execSpy).toHaveBeenCalledWith(`docker`, ['buildx', 'version'], {
failOnStdErr: false
});
});
it('standalone', async () => {
const execSpy = jest.spyOn(Exec, 'exec');
const buildx = new Buildx({
standalone: true
});
await buildx.printVersion();
expect(execSpy).toHaveBeenCalledWith(`buildx`, ['version'], {
failOnStdErr: false
});
});
});
describe('version', () => {
it('valid', async () => {
const buildx = new Buildx();
expect(semver.valid(await buildx.version())).not.toBeUndefined();
});
});
describe('parseVersion', () => {
test.each([
['github.com/docker/buildx 0.4.1+azure bda4882a65349ca359216b135896bddc1d92461c', '0.4.1'],
['github.com/docker/buildx v0.4.1 bda4882a65349ca359216b135896bddc1d92461c', '0.4.1'],
['github.com/docker/buildx v0.4.2 fb7b670b764764dc4716df3eba07ffdae4cc47b2', '0.4.2'],
['github.com/docker/buildx f117971 f11797113e5a9b86bd976329c5dbb8a8bfdfadfa', 'f117971']
])('given %p', async (stdout, expected) => {
expect(Buildx.parseVersion(stdout)).toEqual(expected);
});
});
describe('versionSatisfies', () => {
test.each([
['0.4.1', '>=0.3.2', true],
['bda4882a65349ca359216b135896bddc1d92461c', '>0.1.0', false],
['f117971', '>0.6.0', true]
])('given %p', async (version, range, expected) => {
const buildx = new Buildx();
expect(await buildx.versionSatisfies(range, version)).toBe(expected);
});
});
describe('resolveCertsDriverOpts', () => {
const originalEnv = process.env;
beforeEach(() => {
jest.resetModules();
process.env = {
...originalEnv,
BUILDX_CONFIG: path.join(tmpDir, 'resolveCertsDriverOpts', 'buildx')
};
});
afterEach(() => {
process.env = originalEnv;
rimraf.sync(path.join(tmpDir, 'resolveCertsDriverOpts', 'buildx'));
});
// prettier-ignore
test.each([
[
1,
'mycontext',
'docker-container',
{},
[],
[]
],
[
2,
'docker-container://mycontainer',
'docker-container',
{},
[],
[]
],
[
3,
'tcp://graviton2:1234',
'remote',
{},
[],
[]
],
[
4,
'tcp://graviton2:1234',
'remote',
{
cacert: 'foo',
cert: 'foo',
key: 'foo',
} as Cert,
[
path.join(tmpDir, 'resolveCertsDriverOpts', 'buildx', 'certs', 'cacert_graviton2-1234.pem'),
path.join(tmpDir, 'resolveCertsDriverOpts', 'buildx', 'certs', 'cert_graviton2-1234.pem'),
path.join(tmpDir, 'resolveCertsDriverOpts', 'buildx', 'certs', 'key_graviton2-1234.pem')
],
[
`cacert=${path.join(tmpDir, 'resolveCertsDriverOpts', 'buildx', 'certs', 'cacert_graviton2-1234.pem')}`,
`cert=${path.join(tmpDir, 'resolveCertsDriverOpts', 'buildx', 'certs', 'cert_graviton2-1234.pem')}`,
`key=${path.join(tmpDir, 'resolveCertsDriverOpts', 'buildx', 'certs', 'key_graviton2-1234.pem')}`
]
],
[
5,
'tcp://mybuilder:1234',
'docker-container',
{
cacert: 'foo',
cert: 'foo',
key: 'foo',
} as Cert,
[
path.join(tmpDir, 'resolveCertsDriverOpts', 'buildx', 'certs', 'cacert_mybuilder-1234.pem'),
path.join(tmpDir, 'resolveCertsDriverOpts', 'buildx', 'certs', 'cert_mybuilder-1234.pem'),
path.join(tmpDir, 'resolveCertsDriverOpts', 'buildx', 'certs', 'key_mybuilder-1234.pem')
],
[]
],
])('%p. given %p endpoint, %p driver', async (id: number, endpoint: string, driver: string, cert: Cert, expectedFiles: Array<string>, expectedOpts: Array<string>) => {
fs.mkdirSync(Buildx.certsDir, {recursive: true});
expect(Buildx.resolveCertsDriverOpts(driver, endpoint, cert)).toEqual(expectedOpts);
for (const k in expectedFiles) {
const file = expectedFiles[k];
expect(fs.existsSync(file)).toBe(true);
}
});
});
describe('refs', () => {
it('returns all refs', async () => {
const refs = Buildx.refs({
dir: path.join(fixturesDir, 'buildx-refs')
});
expect(Object.keys(refs).length).toEqual(11);
});
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);
});
it('returns foo builder refs', async () => {
const refs = Buildx.refs({
dir: path.join(fixturesDir, 'buildx-refs'),
builderName: 'foo'
});
expect(Object.keys(refs).length).toEqual(3);
});
it('returns default builder refs since', async () => {
const mdate = new Date('2023-09-05T00:00:00Z');
fs.utimesSync(path.join(fixturesDir, 'buildx-refs', 'default', 'default', '36dix0eiv9evr61vrwzn32w7q'), mdate, mdate);
fs.utimesSync(path.join(fixturesDir, 'buildx-refs', 'default', 'default', '49p5r8und2konke5pmlyzqp3n'), mdate, mdate);
fs.utimesSync(path.join(fixturesDir, 'buildx-refs', 'default', 'default', 'a8zqzhhv5yiazm396jobsgdw2'), mdate, mdate);
const refs = Buildx.refs({
dir: path.join(fixturesDir, 'buildx-refs'),
builderName: 'default',
since: new Date('2024-01-10T00:00:00Z')
});
expect(Object.keys(refs).length).toEqual(5);
});
});

View File

@@ -0,0 +1,149 @@
/**
* 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, test} from '@jest/globals';
import * as fs from 'fs';
import * as path from 'path';
import {Buildx} from '../../src/buildx/buildx';
import {Bake} from '../../src/buildx/bake';
import {Build} from '../../src/buildx/build';
import {History} from '../../src/buildx/history';
import {Exec} from '../../src/exec';
const fixturesDir = path.join(__dirname, '..', 'fixtures');
// prettier-ignore
const tmpDir = path.join(process.env.TEMP || '/tmp', 'buildx-history-jest');
const maybe = !process.env.GITHUB_ACTIONS || (process.env.GITHUB_ACTIONS === 'true' && process.env.ImageOS && process.env.ImageOS.startsWith('ubuntu')) ? describe : describe.skip;
maybe('exportBuild', () => {
// prettier-ignore
test.each([
[
'single',
[
'build',
'-f', path.join(fixturesDir, 'hello.Dockerfile'),
fixturesDir
],
],
[
'multi-platform',
[
'build',
'-f', path.join(fixturesDir, 'hello.Dockerfile'),
'--platform', 'linux/amd64,linux/arm64',
fixturesDir
],
]
])('export build %p', async (_, bargs) => {
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',
...bargs,
'--metadata-file', build.getMetadataFilePath()
]);
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();
});
// prettier-ignore
test.each([
[
'single',
[
'bake',
'-f', path.join(fixturesDir, 'hello-bake.hcl'),
'hello'
],
],
[
'group',
[
'bake',
'-f', path.join(fixturesDir, 'hello-bake.hcl'),
'hello-all'
],
],
[
'matrix',
[
'bake',
'-f', path.join(fixturesDir, 'hello-bake.hcl'),
'hello-matrix'
],
]
])('export bake build %p', async (_, bargs) => {
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',
...bargs,
'--metadata-file', bake.getMetadataFilePath()
]);
await Exec.exec(buildCmd.command, buildCmd.args, {
cwd: fixturesDir
});
})()
).resolves.not.toThrow();
const metadata = bake.resolveMetadata();
expect(metadata).toBeDefined();
const buildRefs = bake.resolveRefs(metadata);
expect(buildRefs).toBeDefined();
const history = new History({buildx: buildx});
const exportRes = await history.export({
refs: buildRefs ?? []
});
expect(exportRes).toBeDefined();
expect(exportRes?.dockerbuildFilename).toBeDefined();
expect(exportRes?.dockerbuildSize).toBeDefined();
expect(fs.existsSync(exportRes?.dockerbuildFilename)).toBe(true);
expect(exportRes?.summaries).toBeDefined();
});
});

View File

@@ -0,0 +1,42 @@
/**
* Copyright 2023 actions-toolkit authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
import {describe, expect, test} from '@jest/globals';
import * as fs from 'fs';
import {Install} from '../../src/buildx/install';
const maybe = !process.env.GITHUB_ACTIONS || (process.env.GITHUB_ACTIONS === 'true' && process.env.ImageOS && process.env.ImageOS.startsWith('ubuntu')) ? describe : describe.skip;
maybe('download', () => {
// prettier-ignore
test.each(['latest'])(
'install docker %s', async (version) => {
await expect((async () => {
const install = new Install({
standalone: true
});
const toolPath = await install.download(version);
if (!fs.existsSync(toolPath)) {
throw new Error('toolPath does not exist');
}
const binPath = await install.installStandalone(toolPath);
if (!fs.existsSync(binPath)) {
throw new Error('binPath does not exist');
}
})()).resolves.not.toThrow();
}, 60000);
});

View File

@@ -0,0 +1,188 @@
/**
* Copyright 2023 actions-toolkit authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
import {describe, expect, it, jest, test, afterEach} from '@jest/globals';
import * as fs from 'fs';
import * as 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');
afterEach(function () {
rimraf.sync(tmpDir);
});
describe('download', () => {
// prettier-ignore
test.each([
['v0.9.0', false],
['v0.10.5', true],
['latest', true]
])(
'acquires %p of buildx (standalone: %p)', async (version, standalone) => {
const install = new Install({standalone: standalone});
const toolPath = await install.download(version);
expect(fs.existsSync(toolPath)).toBe(true);
let buildxBin: string;
if (standalone) {
buildxBin = await install.installStandalone(toolPath, tmpDir);
} else {
buildxBin = await install.installPlugin(toolPath, tmpDir);
}
expect(fs.existsSync(buildxBin)).toBe(true);
},
100000
);
// prettier-ignore
test.each([
// following versions are already cached to htc from previous test cases
['v0.9.0'],
['v0.10.5'],
])(
'acquires %p of buildx with cache', async (version) => {
const install = new Install({standalone: false});
const toolPath = await install.download(version);
expect(fs.existsSync(toolPath)).toBe(true);
});
// prettier-ignore
test.each([
['v0.11.2'],
['v0.12.0'],
])(
'acquires %p of buildx without cache', async (version) => {
const install = new Install({standalone: false});
const toolPath = await install.download(version, true);
expect(fs.existsSync(toolPath)).toBe(true);
});
// TODO: add tests for arm
// prettier-ignore
test.each([
['win32', 'x64'],
['win32', 'arm64'],
['darwin', 'x64'],
['darwin', 'arm64'],
['linux', 'x64'],
['linux', 'arm64'],
['linux', 'ppc64'],
['linux', 's390x'],
])(
'acquires buildx for %s/%s', async (os, arch) => {
jest.spyOn(osm, 'platform').mockImplementation(() => os as NodeJS.Platform);
jest.spyOn(osm, 'arch').mockImplementation(() => arch);
const install = new Install();
const buildxBin = await install.download('latest');
expect(fs.existsSync(buildxBin)).toBe(true);
},
100000
);
});
describe('build', () => {
// eslint-disable-next-line jest/no-disabled-tests
it.skip('builds refs/pull/648/head', async () => {
const install = new Install();
const toolPath = await install.build('https://github.com/docker/buildx.git#refs/pull/648/head');
expect(fs.existsSync(toolPath)).toBe(true);
const buildxBin = await install.installStandalone(toolPath, tmpDir);
expect(fs.existsSync(buildxBin)).toBe(true);
}, 100000);
// eslint-disable-next-line jest/no-disabled-tests
it.skip('builds 67bd6f4dc82a9cd96f34133dab3f6f7af803bb14', async () => {
const install = new Install();
const toolPath = await install.build('https://github.com/docker/buildx.git#67bd6f4dc82a9cd96f34133dab3f6f7af803bb14');
expect(fs.existsSync(toolPath)).toBe(true);
const buildxBin = await install.installPlugin(toolPath, tmpDir);
expect(fs.existsSync(buildxBin)).toBe(true);
}, 100000);
});
describe('getDownloadVersion', () => {
it('returns official latest download version', async () => {
const version = await Install.getDownloadVersion('latest');
expect(version.key).toEqual('official');
expect(version.version).toEqual('latest');
expect(version.downloadURL).toEqual('https://github.com/docker/buildx/releases/download/v%s/%s');
expect(version.releasesURL).toEqual('https://raw.githubusercontent.com/docker/actions-toolkit/main/.github/buildx-releases.json');
});
it('returns official v0.10.1 download version', async () => {
const version = await Install.getDownloadVersion('v0.10.1');
expect(version.key).toEqual('official');
expect(version.version).toEqual('v0.10.1');
expect(version.downloadURL).toEqual('https://github.com/docker/buildx/releases/download/v%s/%s');
expect(version.releasesURL).toEqual('https://raw.githubusercontent.com/docker/actions-toolkit/main/.github/buildx-releases.json');
});
it('returns lab latest download version', async () => {
const version = await Install.getDownloadVersion('lab:latest');
expect(version.key).toEqual('lab');
expect(version.version).toEqual('latest');
expect(version.downloadURL).toEqual('https://github.com/docker/buildx-desktop/releases/download/v%s/%s');
expect(version.releasesURL).toEqual('https://raw.githubusercontent.com/docker/actions-toolkit/main/.github/buildx-lab-releases.json');
});
it('returns lab v0.11.2-desktop.2 download version', async () => {
const version = await Install.getDownloadVersion('lab:v0.11.2-desktop.2');
expect(version.key).toEqual('lab');
expect(version.version).toEqual('v0.11.2-desktop.2');
expect(version.downloadURL).toEqual('https://github.com/docker/buildx-desktop/releases/download/v%s/%s');
expect(version.releasesURL).toEqual('https://raw.githubusercontent.com/docker/actions-toolkit/main/.github/buildx-lab-releases.json');
});
it('unknown repo', async () => {
await expect(Install.getDownloadVersion('foo:bar')).rejects.toThrow(new Error('Cannot find buildx version for foo:bar'));
});
});
describe('getRelease', () => {
it('returns latest official GitHub release', async () => {
const version = await Install.getDownloadVersion('latest');
const release = await Install.getRelease(version);
expect(release).not.toBeNull();
expect(release?.tag_name).not.toEqual('');
});
it('returns v0.10.1 official GitHub release', async () => {
const version = await Install.getDownloadVersion('v0.10.1');
const release = await Install.getRelease(version);
expect(release).not.toBeNull();
expect(release?.id).toEqual(90346950);
expect(release?.tag_name).toEqual('v0.10.1');
expect(release?.html_url).toEqual('https://github.com/docker/buildx/releases/tag/v0.10.1');
});
it('returns v0.11.2-desktop.2 lab GitHub release', async () => {
const version = await Install.getDownloadVersion('lab:v0.11.2-desktop.2');
const release = await Install.getRelease(version);
expect(release).not.toBeNull();
expect(release?.id).toEqual(118213369);
expect(release?.tag_name).toEqual('v0.11.2-desktop.2');
expect(release?.html_url).toEqual('https://github.com/docker/buildx-desktop/releases/tag/v0.11.2-desktop.2');
});
it('unknown release', async () => {
const version = await Install.getDownloadVersion('foo');
await expect(Install.getRelease(version)).rejects.toThrow(new Error('Cannot find Buildx release foo in https://raw.githubusercontent.com/docker/actions-toolkit/main/.github/buildx-releases.json'));
});
});

View File

@@ -0,0 +1,40 @@
/**
* 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 path from 'path';
import {describe, expect, it} from '@jest/globals';
import {Cache} from '../src/cache';
// prettier-ignore
const tmpDir = path.join(process.env.TEMP || '/tmp', 'cache-jest');
const fixturesDir = path.join(__dirname, 'fixtures');
describe('cache', () => {
it('github-repo', async () => {
const r = (Math.random() + 1).toString(36).substring(7);
const htcName = `cache-test-github-repo-${r}`;
const c = new Cache({
htcName: htcName,
htcVersion: `v1.0.0+${r}`,
baseCacheDir: path.join(tmpDir, '.cache-test'),
cacheFile: 'github-repo.json'
});
expect(await c.save(path.join(fixturesDir, 'github-repo.json'))).not.toEqual('');
expect(await c.find()).not.toEqual('');
});
});

View File

@@ -1,41 +1,53 @@
import fs from 'fs';
import path from 'path';
import rimraf from 'rimraf';
import {describe, expect, jest, it, beforeEach, afterEach} from '@jest/globals';
/**
* Copyright 2023 actions-toolkit authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
import * as fs from 'fs';
import * as path from 'path';
import * as rimraf from 'rimraf';
import {describe, expect, jest, it, afterEach} from '@jest/globals';
import {Context} from '../src/context';
const tmpDir = path.join('/tmp/.docker-actions-toolkit-jest').split(path.sep).join(path.posix.sep);
const tmpName = path.join(tmpDir, '.tmpname-jest').split(path.sep).join(path.posix.sep);
// prettier-ignore
const tmpDir = path.join(process.env.TEMP || '/tmp', 'context-jest');
const tmpName = path.join(tmpDir, '.tmpname-jest');
jest.spyOn(Context.prototype, 'tmpDir').mockImplementation((): string => {
jest.spyOn(Context, 'tmpDir').mockImplementation((): string => {
if (!fs.existsSync(tmpDir)) {
fs.mkdirSync(tmpDir, {recursive: true});
}
return tmpDir;
});
jest.spyOn(Context.prototype, 'tmpName').mockImplementation((): string => {
return tmpName;
});
beforeEach(() => {
jest.clearAllMocks();
jest.spyOn(Context, 'tmpName').mockImplementation((): string => {
return tmpName;
});
afterEach(() => {
rimraf.sync(tmpDir);
});
describe('gitContext', () => {
describe('gitRef', () => {
it('returns refs/heads/master', async () => {
const context = new Context();
expect(context.buildGitContext).toEqual('https://github.com/docker/actions-toolkit.git#refs/heads/master');
expect(Context.gitRef()).toEqual('refs/heads/master');
});
});
describe('provenanceBuilderID', () => {
it('returns 123', async () => {
const context = new Context();
expect(context.provenanceBuilderID).toEqual('https://github.com/docker/actions-toolkit/actions/runs/123');
describe('gitContext', () => {
it('returns refs/heads/master', async () => {
expect(Context.gitContext()).toEqual('https://github.com/docker/actions-toolkit.git#refs/heads/master');
});
});

View File

@@ -1,62 +0,0 @@
import {beforeEach, describe, expect, it, jest} from '@jest/globals';
import * as exec from '@actions/exec';
import {Docker} from '../src/docker';
beforeEach(() => {
jest.clearAllMocks();
});
describe('isAvailable', () => {
it('cli', () => {
const execSpy = jest.spyOn(exec, 'getExecOutput');
Docker.isAvailable();
// eslint-disable-next-line jest/no-standalone-expect
expect(execSpy).toHaveBeenCalledWith(`docker`, undefined, {
silent: true,
ignoreReturnCode: true
});
});
});
describe('printVersion', () => {
it('docker cli', () => {
const execSpy = jest.spyOn(exec, 'exec');
Docker.printVersion(false).catch(() => {
// noop
});
expect(execSpy).toHaveBeenCalledWith(`docker`, ['version'], {
failOnStdErr: false
});
});
it('standalone', () => {
const execSpy = jest.spyOn(exec, 'exec');
Docker.printVersion(true).catch(() => {
// noop
});
expect(execSpy).not.toHaveBeenCalledWith(`docker`, ['version'], {
failOnStdErr: false
});
});
});
describe('printInfo', () => {
it('docker cli', () => {
const execSpy = jest.spyOn(exec, 'exec');
Docker.printInfo(false).catch(() => {
// noop
});
expect(execSpy).toHaveBeenCalledWith(`docker`, ['info'], {
failOnStdErr: false
});
});
it('standalone', () => {
const execSpy = jest.spyOn(exec, 'exec');
Docker.printInfo(true).catch(() => {
// noop
});
expect(execSpy).not.toHaveBeenCalledWith(`docker`, ['info'], {
failOnStdErr: false
});
});
});

View File

@@ -0,0 +1,56 @@
/**
* 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, 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('pull', () => {
// prettier-ignore
test.each([
[
'busybox',
undefined,
],
[
'busybox:1.36',
undefined,
],
[
'busybox@sha256:7ae8447f3a7f5bccaa765926f25fc038e425cf1b2be6748727bbea9a13102094',
undefined,
],
[
'doesnotexist:foo',
`pull access denied for doesnotexist`,
],
])('pulling %p', async (image: string, err: string | undefined) => {
try {
await Docker.pull(image, true);
if (err !== undefined) {
throw new Error('Expected an error to be thrown');
}
} catch (e) {
if (err === undefined) {
throw new Error(`Expected no error, but got: ${e.message}`);
}
// eslint-disable-next-line jest/no-conditional-expect
expect(e.message).toContain(err);
}
}, 600000);
});

View File

@@ -0,0 +1,139 @@
/**
* Copyright 2023 actions-toolkit authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
import {afterEach, beforeEach, describe, expect, it, jest} from '@jest/globals';
import * as fs from 'fs';
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');
afterEach(function () {
rimraf.sync(tmpDir);
});
describe('configDir', () => {
const originalEnv = process.env;
beforeEach(() => {
jest.resetModules();
process.env = {
...originalEnv,
DOCKER_CONFIG: '/var/docker/config'
};
});
afterEach(() => {
process.env = originalEnv;
});
it('returns default', async () => {
process.env.DOCKER_CONFIG = '';
jest.spyOn(osm, 'homedir').mockImplementation(() => path.join('/tmp', 'home'));
expect(Docker.configDir).toEqual(path.join('/tmp', 'home', '.docker'));
});
it('returns from env', async () => {
expect(Docker.configDir).toEqual('/var/docker/config');
});
});
describe('configFile', () => {
const originalEnv = process.env;
beforeEach(() => {
jest.resetModules();
if (!fs.existsSync(tmpDir)) {
fs.mkdirSync(tmpDir, {recursive: true});
}
process.env = {
...originalEnv,
DOCKER_CONFIG: tmpDir
};
});
afterEach(() => {
process.env = originalEnv;
});
it('auths', async () => {
fs.copyFileSync(path.join(fixturesDir, 'docker-config-auths.json'), path.join(tmpDir, 'config.json'));
expect(Docker.configFile()).toEqual({
auths: {
'https://index.docker.io/v1/': {
auth: 'am9lam9lOmhlbGxv',
email: 'user@example.com'
}
}
} as unknown as ConfigFile);
});
it('proxies', async () => {
fs.copyFileSync(path.join(fixturesDir, 'docker-config-proxies.json'), path.join(tmpDir, 'config.json'));
expect(Docker.configFile()).toEqual({
proxies: {
default: {
httpProxy: 'http://127.0.0.1:3128',
httpsProxy: 'http://127.0.0.1:3128'
}
}
} as unknown as ConfigFile);
});
});
describe('isAvailable', () => {
it('cli', async () => {
const ioWhichSpy = jest.spyOn(io, 'which');
await Docker.isAvailable();
expect(ioWhichSpy).toHaveBeenCalledTimes(1);
expect(ioWhichSpy).toHaveBeenCalledWith('docker', true);
});
});
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}}'], {
ignoreReturnCode: true,
silent: true
});
});
});
describe('printVersion', () => {
it('call docker version', async () => {
const execSpy = jest.spyOn(Exec, 'exec');
await Docker.printVersion().catch(() => {
// noop
});
expect(execSpy).toHaveBeenCalledWith(`docker`, ['version']);
});
});
describe('printInfo', () => {
it('call docker info', async () => {
const execSpy = jest.spyOn(Exec, 'exec');
await Docker.printInfo().catch(() => {
// noop
});
expect(execSpy).toHaveBeenCalledWith(`docker`, ['info']);
});
});

View File

@@ -0,0 +1,69 @@
/**
* Copyright 2023 actions-toolkit authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
import path from 'path';
import {jest, describe, expect, test, beforeEach, afterEach} from '@jest/globals';
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');
describe('install', () => {
const originalEnv = process.env;
beforeEach(() => {
jest.resetModules();
process.env = {
...originalEnv,
LIMA_START_ARGS: '--cpus 4 --memory 8',
LIMA_IMAGES: `x86_64:https://cloud.debian.org/images/cloud/bookworm/20231013-1532/debian-12-genericcloud-amd64-20231013-1532.qcow2@sha512:6b55e88b027c14da1b55c85a25a9f7069d4560a8fdb2d948c986a585db469728a06d2c528303e34bb62d8b2984def38fd9ddfc00965846ff6e05b01d6e883bfe
aarch64:https://cloud.debian.org/images/cloud/bookworm/20231013-1532/debian-12-genericcloud-arm64-20231013-1532.qcow2`
};
});
afterEach(() => {
process.env = originalEnv;
});
// prettier-ignore
test.each(['v26.1.4'])(
'install docker %s', async (version) => {
if (process.env.ImageOS && process.env.ImageOS.startsWith('ubuntu')) {
// Remove containerd first on ubuntu runners to make sure it takes
// ones packaged with docker
await Exec.exec('sudo', ['apt-get', 'remove', '-y', 'containerd.io'], {
env: Object.assign({}, process.env, {
DEBIAN_FRONTEND: 'noninteractive'
}) as {
[key: string]: string;
}
});
}
await expect((async () => {
const install = new Install({
version: version,
runDir: tmpDir,
contextName: 'foo',
daemonConfig: `{"debug":true,"features":{"containerd-snapshotter":true}}`
});
await install.download();
await install.install();
await Docker.printVersion();
await Docker.printInfo();
await install.tearDown();
})()).resolves.not.toThrow();
}, 1200000);
});

View File

@@ -0,0 +1,98 @@
/**
* Copyright 2023 actions-toolkit authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
import {describe, expect, jest, test, beforeEach, afterEach, it} from '@jest/globals';
import * as fs from 'fs';
import * as 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');
afterEach(function () {
rimraf.sync(tmpDir);
});
describe('download', () => {
// prettier-ignore
test.each([
['v19.03.14', 'linux'],
['v20.10.22', 'linux'],
['v20.10.22', 'darwin'],
['v20.10.22', 'win32'],
])(
'acquires %p of docker (%s)', async (version, platformOS) => {
jest.spyOn(osm, 'platform').mockImplementation(() => platformOS as NodeJS.Platform);
const install = new Install({
version: version,
runDir: tmpDir,
});
const toolPath = await install.download();
expect(fs.existsSync(toolPath)).toBe(true);
}, 100000);
});
describe('getRelease', () => {
it('returns latest docker GitHub release', async () => {
const release = await Install.getRelease('latest');
expect(release).not.toBeNull();
expect(release?.tag_name).not.toEqual('');
});
it('returns v23.0.0 buildx GitHub release', async () => {
const release = await Install.getRelease('v23.0.0');
expect(release).not.toBeNull();
expect(release?.id).toEqual(91109643);
expect(release?.tag_name).toEqual('v23.0.0');
expect(release?.html_url).toEqual('https://github.com/moby/moby/releases/tag/v23.0.0');
});
it('unknown release', async () => {
await expect(Install.getRelease('foo')).rejects.toThrow(new Error('Cannot find Docker release foo in https://raw.githubusercontent.com/docker/actions-toolkit/main/.github/docker-releases.json'));
});
});
describe('limaImage', () => {
const originalEnv = process.env;
beforeEach(() => {
jest.resetModules();
process.env = {
...originalEnv,
LIMA_IMAGES: `x86_64:https://cloud-images.ubuntu.com/releases/23.10/release-20231011/ubuntu-23.10-server-cloudimg-amd64.img@sha256:f6529be56da3429a56e4f5ef202bf4958201bc63f8541e478caa6e8eb712e635
aarch64:https://cloud-images.ubuntu.com/releases/23.10/release-20231011/ubuntu-23.10-server-cloudimg-arm64.img`
};
});
afterEach(() => {
process.env = originalEnv;
});
it('returns custom images', async () => {
expect(Install.limaCustomImages()).toEqual([
{
location: 'https://cloud-images.ubuntu.com/releases/23.10/release-20231011/ubuntu-23.10-server-cloudimg-amd64.img',
arch: 'x86_64',
digest: 'sha256:f6529be56da3429a56e4f5ef202bf4958201bc63f8541e478caa6e8eb712e635'
},
{
location: 'https://cloud-images.ubuntu.com/releases/23.10/release-20231011/ubuntu-23.10-server-cloudimg-arm64.img',
arch: 'aarch64',
digest: ''
}
]);
});
});

117
__tests__/dockerhub.test.ts Normal file
View File

@@ -0,0 +1,117 @@
/**
* Copyright 2023 actions-toolkit authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
import {describe, expect, jest, it} from '@jest/globals';
import * as fs from 'fs';
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';
describe('getRepository', () => {
it('returns repo info', async () => {
jest.spyOn(DockerHub.prototype, 'getRepository').mockImplementation((): Promise<RepositoryResponse> => {
return <Promise<RepositoryResponse>>(repoInfoFixture as unknown);
});
// eslint-disable-next-line @typescript-eslint/no-explicit-any
jest.spyOn(DockerHub as any, 'login').mockReturnValue('jwt_token');
const dockerhub = await DockerHub.build({
credentials: {
username: 'foo',
password: '0123456-7890-0000-1111-222222222'
}
});
const repoinfo = await dockerhub.getRepository({
namespace: 'foo',
name: 'bar'
});
expect(repoinfo.namespace).toEqual('foo');
expect(repoinfo.name).toEqual('bar');
expect(repoinfo.repository_type).toEqual('image');
});
});
describe('getRepositoryTags', () => {
it('return repo tags', async () => {
jest.spyOn(DockerHub.prototype, 'getRepositoryTags').mockImplementation((): Promise<RepositoryTagsResponse> => {
return <Promise<RepositoryTagsResponse>>(repoTagsFixture as unknown);
});
// eslint-disable-next-line @typescript-eslint/no-explicit-any
jest.spyOn(DockerHub as any, 'login').mockReturnValue('jwt_token');
const dockerhub = await DockerHub.build({
credentials: {
username: 'foo',
password: '0123456-7890-0000-1111-222222222'
}
});
const resp = await dockerhub.getRepositoryTags({
namespace: 'crazymax',
name: 'diun'
});
expect(resp.count).toBeGreaterThan(0);
expect(resp.next).not.toBeNull();
expect(resp.results.length).toBeGreaterThan(0);
expect(resp.results[0].last_updater_username).toEqual('crazymax');
});
});
describe('getRepositoryAllTags', () => {
it('return repo all tags', async () => {
jest.spyOn(DockerHub.prototype, 'getRepositoryAllTags').mockImplementation((): Promise<RepositoryTagsResponse> => {
return <Promise<RepositoryTagsResponse>>(repoAllTagsFixture as unknown);
});
// eslint-disable-next-line @typescript-eslint/no-explicit-any
jest.spyOn(DockerHub as any, 'login').mockReturnValue('jwt_token');
const dockerhub = await DockerHub.build({
credentials: {
username: 'foo',
password: '0123456-7890-0000-1111-222222222'
}
});
const resp = await dockerhub.getRepositoryAllTags({
namespace: 'crazymax',
name: 'diun'
});
expect(resp.count).toBeGreaterThan(0);
expect(resp.next).toBeNull();
expect(resp.results.length).toBeGreaterThan(0);
expect(resp.results[0].last_updater_username).toEqual('crazymax');
});
});
describe('updateRepoDescription', () => {
it.skip('set repo description', async () => {
const dockerhub = await DockerHub.build({
credentials: {
username: 'foo',
password: 'bar'
}
});
const resp = await dockerhub.updateRepoDescription({
namespace: 'crazymax',
name: 'test-toolkit',
description: 'Hello-World',
full_description: fs.readFileSync(path.join(__dirname, '..', 'README.md'), 'utf-8')
});
expect(resp.namespace).toEqual('foo');
expect(resp.name).toEqual('bar');
expect(resp.description).toEqual('Hello-World');
});
});

47
__tests__/exec.test.ts Normal file
View File

@@ -0,0 +1,47 @@
/**
* Copyright 2023 actions-toolkit authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
import {describe, expect, it, jest} from '@jest/globals';
import {Exec} from '../src/exec';
describe('exec', () => {
it('returns docker version', async () => {
const execSpy = jest.spyOn(Exec, 'exec');
await Exec.exec('docker', ['version'], {
ignoreReturnCode: true,
silent: true
});
expect(execSpy).toHaveBeenCalledWith(`docker`, ['version'], {
ignoreReturnCode: true,
silent: true
});
});
});
describe('getExecOutput', () => {
it('returns docker version', async () => {
const execSpy = jest.spyOn(Exec, 'getExecOutput');
await Exec.getExecOutput('docker', ['version'], {
ignoreReturnCode: true,
silent: true
});
expect(execSpy).toHaveBeenCalledWith(`docker`, ['version'], {
ignoreReturnCode: true,
silent: true
});
});
});

View File

@@ -0,0 +1,29 @@
{
"group": {
"default": {
"targets": [
"image"
]
}
},
"target": {
"image": {
"context": ".",
"dockerfile": "Dockerfile",
"args": {
"BUILDKIT_CONTEXT_KEEP_GIT_DIR": "1",
"GO_VERSION": "1.20"
},
"tags": [
"docker/buildx-bin:local"
],
"target": "binaries",
"platforms": [
"linux/amd64"
],
"output": [
"type=docker"
]
}
}
}

View File

@@ -0,0 +1,55 @@
{
"group": {
"default": {
"targets": [
"validate"
]
},
"validate": {
"targets": [
"lint",
"validate-vendor",
"validate-docs"
]
}
},
"target": {
"lint": {
"context": ".",
"dockerfile": "./hack/dockerfiles/lint.Dockerfile",
"args": {
"BUILDKIT_CONTEXT_KEEP_GIT_DIR": "1",
"GO_VERSION": "1.20"
},
"output": [
"type=cacheonly"
]
},
"validate-docs": {
"context": ".",
"dockerfile": "./hack/dockerfiles/docs.Dockerfile",
"args": {
"BUILDKIT_CONTEXT_KEEP_GIT_DIR": "1",
"BUILDX_EXPERIMENTAL": "1",
"FORMATS": "md",
"GO_VERSION": "1.20"
},
"target": "validate",
"output": [
"type=cacheonly"
]
},
"validate-vendor": {
"context": ".",
"dockerfile": "./hack/dockerfiles/vendor.Dockerfile",
"args": {
"BUILDKIT_CONTEXT_KEEP_GIT_DIR": "1",
"GO_VERSION": "1.20"
},
"target": "validate",
"output": [
"type=cacheonly"
]
}
}
}

View File

@@ -0,0 +1,172 @@
// Copyright 2023 actions-toolkit authors
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
//
// http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.
variable "GO_VERSION" {
default = "1.20"
}
variable "DOCS_FORMATS" {
default = "md"
}
variable "DESTDIR" {
default = "./bin"
}
# Special target: https://github.com/docker/metadata-action#bake-definition
target "meta-helper" {
tags = ["docker/buildx-bin:local"]
}
target "_common" {
args = {
GO_VERSION = GO_VERSION
BUILDKIT_CONTEXT_KEEP_GIT_DIR = 1
}
}
group "default" {
targets = ["binaries"]
}
group "validate" {
targets = ["lint", "validate-vendor", "validate-docs"]
}
target "lint" {
inherits = ["_common"]
dockerfile = "./hack/dockerfiles/lint.Dockerfile"
output = ["type=cacheonly"]
}
target "validate-vendor" {
inherits = ["_common"]
dockerfile = "./hack/dockerfiles/vendor.Dockerfile"
target = "validate"
output = ["type=cacheonly"]
}
target "validate-docs" {
inherits = ["_common"]
args = {
FORMATS = DOCS_FORMATS
BUILDX_EXPERIMENTAL = 1 // enables experimental cmds/flags for docs generation
}
dockerfile = "./hack/dockerfiles/docs.Dockerfile"
target = "validate"
output = ["type=cacheonly"]
}
target "validate-authors" {
inherits = ["_common"]
dockerfile = "./hack/dockerfiles/authors.Dockerfile"
target = "validate"
output = ["type=cacheonly"]
}
target "validate-generated-files" {
inherits = ["_common"]
dockerfile = "./hack/dockerfiles/generated-files.Dockerfile"
target = "validate"
output = ["type=cacheonly"]
}
target "update-vendor" {
inherits = ["_common"]
dockerfile = "./hack/dockerfiles/vendor.Dockerfile"
target = "update"
output = ["."]
}
target "update-docs" {
inherits = ["_common"]
args = {
FORMATS = DOCS_FORMATS
BUILDX_EXPERIMENTAL = 1 // enables experimental cmds/flags for docs generation
}
dockerfile = "./hack/dockerfiles/docs.Dockerfile"
target = "update"
output = ["./docs/reference"]
}
target "update-authors" {
inherits = ["_common"]
dockerfile = "./hack/dockerfiles/authors.Dockerfile"
target = "update"
output = ["."]
}
target "update-generated-files" {
inherits = ["_common"]
dockerfile = "./hack/dockerfiles/generated-files.Dockerfile"
target = "update"
output = ["."]
}
target "mod-outdated" {
inherits = ["_common"]
dockerfile = "./hack/dockerfiles/vendor.Dockerfile"
target = "outdated"
no-cache-filter = ["outdated"]
output = ["type=cacheonly"]
}
target "test" {
inherits = ["_common"]
target = "test-coverage"
output = ["${DESTDIR}/coverage"]
}
target "binaries" {
inherits = ["_common"]
target = "binaries"
output = ["${DESTDIR}/build"]
platforms = ["local"]
}
target "binaries-cross" {
inherits = ["binaries"]
platforms = [
"darwin/amd64",
"darwin/arm64",
"linux/amd64",
"linux/arm/v6",
"linux/arm/v7",
"linux/arm64",
"linux/ppc64le",
"linux/riscv64",
"linux/s390x",
"windows/amd64",
"windows/arm64"
]
}
target "release" {
inherits = ["binaries-cross"]
target = "release"
output = ["${DESTDIR}/release"]
}
target "image" {
inherits = ["meta-helper", "binaries"]
output = ["type=image"]
}
target "image-cross" {
inherits = ["meta-helper", "binaries-cross"]
output = ["type=image"]
}
target "image-local" {
inherits = ["image"]
output = ["type=docker"]
}

View File

@@ -0,0 +1,20 @@
{
"group": {
"default": {
"targets": [
"build"
]
}
},
"target": {
"build": {
"context": ".",
"dockerfile": "Dockerfile",
"args": {
"BUILDKIT_CONTEXT_KEEP_GIT_DIR": "1",
"GO_VERSION": "1.20"
},
"target": "build"
}
}
}

View File

@@ -0,0 +1,33 @@
// Copyright 2023 actions-toolkit authors
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
//
// http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.
variable "GO_VERSION" {
default = "1.20"
}
target "_common" {
args = {
GO_VERSION = GO_VERSION
BUILDKIT_CONTEXT_KEEP_GIT_DIR = 1
}
}
group "default" {
targets = ["build"]
}
target "build" {
inherits = ["_common"]
target = "build"
}

View File

@@ -0,0 +1,36 @@
{
"group": {
"default": {
"targets": [
"binaries-cross"
]
}
},
"target": {
"binaries-cross": {
"context": "https://github.com/docker/buildx.git#v0.10.4",
"dockerfile": "Dockerfile",
"args": {
"BUILDKIT_CONTEXT_KEEP_GIT_DIR": "1",
"GO_VERSION": "1.19"
},
"target": "binaries",
"platforms": [
"darwin/amd64",
"darwin/arm64",
"linux/amd64",
"linux/arm/v6",
"linux/arm/v7",
"linux/arm64",
"linux/ppc64le",
"linux/riscv64",
"linux/s390x",
"windows/amd64",
"windows/arm64"
],
"output": [
"./bin/build"
]
}
}
}

View File

@@ -0,0 +1,11 @@
{
"target": {
"default": {
"context": "https://github.com/docker/test-docker-action.git#remote-private",
"dockerfile": "Dockerfile",
"tags": [
"foo"
]
}
}
}

View File

@@ -0,0 +1 @@
{"Definition":"eyJncm91cCI6eyJkZWZhdWx0Ijp7InRhcmdldHMiOlsiZGV2Il19fSwidGFyZ2V0Ijp7ImRldiI6eyJjb250ZXh0IjoiLiIsImRvY2tlcmZpbGUiOiJEb2NrZXJmaWxlIiwiYXJncyI6eyJCVUlMREtJVF9DT05URVhUX0tFRVBfR0lUX0RJUiI6IjEiLCJERUZBVUxUX1BST0RVQ1RfTElDRU5TRSI6IiIsIkRPQ0tFUl9CVUlMRFRBR1MiOiIiLCJET0NLRVJfREVCVUciOiIiLCJET0NLRVJfTERGTEFHUyI6IiIsIkRPQ0tFUl9TVEFUSUMiOiIxIiwiUEFDS0FHRVJfTkFNRSI6IiIsIlBMQVRGT1JNIjoiIiwiUFJPRFVDVCI6IiIsIlNZU1RFTUQiOiJmYWxzZSIsIlZFUlNJT04iOiIifSwidGFncyI6WyJkb2NrZXItZGV2Il0sInRhcmdldCI6ImRldiIsIm91dHB1dCI6WyJ0eXBlPWRvY2tlciJdfX19","Targets":["dev"],"Refs":["vzxn0jxr44khtq7hc8drtzwjv"]}

View File

@@ -0,0 +1 @@
{"LocalPath":"/home/crazymax/github/docker/docker-alpine-s6","DockerfilePath":""}

View File

@@ -0,0 +1 @@
{"LocalPath":"/home/crazymax/github/docker_org/buildx","DockerfilePath":""}

View File

@@ -0,0 +1 @@
{"LocalPath":"/home/crazymax/github/docker_org/buildx","DockerfilePath":"/home/crazymax/github/docker_org/buildx/Dockerfile"}

View File

@@ -0,0 +1 @@
{"LocalPath":"/home/crazymax/github/docker_org/buildx","DockerfilePath":"/home/crazymax/github/docker_org/buildx/Dockerfile"}

View File

@@ -0,0 +1 @@
{"LocalPath":"/home/crazymax/github/docker_org/buildx","DockerfilePath":""}

View File

@@ -0,0 +1 @@
{"LocalPath":"/home/crazymax/github/docker_org/buildx","DockerfilePath":"/home/crazymax/github/docker_org/buildx/Dockerfile"}

View File

@@ -0,0 +1 @@
{"LocalPath":"/home/crazymax/github/docker_org/buildx","DockerfilePath":""}

View File

@@ -0,0 +1 @@
{"Target":"dev","LocalPath":"/home/crazymax/github/docker_org/docker","DockerfilePath":"/home/crazymax/github/docker_org/docker/Dockerfile","GroupRef":"1fugf958r4peyg86h6scim5t5"}

View File

@@ -0,0 +1 @@
{"Target":"default","LocalPath":"/home/crazymax/github/docker_org/compose/.dev/47231","DockerfilePath":"/home/crazymax/github/docker_org/compose/.dev/47231/bad/Dockerfile"}

View File

@@ -0,0 +1 @@
{"Target":"default","LocalPath":"/home/crazymax/github/docker_org/compose/.dev/47231","DockerfilePath":"/home/crazymax/github/docker_org/compose/.dev/47231/bad/Dockerfile"}

View File

@@ -0,0 +1 @@
{"Target":"default","LocalPath":"/home/crazymax/github/docker_org/compose/.dev/47231","DockerfilePath":"/home/crazymax/github/docker_org/compose/.dev/47231/bad/Dockerfile"}

View File

@@ -0,0 +1,8 @@
{
"auths": {
"https://index.docker.io/v1/": {
"auth": "am9lam9lOmhlbGxv",
"email": "user@example.com"
}
}
}

View File

@@ -0,0 +1,8 @@
{
"proxies": {
"default": {
"httpProxy": "http://127.0.0.1:3128",
"httpsProxy": "http://127.0.0.1:3128"
}
}
}

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1,34 @@
{
"user": "foo",
"name": "bar",
"namespace": "foo",
"repository_type": "image",
"status": 1,
"status_description": "active",
"description": "Bar",
"is_private": false,
"is_automated": false,
"can_edit": true,
"star_count": 68,
"pull_count": 178255909,
"last_updated": "2023-02-02T14:22:31.184404Z",
"date_registered": "2019-06-04T20:08:57.306333Z",
"collaborator_count": 0,
"affiliation": "owner",
"hub_user": "foo",
"has_starred": false,
"full_description": "This is the full description of the repo.",
"permissions": {
"read": true,
"write": true,
"admin": true
},
"media_types": [
"application/vnd.docker.container.image.v1+json",
"application/vnd.docker.distribution.manifest.list.v2+json",
"application/vnd.oci.image.index.v1+json"
],
"content_types": [
"image"
]
}

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1,39 @@
// 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.
target "hello" {
dockerfile = "hello.Dockerfile"
}
target "hello-bar" {
dockerfile = "hello.Dockerfile"
args = {
NAME = "bar"
}
}
group "hello-all" {
targets = ["hello", "hello-bar"]
}
target "hello-matrix" {
name = "matrix-${name}"
matrix = {
name = ["bar", "baz", "boo", "far", "faz", "foo", "aaa", "bbb", "ccc", "ddd", "eee", "fff", "ggg", "hhh", "iii", "jjj"]
}
dockerfile = "hello.Dockerfile"
args = {
NAME = name
}
}

View File

@@ -0,0 +1,23 @@
# syntax=docker/dockerfile:1
# 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 build
ARG NAME=foo
ARG TARGETPLATFORM
RUN echo "Hello $NAME from $TARGETPLATFORM" > foo
FROM scratch
COPY --from=build /foo /

View File

@@ -0,0 +1,67 @@
Name: remote-builder
Driver: remote
Last Activity: 2023-04-20 12:47:49 +0000 UTC
Nodes:
Name: remote-builder0
Endpoint: docker-container://buildx_buildkit_dk-remote-builder0
Status: inactive
Platforms:
Name: aws_graviton2
Endpoint: tcp://10.0.0.1:1234
Driver Options: cacert="/home/user/.certs/aws_graviton2/ca.pem" cert="/home/user/.certs/aws_graviton2/cert.pem" key="/home/user/.certs/aws_graviton2/key.pem"
Status: running
Buildkit: v0.11.6
Platforms: darwin/arm64*, linux/arm64*, linux/arm/v5*, linux/arm/v6*, linux/arm/v7*, windows/arm64*
Labels:
org.mobyproject.buildkit.worker.executor: oci
org.mobyproject.buildkit.worker.hostname: 77ebc22e2d82
org.mobyproject.buildkit.worker.network: host
org.mobyproject.buildkit.worker.oci.process-mode: sandbox
org.mobyproject.buildkit.worker.selinux.enabled: false
org.mobyproject.buildkit.worker.snapshotter: overlayfs
GC Policy rule#0:
All: false
Filters: type==source.local,type==exec.cachemount,type==source.git.checkout
Keep Duration: 48h0m0s
Keep Bytes: 488.3MiB
GC Policy rule#1:
All: false
Keep Duration: 1440h0m0s
Keep Bytes: 23.28GiB
GC Policy rule#2:
All: false
Keep Bytes: 23.28GiB
GC Policy rule#3:
All: true
Keep Bytes: 23.28GiB
Name: linuxone_s390x
Endpoint: tcp://10.0.0.2:1234
Driver Options: cacert="/home/user/.certs/linuxone_s390x/ca.pem" cert="/home/user/.certs/linuxone_s390x/cert.pem" key="/home/user/.certs/linuxone_s390x/key.pem"
Status: running
Buildkit: v0.11.6
Platforms: linux/s390x*
Labels:
org.mobyproject.buildkit.worker.executor: oci
org.mobyproject.buildkit.worker.hostname: 9d0d62a96818
org.mobyproject.buildkit.worker.network: host
org.mobyproject.buildkit.worker.oci.process-mode: sandbox
org.mobyproject.buildkit.worker.selinux.enabled: false
org.mobyproject.buildkit.worker.snapshotter: overlayfs
GC Policy rule#0:
All: false
Filters: type==source.local,type==exec.cachemount,type==source.git.checkout
Keep Duration: 48h0m0s
Keep Bytes: 488.3MiB
GC Policy rule#1:
All: false
Keep Duration: 1440h0m0s
Keep Bytes: 9.313GiB
GC Policy rule#2:
All: false
Keep Bytes: 9.313GiB
GC Policy rule#3:
All: true
Keep Bytes: 9.313GiB

View File

@@ -0,0 +1,39 @@
Name: builder
Driver: docker-container
Last Activity: 2024-03-01 14:25:03 +0000 UTC
Nodes:
Name: builder0
Endpoint: unix:///var/run/docker.sock
Driver Options: env.JAEGER_TRACE="localhost:6831" image="moby/buildkit:master" network="host" env.BUILDKIT_STEP_LOG_MAX_SIZE="10485760" env.BUILDKIT_STEP_LOG_MAX_SPEED="10485760"
Status: running
BuildKit daemon flags: --debug --allow-insecure-entitlement security.insecure --allow-insecure-entitlement network.host --allow-insecure-entitlement=network.host
BuildKit version: 37657a1
Platforms: linux/amd64, linux/amd64/v2, linux/amd64/v3, linux/arm64, linux/riscv64, linux/ppc64le, linux/s390x, linux/386, linux/mips64le, linux/mips64, linux/arm/v7, linux/arm/v6
Features:
Cache export: true
Docker exporter: true
Multi-platform build: true
OCI exporter: true
Labels:
org.mobyproject.buildkit.worker.executor: oci
org.mobyproject.buildkit.worker.hostname: docker-desktop
org.mobyproject.buildkit.worker.network: host
org.mobyproject.buildkit.worker.oci.process-mode: sandbox
org.mobyproject.buildkit.worker.selinux.enabled: false
org.mobyproject.buildkit.worker.snapshotter: overlayfs
GC Policy rule#0:
All: false
Filters: type==source.local,type==exec.cachemount,type==source.git.checkout
Keep Duration: 48h0m0s
Keep Bytes: 488.3MiB
GC Policy rule#1:
All: false
Keep Duration: 1440h0m0s
Keep Bytes: 94.06GiB
GC Policy rule#2:
All: false
Keep Bytes: 94.06GiB
GC Policy rule#3:
All: true
Keep Bytes: 94.06GiB

View File

@@ -5,7 +5,7 @@ Last Activity: 2023-01-16 09:45:23 +0000 UTC
Nodes:
Name: builder20
Endpoint: unix:///var/run/docker.sock
Driver Options: env.BUILDKIT_STEP_LOG_MAX_SIZE="10485760" env.BUILDKIT_STEP_LOG_MAX_SPEED="10485760" env.JAEGER_TRACE="localhost:6831" image="moby/buildkit:latest" network="host"
Driver Options: env.BUILDKIT_STEP_LOG_MAX_SIZE="10485760" env.BUILDKIT_STEP_LOG_MAX_SPEED="10485760" env.JAEGER_TRACE="localhost:6831" image="moby/buildkit:latest" network="host" qemu.install="true"
Status: running
Flags: --debug --allow-insecure-entitlement security.insecure --allow-insecure-entitlement network.host
Buildkit: v0.11.0

View File

@@ -0,0 +1,34 @@
Name: builder-52aa0611-faf0-42ac-a940-461e4e287d68
Driver: docker-container
Last Activity: 2023-06-13 13:52:31 +0000 UTC
Nodes:
Name: builder-52aa0611-faf0-42ac-a940-461e4e287d680
Endpoint: unix:///var/run/docker.sock
Driver Options: image="moby/buildkit:buildx-stable-1" network="host"
Status: running
Flags: --debug --allow-insecure-entitlement security.insecure --allow-insecure-entitlement network.host
Buildkit: v0.11.6
Platforms: linux/amd64, linux/amd64/v2, linux/amd64/v3, linux/amd64/v4, linux/arm64, linux/riscv64, linux/ppc64le, linux/s390x, linux/386, linux/mips64le, linux/mips64, linux/arm/v7, linux/arm/v6
Labels:
org.mobyproject.buildkit.worker.executor: oci
org.mobyproject.buildkit.worker.hostname: fv-az572-38
org.mobyproject.buildkit.worker.network: host
org.mobyproject.buildkit.worker.oci.process-mode: sandbox
org.mobyproject.buildkit.worker.selinux.enabled: false
org.mobyproject.buildkit.worker.snapshotter: overlayfs
GC Policy rule#0:
All: false
Filters: type==source.local,type==exec.cachemount,type==source.git.checkout
Keep Duration: 48h0m0s
Keep Bytes: 488.3MiB
GC Policy rule#1:
All: false
Keep Duration: 1440h0m0s
Keep Bytes: 8.382GiB
GC Policy rule#2:
All: false
Keep Bytes: 8.382GiB
GC Policy rule#3:
All: true
Keep Bytes: 8.382GiB

View File

@@ -0,0 +1,14 @@
Name: default
Driver: docker
Last Activity: 2023-06-13 18:13:43 +0000 UTC
Nodes:
Name: default
Endpoint: default
Status: running
Buildkit: v0.11.7-0.20230525183624-798ad6b0ce9f
Platforms: linux/amd64, linux/amd64/v2, linux/amd64/v3, linux/arm64, linux/riscv64, linux/ppc64le, linux/s390x, linux/386, linux/mips64le, linux/mips64, linux/arm/v7, linux/arm/v6
GC Policy rule#0:
All: true
Filters:
Keep Bytes: 100GiB

View File

@@ -0,0 +1,45 @@
{
"buildx.build.provenance": {
"buildType": "https://mobyproject.org/buildkit@v1",
"materials": [
{
"uri": "pkg:docker/docker/dockerfile-upstream@master",
"digest": {
"sha256": "70433342168dafa34d11bd7236c3c3fcf448b90539733281711050808f32e835"
}
},
{
"uri": "pkg:docker/busybox@latest?platform=linux%2Famd64",
"digest": {
"sha256": "9ae97d36d26566ff84e8893c64a6dc4fe8ca6d1144bf5b87b2b85a32def253c7"
}
}
],
"invocation": {
"configSource": {
"entryPoint": "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/n6ibcp9b2pw108rrz7ywdznvo",
"containerimage.config.digest": "sha256:059b68a595b22564a1cbc167f369349fdc2ecc1f7bc092c2235cbf601a795fd",
"containerimage.digest": "sha256:b09b9482c72371486bb2c1d2c2a2633ed1d0b8389e12c8d52b9e052725c0c83c"
}

Binary file not shown.

Binary file not shown.

View File

@@ -1,18 +1,281 @@
/**
* Copyright 2023 actions-toolkit authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
import {beforeEach, describe, expect, it, jest} from '@jest/globals';
import {Git} from '../src/git';
import {Exec} from '../src/exec';
import {ExecOutput} from '@actions/exec';
beforeEach(() => {
jest.clearAllMocks();
jest.restoreAllMocks();
});
describe('git', () => {
it('returns git remote ref', async () => {
try {
expect(await Git.getRemoteSha('https://github.com/docker/buildx.git', 'refs/pull/648/head')).toEqual('f11797113e5a9b86bd976329c5dbb8a8bfdfadfa');
} catch (e) {
// eslint-disable-next-line jest/no-conditional-expect
expect(e).toEqual(null);
}
describe('context', () => {
it('returns mocked ref and sha', async () => {
jest.spyOn(Exec, 'getExecOutput').mockImplementation((cmd, args): Promise<ExecOutput> => {
const fullCmd = `${cmd} ${args?.join(' ')}`;
let result = '';
switch (fullCmd) {
case 'git show --format=%H HEAD --quiet --':
result = 'test-sha';
break;
case 'git branch --show-current':
result = 'test';
break;
case 'git symbolic-ref HEAD':
result = 'refs/heads/test';
break;
}
return Promise.resolve({
stdout: result,
stderr: '',
exitCode: 0
});
});
const ctx = await Git.context();
expect(ctx.ref).toEqual('refs/heads/test');
expect(ctx.sha).toEqual('test-sha');
});
});
describe('isInsideWorkTree', () => {
it('have been called', async () => {
const execSpy = jest.spyOn(Exec, 'getExecOutput');
try {
await Git.isInsideWorkTree();
} catch (err) {
// noop
}
expect(execSpy).toHaveBeenCalledWith(`git`, ['rev-parse', '--is-inside-work-tree'], {
silent: true,
ignoreReturnCode: true
});
});
});
describe('remoteSha', () => {
it('returns sha using git ls-remote', async () => {
expect(await Git.remoteSha('https://github.com/docker/buildx.git', 'refs/pull/648/head')).toEqual('f11797113e5a9b86bd976329c5dbb8a8bfdfadfa');
});
it('returns sha using github api', async () => {
expect(await Git.remoteSha('https://github.com/docker/buildx.git', 'refs/pull/648/head', process.env.GITHUB_TOKEN)).toEqual('f11797113e5a9b86bd976329c5dbb8a8bfdfadfa');
});
});
describe('remoteURL', () => {
it('have been called', async () => {
const execSpy = jest.spyOn(Exec, 'getExecOutput');
try {
await Git.remoteURL();
} catch (err) {
// noop
}
expect(execSpy).toHaveBeenCalledWith(`git`, ['remote', 'get-url', 'origin'], {
silent: true,
ignoreReturnCode: true
});
});
});
describe('ref', () => {
it('returns mocked ref', async () => {
jest.spyOn(Exec, 'getExecOutput').mockImplementation((cmd, args): Promise<ExecOutput> => {
const fullCmd = `${cmd} ${args?.join(' ')}`;
let result = '';
switch (fullCmd) {
case 'git branch --show-current':
result = 'test';
break;
case 'git symbolic-ref HEAD':
result = 'refs/heads/test';
break;
}
return Promise.resolve({
stdout: result,
stderr: '',
exitCode: 0
});
});
const ref = await Git.ref();
expect(ref).toEqual('refs/heads/test');
});
it('returns mocked detached tag ref', async () => {
jest.spyOn(Exec, 'getExecOutput').mockImplementation((cmd, args): Promise<ExecOutput> => {
const fullCmd = `${cmd} ${args?.join(' ')}`;
let result = '';
switch (fullCmd) {
case 'git branch --show-current':
result = '';
break;
case 'git show -s --pretty=%D':
result = 'HEAD, tag: 8.0.0';
break;
}
return Promise.resolve({
stdout: result,
stderr: '',
exitCode: 0
});
});
const ref = await Git.ref();
expect(ref).toEqual('refs/tags/8.0.0');
});
it('returns mocked detached tag ref (shallow clone)', async () => {
jest.spyOn(Exec, 'getExecOutput').mockImplementation((cmd, args): Promise<ExecOutput> => {
const fullCmd = `${cmd} ${args?.join(' ')}`;
let result = '';
switch (fullCmd) {
case 'git branch --show-current':
result = '';
break;
case 'git show -s --pretty=%D':
result = 'grafted, HEAD, tag: 8.0.0';
break;
}
return Promise.resolve({
stdout: result,
stderr: '',
exitCode: 0
});
});
const ref = await Git.ref();
expect(ref).toEqual('refs/tags/8.0.0');
});
it('returns mocked detached pull request merge ref (shallow clone)', async () => {
jest.spyOn(Exec, 'getExecOutput').mockImplementation((cmd, args): Promise<ExecOutput> => {
const fullCmd = `${cmd} ${args?.join(' ')}`;
let result = '';
switch (fullCmd) {
case 'git branch --show-current':
result = '';
break;
case 'git show -s --pretty=%D':
result = 'grafted, HEAD, pull/221/merge';
break;
}
return Promise.resolve({
stdout: result,
stderr: '',
exitCode: 0
});
});
const ref = await Git.ref();
expect(ref).toEqual('refs/pull/221/merge');
});
it('should throws an error when detached HEAD ref is not supported', async () => {
jest.spyOn(Exec, 'getExecOutput').mockImplementation((cmd, args): Promise<ExecOutput> => {
const fullCmd = `${cmd} ${args?.join(' ')}`;
let result = '';
switch (fullCmd) {
case 'git branch --show-current':
result = '';
break;
case 'git show -s --pretty=%D':
result = 'wrong, HEAD, tag: 8.0.0';
break;
}
return Promise.resolve({
stdout: result,
stderr: '',
exitCode: 0
});
});
await expect(Git.ref()).rejects.toThrow('Cannot find detached HEAD ref in "wrong, HEAD, tag: 8.0.0"');
});
it('returns mocked detached branch ref', async () => {
jest.spyOn(Exec, 'getExecOutput').mockImplementation((cmd, args): Promise<ExecOutput> => {
const fullCmd = `${cmd} ${args?.join(' ')}`;
let result = '';
switch (fullCmd) {
case 'git branch --show-current':
result = '';
break;
case 'git show -s --pretty=%D':
result = 'HEAD, origin/test, test';
break;
}
return Promise.resolve({
stdout: result,
stderr: '',
exitCode: 0
});
});
const ref = await Git.ref();
expect(ref).toEqual('refs/heads/test');
});
});
describe('fullCommit', () => {
it('have been called', async () => {
const execSpy = jest.spyOn(Exec, 'getExecOutput');
try {
await Git.fullCommit();
} catch (err) {
// noop
}
expect(execSpy).toHaveBeenCalledWith(`git`, ['show', '--format=%H', 'HEAD', '--quiet', '--'], {
silent: true,
ignoreReturnCode: true
});
});
});
describe('shortCommit', () => {
it('have been called', async () => {
const execSpy = jest.spyOn(Exec, 'getExecOutput');
try {
await Git.shortCommit();
} catch (err) {
// noop
}
expect(execSpy).toHaveBeenCalledWith(`git`, ['show', '--format=%h', 'HEAD', '--quiet', '--'], {
silent: true,
ignoreReturnCode: true
});
});
});
describe('tag', () => {
it('have been called', async () => {
const execSpy = jest.spyOn(Exec, 'getExecOutput');
try {
await Git.tag();
} catch (err) {
// noop
}
expect(execSpy).toHaveBeenCalledWith(`git`, ['tag', '--points-at', 'HEAD', '--sort', '-version:creatordate'], {
silent: true,
ignoreReturnCode: true
});
});
});

View File

@@ -0,0 +1,192 @@
/**
* 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, test} from '@jest/globals';
import fs from 'fs';
import * as path from 'path';
import {Buildx} from '../src/buildx/buildx';
import {Bake} from '../src/buildx/bake';
import {Build} from '../src/buildx/build';
import {Exec} from '../src/exec';
import {GitHub} from '../src/github';
import {History} from '../src/buildx/history';
const fixturesDir = path.join(__dirname, 'fixtures');
// prettier-ignore
const tmpDir = path.join(process.env.TEMP || '/tmp', 'github-jest');
const maybe = !process.env.GITHUB_ACTIONS || (process.env.GITHUB_ACTIONS === 'true' && process.env.ImageOS && process.env.ImageOS.startsWith('ubuntu')) ? describe : describe.skip;
maybe('uploadArtifact', () => {
it('uploads an artifact', async () => {
const res = await GitHub.uploadArtifact({
filename: path.join(fixturesDir, 'github-repo.json'),
mimeType: 'application/json',
retentionDays: 1
});
expect(res).toBeDefined();
console.log('uploadArtifactResponse', res);
expect(res?.url).toBeDefined();
});
});
maybe('writeBuildSummary', () => {
// prettier-ignore
test.each([
[
"single",
[
'build',
'-f', path.join(fixturesDir, 'hello.Dockerfile'),
fixturesDir
],
],
[
"multiplatform",
[
'build',
'-f', path.join(fixturesDir, 'hello.Dockerfile'),
'--platform', 'linux/amd64,linux/arm64',
fixturesDir
],
]
])('write build summary %p', async (_, bargs) => {
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',
...bargs,
'--metadata-file', build.getMetadataFilePath()
]);
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(exportRes?.summaries).toBeDefined();
const uploadRes = await GitHub.uploadArtifact({
filename: exportRes?.dockerbuildFilename,
mimeType: 'application/gzip',
retentionDays: 1
});
expect(uploadRes).toBeDefined();
expect(uploadRes?.url).toBeDefined();
await GitHub.writeBuildSummary({
exportRes: exportRes,
uploadRes: uploadRes,
inputs: {
context: fixturesDir,
file: path.join(fixturesDir, 'hello.Dockerfile')
}
});
});
// prettier-ignore
test.each([
[
'single',
[
'bake',
'-f', path.join(fixturesDir, 'hello-bake.hcl'),
'hello'
],
],
[
'group',
[
'bake',
'-f', path.join(fixturesDir, 'hello-bake.hcl'),
'hello-all'
],
],
[
'matrix',
[
'bake',
'-f', path.join(fixturesDir, 'hello-bake.hcl'),
'hello-matrix'
],
]
])('write bake summary %p', async (_, bargs) => {
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',
...bargs,
'--metadata-file', bake.getMetadataFilePath()
]);
await Exec.exec(buildCmd.command, buildCmd.args, {
cwd: fixturesDir
});
})()
).resolves.not.toThrow();
const metadata = bake.resolveMetadata();
expect(metadata).toBeDefined();
const buildRefs = bake.resolveRefs(metadata);
expect(buildRefs).toBeDefined();
const history = new History({buildx: buildx});
const exportRes = await history.export({
refs: buildRefs ?? []
});
expect(exportRes).toBeDefined();
expect(exportRes?.dockerbuildFilename).toBeDefined();
expect(exportRes?.dockerbuildSize).toBeDefined();
expect(exportRes?.summaries).toBeDefined();
const uploadRes = await GitHub.uploadArtifact({
filename: exportRes?.dockerbuildFilename,
mimeType: 'application/gzip',
retentionDays: 1
});
expect(uploadRes).toBeDefined();
expect(uploadRes?.url).toBeDefined();
await GitHub.writeBuildSummary({
exportRes: exportRes,
uploadRes: uploadRes,
inputs: {
files: path.join(fixturesDir, 'hello-bake.hcl')
}
});
});
});

View File

@@ -1,26 +1,45 @@
/**
* Copyright 2023 actions-toolkit authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
import {describe, expect, jest, it, beforeEach, afterEach} from '@jest/globals';
import * as fs from 'fs';
import * as path from 'path';
import * as core from '@actions/core';
import {GitHub, GitHubRepo} from '../src/github';
import {GitHub} from '../src/github';
import {GitHubRepo} from '../src/types/github';
beforeEach(() => {
jest.clearAllMocks();
});
import * as repoFixture from './fixtures/repo.json';
import repoFixture from './fixtures/github-repo.json';
jest.spyOn(GitHub.prototype, 'repoData').mockImplementation((): Promise<GitHubRepo> => {
return <Promise<GitHubRepo>>(repoFixture as unknown);
});
describe('repoData', () => {
it('returns GitHub repo data', async () => {
const github = new GitHub();
expect((await github.repoData()).name).toEqual('Hello-World');
});
});
describe('context', () => {
it('returns repository name from payload', async () => {
const github = new GitHub();
expect(github.context.payload.repository?.name).toEqual('test-docker-action');
expect(GitHub.context.payload.repository?.name).toEqual('test-docker-action');
});
it('is repository private', async () => {
const github = new GitHub();
expect(github.context.payload.repository?.private).toEqual(true);
expect(GitHub.context.payload.repository?.private).toEqual(true);
});
});
@@ -38,12 +57,46 @@ describe('serverURL', () => {
});
it('returns default', async () => {
process.env.GITHUB_SERVER_URL = '';
const github = new GitHub();
expect(github.serverURL).toEqual('https://github.com');
expect(GitHub.serverURL).toEqual('https://github.com');
});
it('returns from env', async () => {
const github = new GitHub();
expect(github.serverURL).toEqual('https://foo.github.com');
expect(GitHub.serverURL).toEqual('https://foo.github.com');
});
});
describe('apiURL', () => {
const originalEnv = process.env;
beforeEach(() => {
jest.resetModules();
process.env = {
...originalEnv,
GITHUB_API_URL: 'https://bar.github.com'
};
});
afterEach(() => {
process.env = originalEnv;
});
it('returns default', async () => {
process.env.GITHUB_API_URL = '';
expect(GitHub.apiURL).toEqual('https://api.github.com');
});
it('returns from env', async () => {
expect(GitHub.apiURL).toEqual('https://bar.github.com');
});
});
describe('repository', () => {
it('returns GitHub repository', async () => {
expect(GitHub.repository).toEqual('docker/actions-toolkit');
});
});
describe('workflowRunURL', () => {
it('returns 2188748038', async () => {
expect(GitHub.workflowRunURL()).toEqual('https://github.com/docker/actions-toolkit/actions/runs/2188748038');
});
it('returns 2188748038 with attempts 2', async () => {
expect(GitHub.workflowRunURL(true)).toEqual('https://github.com/docker/actions-toolkit/actions/runs/2188748038/attempts/2');
});
});
@@ -60,21 +113,52 @@ describe('actionsRuntimeToken', () => {
});
it('empty', async () => {
process.env.ACTIONS_RUNTIME_TOKEN = '';
const github = new GitHub();
expect(github.actionsRuntimeToken).toEqual({});
expect(GitHub.actionsRuntimeToken).toBeUndefined();
});
it('malformed', async () => {
process.env.ACTIONS_RUNTIME_TOKEN = 'foo';
expect(() => {
GitHub.actionsRuntimeToken;
}).toThrow();
});
it('fixture', async () => {
process.env.ACTIONS_RUNTIME_TOKEN = fs.readFileSync(path.join(__dirname, 'fixtures', 'runtimeToken.txt')).toString().trim();
const github = new GitHub();
const runtimeToken = github.actionsRuntimeToken;
expect(runtimeToken.ac).toEqual('[{"Scope":"refs/heads/master","Permission":3}]');
expect(runtimeToken.iss).toEqual('vstoken.actions.githubusercontent.com');
process.env.ACTIONS_RUNTIME_TOKEN = fs
.readFileSync(path.join(__dirname, 'fixtures', 'runtimeToken.txt'))
.toString()
.trim();
const runtimeToken = GitHub.actionsRuntimeToken;
expect(runtimeToken?.ac).toEqual('[{"Scope":"refs/heads/master","Permission":3}]');
expect(runtimeToken?.iss).toEqual('vstoken.actions.githubusercontent.com');
});
});
describe('repoData', () => {
it('returns GitHub repository', async () => {
const github = new GitHub();
expect((await github.repoData()).name).toEqual('Hello-World');
describe('printActionsRuntimeTokenACs', () => {
const originalEnv = process.env;
beforeEach(() => {
jest.resetModules();
process.env = {
...originalEnv
};
});
afterEach(() => {
process.env = originalEnv;
});
it('empty', async () => {
process.env.ACTIONS_RUNTIME_TOKEN = '';
await expect(GitHub.printActionsRuntimeTokenACs()).rejects.toThrow(new Error('ACTIONS_RUNTIME_TOKEN not set'));
});
it('malformed', async () => {
process.env.ACTIONS_RUNTIME_TOKEN = 'foo';
await expect(GitHub.printActionsRuntimeTokenACs()).rejects.toThrow(new Error('Cannot parse GitHub Actions Runtime Token: Invalid token specified: missing part #2'));
});
it('refs/heads/master', async () => {
const infoSpy = jest.spyOn(core, 'info');
process.env.ACTIONS_RUNTIME_TOKEN = fs
.readFileSync(path.join(__dirname, 'fixtures', 'runtimeToken.txt'))
.toString()
.trim();
await GitHub.printActionsRuntimeTokenACs();
expect(infoSpy).toHaveBeenCalledTimes(1);
expect(infoSpy).toHaveBeenCalledWith(`refs/heads/master: read/write`);
});
});

46
__tests__/oci/oci.test.ts Normal file
View File

@@ -0,0 +1,46 @@
/**
* 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 {afterEach, describe, expect, test} from '@jest/globals';
import * as fs from 'fs';
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');
afterEach(function () {
rimraf.sync(tmpDir);
});
describe('loadArchive', () => {
// prettier-ignore
test.each(fs.readdirSync(path.join(fixturesDir, 'oci-archive')).filter(file => {
return fs.statSync(path.join(path.join(fixturesDir, 'oci-archive'), file)).isFile();
}).map(filename => [filename]))('extracting %p', async (filename) => {
const res = await OCI.loadArchive({
file: path.join(fixturesDir, 'oci-archive', filename)
});
expect(res).toBeDefined();
expect(res?.root.index).toBeDefined();
expect(res?.root.layout).toBeDefined();
// console.log(JSON.stringify(res, null, 2));
});
});

View File

@@ -0,0 +1,30 @@
/**
* 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.
*/
// eslint-disable-next-line @typescript-eslint/no-var-requires
const fs = require('fs');
module.exports = results => {
const allSkipped = results.testResults.every(result => {
return result.skipped;
});
if (allSkipped) {
console.log('All tests were skipped!');
// create an empty file to signal that all tests were skipped for CI
fs.closeSync(fs.openSync('./coverage/allSkipped.txt', 'w'));
}
return results;
};

View File

@@ -1,13 +1,25 @@
import {beforeEach, describe, expect, it, jest, test} from '@jest/globals';
/**
* Copyright 2023 actions-toolkit authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
import {describe, expect, it, test} from '@jest/globals';
import * as fs from 'fs';
import * as path from 'path';
import {Util} from '../src/util';
beforeEach(() => {
jest.clearAllMocks();
});
describe('getInputList', () => {
it('single line correctly', async () => {
await setInput('foo', 'bar');
@@ -15,6 +27,12 @@ describe('getInputList', () => {
expect(res).toEqual(['bar']);
});
it('empty correctly', async () => {
setInput('foo', '');
const res = Util.getInputList('foo');
expect(res).toEqual([]);
});
it('multiline correctly', async () => {
setInput('foo', 'bar\nbaz');
const res = Util.getInputList('foo');
@@ -53,16 +71,40 @@ describe('getInputList', () => {
it('multiline and ignoring comma correctly', async () => {
setInput('cache-from', 'user/app:cache\ntype=local,src=path/to/dir');
const res = Util.getInputList('cache-from', true);
const res = Util.getInputList('cache-from', {ignoreComma: true});
expect(res).toEqual(['user/app:cache', 'type=local,src=path/to/dir']);
});
it('multiline and ignoring comment correctly', async () => {
setInput('labels', 'foo=bar\nbar=qux#baz');
const res = Util.getInputList('labels');
expect(res).toEqual(['foo=bar', 'bar=qux#baz']);
});
it('multiline with comment', async () => {
setInput('labels', 'foo=bar\nbar=qux#baz');
const res = Util.getInputList('labels', {comment: '#'});
expect(res).toEqual(['foo=bar', 'bar=qux']);
});
it('different new lines and ignoring comma correctly', async () => {
setInput('cache-from', 'user/app:cache\r\ntype=local,src=path/to/dir');
const res = Util.getInputList('cache-from', true);
const res = Util.getInputList('cache-from', {ignoreComma: true});
expect(res).toEqual(['user/app:cache', 'type=local,src=path/to/dir']);
});
it('do not escape surrounding quotes', async () => {
setInput('driver-opts', `"env.no_proxy=localhost,127.0.0.1,.mydomain"`);
const res = Util.getInputList('driver-opts', {ignoreComma: true, quote: false});
expect(res).toEqual(['"env.no_proxy=localhost,127.0.0.1,.mydomain"']);
});
it('escape surrounding quotes', async () => {
setInput('platforms', 'linux/amd64\n"linux/arm64,linux/arm/v7"');
const res = Util.getInputList('platforms');
expect(res).toEqual(['linux/amd64', 'linux/arm64', 'linux/arm/v7']);
});
it('multiline values', async () => {
setInput(
'secrets',
@@ -72,7 +114,7 @@ bbbbbbb
ccccccccc"
FOO=bar`
);
const res = Util.getInputList('secrets', true);
const res = Util.getInputList('secrets', {ignoreComma: true});
expect(res).toEqual([
'GIT_AUTH_TOKEN=abcdefgh,ijklmno=0123456789',
`MYSECRET=aaaaaaaa
@@ -95,7 +137,7 @@ FOO=bar
bbbb
ccc"`
);
const res = Util.getInputList('secrets', true);
const res = Util.getInputList('secrets', {ignoreComma: true});
expect(res).toEqual([
'GIT_AUTH_TOKEN=abcdefgh,ijklmno=0123456789',
`MYSECRET=aaaaaaaa
@@ -118,7 +160,7 @@ bbbbbbb
ccccccccc
FOO=bar`
);
const res = Util.getInputList('secrets', true);
const res = Util.getInputList('secrets', {ignoreComma: true});
expect(res).toEqual(['GIT_AUTH_TOKEN=abcdefgh,ijklmno=0123456789', 'MYSECRET=aaaaaaaa', 'bbbbbbb', 'ccccccccc', 'FOO=bar']);
});
@@ -129,7 +171,7 @@ FOO=bar`
`"GPG_KEY=${pgp}"
FOO=bar`
);
const res = Util.getInputList('secrets', true);
const res = Util.getInputList('secrets', {ignoreComma: true});
expect(res).toEqual([`GPG_KEY=${pgp}`, 'FOO=bar']);
});
@@ -142,7 +184,7 @@ bbbb""bbb
ccccccccc"
FOO=bar`
);
const res = Util.getInputList('secrets', true);
const res = Util.getInputList('secrets', {ignoreComma: true});
expect(res).toEqual([
'GIT_AUTH_TOKEN=abcdefgh,ijklmno=0123456789',
`MYSECRET=aaaaaaaa
@@ -151,6 +193,12 @@ ccccccccc`,
'FOO=bar'
]);
});
it('keep quotes', async () => {
const output = `type=image,"name=ghcr.io/nginxinc/nginx-unprivileged,docker.io/nginxinc/nginx-unprivileged",push-by-digest=true,name-canonical=true,push=true`;
setInput('outputs', output);
expect(Util.getInputList('outputs', {ignoreComma: true, quote: false})).toEqual([output]);
});
});
describe('asyncForEach', () => {
@@ -166,13 +214,169 @@ describe('asyncForEach', () => {
});
});
describe('isValidUrl', () => {
describe('isValidURL', () => {
test.each([
['https://github.com/docker/buildx.git', true],
['https://github.com/docker/buildx.git#refs/pull/648/head', true],
['git@github.com:moby/buildkit.git', false],
['git://github.com/user/repo.git', false],
['github.com/moby/buildkit.git#main', false],
['v0.4.1', false]
])('given %p', async (url, expected) => {
expect(Util.isValidUrl(url)).toEqual(expected);
expect(Util.isValidURL(url)).toEqual(expected);
});
});
describe('isValidRef', () => {
test.each([
['https://github.com/docker/buildx.git', true],
['https://github.com/docker/buildx.git#refs/pull/648/head', true],
['git@github.com:moby/buildkit.git', true],
['git://github.com/user/repo.git', true],
['github.com/moby/buildkit.git#main', true],
['v0.4.1', false]
])('given %p', async (url, expected) => {
expect(Util.isValidRef(url)).toEqual(expected);
});
});
describe('trimPrefix', () => {
test.each([
['', 'abc', ''],
['abc', 'a', 'bc'],
['abc', 'ab', 'c'],
['abc', '', 'abc'],
['abc', '', 'abc'],
['abc', 'd', 'abc'],
['abc', 'abc', ''],
['abc', 'abcd', 'abc'],
['abcdabc', 'abc', 'dabc'],
['abcabc', 'abc', 'abc'],
['abcdabc', 'd', 'abcdabc']
])('given %p', async (str, prefix, expected) => {
expect(Util.trimPrefix(str, prefix)).toEqual(expected);
});
});
describe('trimSuffix', () => {
test.each([
['', 'abc', ''],
['abc', 'c', 'ab'],
['abc', '', 'abc'],
['abc', 'bc', 'a'],
['abc', 'abc', ''],
['abc', 'abcd', 'abc'],
['abc', 'aabc', 'abc'],
['abcdabc', 'abc', 'abcd'],
['abcabc', 'abc', 'abc'],
['abcdabc', 'd', 'abcdabc']
])('given %p', async (str, suffix, expected) => {
expect(Util.trimSuffix(str, suffix)).toEqual(expected);
});
});
describe('hash', () => {
it('returns 2c26b46b68ffc68ff99b453c1d30413413422d706483bfa0f98a5e886266e7ae', async () => {
expect(Util.hash('foo')).toEqual('2c26b46b68ffc68ff99b453c1d30413413422d706483bfa0f98a5e886266e7ae');
});
});
// https://github.com/golang/go/blob/f6b93a4c358b28b350dd8fe1780c1f78e520c09c/src/strconv/atob_test.go#L36-L58
describe('parseBool', () => {
[
{input: '', expected: false, throwsError: true},
{input: 'asdf', expected: false, throwsError: true},
{input: '0', expected: false, throwsError: false},
{input: 'f', expected: false, throwsError: false},
{input: 'F', expected: false, throwsError: false},
{input: 'FALSE', expected: false, throwsError: false},
{input: 'false', expected: false, throwsError: false},
{input: 'False', expected: false, throwsError: false},
{input: '1', expected: true, throwsError: false},
{input: 't', expected: true, throwsError: false},
{input: 'T', expected: true, throwsError: false},
{input: 'TRUE', expected: true, throwsError: false},
{input: 'true', expected: true, throwsError: false},
{input: 'True', expected: true, throwsError: false}
].forEach(({input, expected, throwsError}) => {
test(`parseBool("${input}")`, () => {
if (throwsError) {
// eslint-disable-next-line jest/no-conditional-expect
expect(() => Util.parseBool(input)).toThrow();
} else {
// eslint-disable-next-line jest/no-conditional-expect
expect(Util.parseBool(input)).toBe(expected);
}
});
});
});
describe('formatFileSize', () => {
test('should return "0 Bytes" when given 0 bytes', () => {
expect(Util.formatFileSize(0)).toBe('0 Bytes');
});
test('should format bytes to KB correctly', () => {
expect(Util.formatFileSize(1024)).toBe('1 KB');
expect(Util.formatFileSize(2048)).toBe('2 KB');
expect(Util.formatFileSize(1500)).toBe('1.46 KB');
});
test('should format bytes to MB correctly', () => {
expect(Util.formatFileSize(1024 * 1024)).toBe('1 MB');
expect(Util.formatFileSize(2.5 * 1024 * 1024)).toBe('2.5 MB');
expect(Util.formatFileSize(3.8 * 1024 * 1024)).toBe('3.8 MB');
});
test('should format bytes to GB correctly', () => {
expect(Util.formatFileSize(1024 * 1024 * 1024)).toBe('1 GB');
expect(Util.formatFileSize(2.5 * 1024 * 1024 * 1024)).toBe('2.5 GB');
expect(Util.formatFileSize(3.8 * 1024 * 1024 * 1024)).toBe('3.8 GB');
});
test('should format bytes to TB correctly', () => {
expect(Util.formatFileSize(1024 * 1024 * 1024 * 1024)).toBe('1 TB');
expect(Util.formatFileSize(2.5 * 1024 * 1024 * 1024 * 1024)).toBe('2.5 TB');
expect(Util.formatFileSize(3.8 * 1024 * 1024 * 1024 * 1024)).toBe('3.8 TB');
});
});
describe('generateRandomString', () => {
it('should generate a random string of default length 10', async () => {
const res = Util.generateRandomString();
expect(typeof res).toBe('string');
expect(res.length).toBe(10);
expect(/^[0-9a-f]+$/i.test(res)).toBe(true);
});
it('should generate a random string of specified length', async () => {
const length = 15;
const res = Util.generateRandomString(length);
expect(typeof res).toBe('string');
expect(res.length).toBe(15);
expect(/^[0-9a-f]+$/i.test(res)).toBe(true);
});
});
describe('stringToUnicodeEntities', () => {
it('should convert a string to Unicode entities', () => {
const input = 'Hello, World!';
const expected = '&#x48;&#x65;&#x6c;&#x6c;&#x6f;&#x2c;&#x20;&#x57;&#x6f;&#x72;&#x6c;&#x64;&#x21;';
const result = Util.stringToUnicodeEntities(input);
expect(result).toEqual(expected);
});
it('should handle an empty string', () => {
const input = '';
const expected = '';
const result = Util.stringToUnicodeEntities(input);
expect(result).toEqual(expected);
});
it('should handle special characters', () => {
const input = '@#^&*()';
const expected = '&#x40;&#x23;&#x5e;&#x26;&#x2a;&#x28;&#x29;';
const result = Util.stringToUnicodeEntities(input);
expect(result).toEqual(expected);
});
it('should handle non-English characters', () => {
const input = 'こんにちは';
const expected = '&#x3053;&#x3093;&#x306b;&#x3061;&#x306f;';
const result = Util.stringToUnicodeEntities(input);
expect(result).toEqual(expected);
});
});

View File

@@ -1,13 +1,32 @@
# syntax=docker/dockerfile:1
ARG NODE_VERSION=16
ARG DOCKER_VERSION=20.10.22
ARG BUILDX_VERSION=0.10.0
# Copyright 2023 actions-toolkit authors
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
ARG NODE_VERSION=20
ARG DOCKER_VERSION=26.0.2
ARG BUILDX_VERSION=0.15.1
FROM node:${NODE_VERSION}-alpine AS base
RUN apk add --no-cache cpio findutils git
RUN yarn config set --home enableTelemetry 0
WORKDIR /src
RUN --mount=type=bind,target=.,rw \
--mount=type=cache,target=/src/.yarn/cache <<EOT
corepack enable
yarn --version
yarn config set --home enableTelemetry 0
EOT
FROM base AS deps
RUN --mount=type=bind,target=.,rw \
@@ -65,7 +84,7 @@ RUN --mount=type=bind,target=.,rw \
--mount=type=bind,from=buildx,source=/buildx,target=/usr/libexec/docker/cli-plugins/docker-buildx \
--mount=type=bind,from=buildx,source=/buildx,target=/usr/bin/buildx \
--mount=type=secret,id=GITHUB_TOKEN \
GITHUB_TOKEN=$(cat /run/secrets/GITHUB_TOKEN) yarn run test-coverage --coverageDirectory=/tmp/coverage
GITHUB_TOKEN=$(cat /run/secrets/GITHUB_TOKEN) yarn run test:coverage --coverageDirectory=/tmp/coverage
FROM scratch AS test-coverage
COPY --from=test /tmp/coverage /

View File

@@ -1,3 +1,17 @@
// Copyright 2023 actions-toolkit authors
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
//
// http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.
group "default" {
targets = ["build"]
}
@@ -7,7 +21,7 @@ group "pre-checkin" {
}
group "validate" {
targets = ["lint", "vendor-validate"]
targets = ["lint", "vendor-validate", "license-validate"]
}
target "build" {
@@ -69,3 +83,15 @@ target "publish" {
output = ["type=cacheonly"]
secret = ["id=NODE_AUTH_TOKEN,env=NODE_AUTH_TOKEN"]
}
target "license-validate" {
dockerfile = "./hack/dockerfiles/license.Dockerfile"
target = "validate"
output = ["type=cacheonly"]
}
target "license-update" {
dockerfile = "./hack/dockerfiles/license.Dockerfile"
target = "update"
output = ["."]
}

View File

@@ -0,0 +1,47 @@
# syntax=docker/dockerfile:1
# Copyright 2023 actions-toolkit authors
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
ARG LICENSE_HOLDER="actions-toolkit authors"
ARG LICENSE_TYPE="apache"
ARG LICENSE_FILES=".*\(Dockerfile\|Makefile\|\.js\|\.ts\|\.hcl\|\.sh|\.ps1\)"
ARG ADDLICENSE_VERSION="v1.0.0"
FROM ghcr.io/google/addlicense:${ADDLICENSE_VERSION} AS addlicense
FROM alpine:3.17 AS base
WORKDIR /src
RUN apk add --no-cache cpio findutils git
FROM base AS set
ARG LICENSE_HOLDER
ARG LICENSE_TYPE
ARG LICENSE_FILES
RUN --mount=type=bind,target=.,rw \
--mount=from=addlicense,source=/app/addlicense,target=/usr/bin/addlicense \
find . -regex "${LICENSE_FILES}" -not -path "./.yarn/*" -not -path "./node_modules/*" | xargs addlicense -c "$LICENSE_HOLDER" -l "$LICENSE_TYPE" && \
mkdir /out && \
find . -regex "${LICENSE_FILES}" -not -path "./.yarn/*" -not -path "./node_modules/*" | cpio -pdm /out
FROM scratch AS update
COPY --from=set /out /
FROM base AS validate
ARG LICENSE_HOLDER
ARG LICENSE_TYPE
ARG LICENSE_FILES
RUN --mount=type=bind,target=. \
--mount=from=addlicense,source=/app/addlicense,target=/usr/bin/addlicense \
find . -regex "${LICENSE_FILES}" -not -path "./.yarn/*" -not -path "./node_modules/*" | xargs addlicense -check -c "$LICENSE_HOLDER" -l "$LICENSE_TYPE"

45
jest.config.itg.ts Normal file
View File

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

View File

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

View File

@@ -1,12 +1,20 @@
{
"name": "@docker/actions-toolkit",
"version": "0.0.0+unknown",
"description": "Toolkit for Docker (GitHub) Actions",
"scripts": {
"build": "tsc",
"lint": "eslint src/**/*.ts __tests__/**/*.ts",
"format": "eslint --fix src/**/*.ts __tests__/**/*.ts",
"lint": "yarn run prettier && yarn run eslint",
"format": "yarn run prettier:fix && yarn run eslint:fix",
"eslint": "eslint --max-warnings=0 .",
"eslint:fix": "eslint --fix .",
"prettier": "prettier --check \"./**/*.ts\"",
"prettier:fix": "prettier --write \"./**/*.ts\"",
"test": "jest",
"test-coverage": "jest --coverage"
"test:coverage": "jest --coverage",
"test:itg": "jest -c jest.config.itg.ts --runInBand --detectOpenHandles",
"test:itg-list": "jest -c jest.config.itg.ts --listTests",
"test:itg-coverage": "jest --coverage -c jest.config.itg.ts --runInBand --detectOpenHandles"
},
"repository": {
"type": "git",
@@ -22,9 +30,9 @@
],
"author": "Docker Inc.",
"license": "Apache-2.0",
"packageManager": "yarn@3.3.1",
"main": "lib/toolkit.js",
"types": "lib/toolkit.d.ts",
"packageManager": "yarn@3.6.3",
"main": "lib/index.js",
"types": "lib/index.d.ts",
"directories": {
"lib": "lib",
"test": "__tests__"
@@ -37,32 +45,48 @@
"registry": "https://registry.npmjs.org/"
},
"dependencies": {
"@actions/core": "^1.10.0",
"@actions/artifact": "^2.1.7",
"@actions/cache": "^3.2.4",
"@actions/core": "^1.10.1",
"@actions/exec": "^1.1.1",
"@actions/github": "^5.1.1",
"csv-parse": "^5.3.3",
"jwt-decode": "^3.1.2",
"semver": "^7.3.8",
"tmp": "^0.2.1"
"@actions/github": "^6.0.0",
"@actions/http-client": "^2.2.1",
"@actions/io": "^1.1.3",
"@actions/tool-cache": "^2.0.1",
"@azure/storage-blob": "^12.15.0",
"@octokit/core": "^5.1.0",
"@octokit/plugin-rest-endpoint-methods": "^10.4.0",
"async-retry": "^1.3.3",
"csv-parse": "^5.5.6",
"gunzip-maybe": "^1.4.2",
"handlebars": "^4.7.8",
"js-yaml": "^4.1.0",
"jwt-decode": "^4.0.0",
"semver": "^7.6.2",
"tar-stream": "^3.1.7",
"tmp": "^0.2.3"
},
"devDependencies": {
"@types/csv-parse": "^1.2.2",
"@types/node": "^16.18.11",
"@types/semver": "^7.3.13",
"@types/tmp": "^0.2.3",
"@typescript-eslint/eslint-plugin": "^5.49.0",
"@typescript-eslint/parser": "^5.49.0",
"cpy-cli": "^4.2.0",
"dotenv": "^16.0.3",
"eslint": "^8.33.0",
"eslint-config-prettier": "^8.6.0",
"eslint-plugin-jest": "^26.9.0",
"eslint-plugin-prettier": "^4.2.1",
"jest": "^27.5.1",
"prettier": "^2.8.3",
"rimraf": "^4.1.2",
"ts-jest": "^27.1.5",
"ts-node": "^10.9.1",
"typescript": "^4.9.4"
"@types/gunzip-maybe": "^1.4.2",
"@types/js-yaml": "^4.0.9",
"@types/node": "^20.12.10",
"@types/semver": "^7.5.8",
"@types/tar-stream": "^3.1.3",
"@types/tmp": "^0.2.6",
"@typescript-eslint/eslint-plugin": "^7.8.0",
"@typescript-eslint/parser": "^7.8.0",
"dotenv": "^16.4.5",
"eslint": "^8.57.0",
"eslint-config-prettier": "^9.1.0",
"eslint-plugin-import": "^2.29.1",
"eslint-plugin-jest": "^28.5.0",
"eslint-plugin-prettier": "^5.1.3",
"jest": "^29.7.0",
"prettier": "^3.2.5",
"rimraf": "^5.0.5",
"ts-jest": "^29.1.2",
"ts-node": "^10.9.2",
"typescript": "^5.4.5"
}
}

View File

@@ -1,132 +0,0 @@
import * as exec from '@actions/exec';
import {Buildx} from './buildx';
import {Context} from './context';
export interface BuilderInfo {
name?: string;
driver?: string;
lastActivity?: Date;
nodes: NodeInfo[];
}
export interface NodeInfo {
name?: string;
endpoint?: string;
driverOpts?: Array<string>;
status?: string;
buildkitdFlags?: string;
buildkitVersion?: string;
platforms?: string;
}
export interface BuilderOpts {
context: Context;
buildx?: Buildx;
}
export class Builder {
private readonly context: Context;
private readonly buildx: Buildx;
constructor(opts: BuilderOpts) {
this.context = opts.context;
this.buildx =
opts?.buildx ||
new Buildx({
context: this.context
});
}
public async inspect(name: string): Promise<BuilderInfo> {
const cmd = this.buildx.getCommand(['inspect', name]);
return await exec
.getExecOutput(cmd.command, cmd.args, {
ignoreReturnCode: true,
silent: true
})
.then(res => {
if (res.stderr.length > 0 && res.exitCode != 0) {
throw new Error(res.stderr.trim());
}
return Builder.parseInspect(res.stdout);
});
}
public static parseInspect(data: string): BuilderInfo {
const builder: BuilderInfo = {
nodes: []
};
let node: NodeInfo = {};
for (const line of data.trim().split(`\n`)) {
const [key, ...rest] = line.split(':');
const value = rest.map(v => v.trim()).join(':');
if (key.length == 0 || value.length == 0) {
continue;
}
switch (key.toLowerCase()) {
case 'name': {
if (builder.name == undefined) {
builder.name = value;
} else {
if (Object.keys(node).length > 0) {
builder.nodes.push(node);
node = {};
}
node.name = value;
}
break;
}
case 'driver': {
builder.driver = value;
break;
}
case 'last activity': {
builder.lastActivity = new Date(value);
break;
}
case 'endpoint': {
node.endpoint = value;
break;
}
case 'driver options': {
node.driverOpts = (value.match(/(\w+)="([^"]*)"/g) || []).map(v => v.replace(/^(.*)="(.*)"$/g, '$1=$2'));
break;
}
case 'status': {
node.status = value;
break;
}
case 'flags': {
node.buildkitdFlags = value;
break;
}
case 'buildkit': {
node.buildkitVersion = value;
break;
}
case 'platforms': {
let platforms: Array<string> = [];
// if a preferred platform is being set then use only these
// https://docs.docker.com/engine/reference/commandline/buildx_inspect/#get-information-about-a-builder-instance
if (value.includes('*')) {
for (const platform of value.split(', ')) {
if (platform.includes('*')) {
platforms.push(platform.replace('*', ''));
}
}
} else {
// otherwise set all platforms available
platforms = value.split(', ');
}
node.platforms = platforms.join(',');
break;
}
}
}
if (Object.keys(node).length > 0) {
builder.nodes.push(node);
}
return builder;
}
}

View File

@@ -1,124 +0,0 @@
import fs from 'fs';
import * as core from '@actions/core';
import * as exec from '@actions/exec';
import * as semver from 'semver';
import {Context} from './context';
import {Buildx} from './buildx';
import {Builder, BuilderInfo} from './builder';
export interface BuildKitOpts {
context: Context;
buildx?: Buildx;
}
export class BuildKit {
private readonly context: Context;
private readonly buildx: Buildx;
private containerNamePrefix = 'buildx_buildkit_';
constructor(opts: BuildKitOpts) {
this.context = opts.context;
this.buildx =
opts?.buildx ||
new Buildx({
context: this.context
});
}
private async getBuilderInfo(name: string): Promise<BuilderInfo> {
const builder = new Builder({
context: this.context,
buildx: this.buildx
});
return builder.inspect(name);
}
public async getVersion(builderName: string): Promise<string | undefined> {
const builderInfo = await this.getBuilderInfo(builderName);
if (builderInfo.nodes.length == 0) {
// a builder always have on node, should not happen.
return undefined;
}
// TODO: get version for all nodes
const node = builderInfo.nodes[0];
if (!node.buildkitVersion && node.name) {
try {
return await this.getVersionWithinImage(node.name);
} catch (e) {
core.warning(e);
}
}
return node.buildkitVersion;
}
private async getVersionWithinImage(nodeName: string): Promise<string> {
return exec
.getExecOutput(`docker`, ['inspect', '--format', '{{.Config.Image}}', `${this.containerNamePrefix}${nodeName}`], {
ignoreReturnCode: true,
silent: true
})
.then(bkitimage => {
if (bkitimage.exitCode == 0 && bkitimage.stdout.length > 0) {
return exec
.getExecOutput(`docker`, ['run', '--rm', bkitimage.stdout.trim(), '--version'], {
ignoreReturnCode: true,
silent: true
})
.then(bkitversion => {
if (bkitversion.exitCode == 0 && bkitversion.stdout.length > 0) {
return `${bkitimage.stdout.trim()} => ${bkitversion.stdout.trim()}`;
} else if (bkitversion.stderr.length > 0) {
throw new Error(bkitimage.stderr.trim());
}
return bkitversion.stdout.trim();
});
} else if (bkitimage.stderr.length > 0) {
throw new Error(bkitimage.stderr.trim());
}
return bkitimage.stdout.trim();
});
}
public async versionSatisfies(builderName: string, range: string): Promise<boolean> {
const builderInfo = await this.getBuilderInfo(builderName);
for (const node of builderInfo.nodes) {
let bkversion = node.buildkitVersion;
if (!bkversion) {
try {
bkversion = await this.getVersionWithinImage(node.name || '');
} catch (e) {
return false;
}
}
// BuildKit version reported by moby is in the format of `v0.11.0-moby`
if (builderInfo.driver == 'docker' && !bkversion.endsWith('-moby')) {
return false;
}
if (!semver.satisfies(bkversion.replace(/-moby$/, ''), range)) {
return false;
}
}
return true;
}
public generateConfigInline(s: string): string {
return this.generateConfig(s, false);
}
public generateConfigFile(s: string): string {
return this.generateConfig(s, true);
}
private generateConfig(s: string, file: boolean): string {
if (file) {
if (!fs.existsSync(s)) {
throw new Error(`config file ${s} not found`);
}
s = fs.readFileSync(s, {encoding: 'utf-8'});
}
const configFile = this.context.tmpName({tmpdir: this.context.tmpDir()});
fs.writeFileSync(configFile, s);
return configFile;
}
}

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