Compare commits

...

136 Commits

Author SHA1 Message Date
CrazyMax
fcc92b092b Merge pull request #146 from crazy-max/bump-actions-io
Some checks failed
publish / publish (push) Has been cancelled
build(deps): bump @actions/io from 1.1.2 to 1.1.3
2023-08-11 15:03:09 +02:00
CrazyMax
6e043aee71 build(deps): bump @actions/io from 1.1.2 to 1.1.3
Signed-off-by: CrazyMax <crazy-max@users.noreply.github.com>
2023-08-11 13:55:04 +02:00
CrazyMax
7a37a260aa Merge pull request #143 from docker/dependabot/npm_and_yarn/actions/http-client-2.1.1
build(deps): bump @actions/http-client from 2.1.0 to 2.1.1
2023-08-08 09:54:31 +02:00
dependabot[bot]
1534dfad1b build(deps): bump @actions/http-client from 2.1.0 to 2.1.1
Bumps [@actions/http-client](https://github.com/actions/toolkit/tree/HEAD/packages/http-client) from 2.1.0 to 2.1.1.
- [Changelog](https://github.com/actions/toolkit/blob/main/packages/http-client/RELEASES.md)
- [Commits](https://github.com/actions/toolkit/commits/@actions/http-client@2.1.1/packages/http-client)

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

Signed-off-by: dependabot[bot] <support@github.com>
2023-08-08 07:43:54 +00:00
CrazyMax
08e669e7d5 Merge pull request #144 from docker/dependabot/npm_and_yarn/actions/cache-3.2.2
build(deps): bump @actions/cache from 3.2.1 to 3.2.2
2023-08-08 09:43:07 +02:00
dependabot[bot]
83d366eb65 build(deps): bump @actions/cache from 3.2.1 to 3.2.2
Bumps [@actions/cache](https://github.com/actions/toolkit/tree/HEAD/packages/cache) from 3.2.1 to 3.2.2.
- [Changelog](https://github.com/actions/toolkit/blob/main/packages/cache/RELEASES.md)
- [Commits](https://github.com/actions/toolkit/commits/@actions/cache@3.2.2/packages/cache)

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Signed-off-by: dependabot[bot] <support@github.com>
2023-03-15 23:04:20 +00:00
50 changed files with 3242 additions and 1727 deletions

View File

@@ -1,43 +1,289 @@
{
"latest": {
"id": 94659464,
"tag_name": "v0.10.4",
"html_url": "https://github.com/docker/buildx/releases/tag/v0.10.4",
"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.4/buildx-v0.10.4.darwin-amd64",
"https://github.com/docker/buildx/releases/download/v0.10.4/buildx-v0.10.4.darwin-amd64.provenance.json",
"https://github.com/docker/buildx/releases/download/v0.10.4/buildx-v0.10.4.darwin-amd64.sbom.json",
"https://github.com/docker/buildx/releases/download/v0.10.4/buildx-v0.10.4.darwin-arm64",
"https://github.com/docker/buildx/releases/download/v0.10.4/buildx-v0.10.4.darwin-arm64.provenance.json",
"https://github.com/docker/buildx/releases/download/v0.10.4/buildx-v0.10.4.darwin-arm64.sbom.json",
"https://github.com/docker/buildx/releases/download/v0.10.4/buildx-v0.10.4.linux-amd64",
"https://github.com/docker/buildx/releases/download/v0.10.4/buildx-v0.10.4.linux-amd64.provenance.json",
"https://github.com/docker/buildx/releases/download/v0.10.4/buildx-v0.10.4.linux-amd64.sbom.json",
"https://github.com/docker/buildx/releases/download/v0.10.4/buildx-v0.10.4.linux-arm-v6",
"https://github.com/docker/buildx/releases/download/v0.10.4/buildx-v0.10.4.linux-arm-v6.provenance.json",
"https://github.com/docker/buildx/releases/download/v0.10.4/buildx-v0.10.4.linux-arm-v6.sbom.json",
"https://github.com/docker/buildx/releases/download/v0.10.4/buildx-v0.10.4.linux-arm-v7",
"https://github.com/docker/buildx/releases/download/v0.10.4/buildx-v0.10.4.linux-arm-v7.provenance.json",
"https://github.com/docker/buildx/releases/download/v0.10.4/buildx-v0.10.4.linux-arm-v7.sbom.json",
"https://github.com/docker/buildx/releases/download/v0.10.4/buildx-v0.10.4.linux-arm64",
"https://github.com/docker/buildx/releases/download/v0.10.4/buildx-v0.10.4.linux-arm64.provenance.json",
"https://github.com/docker/buildx/releases/download/v0.10.4/buildx-v0.10.4.linux-arm64.sbom.json",
"https://github.com/docker/buildx/releases/download/v0.10.4/buildx-v0.10.4.linux-ppc64le",
"https://github.com/docker/buildx/releases/download/v0.10.4/buildx-v0.10.4.linux-ppc64le.provenance.json",
"https://github.com/docker/buildx/releases/download/v0.10.4/buildx-v0.10.4.linux-ppc64le.sbom.json",
"https://github.com/docker/buildx/releases/download/v0.10.4/buildx-v0.10.4.linux-riscv64",
"https://github.com/docker/buildx/releases/download/v0.10.4/buildx-v0.10.4.linux-riscv64.provenance.json",
"https://github.com/docker/buildx/releases/download/v0.10.4/buildx-v0.10.4.linux-riscv64.sbom.json",
"https://github.com/docker/buildx/releases/download/v0.10.4/buildx-v0.10.4.linux-s390x",
"https://github.com/docker/buildx/releases/download/v0.10.4/buildx-v0.10.4.linux-s390x.provenance.json",
"https://github.com/docker/buildx/releases/download/v0.10.4/buildx-v0.10.4.linux-s390x.sbom.json",
"https://github.com/docker/buildx/releases/download/v0.10.4/buildx-v0.10.4.windows-amd64.exe",
"https://github.com/docker/buildx/releases/download/v0.10.4/buildx-v0.10.4.windows-amd64.provenance.json",
"https://github.com/docker/buildx/releases/download/v0.10.4/buildx-v0.10.4.windows-amd64.sbom.json",
"https://github.com/docker/buildx/releases/download/v0.10.4/buildx-v0.10.4.windows-arm64.exe",
"https://github.com/docker/buildx/releases/download/v0.10.4/buildx-v0.10.4.windows-arm64.provenance.json",
"https://github.com/docker/buildx/releases/download/v0.10.4/buildx-v0.10.4.windows-arm64.sbom.json",
"https://github.com/docker/buildx/releases/download/v0.10.4/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": {
"id": 107680036,
"tag_name": "v0.11.0-rc2",
"html_url": "https://github.com/docker/buildx/releases/tag/v0.11.0-rc2",
"assets": [
"https://github.com/docker/buildx/releases/download/v0.11.0-rc2/buildx-v0.11.0-rc2.darwin-amd64",
"https://github.com/docker/buildx/releases/download/v0.11.0-rc2/buildx-v0.11.0-rc2.darwin-amd64.provenance.json",
"https://github.com/docker/buildx/releases/download/v0.11.0-rc2/buildx-v0.11.0-rc2.darwin-amd64.sbom.json",
"https://github.com/docker/buildx/releases/download/v0.11.0-rc2/buildx-v0.11.0-rc2.darwin-arm64",
"https://github.com/docker/buildx/releases/download/v0.11.0-rc2/buildx-v0.11.0-rc2.darwin-arm64.provenance.json",
"https://github.com/docker/buildx/releases/download/v0.11.0-rc2/buildx-v0.11.0-rc2.darwin-arm64.sbom.json",
"https://github.com/docker/buildx/releases/download/v0.11.0-rc2/buildx-v0.11.0-rc2.linux-amd64",
"https://github.com/docker/buildx/releases/download/v0.11.0-rc2/buildx-v0.11.0-rc2.linux-amd64.provenance.json",
"https://github.com/docker/buildx/releases/download/v0.11.0-rc2/buildx-v0.11.0-rc2.linux-amd64.sbom.json",
"https://github.com/docker/buildx/releases/download/v0.11.0-rc2/buildx-v0.11.0-rc2.linux-arm-v6",
"https://github.com/docker/buildx/releases/download/v0.11.0-rc2/buildx-v0.11.0-rc2.linux-arm-v6.provenance.json",
"https://github.com/docker/buildx/releases/download/v0.11.0-rc2/buildx-v0.11.0-rc2.linux-arm-v6.sbom.json",
"https://github.com/docker/buildx/releases/download/v0.11.0-rc2/buildx-v0.11.0-rc2.linux-arm-v7",
"https://github.com/docker/buildx/releases/download/v0.11.0-rc2/buildx-v0.11.0-rc2.linux-arm-v7.provenance.json",
"https://github.com/docker/buildx/releases/download/v0.11.0-rc2/buildx-v0.11.0-rc2.linux-arm-v7.sbom.json",
"https://github.com/docker/buildx/releases/download/v0.11.0-rc2/buildx-v0.11.0-rc2.linux-arm64",
"https://github.com/docker/buildx/releases/download/v0.11.0-rc2/buildx-v0.11.0-rc2.linux-arm64.provenance.json",
"https://github.com/docker/buildx/releases/download/v0.11.0-rc2/buildx-v0.11.0-rc2.linux-arm64.sbom.json",
"https://github.com/docker/buildx/releases/download/v0.11.0-rc2/buildx-v0.11.0-rc2.linux-ppc64le",
"https://github.com/docker/buildx/releases/download/v0.11.0-rc2/buildx-v0.11.0-rc2.linux-ppc64le.provenance.json",
"https://github.com/docker/buildx/releases/download/v0.11.0-rc2/buildx-v0.11.0-rc2.linux-ppc64le.sbom.json",
"https://github.com/docker/buildx/releases/download/v0.11.0-rc2/buildx-v0.11.0-rc2.linux-riscv64",
"https://github.com/docker/buildx/releases/download/v0.11.0-rc2/buildx-v0.11.0-rc2.linux-riscv64.provenance.json",
"https://github.com/docker/buildx/releases/download/v0.11.0-rc2/buildx-v0.11.0-rc2.linux-riscv64.sbom.json",
"https://github.com/docker/buildx/releases/download/v0.11.0-rc2/buildx-v0.11.0-rc2.linux-s390x",
"https://github.com/docker/buildx/releases/download/v0.11.0-rc2/buildx-v0.11.0-rc2.linux-s390x.provenance.json",
"https://github.com/docker/buildx/releases/download/v0.11.0-rc2/buildx-v0.11.0-rc2.linux-s390x.sbom.json",
"https://github.com/docker/buildx/releases/download/v0.11.0-rc2/buildx-v0.11.0-rc2.windows-amd64.exe",
"https://github.com/docker/buildx/releases/download/v0.11.0-rc2/buildx-v0.11.0-rc2.windows-amd64.provenance.json",
"https://github.com/docker/buildx/releases/download/v0.11.0-rc2/buildx-v0.11.0-rc2.windows-amd64.sbom.json",
"https://github.com/docker/buildx/releases/download/v0.11.0-rc2/buildx-v0.11.0-rc2.windows-arm64.exe",
"https://github.com/docker/buildx/releases/download/v0.11.0-rc2/buildx-v0.11.0-rc2.windows-arm64.provenance.json",
"https://github.com/docker/buildx/releases/download/v0.11.0-rc2/buildx-v0.11.0-rc2.windows-arm64.sbom.json",
"https://github.com/docker/buildx/releases/download/v0.11.0-rc2/checksums.txt"
]
},
"v0.10.5": {
"id": 103872471,
"tag_name": "v0.10.5",
"html_url": "https://github.com/docker/buildx/releases/tag/v0.10.5",
"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"
]
},
"v0.11.0-rc1": {
"id": 102797153,
"tag_name": "v0.11.0-rc1",
"html_url": "https://github.com/docker/buildx/releases/tag/v0.11.0-rc1",
"assets": [
"https://github.com/docker/buildx/releases/download/v0.11.0-rc1/buildx-v0.11.0-rc1.darwin-amd64",
"https://github.com/docker/buildx/releases/download/v0.11.0-rc1/buildx-v0.11.0-rc1.darwin-amd64.provenance.json",
"https://github.com/docker/buildx/releases/download/v0.11.0-rc1/buildx-v0.11.0-rc1.darwin-amd64.sbom.json",
"https://github.com/docker/buildx/releases/download/v0.11.0-rc1/buildx-v0.11.0-rc1.darwin-arm64",
"https://github.com/docker/buildx/releases/download/v0.11.0-rc1/buildx-v0.11.0-rc1.darwin-arm64.provenance.json",
"https://github.com/docker/buildx/releases/download/v0.11.0-rc1/buildx-v0.11.0-rc1.darwin-arm64.sbom.json",
"https://github.com/docker/buildx/releases/download/v0.11.0-rc1/buildx-v0.11.0-rc1.linux-amd64",
"https://github.com/docker/buildx/releases/download/v0.11.0-rc1/buildx-v0.11.0-rc1.linux-amd64.provenance.json",
"https://github.com/docker/buildx/releases/download/v0.11.0-rc1/buildx-v0.11.0-rc1.linux-amd64.sbom.json",
"https://github.com/docker/buildx/releases/download/v0.11.0-rc1/buildx-v0.11.0-rc1.linux-arm-v6",
"https://github.com/docker/buildx/releases/download/v0.11.0-rc1/buildx-v0.11.0-rc1.linux-arm-v6.provenance.json",
"https://github.com/docker/buildx/releases/download/v0.11.0-rc1/buildx-v0.11.0-rc1.linux-arm-v6.sbom.json",
"https://github.com/docker/buildx/releases/download/v0.11.0-rc1/buildx-v0.11.0-rc1.linux-arm-v7",
"https://github.com/docker/buildx/releases/download/v0.11.0-rc1/buildx-v0.11.0-rc1.linux-arm-v7.provenance.json",
"https://github.com/docker/buildx/releases/download/v0.11.0-rc1/buildx-v0.11.0-rc1.linux-arm-v7.sbom.json",
"https://github.com/docker/buildx/releases/download/v0.11.0-rc1/buildx-v0.11.0-rc1.linux-arm64",
"https://github.com/docker/buildx/releases/download/v0.11.0-rc1/buildx-v0.11.0-rc1.linux-arm64.provenance.json",
"https://github.com/docker/buildx/releases/download/v0.11.0-rc1/buildx-v0.11.0-rc1.linux-arm64.sbom.json",
"https://github.com/docker/buildx/releases/download/v0.11.0-rc1/buildx-v0.11.0-rc1.linux-ppc64le",
"https://github.com/docker/buildx/releases/download/v0.11.0-rc1/buildx-v0.11.0-rc1.linux-ppc64le.provenance.json",
"https://github.com/docker/buildx/releases/download/v0.11.0-rc1/buildx-v0.11.0-rc1.linux-ppc64le.sbom.json",
"https://github.com/docker/buildx/releases/download/v0.11.0-rc1/buildx-v0.11.0-rc1.linux-riscv64",
"https://github.com/docker/buildx/releases/download/v0.11.0-rc1/buildx-v0.11.0-rc1.linux-riscv64.provenance.json",
"https://github.com/docker/buildx/releases/download/v0.11.0-rc1/buildx-v0.11.0-rc1.linux-riscv64.sbom.json",
"https://github.com/docker/buildx/releases/download/v0.11.0-rc1/buildx-v0.11.0-rc1.linux-s390x",
"https://github.com/docker/buildx/releases/download/v0.11.0-rc1/buildx-v0.11.0-rc1.linux-s390x.provenance.json",
"https://github.com/docker/buildx/releases/download/v0.11.0-rc1/buildx-v0.11.0-rc1.linux-s390x.sbom.json",
"https://github.com/docker/buildx/releases/download/v0.11.0-rc1/buildx-v0.11.0-rc1.windows-amd64.exe",
"https://github.com/docker/buildx/releases/download/v0.11.0-rc1/buildx-v0.11.0-rc1.windows-amd64.provenance.json",
"https://github.com/docker/buildx/releases/download/v0.11.0-rc1/buildx-v0.11.0-rc1.windows-amd64.sbom.json",
"https://github.com/docker/buildx/releases/download/v0.11.0-rc1/buildx-v0.11.0-rc1.windows-arm64.exe",
"https://github.com/docker/buildx/releases/download/v0.11.0-rc1/buildx-v0.11.0-rc1.windows-arm64.provenance.json",
"https://github.com/docker/buildx/releases/download/v0.11.0-rc1/buildx-v0.11.0-rc1.windows-arm64.sbom.json",
"https://github.com/docker/buildx/releases/download/v0.11.0-rc1/checksums.txt"
]
},
"v0.10.4": {

View File

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

View File

@@ -1,8 +1,122 @@
{
"latest": {
"id": 91964526,
"tag_name": "v23.0.1",
"html_url": "https://github.com/moby/moby/releases/tag/v23.0.1",
"id": 113348684,
"tag_name": "v24.0.5",
"html_url": "https://github.com/moby/moby/releases/tag/v24.0.5",
"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": {
"id": 104366762,
"tag_name": "v24.0.2",
"html_url": "https://github.com/moby/moby/releases/tag/v24.0.2",
"assets": []
},
"v24.0.1": {
"id": 103671743,
"tag_name": "v24.0.1",
"html_url": "https://github.com/moby/moby/releases/tag/v24.0.1",
"assets": []
},
"v24.0.0": {
"id": 103200193,
"tag_name": "v24.0.0",
"html_url": "https://github.com/moby/moby/releases/tag/v24.0.0",
"assets": []
},
"v20.10.25": {
"id": 103070540,
"tag_name": "v20.10.25",
"html_url": "https://github.com/moby/moby/releases/tag/v20.10.25",
"assets": []
},
"v24.0.0-rc.4": {
"id": 102846110,
"tag_name": "v24.0.0-rc.4",
"html_url": "https://github.com/moby/moby/releases/tag/v24.0.0-rc.4",
"assets": []
},
"v24.0.0-rc.3": {
"id": 102708870,
"tag_name": "v24.0.0-rc.3",
"html_url": "https://github.com/moby/moby/releases/tag/v24.0.0-rc.3",
"assets": []
},
"v23.0.6": {
"id": 102196340,
"tag_name": "v23.0.6",
"html_url": "https://github.com/moby/moby/releases/tag/v23.0.6",
"assets": []
},
"v24.0.0-rc.2": {
"id": 102091676,
"tag_name": "v24.0.0-rc.2",
"html_url": "https://github.com/moby/moby/releases/tag/v24.0.0-rc.2",
"assets": []
},
"v24.0.0-rc.1": {
"id": 101305950,
"tag_name": "v24.0.0-rc.1",
"html_url": "https://github.com/moby/moby/releases/tag/v24.0.0-rc.1",
"assets": []
},
"v23.0.5": {
"id": 101005794,
"tag_name": "v23.0.5",
"html_url": "https://github.com/moby/moby/releases/tag/v23.0.5",
"assets": []
},
"v23.0.4": {
"id": 99811576,
"tag_name": "v23.0.4",
"html_url": "https://github.com/moby/moby/releases/tag/v23.0.4",
"assets": []
},
"v24.0.0-beta.2": {
"id": 99544545,
"tag_name": "v24.0.0-beta.2",
"html_url": "https://github.com/moby/moby/releases/tag/v24.0.0-beta.2",
"assets": []
},
"v23.0.3": {
"id": 98122882,
"tag_name": "v23.0.3",
"html_url": "https://github.com/moby/moby/releases/tag/v23.0.3",
"assets": []
},
"v20.10.24": {
"id": 98096018,
"tag_name": "v20.10.24",
"html_url": "https://github.com/moby/moby/releases/tag/v20.10.24",
"assets": []
},
"v24.0.0-beta.1": {
"id": 97703002,
"tag_name": "v24.0.0-beta.1",
"html_url": "https://github.com/moby/moby/releases/tag/v24.0.0-beta.1",
"assets": []
},
"v23.0.2": {
"id": 97163508,
"tag_name": "v23.0.2",
"html_url": "https://github.com/moby/moby/releases/tag/v23.0.2",
"assets": []
},
"v23.0.1": {

View File

@@ -1,5 +1,9 @@
name: build
concurrency:
group: ${{ github.workflow }}-${{ github.ref }}
cancel-in-progress: true
on:
push:
branches:
@@ -17,6 +21,6 @@ jobs:
uses: actions/checkout@v3
-
name: Build
uses: docker/bake-action@v2
uses: docker/bake-action@v3
with:
targets: build

View File

@@ -45,7 +45,7 @@ jobs:
git add -A .
-
name: Create PR
uses: peter-evans/create-pull-request@2b011faafdcbc9ceb11414d64d0573f37c774b04
uses: peter-evans/create-pull-request@153407881ec5c347639a548ade7d8ad1d6740e38
with:
base: main
branch: bot/buildx-releases-json

View File

@@ -45,7 +45,7 @@ jobs:
git add -A .
-
name: Create PR
uses: peter-evans/create-pull-request@2b011faafdcbc9ceb11414d64d0573f37c774b04
uses: peter-evans/create-pull-request@153407881ec5c347639a548ade7d8ad1d6740e38
with:
base: main
branch: bot/docker-releases-json

View File

@@ -1,45 +0,0 @@
name: e2e
on:
workflow_dispatch:
push:
branches:
- 'main'
pull_request:
paths-ignore:
- '.github/*-releases.json'
jobs:
test:
runs-on: ${{ matrix.os }}
strategy:
fail-fast: false
matrix:
os:
- ubuntu-latest
- macos-latest
- windows-latest
steps:
-
name: Checkout
uses: actions/checkout@v3
-
name: Setup Node
uses: actions/setup-node@v3
with:
node-version: 16
cache: 'yarn'
-
name: Install
run: yarn install
-
name: Test
run: yarn test-coverage:e2e --coverageDirectory=./coverage
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
-
name: Upload coverage
uses: codecov/codecov-action@v3
with:
file: ./coverage/clover.xml
flags: e2e

View File

@@ -1,5 +1,9 @@
name: publish
concurrency:
group: ${{ github.workflow }}-${{ github.ref }}
cancel-in-progress: true
on:
push:
tags:
@@ -17,7 +21,7 @@ jobs:
uses: docker/setup-buildx-action@v2
-
name: Publish
uses: docker/bake-action@v2
uses: docker/bake-action@v3
with:
targets: publish
env:

View File

@@ -1,6 +1,11 @@
name: test
concurrency:
group: ${{ github.workflow }}-${{ github.ref }}
cancel-in-progress: true
on:
workflow_dispatch:
push:
branches:
- 'main'
@@ -9,25 +14,6 @@ on:
- '.github/*-releases.json'
jobs:
validate:
runs-on: ubuntu-latest
strategy:
fail-fast: false
matrix:
target:
- lint
- vendor-validate
- license-validate
steps:
-
name: Checkout
uses: actions/checkout@v3
-
name: Validate
uses: docker/bake-action@v2
with:
targets: ${{ matrix.target }}
test:
runs-on: ubuntu-latest
steps:
@@ -36,7 +22,7 @@ jobs:
uses: actions/checkout@v3
-
name: Test
uses: docker/bake-action@v2
uses: docker/bake-action@v3
with:
targets: test-coverage
env:
@@ -47,3 +33,76 @@ jobs:
with:
file: ./coverage/clover.xml
flags: unit
prepare-itg:
runs-on: ubuntu-latest
outputs:
matrix: ${{ steps.tests.outputs.matrix }}
steps:
-
name: Checkout
uses: actions/checkout@v3
-
name: Setup Node
uses: actions/setup-node@v3
with:
node-version: 16
cache: 'yarn'
-
name: Install
run: yarn install
-
name: Create matrix
id: tests
run: |
declare -a tests
for test in $(yarn run test:itg-list); do
tests+=("${test#$(pwd)/__tests__/}")
done
echo "matrix=$(echo ${tests[@]} | jq -cR 'split(" ")')" >>${GITHUB_OUTPUT}
-
name: Show matrix
run: |
echo ${{ steps.tests.outputs.matrix }}
test-itg:
runs-on: ${{ matrix.os }}
needs:
- prepare-itg
strategy:
fail-fast: false
matrix:
test: ${{ fromJson(needs.prepare-itg.outputs.matrix) }}
os:
- ubuntu-latest
- macos-latest
- windows-latest
exclude:
- os: macos-latest
test: buildx/bake.test.itg.ts
- os: windows-latest
test: buildx/bake.test.itg.ts
steps:
-
name: Checkout
uses: actions/checkout@v3
-
name: Setup Node
uses: actions/setup-node@v3
with:
node-version: 16
cache: 'yarn'
-
name: Install
run: yarn install
-
name: Test
run: yarn test:itg-coverage --runTestsByPath __tests__/${{ matrix.test }} --coverageDirectory=./coverage
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
-
name: Upload coverage
uses: codecov/codecov-action@v3
with:
file: ./coverage/clover.xml
flags: itg

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

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

View File

@@ -23,7 +23,6 @@ jobs:
- ubuntu-latest
- ubuntu-22.04
- ubuntu-20.04
- ubuntu-18.04
steps:
-
name: File system

View File

@@ -2,7 +2,7 @@
[![Downloads](https://img.shields.io/npm/dw/@docker/actions-toolkit?logo=npm&style=flat-square)](https://www.npmjs.com/package/@docker/actions-toolkit)
[![Build workflow](https://img.shields.io/github/actions/workflow/status/docker/actions-toolkit/build.yml?label=build&logo=github&style=flat-square)](https://github.com/docker/actions-toolkit/actions?workflow=build)
[![Test workflow](https://img.shields.io/github/actions/workflow/status/docker/actions-toolkit/test.yml?label=test&logo=github&style=flat-square)](https://github.com/docker/actions-toolkit/actions?workflow=test)
[![E2E workflow](https://img.shields.io/github/actions/workflow/status/docker/actions-toolkit/e2e.yml?label=e2e&logo=github&style=flat-square)](https://github.com/docker/actions-toolkit/actions?workflow=e2e)
[![Validate workflow](https://img.shields.io/github/actions/workflow/status/docker/actions-toolkit/validate.yml?label=validate&logo=github&style=flat-square)](https://github.com/docker/actions-toolkit/actions?workflow=validate)
[![Codecov](https://img.shields.io/codecov/c/github/docker/actions-toolkit?logo=codecov&style=flat-square)](https://codecov.io/gh/docker/actions-toolkit)
# Actions Toolkit

View File

@@ -59,7 +59,7 @@ describe('resolve', () => {
`,
null
]
])('given %p config', async (val, file, exValue, error: Error) => {
])('given %p config', async (val: string, file: boolean, exValue: string, error: Error | null) => {
try {
const buildkit = new BuildKit();
let config: string;

View File

@@ -0,0 +1,43 @@
/**
* Copyright 2023 actions-toolkit authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
import {beforeEach, describe, expect, jest, test} from '@jest/globals';
import * as fs from 'fs';
import * as path from 'path';
import {Bake} from '../../src/buildx/bake';
import {BakeDefinition} from '../../src/types/bake';
const fixturesDir = path.join(__dirname, '..', 'fixtures');
beforeEach(() => {
jest.clearAllMocks();
});
describe('parseDefinitions', () => {
// prettier-ignore
test.each([
[
['https://github.com/docker/buildx.git#v0.10.4'],
['binaries-cross'],
path.join(fixturesDir, 'bake-buildx-0.10.4-binaries-cross.json')
]
])('given %p', async (sources: string[], targets: string[], out: string) => {
const bake = new Bake();
const expectedDef = <BakeDefinition>JSON.parse(fs.readFileSync(out, {encoding: 'utf-8'}).trim())
expect(await bake.parseDefinitions(sources, targets)).toEqual(expectedDef);
});
});

View File

@@ -15,6 +15,7 @@
*/
import {beforeEach, describe, expect, jest, test} from '@jest/globals';
import * as fs from 'fs';
import * as path from 'path';
import {Bake} from '../../src/buildx/bake';
@@ -30,67 +31,27 @@ describe('parseDefinitions', () => {
// prettier-ignore
test.each([
[
[path.join(fixturesDir, 'bake.hcl')],
[path.join(fixturesDir, 'bake-01.hcl')],
['validate'],
{
"group": {
"default": {
"targets": [
"validate"
]
},
"validate": {
"targets": [
"lint",
"validate-vendor",
"validate-docs"
]
}
},
"target": {
"lint": {
"context": ".",
"dockerfile": "./hack/dockerfiles/lint.Dockerfile",
"args": {
"BUILDKIT_CONTEXT_KEEP_GIT_DIR": "1",
"GO_VERSION": "1.20"
},
"output": [
"type=cacheonly"
]
},
"validate-docs": {
"context": ".",
"dockerfile": "./hack/dockerfiles/docs.Dockerfile",
"args": {
"BUILDKIT_CONTEXT_KEEP_GIT_DIR": "1",
"BUILDX_EXPERIMENTAL": "1",
"FORMATS": "md",
"GO_VERSION": "1.20"
},
"target": "validate",
"output": [
"type=cacheonly"
]
},
"validate-vendor": {
"context": ".",
"dockerfile": "./hack/dockerfiles/vendor.Dockerfile",
"args": {
"BUILDKIT_CONTEXT_KEEP_GIT_DIR": "1",
"GO_VERSION": "1.20"
},
"target": "validate",
"output": [
"type=cacheonly"
]
}
}
}
[],
path.join(fixturesDir, 'bake-01-validate.json')
],
[
[path.join(fixturesDir, 'bake-02.hcl')],
['build'],
[],
path.join(fixturesDir, 'bake-02-build.json')
],
[
[path.join(fixturesDir, 'bake-01.hcl')],
['image'],
['*.output=type=docker', '*.platform=linux/amd64'],
path.join(fixturesDir, 'bake-01-overrides.json')
]
])('given %p', async (files, targets, expected: BakeDefinition) => {
])('given %p', async (sources: string[], targets: string[], overrides: string[], out: string) => {
const bake = new Bake();
expect(await bake.parseDefinitions(files, targets)).toEqual(expected);
const expectedDef = <BakeDefinition>JSON.parse(fs.readFileSync(out, {encoding: 'utf-8'}).trim())
expect(await bake.parseDefinitions(sources, targets, overrides)).toEqual(expectedDef);
});
});
@@ -106,7 +67,17 @@ describe('hasLocalExporter', () => {
]
},
}
},
} as unknown as BakeDefinition,
false
],
[
{
"target": {
"build": {
"target": "build"
},
}
} as unknown as BakeDefinition,
false
],
[
@@ -118,7 +89,7 @@ describe('hasLocalExporter', () => {
]
},
}
},
} as unknown as BakeDefinition,
true
],
[
@@ -130,7 +101,7 @@ describe('hasLocalExporter', () => {
]
},
}
},
} as unknown as BakeDefinition,
false
],
[
@@ -142,7 +113,7 @@ describe('hasLocalExporter', () => {
]
},
}
},
} as unknown as BakeDefinition,
false
],
[
@@ -154,7 +125,7 @@ describe('hasLocalExporter', () => {
]
},
}
},
} as unknown as BakeDefinition,
true
],
[
@@ -166,7 +137,7 @@ describe('hasLocalExporter', () => {
]
},
}
},
} as unknown as BakeDefinition,
true
]
])('given %o returns %p', async (def: BakeDefinition, expected: boolean) => {
@@ -186,7 +157,7 @@ describe('hasTarExporter', () => {
]
},
}
},
} as unknown as BakeDefinition,
false
],
[
@@ -198,7 +169,7 @@ describe('hasTarExporter', () => {
]
},
}
},
} as unknown as BakeDefinition,
false
],
[
@@ -210,7 +181,7 @@ describe('hasTarExporter', () => {
]
},
}
},
} as unknown as BakeDefinition,
false
],
[
@@ -222,7 +193,7 @@ describe('hasTarExporter', () => {
]
},
}
},
} as unknown as BakeDefinition,
true
],
[
@@ -235,7 +206,7 @@ describe('hasTarExporter', () => {
]
},
}
},
} as unknown as BakeDefinition,
true
],
[
@@ -247,7 +218,7 @@ describe('hasTarExporter', () => {
]
},
}
},
} as unknown as BakeDefinition,
true
],
[
@@ -259,7 +230,7 @@ describe('hasTarExporter', () => {
]
},
}
},
} as unknown as BakeDefinition,
false
],
[
@@ -271,7 +242,7 @@ describe('hasTarExporter', () => {
]
},
}
},
} as unknown as BakeDefinition,
false
],
])('given %o returns %p', async (def: BakeDefinition, expected: boolean) => {
@@ -291,7 +262,7 @@ describe('hasDockerExporter', () => {
]
},
}
},
} as unknown as BakeDefinition,
false,
undefined
],
@@ -304,7 +275,7 @@ describe('hasDockerExporter', () => {
]
},
}
},
} as unknown as BakeDefinition,
true,
undefined
],
@@ -318,7 +289,7 @@ describe('hasDockerExporter', () => {
]
},
}
},
} as unknown as BakeDefinition,
true,
undefined
],
@@ -331,7 +302,7 @@ describe('hasDockerExporter', () => {
]
},
}
},
} as unknown as BakeDefinition,
false,
undefined
],
@@ -344,7 +315,7 @@ describe('hasDockerExporter', () => {
]
},
}
},
} as unknown as BakeDefinition,
false,
undefined
],
@@ -357,7 +328,7 @@ describe('hasDockerExporter', () => {
]
},
}
},
} as unknown as BakeDefinition,
false,
undefined
],
@@ -371,7 +342,7 @@ describe('hasDockerExporter', () => {
]
},
}
},
} as unknown as BakeDefinition,
true,
undefined
],
@@ -384,7 +355,7 @@ describe('hasDockerExporter', () => {
]
},
}
},
} as unknown as BakeDefinition,
false,
undefined
],
@@ -397,7 +368,7 @@ describe('hasDockerExporter', () => {
]
},
}
},
} as unknown as BakeDefinition,
false,
undefined
],
@@ -410,7 +381,7 @@ describe('hasDockerExporter', () => {
]
},
}
},
} as unknown as BakeDefinition,
false,
undefined
],
@@ -423,7 +394,7 @@ describe('hasDockerExporter', () => {
]
},
}
},
} as unknown as BakeDefinition,
true,
false
],
@@ -436,7 +407,7 @@ describe('hasDockerExporter', () => {
]
},
}
},
} as unknown as BakeDefinition,
true,
true
],
@@ -449,11 +420,11 @@ describe('hasDockerExporter', () => {
]
},
}
},
} as unknown as BakeDefinition,
true,
true
],
])('given %o and load:%p returns %p', async (def: BakeDefinition, expected: boolean, load: boolean) => {
])('given %o and load:%p returns %p', async (def: BakeDefinition, expected: boolean, load: boolean | undefined) => {
expect(Bake.hasDockerExporter(def, load)).toEqual(expected);
});
});

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

@@ -162,7 +162,7 @@ describe('resolveBuildSecret', () => {
['=bbbbbbb', false, '', '', new Error('=bbbbbbb is not a valid secret')],
[`foo=${path.join(fixturesDir, 'secret.txt')}`, true, 'foo', 'bar', null],
[`notfound=secret`, true, '', '', new Error('secret file secret not found')]
])('given %p key and %p secret', async (kvp: string, file: boolean, exKey: string, exValue: string, error: Error) => {
])('given %p key and %p secret', async (kvp: string, file: boolean, exKey: string, exValue: string, error: Error | null) => {
try {
let secret: string;
if (file) {
@@ -177,6 +177,21 @@ describe('resolveBuildSecret', () => {
expect(e.message).toEqual(error?.message);
}
});
test.each([
['FOO=bar', 'FOO', 'bar', null],
['FOO=', 'FOO', '', new Error('FOO= is not a valid secret')],
['=bar', '', '', new Error('=bar is not a valid secret')],
['FOO=bar=baz', 'FOO', 'bar=baz', null]
])('given %p key and %p env', async (kvp: string, exKey: string, exValue: string, error: Error | null) => {
try {
const secret = Inputs.resolveBuildSecretEnv(kvp);
expect(secret).toEqual(`id=${exKey},env="${exValue}"`);
} catch (e) {
// eslint-disable-next-line jest/no-conditional-expect
expect(e.message).toEqual(error?.message);
}
});
});
describe('hasLocalExporter', () => {

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([
@@ -69,7 +80,7 @@ describe('download', () => {
['linux', 's390x'],
])(
'acquires buildx for %s/%s', async (os, arch) => {
jest.spyOn(osm, 'platform').mockImplementation(() => os);
jest.spyOn(osm, 'platform').mockImplementation(() => os as NodeJS.Platform);
jest.spyOn(osm, 'arch').mockImplementation(() => arch);
const install = new Install();
const buildxBin = await install.download('latest');
@@ -129,6 +140,6 @@ describe('getRelease', () => {
});
it('unknown release', async () => {
await expect(Install.getRelease('foo')).rejects.toThrowError(new Error('Cannot find Buildx release foo in https://raw.githubusercontent.com/docker/actions-toolkit/main/.github/buildx-releases.json'));
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'));
});
});

View File

@@ -15,17 +15,30 @@
*/
import {afterEach, beforeEach, describe, expect, it, jest} from '@jest/globals';
import * as fs from 'fs';
import path from 'path';
import * as io from '@actions/io';
import osm = require('os');
import * as rimraf from 'rimraf';
import {Docker} from '../../src/docker/docker';
import {Exec} from '../../src/exec';
import {ConfigFile} from '../../src/types/docker';
const fixturesDir = path.join(__dirname, '..', 'fixtures');
// prettier-ignore
const tmpDir = path.join(process.env.TEMP || '/tmp', 'docker-jest');
beforeEach(() => {
jest.clearAllMocks();
});
afterEach(function () {
rimraf.sync(tmpDir);
});
describe('configDir', () => {
const originalEnv = process.env;
beforeEach(() => {
@@ -48,6 +61,45 @@ describe('configDir', () => {
});
});
describe('configFile', () => {
const originalEnv = process.env;
beforeEach(() => {
jest.resetModules();
if (!fs.existsSync(tmpDir)) {
fs.mkdirSync(tmpDir, {recursive: true});
}
process.env = {
...originalEnv,
DOCKER_CONFIG: tmpDir
};
});
afterEach(() => {
process.env = originalEnv;
});
it('auths', async () => {
fs.copyFileSync(path.join(fixturesDir, 'docker-config-auths.json'), path.join(tmpDir, 'config.json'));
expect(Docker.configFile()).toEqual({
auths: {
'https://index.docker.io/v1/': {
auth: 'am9lam9lOmhlbGxv',
email: 'user@example.com'
}
}
} as unknown as ConfigFile);
});
it('proxies', async () => {
fs.copyFileSync(path.join(fixturesDir, 'docker-config-proxies.json'), path.join(tmpDir, 'config.json'));
expect(Docker.configFile()).toEqual({
proxies: {
default: {
httpProxy: 'http://127.0.0.1:3128',
httpsProxy: 'http://127.0.0.1:3128'
}
}
} as unknown as ConfigFile);
});
});
describe('isAvailable', () => {
it('cli', async () => {
const ioWhichSpy = jest.spyOn(io, 'which');

View File

@@ -15,7 +15,7 @@
*/
import path from 'path';
import {describe, expect, test} from '@jest/globals';
import {jest, describe, expect, test} from '@jest/globals';
import {Install} from '../../src/docker/install';
import {Docker} from '../../src/docker/docker';
@@ -24,6 +24,7 @@ import {Docker} from '../../src/docker/docker';
const tmpDir = path.join(process.env.TEMP || '/tmp', 'docker-install-jest');
describe('install', () => {
jest.retryTimes(2, {logErrorsBeforeRetry: true});
// prettier-ignore
test.each(['v23.0.0'])(
'install docker %s', async (version) => {

View File

@@ -42,7 +42,7 @@ describe('download', () => {
['v20.10.22', 'win32'],
])(
'acquires %p of docker (%s)', async (version, platformOS) => {
jest.spyOn(osm, 'platform').mockImplementation(() => platformOS);
jest.spyOn(osm, 'platform').mockImplementation(() => platformOS as NodeJS.Platform);
const install = new Install({
version: version,
runDir: tmpDir,
@@ -68,6 +68,6 @@ describe('getRelease', () => {
});
it('unknown release', async () => {
await expect(Install.getRelease('foo')).rejects.toThrowError(new Error('Cannot find Docker release foo in https://raw.githubusercontent.com/docker/actions-toolkit/main/.github/docker-releases.json'));
await expect(Install.getRelease('foo')).rejects.toThrow(new Error('Cannot find Docker release foo in https://raw.githubusercontent.com/docker/actions-toolkit/main/.github/docker-releases.json'));
});
});

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

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

@@ -66,9 +66,12 @@ describe('isInsideWorkTree', () => {
});
describe('remoteSha', () => {
it('returns git remote sha', async () => {
it('returns sha using git ls-remote', async () => {
expect(await Git.remoteSha('https://github.com/docker/buildx.git', 'refs/pull/648/head')).toEqual('f11797113e5a9b86bd976329c5dbb8a8bfdfadfa');
});
it('returns sha using github api', async () => {
expect(await Git.remoteSha('https://github.com/docker/buildx.git', 'refs/pull/648/head', process.env.GITHUB_TOKEN)).toEqual('f11797113e5a9b86bd976329c5dbb8a8bfdfadfa');
});
});
describe('remoteURL', () => {

View File

@@ -108,7 +108,7 @@ describe('actionsRuntimeToken', () => {
process.env.ACTIONS_RUNTIME_TOKEN = 'foo';
expect(() => {
GitHub.actionsRuntimeToken;
}).toThrowError();
}).toThrow();
});
it('fixture', async () => {
process.env.ACTIONS_RUNTIME_TOKEN = fs.readFileSync(path.join(__dirname, 'fixtures', 'runtimeToken.txt')).toString().trim();
@@ -131,11 +131,11 @@ describe('printActionsRuntimeTokenACs', () => {
});
it('empty', async () => {
process.env.ACTIONS_RUNTIME_TOKEN = '';
await expect(GitHub.printActionsRuntimeTokenACs()).rejects.toThrowError(new Error('ACTIONS_RUNTIME_TOKEN not set'));
await expect(GitHub.printActionsRuntimeTokenACs()).rejects.toThrow(new Error('ACTIONS_RUNTIME_TOKEN not set'));
});
it('malformed', async () => {
process.env.ACTIONS_RUNTIME_TOKEN = 'foo';
await expect(GitHub.printActionsRuntimeTokenACs()).rejects.toThrowError(new Error("Cannot parse GitHub Actions Runtime Token: Invalid token specified: Cannot read properties of undefined (reading 'replace')"));
await expect(GitHub.printActionsRuntimeTokenACs()).rejects.toThrow(new Error("Cannot parse GitHub Actions Runtime Token: Invalid token specified: Cannot read properties of undefined (reading 'replace')"));
});
it('refs/heads/master', async () => {
const infoSpy = jest.spyOn(core, 'info');

View File

@@ -73,6 +73,18 @@ describe('getInputList', () => {
expect(res).toEqual(['user/app:cache', 'type=local,src=path/to/dir']);
});
it('multiline and ignoring comment correctly', async () => {
setInput('labels', 'foo=bar\nbar=qux#baz');
const res = Util.getInputList('labels');
expect(res).toEqual(['foo=bar', 'bar=qux#baz']);
});
it('multiline with comment', async () => {
setInput('labels', 'foo=bar\nbar=qux#baz');
const res = Util.getInputList('labels', {comment: '#'});
expect(res).toEqual(['foo=bar', 'bar=qux']);
});
it('different new lines and ignoring comma correctly', async () => {
setInput('cache-from', 'user/app:cache\r\ntype=local,src=path/to/dir');
const res = Util.getInputList('cache-from', {ignoreComma: true});
@@ -194,13 +206,64 @@ describe('asyncForEach', () => {
});
});
describe('isValidUrl', () => {
describe('isValidURL', () => {
test.each([
['https://github.com/docker/buildx.git', true],
['https://github.com/docker/buildx.git#refs/pull/648/head', true],
['git@github.com:moby/buildkit.git', false],
['git://github.com/user/repo.git', false],
['github.com/moby/buildkit.git#main', false],
['v0.4.1', false]
])('given %p', async (url, expected) => {
expect(Util.isValidUrl(url)).toEqual(expected);
expect(Util.isValidURL(url)).toEqual(expected);
});
});
describe('isValidRef', () => {
test.each([
['https://github.com/docker/buildx.git', true],
['https://github.com/docker/buildx.git#refs/pull/648/head', true],
['git@github.com:moby/buildkit.git', true],
['git://github.com/user/repo.git', true],
['github.com/moby/buildkit.git#main', true],
['v0.4.1', false]
])('given %p', async (url, expected) => {
expect(Util.isValidRef(url)).toEqual(expected);
});
});
describe('trimPrefix', () => {
test.each([
['', 'abc', ''],
['abc', 'a', 'bc'],
['abc', 'ab', 'c'],
['abc', '', 'abc'],
['abc', '', 'abc'],
['abc', 'd', 'abc'],
['abc', 'abc', ''],
['abc', 'abcd', 'abc'],
['abcdabc', 'abc', 'dabc'],
['abcabc', 'abc', 'abc'],
['abcdabc', 'd', 'abcdabc']
])('given %p', async (str, prefix, expected) => {
expect(Util.trimPrefix(str, prefix)).toEqual(expected);
});
});
describe('trimSuffix', () => {
test.each([
['', 'abc', ''],
['abc', 'c', 'ab'],
['abc', '', 'abc'],
['abc', 'bc', 'a'],
['abc', 'abc', ''],
['abc', 'abcd', 'abc'],
['abc', 'aabc', 'abc'],
['abcdabc', 'abc', 'abcd'],
['abcabc', 'abc', 'abc'],
['abcdabc', 'd', 'abcdabc']
])('given %p', async (str, suffix, expected) => {
expect(Util.trimSuffix(str, suffix)).toEqual(expected);
});
});

View File

@@ -79,7 +79,7 @@ RUN --mount=type=bind,target=.,rw \
--mount=type=bind,from=buildx,source=/buildx,target=/usr/libexec/docker/cli-plugins/docker-buildx \
--mount=type=bind,from=buildx,source=/buildx,target=/usr/bin/buildx \
--mount=type=secret,id=GITHUB_TOKEN \
GITHUB_TOKEN=$(cat /run/secrets/GITHUB_TOKEN) yarn run test-coverage --coverageDirectory=/tmp/coverage
GITHUB_TOKEN=$(cat /run/secrets/GITHUB_TOKEN) yarn run test:coverage --coverageDirectory=/tmp/coverage
FROM scratch AS test-coverage
COPY --from=test /tmp/coverage /

View File

@@ -19,7 +19,7 @@ module.exports = {
testEnvironment: 'node',
moduleFileExtensions: ['js', 'ts'],
setupFiles: ['dotenv/config'],
testMatch: ['**/*.test.e2e.ts'],
testMatch: ['**/*.test.itg.ts'],
testTimeout: 1800000, // 30 minutes
transform: {
'^.+\\.ts$': 'ts-jest'

View File

@@ -11,9 +11,10 @@
"prettier": "prettier --check \"./**/*.ts\"",
"prettier:fix": "prettier --write \"./**/*.ts\"",
"test": "jest",
"test:e2e": "jest -c jest.config.e2e.ts --runInBand --detectOpenHandles",
"test-coverage": "jest --coverage",
"test-coverage:e2e": "jest --coverage -c jest.config.e2e.ts --runInBand --detectOpenHandles"
"test:coverage": "jest --coverage",
"test:itg": "jest -c jest.config.itg.ts --runInBand --detectOpenHandles",
"test:itg-list": "jest -c jest.config.itg.ts --listTests",
"test:itg-coverage": "jest --coverage -c jest.config.itg.ts --runInBand --detectOpenHandles"
},
"repository": {
"type": "git",
@@ -44,38 +45,40 @@
"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.3",
"async-retry": "^1.3.3",
"csv-parse": "^5.3.6",
"handlebars": "^4.7.7",
"csv-parse": "^5.4.0",
"handlebars": "^4.7.8",
"jwt-decode": "^3.1.2",
"semver": "^7.3.8",
"semver": "^7.5.4",
"tmp": "^0.2.1"
},
"devDependencies": {
"@types/csv-parse": "^1.2.2",
"@types/node": "^16.18.11",
"@types/semver": "^7.3.13",
"@types/node": "^16.18.21",
"@types/semver": "^7.5.0",
"@types/tmp": "^0.2.3",
"@typescript-eslint/eslint-plugin": "^5.49.0",
"@typescript-eslint/parser": "^5.49.0",
"@typescript-eslint/eslint-plugin": "^5.56.0",
"@typescript-eslint/parser": "^5.56.0",
"cpy-cli": "^4.2.0",
"dotenv": "^16.0.3",
"eslint": "^8.33.0",
"eslint-config-prettier": "^8.6.0",
"eslint": "^8.36.0",
"eslint-config-prettier": "^8.8.0",
"eslint-plugin-import": "^2.27.5",
"eslint-plugin-jest": "^26.9.0",
"eslint-plugin-jest": "^27.2.1",
"eslint-plugin-prettier": "^4.2.1",
"jest": "^27.5.1",
"prettier": "^2.8.3",
"rimraf": "^4.1.2",
"ts-jest": "^27.1.5",
"jest": "^29.5.0",
"prettier": "^2.8.7",
"rimraf": "^4.4.1",
"ts-jest": "^29.0.5",
"ts-node": "^10.9.1",
"typescript": "^4.9.4"
"typescript": "^4.9.5"
}
}

View File

@@ -17,6 +17,7 @@
import {Buildx} from './buildx';
import {Exec} from '../exec';
import {Inputs} from './inputs';
import {Util} from '../util';
import {BakeDefinition} from '../types/bake';
@@ -31,16 +32,47 @@ export class Bake {
this.buildx = opts?.buildx || new Buildx();
}
public async parseDefinitions(files: Array<string>, targets: Array<string>): Promise<BakeDefinition> {
public async parseDefinitions(sources: Array<string>, targets?: Array<string>, overrides?: Array<string>, load?: boolean, push?: boolean, workdir?: string): Promise<BakeDefinition> {
const args = ['bake'];
if (files) {
for (const file of files) {
args.push('--file', file);
let remoteDef;
const files: Array<string> = [];
if (sources) {
for (const source of sources.map(v => v.trim())) {
if (source.length == 0) {
continue;
}
if (!Util.isValidRef(source)) {
files.push(source);
continue;
}
if (remoteDef) {
throw new Error(`Only one remote bake definition is allowed`);
}
remoteDef = source;
}
}
if (remoteDef) {
args.push(remoteDef);
}
for (const file of files) {
args.push('--file', file);
}
if (overrides) {
for (const override of overrides) {
args.push('--set', override);
}
}
if (load) {
args.push('--load');
}
if (push) {
args.push('--push');
}
const printCmd = await this.buildx.getCommand([...args, '--print', ...targets]);
const printCmd = await this.buildx.getCommand([...args, '--print', ...(targets || [])]);
return await Exec.getExecOutput(printCmd.command, printCmd.args, {
cwd: workdir,
ignoreReturnCode: true,
silent: true
}).then(res => {
@@ -67,7 +99,9 @@ export class Bake {
const exporters = new Array<string>();
for (const key in def.target) {
const target = def.target[key];
exporters.push(...target.output);
if (target.output) {
exporters.push(...target.output);
}
}
return exporters;
}

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

@@ -21,6 +21,18 @@ import {parse} from 'csv-parse/sync';
import {Context} from '../context';
const parseKvp = (kvp: string): [string, string] => {
const delimiterIndex = kvp.indexOf('=');
const key = kvp.substring(0, delimiterIndex);
const value = kvp.substring(delimiterIndex + 1);
if (key.length == 0 || value.length == 0) {
throw new Error(`${kvp} is not a valid secret`);
}
return [key, value];
};
export class Inputs {
public static getBuildImageIDFilePath(): string {
return path.join(Context.tmpDir(), 'iidfile');
@@ -70,13 +82,17 @@ export class Inputs {
return Inputs.resolveBuildSecret(kvp, true);
}
public static resolveBuildSecretEnv(kvp: string): string {
const [key, value] = parseKvp(kvp);
return `id=${key},env="${value}"`;
}
public static resolveBuildSecret(kvp: string, file: boolean): string {
const delimiterIndex = kvp.indexOf('=');
const key = kvp.substring(0, delimiterIndex);
let value = kvp.substring(delimiterIndex + 1);
if (key.length == 0 || value.length == 0) {
throw new Error(`${kvp} is not a valid secret`);
}
const [key, _value] = parseKvp(kvp);
let value = _value;
if (file) {
if (!fs.existsSync(value)) {
throw new Error(`secret file ${value} not found`);

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,6 +30,7 @@ import {Context} from '../context';
import {Exec} from '../exec';
import {Docker} from '../docker/docker';
import {Git} from '../git';
import {Util} from '../util';
import {GitHubRelease} from '../types/github';
@@ -42,70 +45,87 @@ export class Install {
this._standalone = opts?.standalone;
}
/*
* Download buildx binary from GitHub release
* @param version semver version or latest
* @returns path to the buildx binary
*/
public async download(version: string): Promise<string> {
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('buildx-dl-bin', vspec);
const cacheFoundPath = await installCache.find();
if (cacheFoundPath) {
core.info(`Buildx binary found in ${cacheFoundPath}`);
return cacheFoundPath;
}
const downloadURL = util.format('https://github.com/docker/buildx/releases/download/v%s/%s', 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);
}
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) {
core.warning(res.stderr.trim());
}
return tc.cacheFile(`${outputDir}/buildx`, os.platform() == 'win32' ? 'docker-buildx.exe' : 'docker-buildx', 'buildx', vspec);
});
}
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 +137,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,14 +177,14 @@ export class Install {
throw new Error(`Neither buildx standalone or plugin have been found to build from ref ${gitContext}`);
}
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');
}
args.push(gitContext);
//prettier-ignore
return await new Buildx({standalone: buildStandalone}).getCommand([
'build',
'--target', 'binaries',
'--build-arg', 'BUILDKIT_CONTEXT_KEEP_GIT_DIR=1',
'--output', `type=local,dest=${outputDir}`,
gitContext
]);
return await new Buildx({standalone: buildStandalone}).getCommand(args);
}
private async isStandalone(): Promise<boolean> {
@@ -173,21 +193,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);
}
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,6 +220,39 @@ export class Install {
return util.format('buildx-v%s.%s-%s%s', version, platform, arch, ext);
}
/*
* 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 getRelease(version: string): Promise<GitHubRelease> {
const url = `https://raw.githubusercontent.com/docker/actions-toolkit/main/.github/buildx-releases.json`;
const http: httpm.HttpClient = new httpm.HttpClient('docker-actions-toolkit');
@@ -231,3 +269,74 @@ export class Install {
return releases[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

@@ -14,17 +14,29 @@
* limitations under the License.
*/
import fs from 'fs';
import os from 'os';
import path from 'path';
import * as core from '@actions/core';
import * as io from '@actions/io';
import {Exec} from '../exec';
import {ConfigFile} from '../types/docker';
export class Docker {
static get configDir(): string {
return process.env.DOCKER_CONFIG || path.join(os.homedir(), '.docker');
}
public static configFile(): ConfigFile | undefined {
const f = path.join(Docker.configDir, 'config.json');
if (!fs.existsSync(f)) {
return undefined;
}
return <ConfigFile>JSON.parse(fs.readFileSync(f, {encoding: 'utf-8'}));
}
public static async isAvailable(): Promise<boolean> {
return await io
.which('docker', true)

View File

@@ -14,8 +14,14 @@
* limitations under the License.
*/
import * as core from '@actions/core';
import {Octokit} from '@octokit/core';
import {restEndpointMethods} from '@octokit/plugin-rest-endpoint-methods';
import {Exec} from './exec';
import {GitHub} from './github';
import {Context} from '@actions/github/lib/context';
import {Context as GitContext} from './types/git';
export class Git {
@@ -36,7 +42,29 @@ export class Git {
});
}
public static async remoteSha(repo: string, ref: string): Promise<string> {
public static async remoteSha(repo: string, ref: string, token?: string): Promise<string> {
const repoMatch = repo.match(/github.com\/([^/]+)\/([^/]+?)(?:\.git)?(\/|$)/);
// if we have a token and this is a GitHub repo we can use the GitHub API
if (token && repoMatch) {
core.setSecret(token);
const octokit = new (Octokit.plugin(restEndpointMethods).defaults({
baseUrl: GitHub.apiURL
}))({auth: token});
const [owner, repoName] = repoMatch.slice(1, 3);
try {
return (
await octokit.rest.repos.listCommits({
owner: owner,
repo: repoName,
sha: ref,
per_page: 1
})
).data[0].sha;
} catch (e) {
throw new Error(`Cannot find remote ref for ${repo}#${ref}: ${e.message}`);
}
}
// otherwise we fall back to git ls-remote
return await Git.exec(['ls-remote', repo, ref]).then(out => {
const [rsha] = out.split(/[\s\t]/);
if (rsha.length == 0) {
@@ -61,7 +89,13 @@ export class Git {
}
public static async ref(): Promise<string> {
return await Git.exec(['symbolic-ref', 'HEAD']);
return await Git.exec(['symbolic-ref', 'HEAD']).catch(() => {
// if it fails (for example in a detached HEAD state), falls back to
// using git tag or describe to get the exact matching tag name.
return Git.tag().then(tag => {
return `refs/tags/${tag}`;
});
});
}
public static async fullCommit(): Promise<string> {

View File

@@ -15,7 +15,8 @@
*/
import {Buildx} from './buildx/buildx';
import {Install} from './buildx/install';
import {Install as BuildxInstall} from './buildx/install';
import {Bake} from './buildx/bake';
import {Builder} from './buildx/builder';
import {BuildKit} from './buildkit/buildkit';
import {GitHub} from './github';
@@ -31,14 +32,16 @@ export interface ToolkitOpts {
export class Toolkit {
public github: GitHub;
public buildx: Buildx;
public buildxInstall: Install;
public buildxInstall: BuildxInstall;
public bake: Bake;
public builder: Builder;
public buildkit: BuildKit;
constructor(opts: ToolkitOpts = {}) {
this.github = new GitHub({token: opts.githubToken});
this.buildx = new Buildx();
this.buildxInstall = new Install();
this.buildxInstall = new BuildxInstall();
this.bake = new Bake({buildx: this.buildx});
this.builder = new Builder({buildx: this.buildx});
this.buildkit = new BuildKit({buildx: this.buildx});
}

View File

@@ -24,22 +24,22 @@ export interface Group {
}
export interface Target {
args: Record<string, string>;
attest: Array<string>;
'cache-from': Array<string>;
'cache-to': Array<string>;
args?: Record<string, string>;
attest?: Array<string>;
'cache-from'?: Array<string>;
'cache-to'?: Array<string>;
context: string;
contexts: Record<string, string>;
contexts?: Record<string, string>;
dockerfile: string;
'dockerfile-inline': string;
labels: Record<string, string>;
'no-cache': boolean;
'no-cache-filter': Array<string>;
output: Array<string>;
platforms: Array<string>;
pull: boolean;
secret: Array<string>;
ssh: Array<string>;
tags: Array<string>;
target: string;
'dockerfile-inline'?: string;
labels?: Record<string, string>;
'no-cache'?: boolean;
'no-cache-filter'?: Array<string>;
output?: Array<string>;
platforms?: Array<string>;
pull?: boolean;
secret?: Array<string>;
ssh?: Array<string>;
tags?: Array<string>;
target?: string;
}

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;
}

66
src/types/docker.ts Normal file
View File

@@ -0,0 +1,66 @@
/**
* Copyright 2023 actions-toolkit authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
// https://github.com/docker/cli/blob/master/cli/config/configfile/file.go
export interface ConfigFile {
auths: Record<string, AuthConfig>;
HttpHeaders?: Record<string, string>;
psFormat?: string;
imagesFormat?: string;
networksFormat?: string;
pluginsFormat?: string;
volumesFormat?: string;
statsFormat?: string;
detachKeys?: string;
credsStore?: string;
credHelpers?: Record<string, string>;
serviceInspectFormat?: string;
servicesFormat?: string;
tasksFormat?: string;
secretFormat?: string;
configFormat?: string;
nodesFormat?: string;
pruneFilters?: string[];
proxies?: Record<string, ProxyConfig>;
experimental?: string;
stackOrchestrator?: string;
kubernetes?: KubernetesConfig;
currentContext?: string;
cliPluginsExtraDirs?: string[];
plugins?: Record<string, Record<string, string>>;
aliases?: Record<string, string>;
}
export interface ProxyConfig {
httpProxy?: string;
httpsProxy?: string;
noProxy?: string;
ftpProxy?: string;
}
export interface KubernetesConfig {
allNamespaces?: string;
}
export interface AuthConfig {
username?: string;
password?: string;
auth?: string;
email?: string;
serveraddress?: string;
identitytoken?: string;
registrytoken?: string;
}

View File

@@ -21,6 +21,7 @@ import {parse} from 'csv-parse/sync';
export interface InputListOpts {
ignoreComma?: boolean;
comment?: string;
quote?: string | boolean | Buffer | null;
}
@@ -36,7 +37,7 @@ export class Util {
const records = parse(items, {
columns: false,
relaxQuotes: true,
comment: '#',
comment: opts?.comment,
relaxColumnCount: true,
skipEmptyLines: true,
quote: opts?.quote
@@ -65,13 +66,26 @@ export class Util {
}
}
public static isValidUrl(url: string): boolean {
public static isValidURL(urlStr: string): boolean {
let url;
try {
new URL(url);
url = new URL(urlStr);
} catch (e) {
return false;
}
return true;
return url.protocol === 'http:' || url.protocol === 'https:';
}
public static isValidRef(refStr: string): boolean {
if (Util.isValidURL(refStr)) {
return true;
}
for (const prefix of ['git://', 'github.com/', 'git@']) {
if (refStr.startsWith(prefix)) {
return true;
}
}
return false;
}
public static async powershellCommand(script: string, params?: Record<string, string>) {
@@ -97,4 +111,26 @@ 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);
}
}

2766
yarn.lock

File diff suppressed because it is too large Load Diff