Compare commits

...

86 Commits

Author SHA1 Message Date
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
35 changed files with 4133 additions and 2335 deletions

View File

@@ -1,12 +1,13 @@
{
"env": {
"node": true,
"es2021": 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
@@ -16,7 +17,7 @@
],
"parser": "@typescript-eslint/parser",
"parserOptions": {
"ecmaVersion": "latest",
"ecmaVersion": "2023",
"sourceType": "module"
},
"plugins": [

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

@@ -0,0 +1,125 @@
{
"latest": {
"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.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"
]
}
}

View File

@@ -1,43 +1,166 @@
{
"latest": {
"id": 103872471,
"tag_name": "v0.10.5",
"html_url": "https://github.com/docker/buildx/releases/tag/v0.10.5",
"id": 112690624,
"tag_name": "v0.11.2",
"html_url": "https://github.com/docker/buildx/releases/tag/v0.11.2",
"assets": [
"https://github.com/docker/buildx/releases/download/v0.10.5/buildx-v0.10.5.darwin-amd64",
"https://github.com/docker/buildx/releases/download/v0.10.5/buildx-v0.10.5.darwin-amd64.provenance.json",
"https://github.com/docker/buildx/releases/download/v0.10.5/buildx-v0.10.5.darwin-amd64.sbom.json",
"https://github.com/docker/buildx/releases/download/v0.10.5/buildx-v0.10.5.darwin-arm64",
"https://github.com/docker/buildx/releases/download/v0.10.5/buildx-v0.10.5.darwin-arm64.provenance.json",
"https://github.com/docker/buildx/releases/download/v0.10.5/buildx-v0.10.5.darwin-arm64.sbom.json",
"https://github.com/docker/buildx/releases/download/v0.10.5/buildx-v0.10.5.linux-amd64",
"https://github.com/docker/buildx/releases/download/v0.10.5/buildx-v0.10.5.linux-amd64.provenance.json",
"https://github.com/docker/buildx/releases/download/v0.10.5/buildx-v0.10.5.linux-amd64.sbom.json",
"https://github.com/docker/buildx/releases/download/v0.10.5/buildx-v0.10.5.linux-arm-v6",
"https://github.com/docker/buildx/releases/download/v0.10.5/buildx-v0.10.5.linux-arm-v6.provenance.json",
"https://github.com/docker/buildx/releases/download/v0.10.5/buildx-v0.10.5.linux-arm-v6.sbom.json",
"https://github.com/docker/buildx/releases/download/v0.10.5/buildx-v0.10.5.linux-arm-v7",
"https://github.com/docker/buildx/releases/download/v0.10.5/buildx-v0.10.5.linux-arm-v7.provenance.json",
"https://github.com/docker/buildx/releases/download/v0.10.5/buildx-v0.10.5.linux-arm-v7.sbom.json",
"https://github.com/docker/buildx/releases/download/v0.10.5/buildx-v0.10.5.linux-arm64",
"https://github.com/docker/buildx/releases/download/v0.10.5/buildx-v0.10.5.linux-arm64.provenance.json",
"https://github.com/docker/buildx/releases/download/v0.10.5/buildx-v0.10.5.linux-arm64.sbom.json",
"https://github.com/docker/buildx/releases/download/v0.10.5/buildx-v0.10.5.linux-ppc64le",
"https://github.com/docker/buildx/releases/download/v0.10.5/buildx-v0.10.5.linux-ppc64le.provenance.json",
"https://github.com/docker/buildx/releases/download/v0.10.5/buildx-v0.10.5.linux-ppc64le.sbom.json",
"https://github.com/docker/buildx/releases/download/v0.10.5/buildx-v0.10.5.linux-riscv64",
"https://github.com/docker/buildx/releases/download/v0.10.5/buildx-v0.10.5.linux-riscv64.provenance.json",
"https://github.com/docker/buildx/releases/download/v0.10.5/buildx-v0.10.5.linux-riscv64.sbom.json",
"https://github.com/docker/buildx/releases/download/v0.10.5/buildx-v0.10.5.linux-s390x",
"https://github.com/docker/buildx/releases/download/v0.10.5/buildx-v0.10.5.linux-s390x.provenance.json",
"https://github.com/docker/buildx/releases/download/v0.10.5/buildx-v0.10.5.linux-s390x.sbom.json",
"https://github.com/docker/buildx/releases/download/v0.10.5/buildx-v0.10.5.windows-amd64.exe",
"https://github.com/docker/buildx/releases/download/v0.10.5/buildx-v0.10.5.windows-amd64.provenance.json",
"https://github.com/docker/buildx/releases/download/v0.10.5/buildx-v0.10.5.windows-amd64.sbom.json",
"https://github.com/docker/buildx/releases/download/v0.10.5/buildx-v0.10.5.windows-arm64.exe",
"https://github.com/docker/buildx/releases/download/v0.10.5/buildx-v0.10.5.windows-arm64.provenance.json",
"https://github.com/docker/buildx/releases/download/v0.10.5/buildx-v0.10.5.windows-arm64.sbom.json",
"https://github.com/docker/buildx/releases/download/v0.10.5/checksums.txt"
"https://github.com/docker/buildx/releases/download/v0.11.2/buildx-v0.11.2.darwin-amd64",
"https://github.com/docker/buildx/releases/download/v0.11.2/buildx-v0.11.2.darwin-amd64.provenance.json",
"https://github.com/docker/buildx/releases/download/v0.11.2/buildx-v0.11.2.darwin-amd64.sbom.json",
"https://github.com/docker/buildx/releases/download/v0.11.2/buildx-v0.11.2.darwin-arm64",
"https://github.com/docker/buildx/releases/download/v0.11.2/buildx-v0.11.2.darwin-arm64.provenance.json",
"https://github.com/docker/buildx/releases/download/v0.11.2/buildx-v0.11.2.darwin-arm64.sbom.json",
"https://github.com/docker/buildx/releases/download/v0.11.2/buildx-v0.11.2.linux-amd64",
"https://github.com/docker/buildx/releases/download/v0.11.2/buildx-v0.11.2.linux-amd64.provenance.json",
"https://github.com/docker/buildx/releases/download/v0.11.2/buildx-v0.11.2.linux-amd64.sbom.json",
"https://github.com/docker/buildx/releases/download/v0.11.2/buildx-v0.11.2.linux-arm-v6",
"https://github.com/docker/buildx/releases/download/v0.11.2/buildx-v0.11.2.linux-arm-v6.provenance.json",
"https://github.com/docker/buildx/releases/download/v0.11.2/buildx-v0.11.2.linux-arm-v6.sbom.json",
"https://github.com/docker/buildx/releases/download/v0.11.2/buildx-v0.11.2.linux-arm-v7",
"https://github.com/docker/buildx/releases/download/v0.11.2/buildx-v0.11.2.linux-arm-v7.provenance.json",
"https://github.com/docker/buildx/releases/download/v0.11.2/buildx-v0.11.2.linux-arm-v7.sbom.json",
"https://github.com/docker/buildx/releases/download/v0.11.2/buildx-v0.11.2.linux-arm64",
"https://github.com/docker/buildx/releases/download/v0.11.2/buildx-v0.11.2.linux-arm64.provenance.json",
"https://github.com/docker/buildx/releases/download/v0.11.2/buildx-v0.11.2.linux-arm64.sbom.json",
"https://github.com/docker/buildx/releases/download/v0.11.2/buildx-v0.11.2.linux-ppc64le",
"https://github.com/docker/buildx/releases/download/v0.11.2/buildx-v0.11.2.linux-ppc64le.provenance.json",
"https://github.com/docker/buildx/releases/download/v0.11.2/buildx-v0.11.2.linux-ppc64le.sbom.json",
"https://github.com/docker/buildx/releases/download/v0.11.2/buildx-v0.11.2.linux-riscv64",
"https://github.com/docker/buildx/releases/download/v0.11.2/buildx-v0.11.2.linux-riscv64.provenance.json",
"https://github.com/docker/buildx/releases/download/v0.11.2/buildx-v0.11.2.linux-riscv64.sbom.json",
"https://github.com/docker/buildx/releases/download/v0.11.2/buildx-v0.11.2.linux-s390x",
"https://github.com/docker/buildx/releases/download/v0.11.2/buildx-v0.11.2.linux-s390x.provenance.json",
"https://github.com/docker/buildx/releases/download/v0.11.2/buildx-v0.11.2.linux-s390x.sbom.json",
"https://github.com/docker/buildx/releases/download/v0.11.2/buildx-v0.11.2.windows-amd64.exe",
"https://github.com/docker/buildx/releases/download/v0.11.2/buildx-v0.11.2.windows-amd64.provenance.json",
"https://github.com/docker/buildx/releases/download/v0.11.2/buildx-v0.11.2.windows-amd64.sbom.json",
"https://github.com/docker/buildx/releases/download/v0.11.2/buildx-v0.11.2.windows-arm64.exe",
"https://github.com/docker/buildx/releases/download/v0.11.2/buildx-v0.11.2.windows-arm64.provenance.json",
"https://github.com/docker/buildx/releases/download/v0.11.2/buildx-v0.11.2.windows-arm64.sbom.json",
"https://github.com/docker/buildx/releases/download/v0.11.2/checksums.txt"
]
},
"v0.11.2": {
"id": 112690624,
"tag_name": "v0.11.2",
"html_url": "https://github.com/docker/buildx/releases/tag/v0.11.2",
"assets": [
"https://github.com/docker/buildx/releases/download/v0.11.2/buildx-v0.11.2.darwin-amd64",
"https://github.com/docker/buildx/releases/download/v0.11.2/buildx-v0.11.2.darwin-amd64.provenance.json",
"https://github.com/docker/buildx/releases/download/v0.11.2/buildx-v0.11.2.darwin-amd64.sbom.json",
"https://github.com/docker/buildx/releases/download/v0.11.2/buildx-v0.11.2.darwin-arm64",
"https://github.com/docker/buildx/releases/download/v0.11.2/buildx-v0.11.2.darwin-arm64.provenance.json",
"https://github.com/docker/buildx/releases/download/v0.11.2/buildx-v0.11.2.darwin-arm64.sbom.json",
"https://github.com/docker/buildx/releases/download/v0.11.2/buildx-v0.11.2.linux-amd64",
"https://github.com/docker/buildx/releases/download/v0.11.2/buildx-v0.11.2.linux-amd64.provenance.json",
"https://github.com/docker/buildx/releases/download/v0.11.2/buildx-v0.11.2.linux-amd64.sbom.json",
"https://github.com/docker/buildx/releases/download/v0.11.2/buildx-v0.11.2.linux-arm-v6",
"https://github.com/docker/buildx/releases/download/v0.11.2/buildx-v0.11.2.linux-arm-v6.provenance.json",
"https://github.com/docker/buildx/releases/download/v0.11.2/buildx-v0.11.2.linux-arm-v6.sbom.json",
"https://github.com/docker/buildx/releases/download/v0.11.2/buildx-v0.11.2.linux-arm-v7",
"https://github.com/docker/buildx/releases/download/v0.11.2/buildx-v0.11.2.linux-arm-v7.provenance.json",
"https://github.com/docker/buildx/releases/download/v0.11.2/buildx-v0.11.2.linux-arm-v7.sbom.json",
"https://github.com/docker/buildx/releases/download/v0.11.2/buildx-v0.11.2.linux-arm64",
"https://github.com/docker/buildx/releases/download/v0.11.2/buildx-v0.11.2.linux-arm64.provenance.json",
"https://github.com/docker/buildx/releases/download/v0.11.2/buildx-v0.11.2.linux-arm64.sbom.json",
"https://github.com/docker/buildx/releases/download/v0.11.2/buildx-v0.11.2.linux-ppc64le",
"https://github.com/docker/buildx/releases/download/v0.11.2/buildx-v0.11.2.linux-ppc64le.provenance.json",
"https://github.com/docker/buildx/releases/download/v0.11.2/buildx-v0.11.2.linux-ppc64le.sbom.json",
"https://github.com/docker/buildx/releases/download/v0.11.2/buildx-v0.11.2.linux-riscv64",
"https://github.com/docker/buildx/releases/download/v0.11.2/buildx-v0.11.2.linux-riscv64.provenance.json",
"https://github.com/docker/buildx/releases/download/v0.11.2/buildx-v0.11.2.linux-riscv64.sbom.json",
"https://github.com/docker/buildx/releases/download/v0.11.2/buildx-v0.11.2.linux-s390x",
"https://github.com/docker/buildx/releases/download/v0.11.2/buildx-v0.11.2.linux-s390x.provenance.json",
"https://github.com/docker/buildx/releases/download/v0.11.2/buildx-v0.11.2.linux-s390x.sbom.json",
"https://github.com/docker/buildx/releases/download/v0.11.2/buildx-v0.11.2.windows-amd64.exe",
"https://github.com/docker/buildx/releases/download/v0.11.2/buildx-v0.11.2.windows-amd64.provenance.json",
"https://github.com/docker/buildx/releases/download/v0.11.2/buildx-v0.11.2.windows-amd64.sbom.json",
"https://github.com/docker/buildx/releases/download/v0.11.2/buildx-v0.11.2.windows-arm64.exe",
"https://github.com/docker/buildx/releases/download/v0.11.2/buildx-v0.11.2.windows-arm64.provenance.json",
"https://github.com/docker/buildx/releases/download/v0.11.2/buildx-v0.11.2.windows-arm64.sbom.json",
"https://github.com/docker/buildx/releases/download/v0.11.2/checksums.txt"
]
},
"v0.11.1": {
"id": 111149999,
"tag_name": "v0.11.1",
"html_url": "https://github.com/docker/buildx/releases/tag/v0.11.1",
"assets": [
"https://github.com/docker/buildx/releases/download/v0.11.1/buildx-v0.11.1.darwin-amd64",
"https://github.com/docker/buildx/releases/download/v0.11.1/buildx-v0.11.1.darwin-amd64.provenance.json",
"https://github.com/docker/buildx/releases/download/v0.11.1/buildx-v0.11.1.darwin-amd64.sbom.json",
"https://github.com/docker/buildx/releases/download/v0.11.1/buildx-v0.11.1.darwin-arm64",
"https://github.com/docker/buildx/releases/download/v0.11.1/buildx-v0.11.1.darwin-arm64.provenance.json",
"https://github.com/docker/buildx/releases/download/v0.11.1/buildx-v0.11.1.darwin-arm64.sbom.json",
"https://github.com/docker/buildx/releases/download/v0.11.1/buildx-v0.11.1.linux-amd64",
"https://github.com/docker/buildx/releases/download/v0.11.1/buildx-v0.11.1.linux-amd64.provenance.json",
"https://github.com/docker/buildx/releases/download/v0.11.1/buildx-v0.11.1.linux-amd64.sbom.json",
"https://github.com/docker/buildx/releases/download/v0.11.1/buildx-v0.11.1.linux-arm-v6",
"https://github.com/docker/buildx/releases/download/v0.11.1/buildx-v0.11.1.linux-arm-v6.provenance.json",
"https://github.com/docker/buildx/releases/download/v0.11.1/buildx-v0.11.1.linux-arm-v6.sbom.json",
"https://github.com/docker/buildx/releases/download/v0.11.1/buildx-v0.11.1.linux-arm-v7",
"https://github.com/docker/buildx/releases/download/v0.11.1/buildx-v0.11.1.linux-arm-v7.provenance.json",
"https://github.com/docker/buildx/releases/download/v0.11.1/buildx-v0.11.1.linux-arm-v7.sbom.json",
"https://github.com/docker/buildx/releases/download/v0.11.1/buildx-v0.11.1.linux-arm64",
"https://github.com/docker/buildx/releases/download/v0.11.1/buildx-v0.11.1.linux-arm64.provenance.json",
"https://github.com/docker/buildx/releases/download/v0.11.1/buildx-v0.11.1.linux-arm64.sbom.json",
"https://github.com/docker/buildx/releases/download/v0.11.1/buildx-v0.11.1.linux-ppc64le",
"https://github.com/docker/buildx/releases/download/v0.11.1/buildx-v0.11.1.linux-ppc64le.provenance.json",
"https://github.com/docker/buildx/releases/download/v0.11.1/buildx-v0.11.1.linux-ppc64le.sbom.json",
"https://github.com/docker/buildx/releases/download/v0.11.1/buildx-v0.11.1.linux-riscv64",
"https://github.com/docker/buildx/releases/download/v0.11.1/buildx-v0.11.1.linux-riscv64.provenance.json",
"https://github.com/docker/buildx/releases/download/v0.11.1/buildx-v0.11.1.linux-riscv64.sbom.json",
"https://github.com/docker/buildx/releases/download/v0.11.1/buildx-v0.11.1.linux-s390x",
"https://github.com/docker/buildx/releases/download/v0.11.1/buildx-v0.11.1.linux-s390x.provenance.json",
"https://github.com/docker/buildx/releases/download/v0.11.1/buildx-v0.11.1.linux-s390x.sbom.json",
"https://github.com/docker/buildx/releases/download/v0.11.1/buildx-v0.11.1.windows-amd64.exe",
"https://github.com/docker/buildx/releases/download/v0.11.1/buildx-v0.11.1.windows-amd64.provenance.json",
"https://github.com/docker/buildx/releases/download/v0.11.1/buildx-v0.11.1.windows-amd64.sbom.json",
"https://github.com/docker/buildx/releases/download/v0.11.1/buildx-v0.11.1.windows-arm64.exe",
"https://github.com/docker/buildx/releases/download/v0.11.1/buildx-v0.11.1.windows-arm64.provenance.json",
"https://github.com/docker/buildx/releases/download/v0.11.1/buildx-v0.11.1.windows-arm64.sbom.json",
"https://github.com/docker/buildx/releases/download/v0.11.1/checksums.txt"
]
},
"v0.11.0": {
"id": 108385289,
"tag_name": "v0.11.0",
"html_url": "https://github.com/docker/buildx/releases/tag/v0.11.0",
"assets": [
"https://github.com/docker/buildx/releases/download/v0.11.0/buildx-v0.11.0.darwin-amd64",
"https://github.com/docker/buildx/releases/download/v0.11.0/buildx-v0.11.0.darwin-amd64.provenance.json",
"https://github.com/docker/buildx/releases/download/v0.11.0/buildx-v0.11.0.darwin-amd64.sbom.json",
"https://github.com/docker/buildx/releases/download/v0.11.0/buildx-v0.11.0.darwin-arm64",
"https://github.com/docker/buildx/releases/download/v0.11.0/buildx-v0.11.0.darwin-arm64.provenance.json",
"https://github.com/docker/buildx/releases/download/v0.11.0/buildx-v0.11.0.darwin-arm64.sbom.json",
"https://github.com/docker/buildx/releases/download/v0.11.0/buildx-v0.11.0.linux-amd64",
"https://github.com/docker/buildx/releases/download/v0.11.0/buildx-v0.11.0.linux-amd64.provenance.json",
"https://github.com/docker/buildx/releases/download/v0.11.0/buildx-v0.11.0.linux-amd64.sbom.json",
"https://github.com/docker/buildx/releases/download/v0.11.0/buildx-v0.11.0.linux-arm-v6",
"https://github.com/docker/buildx/releases/download/v0.11.0/buildx-v0.11.0.linux-arm-v6.provenance.json",
"https://github.com/docker/buildx/releases/download/v0.11.0/buildx-v0.11.0.linux-arm-v6.sbom.json",
"https://github.com/docker/buildx/releases/download/v0.11.0/buildx-v0.11.0.linux-arm-v7",
"https://github.com/docker/buildx/releases/download/v0.11.0/buildx-v0.11.0.linux-arm-v7.provenance.json",
"https://github.com/docker/buildx/releases/download/v0.11.0/buildx-v0.11.0.linux-arm-v7.sbom.json",
"https://github.com/docker/buildx/releases/download/v0.11.0/buildx-v0.11.0.linux-arm64",
"https://github.com/docker/buildx/releases/download/v0.11.0/buildx-v0.11.0.linux-arm64.provenance.json",
"https://github.com/docker/buildx/releases/download/v0.11.0/buildx-v0.11.0.linux-arm64.sbom.json",
"https://github.com/docker/buildx/releases/download/v0.11.0/buildx-v0.11.0.linux-ppc64le",
"https://github.com/docker/buildx/releases/download/v0.11.0/buildx-v0.11.0.linux-ppc64le.provenance.json",
"https://github.com/docker/buildx/releases/download/v0.11.0/buildx-v0.11.0.linux-ppc64le.sbom.json",
"https://github.com/docker/buildx/releases/download/v0.11.0/buildx-v0.11.0.linux-riscv64",
"https://github.com/docker/buildx/releases/download/v0.11.0/buildx-v0.11.0.linux-riscv64.provenance.json",
"https://github.com/docker/buildx/releases/download/v0.11.0/buildx-v0.11.0.linux-riscv64.sbom.json",
"https://github.com/docker/buildx/releases/download/v0.11.0/buildx-v0.11.0.linux-s390x",
"https://github.com/docker/buildx/releases/download/v0.11.0/buildx-v0.11.0.linux-s390x.provenance.json",
"https://github.com/docker/buildx/releases/download/v0.11.0/buildx-v0.11.0.linux-s390x.sbom.json",
"https://github.com/docker/buildx/releases/download/v0.11.0/buildx-v0.11.0.windows-amd64.exe",
"https://github.com/docker/buildx/releases/download/v0.11.0/buildx-v0.11.0.windows-amd64.provenance.json",
"https://github.com/docker/buildx/releases/download/v0.11.0/buildx-v0.11.0.windows-amd64.sbom.json",
"https://github.com/docker/buildx/releases/download/v0.11.0/buildx-v0.11.0.windows-arm64.exe",
"https://github.com/docker/buildx/releases/download/v0.11.0/buildx-v0.11.0.windows-arm64.provenance.json",
"https://github.com/docker/buildx/releases/download/v0.11.0/buildx-v0.11.0.windows-arm64.sbom.json",
"https://github.com/docker/buildx/releases/download/v0.11.0/checksums.txt"
]
},
"v0.11.0-rc2": {

View File

@@ -11,6 +11,7 @@ updates:
directory: "/"
schedule:
interval: "daily"
versioning-strategy: "increase"
allow:
- dependency-type: "production"
labels:

View File

@@ -1,8 +1,32 @@
{
"latest": {
"id": 104366762,
"tag_name": "v24.0.2",
"html_url": "https://github.com/moby/moby/releases/tag/v24.0.2",
"id": 120021175,
"tag_name": "v24.0.6",
"html_url": "https://github.com/moby/moby/releases/tag/v24.0.6",
"assets": []
},
"v24.0.6": {
"id": 120021175,
"tag_name": "v24.0.6",
"html_url": "https://github.com/moby/moby/releases/tag/v24.0.6",
"assets": []
},
"v24.0.5": {
"id": 113348684,
"tag_name": "v24.0.5",
"html_url": "https://github.com/moby/moby/releases/tag/v24.0.5",
"assets": []
},
"v24.0.4": {
"id": 111464537,
"tag_name": "v24.0.4",
"html_url": "https://github.com/moby/moby/releases/tag/v24.0.4",
"assets": []
},
"v24.0.3": {
"id": 111300256,
"tag_name": "v24.0.3",
"html_url": "https://github.com/moby/moby/releases/tag/v24.0.3",
"assets": []
},
"v24.0.2": {

View File

@@ -18,7 +18,7 @@ jobs:
steps:
-
name: Checkout
uses: actions/checkout@v3
uses: actions/checkout@v4
-
name: Build
uses: docker/bake-action@v3

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@6dc31870ca6c4f8489bf5a408ab38fae60f47eec
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@v3
with:
name: buildx-lab-releases-json
path: .github
-
name: Commit changes
run: |
git add -A .
-
name: Create PR
uses: peter-evans/create-pull-request@153407881ec5c347639a548ade7d8ad1d6740e38
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

@@ -32,7 +32,7 @@ jobs:
steps:
-
name: Checkout
uses: actions/checkout@v3
uses: actions/checkout@v4
-
name: Download
uses: actions/download-artifact@v3
@@ -45,7 +45,7 @@ jobs:
git add -A .
-
name: Create PR
uses: peter-evans/create-pull-request@284f54f989303d2699d373481a0cfa13ad5a6666
uses: peter-evans/create-pull-request@153407881ec5c347639a548ade7d8ad1d6740e38
with:
base: main
branch: bot/buildx-releases-json

View File

@@ -32,7 +32,7 @@ jobs:
steps:
-
name: Checkout
uses: actions/checkout@v3
uses: actions/checkout@v4
-
name: Download
uses: actions/download-artifact@v3
@@ -45,7 +45,7 @@ jobs:
git add -A .
-
name: Create PR
uses: peter-evans/create-pull-request@284f54f989303d2699d373481a0cfa13ad5a6666
uses: peter-evans/create-pull-request@153407881ec5c347639a548ade7d8ad1d6740e38
with:
base: main
branch: bot/docker-releases-json

View File

@@ -15,7 +15,7 @@ jobs:
steps:
-
name: Checkout
uses: actions/checkout@v3
uses: actions/checkout@v4
-
name: Set up Docker Buildx
uses: docker/setup-buildx-action@v2

View File

@@ -19,7 +19,7 @@ jobs:
steps:
-
name: Checkout
uses: actions/checkout@v3
uses: actions/checkout@v4
-
name: Test
uses: docker/bake-action@v3
@@ -41,7 +41,7 @@ jobs:
steps:
-
name: Checkout
uses: actions/checkout@v3
uses: actions/checkout@v4
-
name: Setup Node
uses: actions/setup-node@v3
@@ -85,7 +85,7 @@ jobs:
steps:
-
name: Checkout
uses: actions/checkout@v3
uses: actions/checkout@v4
-
name: Setup Node
uses: actions/setup-node@v3

View File

@@ -21,7 +21,7 @@ jobs:
steps:
-
name: Checkout
uses: actions/checkout@v3
uses: actions/checkout@v4
-
name: Matrix
id: targets
@@ -39,7 +39,7 @@ jobs:
steps:
-
name: Checkout
uses: actions/checkout@v3
uses: actions/checkout@v4
-
name: Validate
uses: docker/bake-action@v3

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

874
.yarn/releases/yarn-3.6.3.cjs vendored Normal file

File diff suppressed because one or more lines are too long

View File

@@ -1,16 +1,15 @@
nodeLinker: node-modules
npmAuthToken: "${NODE_AUTH_TOKEN:-fallback}"
logFilters:
# https://yarnpkg.com/advanced/error-codes
- code: YN0013
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
yarnPath: .yarn/releases/yarn-3.6.3.cjs

View File

@@ -210,6 +210,189 @@ describe('parseInspect', () => {
}
]
}
],
[
'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"
}
]
}
],
}
]
])('given %p', async (inspectFile, expected) => {
expect(await Builder.parseInspect(fs.readFileSync(path.join(fixturesDir, inspectFile)).toString())).toEqual(expected);

View File

@@ -36,9 +36,8 @@ afterEach(function () {
describe('download', () => {
// prettier-ignore
test.each([
['v0.9.1', false],
['latest', false],
['v0.9.1', true],
['v0.9.0', false],
['v0.10.5', true],
['latest', true]
])(
'acquires %p of buildx (standalone: %p)', async (version, standalone) => {
@@ -56,6 +55,18 @@ describe('download', () => {
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);
});
// TODO: add tests for arm
// prettier-ignore
test.each([
@@ -77,12 +88,6 @@ describe('download', () => {
},
100000
);
it('returns latest buildx GitHub release', async () => {
const release = await Install.getRelease('latest');
expect(release).not.toBeNull();
expect(release?.tag_name).not.toEqual('');
});
});
describe('build', () => {
@@ -105,30 +110,72 @@ describe('build', () => {
}, 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 buildx GitHub release', async () => {
const release = await Install.getRelease('latest');
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 buildx GitHub release', async () => {
const release = await Install.getRelease('v0.10.1');
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.2.2 buildx GitHub release', async () => {
const release = await Install.getRelease('v0.2.2');
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(17671545);
expect(release?.tag_name).toEqual('v0.2.2');
expect(release?.html_url).toEqual('https://github.com/docker/buildx/releases/tag/v0.2.2');
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 () => {
await expect(Install.getRelease('foo')).rejects.toThrow(new Error('Cannot find Buildx release foo in https://raw.githubusercontent.com/docker/actions-toolkit/main/.github/buildx-releases.json'));
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

@@ -15,7 +15,7 @@
*/
import path from 'path';
import {jest, describe, expect, test} from '@jest/globals';
import {jest, describe, expect, test, beforeEach, afterEach} from '@jest/globals';
import {Install} from '../../src/docker/install';
import {Docker} from '../../src/docker/docker';
@@ -24,15 +24,27 @@ import {Docker} from '../../src/docker/docker';
const tmpDir = path.join(process.env.TEMP || '/tmp', 'docker-install-jest');
describe('install', () => {
jest.retryTimes(2, {logErrorsBeforeRetry: true});
const originalEnv = process.env;
beforeEach(() => {
jest.resetModules();
process.env = {
...originalEnv,
SIGN_QEMU_BINARY: '1',
COLIMA_START_ARGS: '--cpu 4 --memory 8 --disk 32 --dns 1.1.1.1 --dns 8.8.8.8 --dns-host example.com=1.2.3.4'
};
});
afterEach(() => {
process.env = originalEnv;
});
// prettier-ignore
test.each(['v23.0.0'])(
test.each(['v24.0.4'])(
'install docker %s', async (version) => {
await expect((async () => {
const install = new Install({
version: version,
runDir: tmpDir,
contextName: 'foo'
contextName: 'foo',
daemonConfig: `{"debug":true,"features":{"containerd-snapshotter":true}}`
});
await install.download();
await install.install();
@@ -40,5 +52,5 @@ describe('install', () => {
await Docker.printInfo();
await install.tearDown();
})()).resolves.not.toThrow();
});
}, 600000);
});

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,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

@@ -111,7 +111,10 @@ describe('actionsRuntimeToken', () => {
}).toThrow();
});
it('fixture', async () => {
process.env.ACTIONS_RUNTIME_TOKEN = fs.readFileSync(path.join(__dirname, 'fixtures', 'runtimeToken.txt')).toString().trim();
process.env.ACTIONS_RUNTIME_TOKEN = fs
.readFileSync(path.join(__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');
@@ -139,7 +142,10 @@ describe('printActionsRuntimeTokenACs', () => {
});
it('refs/heads/master', async () => {
const infoSpy = jest.spyOn(core, 'info');
process.env.ACTIONS_RUNTIME_TOKEN = fs.readFileSync(path.join(__dirname, 'fixtures', 'runtimeToken.txt')).toString().trim();
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`);

View File

@@ -232,6 +232,41 @@ describe('isValidRef', () => {
});
});
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);
});
});
// See: https://github.com/actions/toolkit/blob/a1b068ec31a042ff1e10a522d8fdf0b8869d53ca/packages/core/src/core.ts#L89
function getInputName(name: string): string {
return `INPUT_${name.replace(/ /g, '_').toUpperCase()}`;

View File

@@ -14,9 +14,9 @@
# See the License for the specific language governing permissions and
# limitations under the License.
ARG NODE_VERSION=16
ARG DOCKER_VERSION=20.10.22
ARG BUILDX_VERSION=0.10.0
ARG NODE_VERSION=20
ARG DOCKER_VERSION=24.0.5
ARG BUILDX_VERSION=0.11.2
FROM node:${NODE_VERSION}-alpine AS base
RUN apk add --no-cache cpio findutils git

View File

@@ -30,7 +30,7 @@
],
"author": "Docker Inc.",
"license": "Apache-2.0",
"packageManager": "yarn@3.3.1",
"packageManager": "yarn@3.6.3",
"main": "lib/index.js",
"types": "lib/index.d.ts",
"directories": {
@@ -45,39 +45,41 @@
"registry": "https://registry.npmjs.org/"
},
"dependencies": {
"@actions/cache": "^3.2.2",
"@actions/core": "^1.10.0",
"@actions/exec": "^1.1.1",
"@actions/github": "^5.1.1",
"@actions/http-client": "^2.0.1",
"@actions/io": "^1.1.2",
"@actions/http-client": "^2.1.1",
"@actions/io": "^1.1.3",
"@actions/tool-cache": "^2.0.1",
"@octokit/plugin-rest-endpoint-methods": "^7.2.1",
"@octokit/plugin-rest-endpoint-methods": "^7.2.3",
"async-retry": "^1.3.3",
"csv-parse": "^5.4.0",
"handlebars": "^4.7.7",
"csv-parse": "^5.5.0",
"handlebars": "^4.7.8",
"js-yaml": "^4.1.0",
"jwt-decode": "^3.1.2",
"semver": "^7.5.1",
"semver": "^7.5.4",
"tmp": "^0.2.1"
},
"devDependencies": {
"@types/csv-parse": "^1.2.2",
"@types/node": "^16.18.21",
"@types/semver": "^7.5.0",
"@types/js-yaml": "^4.0.5",
"@types/node": "^20.5.9",
"@types/semver": "^7.5.1",
"@types/tmp": "^0.2.3",
"@typescript-eslint/eslint-plugin": "^5.56.0",
"@typescript-eslint/parser": "^5.56.0",
"cpy-cli": "^4.2.0",
"dotenv": "^16.0.3",
"eslint": "^8.36.0",
"eslint-config-prettier": "^8.8.0",
"eslint-plugin-import": "^2.27.5",
"eslint-plugin-jest": "^27.2.1",
"eslint-plugin-prettier": "^4.2.1",
"jest": "^29.5.0",
"prettier": "^2.8.7",
"rimraf": "^4.4.1",
"ts-jest": "^29.0.5",
"@typescript-eslint/eslint-plugin": "^6.6.0",
"@typescript-eslint/parser": "^6.6.0",
"dotenv": "^16.3.1",
"eslint": "^8.48.0",
"eslint-config-prettier": "^9.0.0",
"eslint-plugin-import": "^2.28.1",
"eslint-plugin-jest": "^27.2.3",
"eslint-plugin-prettier": "^5.0.0",
"jest": "^29.6.4",
"prettier": "^3.0.3",
"rimraf": "^5.0.1",
"ts-jest": "^29.1.1",
"ts-node": "^10.9.1",
"typescript": "^4.9.5"
"typescript": "^5.2.2"
}
}

View File

@@ -19,7 +19,7 @@ import * as core from '@actions/core';
import {Buildx} from './buildx';
import {Exec} from '../exec';
import {BuilderInfo, NodeInfo} from '../types/builder';
import {BuilderInfo, GCPolicy, NodeInfo} from '../types/builder';
export interface BuilderOpts {
buildx?: Buildx;
@@ -72,55 +72,73 @@ export class Builder {
const builder: BuilderInfo = {
nodes: []
};
let node: NodeInfo = {};
let parsingType: string | undefined;
let currentNode: NodeInfo = {};
let currentGCPolicy: GCPolicy | undefined;
for (const line of data.trim().split(`\n`)) {
const [key, ...rest] = line.split(':');
const lkey = key.toLowerCase();
const value = rest.map(v => v.trim()).join(':');
if (key.length == 0 || value.length == 0) {
if (key.length == 0) {
continue;
}
switch (key.toLowerCase()) {
case 'name': {
switch (true) {
case lkey == 'name': {
parsingType = undefined;
if (builder.name == undefined) {
builder.name = value;
} else {
if (Object.keys(node).length > 0) {
builder.nodes.push(node);
node = {};
if (currentGCPolicy && currentNode.gcPolicy) {
currentNode.gcPolicy.push(currentGCPolicy);
currentGCPolicy = undefined;
}
node.name = value;
if (currentNode.name) {
builder.nodes.push(currentNode);
}
currentNode = {name: value};
}
break;
}
case 'driver': {
case lkey == 'driver': {
parsingType = undefined;
builder.driver = value;
break;
}
case 'last activity': {
case lkey == 'last activity': {
parsingType = undefined;
builder.lastActivity = new Date(value);
break;
}
case 'endpoint': {
node.endpoint = value;
case lkey == 'endpoint': {
parsingType = undefined;
currentNode.endpoint = value;
break;
}
case 'driver options': {
node['driver-opts'] = (value.match(/([a-zA-Z0-9_.]+)="([^"]*)"/g) || []).map(v => v.replace(/^(.*)="(.*)"$/g, '$1=$2'));
case lkey == 'driver options': {
parsingType = undefined;
currentNode['driver-opts'] = (value.match(/([a-zA-Z0-9_.]+)="([^"]*)"/g) || []).map(v => v.replace(/^(.*)="(.*)"$/g, '$1=$2'));
break;
}
case 'status': {
node.status = value;
case lkey == 'status': {
parsingType = undefined;
currentNode.status = value;
break;
}
case 'flags': {
node['buildkitd-flags'] = value;
case lkey == 'flags': {
parsingType = undefined;
currentNode['buildkitd-flags'] = value;
break;
}
case 'buildkit': {
node.buildkit = value;
case lkey == 'buildkit': {
parsingType = undefined;
currentNode.buildkit = value;
break;
}
case 'platforms': {
case lkey == 'platforms': {
parsingType = undefined;
if (!value) {
break;
}
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
@@ -134,13 +152,63 @@ export class Builder {
// otherwise set all platforms available
platforms = value.split(', ');
}
node.platforms = platforms.join(',');
currentNode.platforms = platforms.join(',');
break;
}
case lkey == 'labels': {
parsingType = 'label';
currentNode.labels = {};
break;
}
case lkey.startsWith('gc policy rule#'): {
parsingType = 'gcpolicy';
if (currentNode.gcPolicy && currentGCPolicy) {
currentNode.gcPolicy.push(currentGCPolicy);
currentGCPolicy = undefined;
}
break;
}
default: {
switch (parsingType || '') {
case 'label': {
currentNode.labels = currentNode.labels || {};
currentNode.labels[key.trim()] = value;
break;
}
case 'gcpolicy': {
currentNode.gcPolicy = currentNode.gcPolicy || [];
currentGCPolicy = currentGCPolicy || {};
switch (lkey.trim()) {
case 'all': {
currentGCPolicy.all = value == 'true';
break;
}
case 'filters': {
if (value) {
currentGCPolicy.filter = value.split(',');
}
break;
}
case 'keep duration': {
currentGCPolicy.keepDuration = value;
break;
}
case 'keep bytes': {
currentGCPolicy.keepBytes = value;
break;
}
}
break;
}
}
}
}
}
if (Object.keys(node).length > 0) {
builder.nodes.push(node);
if (currentGCPolicy && currentNode.gcPolicy) {
currentNode.gcPolicy.push(currentGCPolicy);
}
if (currentNode.name) {
builder.nodes.push(currentNode);
}
return builder;
}

View File

@@ -14,12 +14,14 @@
* limitations under the License.
*/
import crypto from 'crypto';
import fs from 'fs';
import os from 'os';
import path from 'path';
import * as core from '@actions/core';
import * as httpm from '@actions/http-client';
import * as tc from '@actions/tool-cache';
import * as cache from '@actions/cache';
import * as semver from 'semver';
import * as util from 'util';
@@ -28,7 +30,9 @@ import {Context} from '../context';
import {Exec} from '../exec';
import {Docker} from '../docker/docker';
import {Git} from '../git';
import {Util} from '../util';
import {DownloadVersion} from '../types/buildx';
import {GitHubRelease} from '../types/github';
export interface InstallOpts {
@@ -42,70 +46,90 @@ export class Install {
this._standalone = opts?.standalone;
}
public async download(version: string): Promise<string> {
/*
* Download buildx binary from GitHub release
* @param version semver version or latest
* @returns path to the buildx binary
*/
public async download(v: string): Promise<string> {
const version: DownloadVersion = await Install.getDownloadVersion(v);
core.debug(`Install.download version: ${version.version}`);
const release: GitHubRelease = await Install.getRelease(version);
const fversion = release.tag_name.replace(/^v+|v+$/g, '');
core.debug(`Install.download version: ${fversion}`);
core.debug(`Install.download release tag name: ${release.tag_name}`);
let toolPath: string;
toolPath = tc.find('buildx', fversion, this.platform());
if (!toolPath) {
const c = semver.clean(fversion) || '';
if (!semver.valid(c)) {
throw new Error(`Invalid Buildx version "${fversion}".`);
}
toolPath = await this.fetchBinary(fversion);
const vspec = await this.vspec(release.tag_name);
core.debug(`Install.download vspec: ${vspec}`);
const c = semver.clean(vspec) || '';
if (!semver.valid(c)) {
throw new Error(`Invalid Buildx version "${vspec}".`);
}
core.debug(`Install.download toolPath: ${toolPath}`);
return toolPath;
const installCache = new InstallCache(version.key != 'official' ? `buildx-dl-bin-${version.key}` : 'buildx-dl-bin', vspec);
const cacheFoundPath = await installCache.find();
if (cacheFoundPath) {
core.info(`Buildx binary found in ${cacheFoundPath}`);
return cacheFoundPath;
}
const downloadURL = util.format(version.downloadURL, vspec, this.filename(vspec));
core.info(`Downloading ${downloadURL}`);
const htcDownloadPath = await tc.downloadTool(downloadURL);
core.debug(`Install.download htcDownloadPath: ${htcDownloadPath}`);
const cacheSavePath = await installCache.save(htcDownloadPath);
core.info(`Cached to ${cacheSavePath}`);
return cacheSavePath;
}
/*
* Build buildx binary from source
* @param gitContext git repo context
* @returns path to the buildx binary
*/
public async build(gitContext: string): Promise<string> {
// eslint-disable-next-line prefer-const
let [repo, ref] = gitContext.split('#');
if (ref.length == 0) {
ref = 'master';
const vspec = await this.vspec(gitContext);
core.debug(`Install.build vspec: ${vspec}`);
const installCache = new InstallCache('buildx-build-bin', vspec);
const cacheFoundPath = await installCache.find();
if (cacheFoundPath) {
core.info(`Buildx binary found in ${cacheFoundPath}`);
return cacheFoundPath;
}
let vspec: string;
// TODO: include full ref as fingerprint. Use commit sha as best-effort in the meantime.
if (ref.match(/^[0-9a-fA-F]{40}$/)) {
vspec = ref;
} else {
vspec = await Git.remoteSha(repo, ref, process.env.GIT_AUTH_TOKEN);
}
core.debug(`Install.build: tool version spec ${vspec}`);
const outputDir = path.join(Context.tmpDir(), 'buildx-build-cache');
const buildCmd = await this.buildCommand(gitContext, outputDir);
let toolPath: string;
toolPath = tc.find('buildx', vspec);
if (!toolPath) {
const outputDir = path.join(Context.tmpDir(), 'build-cache');
const buildCmd = await this.buildCommand(gitContext, outputDir);
toolPath = await Exec.getExecOutput(buildCmd.command, buildCmd.args, {
ignoreReturnCode: true
}).then(res => {
if (res.stderr.length > 0 && res.exitCode != 0) {
throw new Error(`build failed with: ${res.stderr.match(/(.*)\s*$/)?.[0]?.trim() ?? 'unknown error'}`);
}
return tc.cacheFile(`${outputDir}/buildx`, os.platform() == 'win32' ? 'docker-buildx.exe' : 'docker-buildx', 'buildx', vspec, this.platform());
});
}
const buildBinPath = await Exec.getExecOutput(buildCmd.command, buildCmd.args, {
ignoreReturnCode: true
}).then(res => {
if (res.stderr.length > 0 && res.exitCode != 0) {
throw new Error(`build failed with: ${res.stderr.match(/(.*)\s*$/)?.[0]?.trim() ?? 'unknown error'}`);
}
return `${outputDir}/buildx`;
});
return toolPath;
const cacheSavePath = await installCache.save(buildBinPath);
core.info(`Cached to ${cacheSavePath}`);
return cacheSavePath;
}
public async installStandalone(toolPath: string, dest?: string): Promise<string> {
public async installStandalone(binPath: string, dest?: string): Promise<string> {
core.info('Standalone mode');
dest = dest || Context.tmpDir();
const toolBinPath = path.join(toolPath, os.platform() == 'win32' ? 'docker-buildx.exe' : 'docker-buildx');
const binDir = path.join(dest, 'bin');
const binDir = path.join(dest, 'buildx-bin-standalone');
if (!fs.existsSync(binDir)) {
fs.mkdirSync(binDir, {recursive: true});
}
const filename: string = os.platform() == 'win32' ? 'buildx.exe' : 'buildx';
const buildxPath: string = path.join(binDir, filename);
fs.copyFileSync(toolBinPath, buildxPath);
const binName: string = os.platform() == 'win32' ? 'buildx.exe' : 'buildx';
const buildxPath: string = path.join(binDir, binName);
fs.copyFileSync(binPath, buildxPath);
core.info('Fixing perms');
fs.chmodSync(buildxPath, '0755');
@@ -117,17 +141,17 @@ export class Install {
return buildxPath;
}
public async installPlugin(toolPath: string, dest?: string): Promise<string> {
public async installPlugin(binPath: string, dest?: string): Promise<string> {
core.info('Docker plugin mode');
dest = dest || Docker.configDir;
const toolBinPath = path.join(toolPath, os.platform() == 'win32' ? 'docker-buildx.exe' : 'docker-buildx');
const pluginsDir: string = path.join(dest, 'cli-plugins');
if (!fs.existsSync(pluginsDir)) {
fs.mkdirSync(pluginsDir, {recursive: true});
}
const filename: string = os.platform() == 'win32' ? 'docker-buildx.exe' : 'docker-buildx';
const pluginPath: string = path.join(pluginsDir, filename);
fs.copyFileSync(toolBinPath, pluginPath);
const binName: string = os.platform() == 'win32' ? 'docker-buildx.exe' : 'docker-buildx';
const pluginPath: string = path.join(pluginsDir, binName);
fs.copyFileSync(binPath, pluginPath);
core.info('Fixing perms');
fs.chmodSync(pluginPath, '0755');
@@ -157,7 +181,7 @@ export class Install {
throw new Error(`Neither buildx standalone or plugin have been found to build from ref ${gitContext}`);
}
const args = ['build', '--target', 'binaries', '--build-arg', 'BUILDKIT_CONTEXT_KEEP_GIT_DIR=1', '--output', `type=local,dest=${outputDir}`];
const args = ['build', '--target', 'binaries', '--platform', 'local', '--build-arg', 'BUILDKIT_CONTEXT_KEEP_GIT_DIR=1', '--output', `type=local,dest=${outputDir}`];
if (process.env.GIT_AUTH_TOKEN) {
args.push('--secret', 'id=GIT_AUTH_TOKEN');
}
@@ -173,21 +197,6 @@ export class Install {
return standalone;
}
private async fetchBinary(version: string): Promise<string> {
const targetFile: string = os.platform() == 'win32' ? 'docker-buildx.exe' : 'docker-buildx';
const downloadURL = util.format('https://github.com/docker/buildx/releases/download/v%s/%s', version, this.filename(version));
core.info(`Downloading ${downloadURL}`);
const downloadPath = await tc.downloadTool(downloadURL);
core.debug(`Install.fetchBinary downloadPath: ${downloadPath}`);
return await tc.cacheFile(downloadPath, targetFile, 'buildx', version, this.platform());
}
private platform(): string {
// eslint-disable-next-line @typescript-eslint/no-explicit-any
const arm_version = (process.config.variables as any).arm_version;
return `${os.platform()}-${os.arch()}${arm_version ? 'v' + arm_version : ''}`;
}
private filename(version: string): string {
let arch: string;
switch (os.arch()) {
@@ -215,19 +224,151 @@ export class Install {
return util.format('buildx-v%s.%s-%s%s', version, platform, arch, ext);
}
public static async getRelease(version: string): Promise<GitHubRelease> {
const url = `https://raw.githubusercontent.com/docker/actions-toolkit/main/.github/buildx-releases.json`;
/*
* Get version spec (fingerprint) for cache key. If versionOrRef is a valid
* Git context, then return the SHA of the ref along the repo and owner and
* create a hash of it. Otherwise, return the versionOrRef (semver) as is
* without the 'v' prefix.
*/
private async vspec(versionOrRef: string): Promise<string> {
if (!Util.isValidRef(versionOrRef)) {
const v = versionOrRef.replace(/^v+|v+$/g, '');
core.info(`Use ${v} version spec cache key for ${versionOrRef}`);
return v;
}
// eslint-disable-next-line prefer-const
let [baseURL, ref] = versionOrRef.split('#');
if (ref.length == 0) {
ref = 'master';
}
let sha: string;
if (ref.match(/^[0-9a-fA-F]{40}$/)) {
sha = ref;
} else {
sha = await Git.remoteSha(baseURL, ref, process.env.GIT_AUTH_TOKEN);
}
const [owner, repo] = baseURL.substring('https://github.com/'.length).split('/');
const key = `${owner}/${Util.trimSuffix(repo, '.git')}/${sha}`;
const hash = crypto.createHash('sha256').update(key).digest('hex');
core.info(`Use ${hash} version spec cache key for ${key}`);
return hash;
}
public static async getDownloadVersion(v: string): Promise<DownloadVersion> {
let [repoKey, version] = v.split(':');
if (!version) {
version = repoKey;
repoKey = 'official';
}
switch (repoKey) {
case 'official': {
return {
key: repoKey,
version: version,
downloadURL: 'https://github.com/docker/buildx/releases/download/v%s/%s',
releasesURL: 'https://raw.githubusercontent.com/docker/actions-toolkit/main/.github/buildx-releases.json'
};
}
case 'lab': {
return {
key: repoKey,
version: version,
downloadURL: 'https://github.com/docker/buildx-desktop/releases/download/v%s/%s',
releasesURL: 'https://raw.githubusercontent.com/docker/actions-toolkit/main/.github/buildx-lab-releases.json'
};
}
default: {
throw new Error(`Cannot find buildx version for ${v}`);
}
}
}
public static async getRelease(version: DownloadVersion): Promise<GitHubRelease> {
const http: httpm.HttpClient = new httpm.HttpClient('docker-actions-toolkit');
const resp: httpm.HttpClientResponse = await http.get(url);
const resp: httpm.HttpClientResponse = await http.get(version.releasesURL);
const body = await resp.readBody();
const statusCode = resp.message.statusCode || 500;
if (statusCode >= 400) {
throw new Error(`Failed to get Buildx release ${version} from ${url} with status code ${statusCode}: ${body}`);
throw new Error(`Failed to get Buildx releases from ${version.releasesURL} with status code ${statusCode}: ${body}`);
}
const releases = <Record<string, GitHubRelease>>JSON.parse(body);
if (!releases[version]) {
throw new Error(`Cannot find Buildx release ${version} in ${url}`);
if (!releases[version.version]) {
throw new Error(`Cannot find Buildx release ${version.version} in ${version.releasesURL}`);
}
return releases[version];
return releases[version.version];
}
}
class InstallCache {
private readonly htcName: string;
private readonly htcVersion: string;
private readonly ghaCacheKey: string;
private readonly cacheDir: string;
private readonly cacheFile: string;
private readonly cachePath: string;
constructor(htcName: string, htcVersion: string) {
this.htcName = htcName;
this.htcVersion = htcVersion;
this.ghaCacheKey = util.format('%s-%s-%s', this.htcName, this.htcVersion, this.platform());
this.cacheDir = path.join(Buildx.configDir, '.bin', htcVersion, this.platform());
this.cacheFile = os.platform() == 'win32' ? 'docker-buildx.exe' : 'docker-buildx';
this.cachePath = path.join(this.cacheDir, this.cacheFile);
if (!fs.existsSync(this.cacheDir)) {
fs.mkdirSync(this.cacheDir, {recursive: true});
}
}
public async save(file: string): Promise<string> {
core.debug(`InstallCache.save ${file}`);
const cachePath = this.copyToCache(file);
const htcPath = await tc.cacheDir(this.cacheDir, this.htcName, this.htcVersion, this.platform());
core.debug(`InstallCache.save cached to hosted tool cache ${htcPath}`);
if (cache.isFeatureAvailable()) {
core.debug(`InstallCache.save caching ${this.ghaCacheKey} to GitHub Actions cache`);
await cache.saveCache([this.cacheDir], this.ghaCacheKey);
}
return cachePath;
}
public async find(): Promise<string> {
let htcPath = tc.find(this.htcName, this.htcVersion, this.platform());
if (htcPath) {
core.info(`Restored from hosted tool cache ${htcPath}`);
return this.copyToCache(`${htcPath}/${this.cacheFile}`);
}
if (cache.isFeatureAvailable()) {
core.debug(`GitHub Actions cache feature available`);
if (await cache.restoreCache([this.cacheDir], this.ghaCacheKey)) {
core.info(`Restored ${this.ghaCacheKey} from GitHub Actions cache`);
htcPath = await tc.cacheDir(this.cacheDir, this.htcName, this.htcVersion, this.platform());
core.info(`Restored to hosted tool cache ${htcPath}`);
return this.copyToCache(`${htcPath}/${this.cacheFile}`);
}
} else {
core.info(`GitHub Actions cache feature not available`);
}
return '';
}
private copyToCache(file: string): string {
core.debug(`Copying ${file} to ${this.cachePath}`);
fs.copyFileSync(file, this.cachePath);
fs.chmodSync(this.cachePath, '0755');
return this.cachePath;
}
private platform(): string {
// eslint-disable-next-line @typescript-eslint/no-explicit-any
const arm_version = (process.config.variables as any).arm_version;
return `${os.platform()}-${os.arch()}${arm_version ? 'v' + arm_version : ''}`;
}
}

View File

@@ -17,10 +17,6 @@
import fs from 'fs';
import {Context} from '../context';
export const setupDockerLinuxSh = (): string => {
return get('docker-setup-linux.sh', setupDockerLinuxShData, '0755');
};
export const setupDockerWinPs1 = (): string => {
return get('docker-setup-win.ps1', setupDockerWinPs1Data);
};
@@ -45,42 +41,6 @@ const get = (filename: string, data: string, mode?: string): string => {
return assetPath;
};
export const setupDockerLinuxShData = `
#!/usr/bin/env bash
set -eu
: "\${TOOLDIR=}"
: "\${RUNDIR=}"
: "\${DOCKER_HOST=}"
export PATH="$TOOLDIR::$PATH"
if [ -z "$DOCKER_HOST" ]; then
echo >&2 'error: DOCKER_HOST required'
false
fi
if ! command -v dockerd &> /dev/null; then
echo >&2 'error: dockerd missing from PATH'
false
fi
mkdir -p "$RUNDIR"
(
echo "Starting dockerd"
set -x
exec dockerd \\
--host="$DOCKER_HOST" \\
--exec-root="$RUNDIR/execroot" \\
--data-root="$RUNDIR/data" \\
--pidfile="$RUNDIR/docker.pid" \\
--userland-proxy=false \\
2>&1 | tee "$RUNDIR/dockerd.log"
) &
`;
export const setupDockerWinPs1Data = `
[CmdletBinding()]
param(
@@ -91,7 +51,10 @@ param(
[string]$RunDir,
[Parameter(Mandatory = $true)]
[string]$DockerHost)
[string]$DockerHost,
[Parameter(Mandatory = $false)]
[string]$DaemonConfig)
$pwver = (Get-ItemProperty -Path HKLM:\\SOFTWARE\\Microsoft\\PowerShell\\3\\PowerShellEngine -Name 'PowerShellVersion').PowerShellVersion
Write-Host "PowerShell version: $pwver"
@@ -119,6 +82,12 @@ if (Get-Service docker -ErrorAction SilentlyContinue) {
$env:DOCKER_HOST = $DockerHost
Write-Host "DOCKER_HOST: $env:DOCKER_HOST"
if ($DaemonConfig) {
Write-Host "Writing Docker daemon config"
New-Item -ItemType Directory -Force -Path "$env:ProgramData\\Docker\\config"
$DaemonConfig | Out-File -FilePath "$env:ProgramData\\Docker\\config\\daemon.json"
}
Write-Host "Creating service"
New-Item -ItemType Directory "$RunDir\\moby-root" -ErrorAction SilentlyContinue | Out-Null
New-Item -ItemType Directory "$RunDir\\moby-exec" -ErrorAction SilentlyContinue | Out-Null
@@ -245,7 +214,7 @@ forwardAgent: false
#
# Colima default behaviour: buildkit enabled
# Default: {}
docker: {}
{{daemonConfig}}
# Virtual Machine type (qemu, vz)
# NOTE: this is macOS 13 only. For Linux and macOS <13.0, qemu is always used.
@@ -303,7 +272,7 @@ provision:
script: |
mkdir -p /tmp/docker-bins
cd /tmp/docker-bins
wget -qO- "https://download.docker.com/linux/static/{{dockerChannel}}/{{hostArch}}/docker-{{dockerVersion}}.tgz" | tar xvz --strip 1
wget -qO- "https://download.docker.com/linux/static/{{dockerBinChannel}}/{{dockerBinArch}}/docker-{{dockerBinVersion}}.tgz" | tar xvz --strip 1
mv -f /tmp/docker-bins/* /usr/bin/
# Modify ~/.ssh/config automatically to include a SSH config for the virtual machine.
@@ -336,3 +305,14 @@ mounts: []
# Default: {}
env: {}
`;
export const qemuEntitlements = `
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>com.apple.security.hypervisor</key>
<true/>
</dict>
</plist>
`;

View File

@@ -16,9 +16,11 @@
import * as child_process from 'child_process';
import fs from 'fs';
import fsp from 'fs/promises';
import os from 'os';
import path from 'path';
import retry from 'async-retry';
import yaml from 'js-yaml';
import * as handlebars from 'handlebars';
import * as util from 'util';
import * as core from '@actions/core';
@@ -29,7 +31,7 @@ import * as tc from '@actions/tool-cache';
import {Context} from '../context';
import {Exec} from '../exec';
import {Util} from '../util';
import {colimaYamlData, dockerServiceLogsPs1, setupDockerLinuxSh, setupDockerWinPs1} from './assets';
import {colimaYamlData, dockerServiceLogsPs1, qemuEntitlements, setupDockerWinPs1} from './assets';
import {GitHubRelease} from '../types/github';
export interface InstallOpts {
@@ -37,6 +39,7 @@ export interface InstallOpts {
channel?: string;
runDir: string;
contextName?: string;
daemonConfig?: string;
}
export class Install {
@@ -44,6 +47,7 @@ export class Install {
private readonly version: string;
private readonly channel: string;
private readonly contextName: string;
private readonly daemonConfig?: string;
private _version: string | undefined;
private _toolDir: string | undefined;
@@ -52,6 +56,7 @@ export class Install {
this.version = opts.version || 'latest';
this.channel = opts.channel || 'stable';
this.contextName = opts.contextName || 'setup-docker-action';
this.daemonConfig = opts.daemonConfig;
}
get toolDir(): string {
@@ -137,16 +142,36 @@ export class Install {
}
await core.group('Creating colima config', async () => {
let colimaDaemonConfig = {};
if (this.daemonConfig) {
colimaDaemonConfig = JSON.parse(this.daemonConfig);
}
const colimaCfg = handlebars.compile(colimaYamlData)({
hostArch: Install.platformArch(),
dockerVersion: this._version,
dockerChannel: this.channel
daemonConfig: yaml.dump(yaml.load(JSON.stringify({docker: colimaDaemonConfig}))),
dockerBinVersion: this._version,
dockerBinChannel: this.channel,
dockerBinArch: Install.platformArch()
});
core.info(`Writing colima config to ${path.join(colimaDir, 'colima.yaml')}`);
fs.writeFileSync(path.join(colimaDir, 'colima.yaml'), colimaCfg);
core.info(colimaCfg);
});
const qemuArch = await Install.qemuArch();
await core.group('QEMU version', async () => {
await Exec.exec(`qemu-system-${qemuArch} --version`);
});
// https://github.com/abiosoft/colima/issues/786#issuecomment-1693629650
if (process.env.SIGN_QEMU_BINARY === '1') {
await core.group('Signing QEMU binary with entitlements', async () => {
const qemuEntitlementsFile = path.join(Context.tmpDir(), 'qemu-entitlements.xml');
core.info(`Writing entitlements to ${qemuEntitlementsFile}`);
fs.writeFileSync(qemuEntitlementsFile, qemuEntitlements);
await Exec.exec(`codesign --sign - --entitlements ${qemuEntitlementsFile} --force /usr/local/bin/qemu-system-${qemuArch}`);
});
}
// colima is already started on the runner so env var added in download
// method is not expanded to the running process.
const envs = Object.assign({}, process.env, {
@@ -154,8 +179,34 @@ export class Install {
}) as {
[key: string]: string;
};
await core.group('Starting colima', async () => {
await Exec.exec('colima', ['start', '--very-verbose'], {env: envs});
const colimaStartArgs = ['start', '--very-verbose'];
if (process.env.COLIMA_START_ARGS) {
colimaStartArgs.push(process.env.COLIMA_START_ARGS);
}
try {
await Exec.exec(`colima ${colimaStartArgs.join(' ')}`, [], {env: envs});
} catch (e) {
const limaColimaDir = path.join(os.homedir(), '.lima', 'colima');
fsp
.readdir(limaColimaDir)
.then(files => {
files
.filter(f => path.extname(f) === '.log')
.forEach(f => {
const logfile = path.join(limaColimaDir, f);
const logcontent = fs.readFileSync(logfile, {encoding: 'utf8'}).trim();
if (logcontent.length > 0) {
core.info(`### ${logfile}:\n${logcontent}`);
}
});
})
.catch(() => {
// ignore
});
throw e;
}
});
await core.group('Create Docker context', async () => {
@@ -168,46 +219,72 @@ export class Install {
const dockerHost = `unix://${path.join(this.runDir, 'docker.sock')}`;
await io.mkdirP(this.runDir);
const daemonConfigPath = path.join(this.runDir, 'daemon.json');
await fs.writeFileSync(daemonConfigPath, '{}');
let daemonConfig = undefined;
const daemonConfigDefaultPath = '/etc/docker/daemon.json';
if (fs.existsSync(daemonConfigDefaultPath)) {
await core.group('Default Docker daemon config found', async () => {
core.info(JSON.stringify(JSON.parse(fs.readFileSync(daemonConfigDefaultPath, {encoding: 'utf8'})), null, 2));
});
daemonConfig = JSON.parse(fs.readFileSync(daemonConfigDefaultPath, {encoding: 'utf8'}));
}
if (this.daemonConfig) {
daemonConfig = Object.assign(daemonConfig || {}, JSON.parse(this.daemonConfig));
}
if (daemonConfig) {
const daemonConfigStr = JSON.stringify(daemonConfig, null, 2);
await core.group('Writing Docker daemon config', async () => {
fs.writeFileSync(daemonConfigPath, daemonConfigStr);
core.info(daemonConfigStr);
});
}
await core.group('Start Docker daemon', async () => {
const bashPath: string = await io.which('bash', true);
const proc = await child_process.spawn(`sudo -E ${bashPath} ${setupDockerLinuxSh()}`, [], {
detached: true,
shell: true,
stdio: ['ignore', process.stdout, process.stderr],
env: Object.assign({}, process.env, {
TOOLDIR: this.toolDir,
RUNDIR: this.runDir,
DOCKER_HOST: dockerHost
}) as {
[key: string]: string;
const cmd = `${this.toolDir}/dockerd --host="${dockerHost}" --config-file="${daemonConfigPath}" --exec-root="${this.runDir}/execroot" --data-root="${this.runDir}/data" --pidfile="${this.runDir}/docker.pid" --userland-proxy=false`;
core.info(`[command] ${cmd}`); // https://github.com/actions/toolkit/blob/3d652d3133965f63309e4b2e1c8852cdbdcb3833/packages/exec/src/toolrunner.ts#L47
const proc = await child_process.spawn(
// We can't use Exec.exec here because we need to detach the process to
// avoid killing it when the action finishes running. Even if detached,
// we also need to run dockerd in a subshell and unref the process so
// GitHub Action doesn't wait for it to finish.
`sudo -E ${bashPath} << EOF
( ${cmd} 2>&1 | tee "${this.runDir}/dockerd.log" ) &
EOF`,
[],
{
detached: true,
shell: true,
stdio: ['ignore', process.stdout, process.stderr]
}
});
);
proc.unref();
await Util.sleep(3);
const retries = 10;
await retry(
async bail => {
await Exec.getExecOutput(`docker version`, undefined, {
ignoreReturnCode: true,
silent: true,
env: Object.assign({}, process.env, {
DOCKER_HOST: dockerHost
}) as {
[key: string]: string;
}
})
.then(res => {
if (res.stderr.length > 0 && res.exitCode != 0) {
bail(new Error(res.stderr));
return false;
try {
await Exec.getExecOutput(`docker version`, undefined, {
silent: true,
env: Object.assign({}, process.env, {
DOCKER_HOST: dockerHost
}) as {
[key: string]: string;
}
return res.exitCode == 0;
})
.catch(error => {
bail(error);
return false;
});
} catch (e) {
bail(e);
}
},
{
retries: 5
retries: retries,
minTimeout: 1000,
onRetry: (err, i) => {
core.info(`${err}. Retrying (${i}/${retries})...`);
}
}
);
core.info(`Docker daemon started started successfully`);
@@ -222,11 +299,32 @@ export class Install {
private async installWindows(): Promise<void> {
const dockerHost = 'npipe:////./pipe/setup_docker_action';
let daemonConfig = undefined;
const daemonConfigPath = path.join(this.runDir, 'daemon.json');
if (fs.existsSync(daemonConfigPath)) {
await core.group('Default Docker daemon config found', async () => {
core.info(JSON.stringify(JSON.parse(fs.readFileSync(daemonConfigPath, {encoding: 'utf8'})), null, 2));
});
daemonConfig = JSON.parse(fs.readFileSync(daemonConfigPath, {encoding: 'utf8'}));
}
if (this.daemonConfig) {
daemonConfig = Object.assign(daemonConfig || {}, JSON.parse(this.daemonConfig));
}
let daemonConfigStr = '{}';
if (daemonConfig) {
daemonConfigStr = JSON.stringify(daemonConfig, null, 2);
await core.group('Docker daemon config', async () => {
core.info(daemonConfigStr);
});
}
await core.group('Install Docker daemon service', async () => {
const setupCmd = await Util.powershellCommand(setupDockerWinPs1(), {
ToolDir: this.toolDir,
RunDir: this.runDir,
DockerHost: dockerHost
DockerHost: dockerHost,
DaemonConfig: daemonConfigStr
});
await Exec.exec(setupCmd.command, setupCmd.args);
const logCmd = await Util.powershellCommand(dockerServiceLogsPs1());
@@ -282,13 +380,17 @@ export class Install {
core.info(fs.readFileSync(path.join(this.runDir, 'dockerd.log'), {encoding: 'utf8'}));
});
await core.group('Stopping Docker daemon', async () => {
await Exec.exec('sudo', ['kill', fs.readFileSync(path.join(this.runDir, 'docker.pid')).toString().trim()]);
await Exec.exec('sudo', ['kill', '-s', 'SIGTERM', fs.readFileSync(path.join(this.runDir, 'docker.pid')).toString().trim()]);
await Util.sleep(5);
});
await core.group('Removing Docker context', async () => {
await Exec.exec('docker', ['context', 'rm', '-f', this.contextName]);
});
await core.group(`Cleaning up runDir`, async () => {
await Exec.exec('sudo', ['rm', '-rf', this.runDir]);
await Exec.exec('sudo', ['rm', '-rf', this.runDir], {
ignoreReturnCode: true,
failOnStdErr: false
});
});
}
@@ -368,6 +470,20 @@ export class Install {
});
}
private static async qemuArch(): Promise<string> {
switch (os.arch()) {
case 'x64': {
return 'x86_64';
}
case 'arm64': {
return 'aarch64';
}
default: {
return os.arch();
}
}
}
public static async getRelease(version: string): Promise<GitHubRelease> {
const url = `https://raw.githubusercontent.com/docker/actions-toolkit/main/.github/docker-releases.json`;
const http: httpm.HttpClient = new httpm.HttpClient('docker-actions-toolkit');

View File

@@ -32,4 +32,13 @@ export interface Node {
export interface NodeInfo extends Node {
status?: string;
buildkit?: string;
labels?: Record<string, string>;
gcPolicy?: Array<GCPolicy>;
}
export interface GCPolicy {
all?: boolean;
filter?: string[];
keepDuration?: string;
keepBytes?: string;
}

View File

@@ -19,3 +19,10 @@ export interface Cert {
cert?: string;
key?: string;
}
export interface DownloadVersion {
key: string;
version: string;
downloadURL: string;
releasesURL: string;
}

View File

@@ -111,4 +111,30 @@ export class Util {
}
return false;
}
public static trimPrefix(str: string, suffix: string): string {
if (!str || !suffix) {
return str;
}
const index = str.indexOf(suffix);
if (index !== 0) {
return str;
}
return str.substring(suffix.length);
}
public static trimSuffix(str: string, suffix: string): string {
if (!str || !suffix) {
return str;
}
const index = str.lastIndexOf(suffix);
if (index === -1 || index + suffix.length !== str.length) {
return str;
}
return str.substring(0, index);
}
public static sleep(seconds: number) {
return new Promise(resolve => setTimeout(resolve, seconds * 1000));
}
}

View File

@@ -1,8 +1,9 @@
{
"compilerOptions": {
"esModuleInterop": true,
"target": "es6",
"module": "commonjs",
"target": "ES2022",
"module": "nodenext",
"moduleResolution": "nodenext",
"strict": true,
"declaration": true,
"sourceMap": true,

2884
yarn.lock

File diff suppressed because it is too large Load Diff