Compare commits

...

43 Commits

Author SHA1 Message Date
2a4b53665e Merge pull request #63 from crazy-max/doc
Fix doc links
2021-04-06 16:35:30 +02:00
03951fea2c Merge pull request #61 from docker/dependabot/npm_and_yarn/actions/http-client-1.0.11
Bump @actions/http-client from 1.0.9 to 1.0.11
2021-04-03 21:40:57 +02:00
04f80b2fda Update generated content
Signed-off-by: CrazyMax <crazy-max@users.noreply.github.com>
2021-04-03 21:28:07 +02:00
240d54e928 Bump @actions/http-client from 1.0.9 to 1.0.11
Bumps [@actions/http-client](https://github.com/actions/http-client) from 1.0.9 to 1.0.11.
- [Release notes](https://github.com/actions/http-client/releases)
- [Changelog](https://github.com/actions/http-client/blob/main/RELEASES.md)
- [Commits](https://github.com/actions/http-client/commits)

Signed-off-by: dependabot[bot] <support@github.com>
2021-04-03 19:12:54 +00:00
070ea47eff Fix doc links
Signed-off-by: CrazyMax <crazy-max@users.noreply.github.com>
2021-04-03 20:57:52 +02:00
d3872b2920 Merge pull request #62 from crazy-max/workflow
Enhance workflow
2021-04-02 11:23:21 +02:00
cb02c5f3d1 Enhance workflow
Signed-off-by: CrazyMax <crazy-max@users.noreply.github.com>
2021-04-02 01:19:20 +02:00
f0d07f4abd Merge pull request #59 from docker/dependabot/npm_and_yarn/semver-7.3.5
Bump semver from 7.3.4 to 7.3.5
2021-03-23 18:29:51 +01:00
31740423d9 Update generated content
Signed-off-by: CrazyMax <crazy-max@users.noreply.github.com>
2021-03-23 18:24:17 +01:00
f25fc8d621 Bump semver from 7.3.4 to 7.3.5
Bumps [semver](https://github.com/npm/node-semver) from 7.3.4 to 7.3.5.
- [Release notes](https://github.com/npm/node-semver/releases)
- [Changelog](https://github.com/npm/node-semver/blob/master/CHANGELOG.md)
- [Commits](https://github.com/npm/node-semver/compare/v7.3.4...v7.3.5)

Signed-off-by: dependabot[bot] <support@github.com>
2021-03-23 05:49:51 +00:00
8d9ae5d563 Merge pull request #58 from crazy-max/cleanup
Remove label workflow
2021-03-18 20:11:23 +01:00
33d65376eb Remove label workflow
Signed-off-by: CrazyMax <crazy-max@users.noreply.github.com>
2021-03-18 20:08:45 +01:00
4ad06cec8a Merge pull request #56 from crazy-max/doc
Enhance doc
2021-02-17 19:06:17 +01:00
bae85ae215 Enhance doc
Signed-off-by: CrazyMax <crazy-max@users.noreply.github.com>
2021-02-17 18:30:12 +01:00
154c24e1f3 Merge pull request #50 from crazy-max/disable-clipping
Revert BuildKit step log limits tweak
2021-01-05 13:39:38 +01:00
8f7787f9f5 Revert "Merge pull request #46 from crazy-max/disable-clipping"
This reverts commit 87e1457170, reversing
changes made to 370507b713.

Signed-off-by: CrazyMax <crazy-max@users.noreply.github.com>
2021-01-05 13:34:14 +01:00
87e1457170 Merge pull request #46 from crazy-max/disable-clipping
Tweak BuildKit step log limits
2021-01-04 14:09:14 -08:00
467d3396dc Tweak BuildKit step log limits
Signed-off-by: CrazyMax <crazy-max@users.noreply.github.com>
2021-01-04 22:45:04 +01:00
370507b713 Merge pull request #49 from crazy-max/bootstrap-builder
Override the configured builder instance
2021-01-04 19:06:19 +01:00
0ddb9e80d4 Override the configured builder instance
Signed-off-by: CrazyMax <crazy-max@users.noreply.github.com>
2021-01-04 19:04:04 +01:00
daf8c4fb8d Merge pull request #48 from crazy-max/builder-name
Improve builder name generation
2021-01-02 00:57:35 +01:00
db0ae322da Improve builder name generation
Signed-off-by: CrazyMax <crazy-max@users.noreply.github.com>
2021-01-02 00:54:57 +01:00
5c0276ad2c Merge pull request #43 from crazy-max/remove-tempfix
Remove hardcoded buildkit container image moby/buildkit:v0.8-beta
2020-12-06 14:29:23 -08:00
ca778fe8a3 Remove hardcoded buildkit container image moby/buildkit:v0.8-beta
Signed-off-by: CrazyMax <crazy-max@users.noreply.github.com>
2020-12-06 11:11:17 +01:00
c3c3e01512 Merge pull request #42 from docker/dependabot/npm_and_yarn/semver-7.3.4
Bump semver from 7.3.2 to 7.3.4
2020-12-05 08:03:44 +01:00
a999bae018 Update generated content
Signed-off-by: CrazyMax <crazy-max@users.noreply.github.com>
2020-12-05 07:17:58 +01:00
4608f72b35 Bump semver from 7.3.2 to 7.3.4
Bumps [semver](https://github.com/npm/node-semver) from 7.3.2 to 7.3.4.
- [Release notes](https://github.com/npm/node-semver/releases)
- [Changelog](https://github.com/npm/node-semver/blob/master/CHANGELOG.md)
- [Commits](https://github.com/npm/node-semver/compare/v7.3.2...v7.3.4)

Signed-off-by: dependabot[bot] <support@github.com>
2020-12-02 06:10:04 +00:00
07b1484797 Merge pull request #40 from crazy-max/master
Simplify README
2020-11-18 18:31:41 +01:00
2ec180e24a Simplify README
Signed-off-by: CrazyMax <crazy-max@users.noreply.github.com>
2020-11-18 18:30:28 +01:00
8c8d171420 Merge pull request #39 from crazy-max/master
Update README and screenshot
2020-11-18 18:28:13 +01:00
7b1571268a Update README and screenshot
Signed-off-by: CrazyMax <crazy-max@users.noreply.github.com>
2020-11-18 18:25:03 +01:00
f9814f80df Merge pull request #36 from docker/dependabot/npm_and_yarn/actions/tool-cache-1.6.1
Bump @actions/tool-cache from 1.6.0 to 1.6.1
2020-11-18 18:19:55 +01:00
6635284beb Merge pull request #38 from crazy-max/master
Use major version of actions
2020-11-18 18:16:17 +01:00
3e60c35816 Use major version of actions
Signed-off-by: CrazyMax <crazy-max@users.noreply.github.com>
2020-11-18 18:13:18 +01:00
f5f60fa737 Bump @actions/tool-cache from 1.6.0 to 1.6.1
Bumps [@actions/tool-cache](https://github.com/actions/toolkit/tree/HEAD/packages/tool-cache) from 1.6.0 to 1.6.1.
- [Release notes](https://github.com/actions/toolkit/releases)
- [Changelog](https://github.com/actions/toolkit/blob/main/packages/tool-cache/RELEASES.md)
- [Commits](https://github.com/actions/toolkit/commits/HEAD/packages/tool-cache)

Signed-off-by: dependabot[bot] <support@github.com>
2020-11-16 07:03:12 +00:00
43c79af50b Merge pull request #34 from docker/dependabot/github_actions/actions/checkout-v2.3.4
Bump actions/checkout from v2.3.3 to v2.3.4
2020-11-12 20:11:01 +01:00
0c969bab1f Bump actions/checkout from v2.3.3 to v2.3.4
Bumps [actions/checkout](https://github.com/actions/checkout) from v2.3.3 to v2.3.4.
- [Release notes](https://github.com/actions/checkout/releases)
- [Changelog](https://github.com/actions/checkout/blob/main/CHANGELOG.md)
- [Commits](https://github.com/actions/checkout/compare/v2.3.3...5a4ac9002d0be2fb38bd78e4b4dbde5606d7042f)

Signed-off-by: dependabot[bot] <support@github.com>
2020-11-04 06:07:09 +00:00
dc5191ec77 Merge pull request #32 from crazy-max/group-log-output
Group log output
2020-10-20 22:34:31 +02:00
f9ddc94e27 Group log output
Signed-off-by: CrazyMax <crazy-max@users.noreply.github.com>
2020-10-20 22:30:00 +02:00
55b445ecbc Merge pull request #31 from docker/dependabot/github_actions/codecov/codecov-action-v1.0.14
Bump codecov/codecov-action from v1.0.13 to v1.0.14
2020-10-20 00:54:09 +02:00
19625e207e Bump codecov/codecov-action from v1.0.13 to v1.0.14
Bumps [codecov/codecov-action](https://github.com/codecov/codecov-action) from v1.0.13 to v1.0.14.
- [Release notes](https://github.com/codecov/codecov-action/releases)
- [Commits](https://github.com/codecov/codecov-action/compare/v1.0.13...7d5dfa54903bd909319c580a00535b483d1efcf3)

Signed-off-by: dependabot[bot] <support@github.com>
2020-10-19 04:17:50 +00:00
ba442a71c2 Merge pull request #30 from docker/dependabot/npm_and_yarn/actions/http-client-1.0.9
Bump @actions/http-client from 1.0.8 to 1.0.9
2020-10-13 20:38:25 +02:00
bd58e36ac7 Bump @actions/http-client from 1.0.8 to 1.0.9
Bumps [@actions/http-client](https://github.com/actions/http-client) from 1.0.8 to 1.0.9.
- [Release notes](https://github.com/actions/http-client/releases)
- [Changelog](https://github.com/actions/http-client/blob/main/RELEASES.md)
- [Commits](https://github.com/actions/http-client/commits)

Signed-off-by: dependabot[bot] <support@github.com>
2020-10-13 20:34:51 +02:00
21 changed files with 1968 additions and 481 deletions

2
.dockerignore Normal file
View File

@ -0,0 +1,2 @@
/coverage
/node_modules

View File

@ -2,35 +2,24 @@
Hi there! We're thrilled that you'd like to contribute to this project. Your help is essential for keeping it great. Hi there! We're thrilled that you'd like to contribute to this project. Your help is essential for keeping it great.
Contributions to this project are [released](https://help.github.com/articles/github-terms-of-service/#6-contributions-under-repository-license) to the public under the [project's open source license](LICENSE). Contributions to this project are [released](https://docs.github.com/en/github/site-policy/github-terms-of-service#6-contributions-under-repository-license)
to the public under the [project's open source license](LICENSE).
## Submitting a pull request ## Submitting a pull request
1. [Fork](https://github.com/docker/setup-buildx-action/fork) and clone the repository 1. [Fork](https://github.com/docker/setup-buildx-action/fork) and clone the repository
2. Configure and install the dependencies: `yarn install` 2. Configure and install the dependencies: `yarn install`
3. Create a new branch: `git checkout -b my-branch-name` 3. Create a new branch: `git checkout -b my-branch-name`
4. Make your change, add tests, and make sure the tests still pass 4. Make your changes
5. Run pre-checkin: `yarn run pre-checkin` 5. Make sure the tests pass: `docker buildx bake test`
6. Push to your fork and [submit a pull request](https://github.com/docker/setup-buildx-action/compare) 6. Format code and build javascript artifacts: `docker buildx bake pre-checkin`
7. Pat yourself on the back and wait for your pull request to be reviewed and merged. 7. Validate all code has correctly formatted and built: `docker buildx bake validate`
8. Push to your fork and [submit a pull request](https://github.com/docker/setup-buildx-action/compare)
## Container based developer flow 9. Pat your self on the back and wait for your pull request to be reviewed and merged.
If you don't want to maintain a Node developer environment that fits this project you can use containerized commands instead of invoking yarn directly.
```
# format code and build javascript artifacts
docker buildx bake pre-checkin
# validate all code has correctly formatted and built
docker buildx bake validate
# run tests
docker buildx bake test
```
Here are a few things you can do that will increase the likelihood of your pull request being accepted: Here are a few things you can do that will increase the likelihood of your pull request being accepted:
- Write tests.
- Make sure the `README.md` and any other relevant **documentation are kept up-to-date**. - Make sure the `README.md` and any other relevant **documentation are kept up-to-date**.
- We try to follow [SemVer v2.0.0](https://semver.org/). Randomly breaking public APIs is not an option. - We try to follow [SemVer v2.0.0](https://semver.org/). Randomly breaking public APIs is not an option.
- Keep your change as focused as possible. If there are multiple changes you would like to make that are not dependent upon each other, consider submitting them as **separate pull requests**. - Keep your change as focused as possible. If there are multiple changes you would like to make that are not dependent upon each other, consider submitting them as **separate pull requests**.
@ -39,5 +28,5 @@ Here are a few things you can do that will increase the likelihood of your pull
## Resources ## Resources
- [How to Contribute to Open Source](https://opensource.guide/how-to-contribute/) - [How to Contribute to Open Source](https://opensource.guide/how-to-contribute/)
- [Using Pull Requests](https://help.github.com/articles/about-pull-requests/) - [Using Pull Requests](https://docs.github.com/en/github/collaborating-with-issues-and-pull-requests/about-pull-requests)
- [GitHub Help](https://help.github.com) - [GitHub Help](https://docs.github.com/en)

View File

@ -30,4 +30,5 @@ about: Create a report to help us improve
### Logs ### Logs
> Download the [log file of your build](https://help.github.com/en/actions/configuring-and-managing-workflows/managing-a-workflow-run#downloading-logs) and [attach it](https://help.github.com/en/github/managing-your-work-on-github/file-attachments-on-issues-and-pull-requests) to this issue. > Download the [log file of your build](https://docs.github.com/en/actions/managing-workflow-runs/using-workflow-run-logs#downloading-logs)
> and [attach it](https://docs.github.com/en/github/managing-your-work-on-github/file-attachments-on-issues-and-pull-requests) to this issue.

77
.github/labels.yml vendored
View File

@ -1,77 +0,0 @@
## more info https://github.com/crazy-max/ghaction-github-labeler
- # automerge
name: ":bell: automerge"
color: "8f4fbc"
description: ""
- # bot
name: ":robot: bot"
color: "69cde9"
description: ""
- # bug
name: ":bug: bug"
color: "b60205"
description: ""
- # dependencies
name: ":game_die: dependencies"
color: "0366d6"
description: ""
- # documentation
name: ":memo: documentation"
color: "c5def5"
description: ""
- # duplicate
name: ":busts_in_silhouette: duplicate"
color: "cccccc"
description: ""
- # enhancement
name: ":sparkles: enhancement"
color: "0054ca"
description: ""
- # feature request
name: ":bulb: feature request"
color: "0e8a16"
description: ""
- # feedback
name: ":mega: feedback"
color: "03a9f4"
description: ""
- # future maybe
name: ":rocket: future maybe"
color: "fef2c0"
description: ""
- # good first issue
name: ":hatching_chick: good first issue"
color: "7057ff"
description: ""
- # help wanted
name: ":pray: help wanted"
color: "4caf50"
description: ""
- # hold
name: ":hand: hold"
color: "24292f"
description: ""
- # invalid
name: ":no_entry_sign: invalid"
color: "e6e6e6"
description: ""
- # maybe bug
name: ":interrobang: maybe bug"
color: "ff5722"
description: ""
- # needs more info
name: ":thinking: needs more info"
color: "795548"
description: ""
- # question
name: ":question: question"
color: "3f51b5"
description: ""
- # upstream
name: ":eyes: upstream"
color: "fbca04"
description: ""
- # wontfix
name: ":coffin: wontfix"
color: "ffffff"
description: ""

Binary file not shown.

Before

Width:  |  Height:  |  Size: 13 KiB

After

Width:  |  Height:  |  Size: 5.1 KiB

View File

@ -1,18 +1,18 @@
name: ci name: ci
on: on:
schedule:
- cron: '0 10 * * *' # everyday at 10am
push: push:
branches: branches:
- master - 'master'
- releases/v* - 'releases/v*'
paths-ignore: tags:
- "**.md" - 'v*'
pull_request: pull_request:
branches: branches:
- master - 'master'
- releases/v* - 'releases/v*'
paths-ignore:
- "**.md"
jobs: jobs:
main: main:
@ -22,12 +22,12 @@ jobs:
matrix: matrix:
buildx-version: buildx-version:
- latest - latest
- v0.2.2 - v0.4.1
- "" - ""
steps: steps:
- -
name: Checkout name: Checkout
uses: actions/checkout@v2.3.3 uses: actions/checkout@v2
- -
name: Set up Docker Buildx name: Set up Docker Buildx
id: buildx id: buildx
@ -49,7 +49,7 @@ jobs:
steps: steps:
- -
name: Checkout name: Checkout
uses: actions/checkout@v2.3.3 uses: actions/checkout@v2
- -
name: Set up Docker Buildx 1 name: Set up Docker Buildx 1
id: buildx1 id: buildx1
@ -70,7 +70,7 @@ jobs:
steps: steps:
- -
name: Checkout name: Checkout
uses: actions/checkout@v2.3.3 uses: actions/checkout@v2
- -
name: Set up Docker Buildx name: Set up Docker Buildx
uses: ./ uses: ./
@ -92,7 +92,7 @@ jobs:
steps: steps:
- -
name: Checkout name: Checkout
uses: actions/checkout@v2.3.3 uses: actions/checkout@v2
- -
name: Set up Docker Buildx name: Set up Docker Buildx
uses: ./ uses: ./
@ -115,7 +115,7 @@ jobs:
steps: steps:
- -
name: Checkout name: Checkout
uses: actions/checkout@v2.3.3 uses: actions/checkout@v2
- -
name: Set up Docker Buildx name: Set up Docker Buildx
uses: ./ uses: ./
@ -128,7 +128,7 @@ jobs:
steps: steps:
- -
name: Checkout name: Checkout
uses: actions/checkout@v2.3.3 uses: actions/checkout@v2
- -
name: Set up Docker Buildx name: Set up Docker Buildx
uses: ./ uses: ./
@ -161,7 +161,7 @@ jobs:
steps: steps:
- -
name: Checkout name: Checkout
uses: actions/checkout@v2.3.3 uses: actions/checkout@v2
- -
name: Create context name: Create context
run: | run: |
@ -183,7 +183,7 @@ jobs:
matrix: matrix:
buildx-version: buildx-version:
- latest - latest
- v0.2.2 - v0.4.1
- "" - ""
qemu-platforms: qemu-platforms:
- all - all
@ -191,7 +191,7 @@ jobs:
steps: steps:
- -
name: Checkout name: Checkout
uses: actions/checkout@v2.3.3 uses: actions/checkout@v2
- -
name: Set up QEMU name: Set up QEMU
uses: docker/setup-qemu-action@v1 uses: docker/setup-qemu-action@v1

View File

@ -1,20 +0,0 @@
name: labels
on:
push:
branches:
- 'master'
paths:
- '.github/labels.yml'
- '.github/workflows/labels.yml'
jobs:
labeler:
runs-on: ubuntu-latest
steps:
-
name: Checkout
uses: actions/checkout@v2.3.3
-
name: Run Labeler
uses: crazy-max/ghaction-github-labeler@v3.1.0

View File

@ -3,44 +3,32 @@ name: test
on: on:
push: push:
branches: branches:
- master - 'master'
- releases/v* - 'releases/v*'
paths-ignore:
- "**.md"
pull_request: pull_request:
paths-ignore: branches:
- "**.md" - 'master'
- 'releases/v*'
jobs: jobs:
test-containerized:
runs-on: ubuntu-latest
steps:
-
name: Checkout
uses: actions/checkout@v2.3.3
-
name: Validate
run: docker buildx bake validate
-
name: Test
run: docker buildx bake test
test: test:
runs-on: ubuntu-latest runs-on: ubuntu-latest
steps: steps:
- -
name: Checkout name: Checkout
uses: actions/checkout@v2.3.3 uses: actions/checkout@v2
- -
name: Install name: Validate
run: yarn install uses: docker/bake-action@v1
with:
targets: validate
- -
name: Test name: Test
run: yarn run test uses: docker/bake-action@v1
with:
targets: test
- -
name: Upload coverage name: Upload coverage
uses: codecov/codecov-action@v1.0.13 uses: codecov/codecov-action@v1
if: success()
with: with:
token: ${{ secrets.CODECOV_TOKEN }}
file: ./coverage/clover.xml file: ./coverage/clover.xml

View File

@ -1,52 +0,0 @@
#syntax=docker/dockerfile:1.1-experimental
FROM node:14 AS deps
WORKDIR /src
COPY package.json yarn.lock ./
RUN --mount=type=cache,target=/usr/local/share/.cache/yarn \
yarn install
FROM scratch AS update-yarn
COPY --from=deps /src/yarn.lock /
FROM deps AS validate-yarn
COPY .git .git
RUN status=$(git status --porcelain -- yarn.lock); if [ -n "$status" ]; then echo $status; exit 1; fi
FROM deps AS base
COPY . .
FROM base AS build
RUN yarn build
FROM deps AS test
COPY --from=docker /usr/local/bin/docker /usr/bin/
ARG TARGETOS
ARG TARGETARCH
ARG BUILDX_VERSION=v0.4.2
ENV RUNNER_TEMP=/tmp/github_runner
ENV RUNNER_TOOL_CACHE=/tmp/github_tool_cache
RUN mkdir -p /usr/local/lib/docker/cli-plugins && \
curl -fsSL https://github.com/docker/buildx/releases/download/$BUILDX_VERSION/buildx-$BUILDX_VERSION.$TARGETOS-$TARGETARCH > /usr/local/lib/docker/cli-plugins/docker-buildx && \
chmod +x /usr/local/lib/docker/cli-plugins/docker-buildx && \
docker buildx version
COPY . .
RUN yarn run test
FROM base AS run-format
RUN yarn run format
FROM scratch AS format
COPY --from=run-format /src/src/*.ts /src/
FROM base AS validate-format
RUN yarn run format-check
FROM scratch AS dist
COPY --from=build /src/dist/ /dist/
FROM build AS validate-build
RUN status=$(git status --porcelain -- dist); if [ -n "$status" ]; then echo $status; exit 1; fi
FROM base AS dev
ENTRYPOINT ["bash"]

View File

@ -8,10 +8,10 @@
GitHub Action to set up Docker [Buildx](https://github.com/docker/buildx). GitHub Action to set up Docker [Buildx](https://github.com/docker/buildx).
> :bulb: See also: This action will create and boot a builder that can be used in the following steps of your workflow if you're using
> * [login](https://github.com/docker/login-action) action [buildx](https://github.com/docker/buildx). By default, the `docker-container` [builder driver](https://github.com/docker/buildx/blob/master/docs/reference/buildx_create.md#driver)
> * [setup-qemu](https://github.com/docker/setup-qemu-action) action will be used to be able to build multi-platform images and export cache thanks to the [BuildKit](https://github.com/moby/buildkit)
> * [build-push](https://github.com/docker/build-push-action) action container.
![Screenshot](.github/setup-buildx-action.png) ![Screenshot](.github/setup-buildx-action.png)
@ -49,8 +49,6 @@ jobs:
name: Set up Docker Buildx name: Set up Docker Buildx
id: buildx id: buildx
uses: docker/setup-buildx-action@v1 uses: docker/setup-buildx-action@v1
with:
version: latest
- -
name: Builder instance name name: Builder instance name
run: echo ${{ steps.buildx.outputs.name }} run: echo ${{ steps.buildx.outputs.name }}
@ -79,14 +77,10 @@ jobs:
- -
name: Set up QEMU name: Set up QEMU
uses: docker/setup-qemu-action@v1 uses: docker/setup-qemu-action@v1
with:
platforms: all
- -
name: Set up Docker Buildx name: Set up Docker Buildx
id: buildx id: buildx
uses: docker/setup-buildx-action@v1 uses: docker/setup-buildx-action@v1
with:
version: latest
- -
name: Available platforms name: Available platforms
run: echo ${{ steps.buildx.outputs.platforms }} run: echo ${{ steps.buildx.outputs.platforms }}
@ -129,12 +123,12 @@ Following inputs can be used as `step.with` keys
| Name | Type | Description | | Name | Type | Description |
|--------------------|---------|-----------------------------------| |--------------------|---------|-----------------------------------|
| `version` | String | [Buildx](https://github.com/docker/buildx) version. (eg. `v0.3.0`, `latest`) | | `version` | String | [Buildx](https://github.com/docker/buildx) version. (eg. `v0.3.0`, `latest`) |
| `driver` | String | Sets the [builder driver](https://github.com/docker/buildx#--driver-driver) to be used (default `docker-container`) | | `driver` | String | Sets the [builder driver](https://github.com/docker/buildx/blob/master/docs/reference/buildx_create.md#driver) to be used (default `docker-container`) |
| `driver-opts` | CSV | List of additional [driver-specific options](https://github.com/docker/buildx#--driver-opt-options) (eg. `image=moby/buildkit:master`) | | `driver-opts` | CSV | List of additional [driver-specific options](https://github.com/docker/buildx/blob/master/docs/reference/buildx_create.md#driver-opt) (eg. `image=moby/buildkit:master`) |
| `buildkitd-flags` | String | [Flags for buildkitd](https://github.com/moby/buildkit/blob/master/docs/buildkitd.toml.md) daemon (since [buildx v0.3.0](https://github.com/docker/buildx/releases/tag/v0.3.0)) | | `buildkitd-flags` | String | [Flags for buildkitd](https://github.com/moby/buildkit/blob/master/docs/buildkitd.toml.md) daemon (since [buildx v0.3.0](https://github.com/docker/buildx/releases/tag/v0.3.0)) |
| `install` | Bool | Sets up `docker build` command as an alias to `docker buildx` (default `false`) | | `install` | Bool | Sets up `docker build` command as an alias to `docker buildx` (default `false`) |
| `use` | Bool | Switch to this builder instance (default `true`) | | `use` | Bool | Switch to this builder instance (default `true`) |
| `endpoint` | String | [Optional address for docker socket](https://github.com/docker/buildx#buildx-create-options-contextendpoint) or context from `docker context ls` | | `endpoint` | String | [Optional address for docker socket](https://github.com/docker/buildx/blob/master/docs/reference/buildx_create.md#description) or context from `docker context ls` |
> `CSV` type must be a newline-delimited string > `CSV` type must be a newline-delimited string
> ```yaml > ```yaml

View File

@ -41,18 +41,10 @@ describe('platforms', () => {
); );
}); });
describe('countBuilders', () => {
it('valid', async () => {
const countBuilders = await buildx.countBuilders();
console.log(`countBuilders: ${countBuilders}`);
expect(countBuilders).toBeGreaterThan(0);
}, 100000);
});
describe('install', () => { describe('install', () => {
const tmpDir = fs.mkdtempSync(path.join(os.tmpdir(), 'setup-buildx-')); const tmpDir = fs.mkdtempSync(path.join(os.tmpdir(), 'setup-buildx-'));
it('acquires v0.2.2 version of buildx', async () => { it('acquires v0.4.1 version of buildx', async () => {
const buildxBin = await buildx.install('v0.2.2', tmpDir); const buildxBin = await buildx.install('v0.4.1', tmpDir);
console.log(buildxBin); console.log(buildxBin);
expect(fs.existsSync(buildxBin)).toBe(true); expect(fs.existsSync(buildxBin)).toBe(true);
}, 100000); }, 100000);

1897
dist/index.js generated vendored

File diff suppressed because it is too large Load Diff

View File

@ -1,42 +1,67 @@
variable "NODE_VERSION" {
default = "12"
}
target "node-version" {
args = {
NODE_VERSION = NODE_VERSION
}
}
group "default" { group "default" {
targets = ["build"] targets = ["build"]
} }
group "pre-checkin" { group "pre-checkin" {
targets = ["update-yarn", "format", "build"] targets = ["vendor-update", "format", "build"]
} }
group "validate" { group "validate" {
targets = ["validate-format", "validate-build", "validate-yarn"] targets = ["format-validate", "build-validate", "vendor-validate"]
}
target "update-yarn" {
target = "update-yarn"
output = ["."]
} }
target "build" { target "build" {
target = "dist" inherits = ["node-version"]
dockerfile = "./hack/build.Dockerfile"
target = "build-update"
output = ["."] output = ["."]
} }
target "test" { target "build-validate" {
target = "test" inherits = ["node-version"]
dockerfile = "./hack/build.Dockerfile"
target = "build-validate"
} }
target "format" { target "format" {
target = "format" inherits = ["node-version"]
dockerfile = "./hack/build.Dockerfile"
target = "format-update"
output = ["."] output = ["."]
} }
target "validate-format" { target "format-validate" {
target = "validate-format" inherits = ["node-version"]
dockerfile = "./hack/build.Dockerfile"
target = "format-validate"
} }
target "validate-build" { target "vendor-update" {
target = "validate-build" inherits = ["node-version"]
dockerfile = "./hack/vendor.Dockerfile"
target = "update"
output = ["."]
} }
target "validate-yarn" { target "vendor-validate" {
target = "validate-yarn" inherits = ["node-version"]
dockerfile = "./hack/vendor.Dockerfile"
target = "validate"
}
target "test" {
inherits = ["node-version"]
dockerfile = "./hack/test.Dockerfile"
target = "test-coverage"
output = ["./coverage"]
} }

42
hack/build.Dockerfile Normal file
View File

@ -0,0 +1,42 @@
# syntax=docker/dockerfile:1.2
ARG NODE_VERSION
FROM node:${NODE_VERSION}-alpine AS base
RUN apk add --no-cache cpio findutils git
WORKDIR /src
FROM base AS deps
RUN --mount=type=bind,target=.,rw \
--mount=type=cache,target=/src/node_modules \
yarn install
FROM deps AS build
RUN --mount=type=bind,target=.,rw \
--mount=type=cache,target=/src/node_modules \
yarn run build && mkdir /out && cp -Rf dist /out/
FROM scratch AS build-update
COPY --from=build /out /
FROM build AS build-validate
RUN --mount=type=bind,target=.,rw \
git add -A && cp -rf /out/* .; \
if [ -n "$(git status --porcelain -- dist)" ]; then \
echo >&2 'ERROR: Build result differs. Please build first with "docker buildx bake build"'; \
git status --porcelain -- dist; \
exit 1; \
fi
FROM deps AS format
RUN --mount=type=bind,target=.,rw \
--mount=type=cache,target=/src/node_modules \
yarn run format \
&& mkdir /out && find . -name '*.ts' -not -path './node_modules/*' | cpio -pdm /out
FROM scratch AS format-update
COPY --from=format /out /
FROM deps AS format-validate
RUN --mount=type=bind,target=.,rw \
--mount=type=cache,target=/src/node_modules \
yarn run format-check \

View File

@ -1,6 +0,0 @@
#!/usr/bin/env bash
iidfile=$(mktemp -t docker-iidfile.XXXXXXXXXX)
DOCKER_BUILDKIT=1 docker build --iidfile $iidfile --progress=plain .
docker run -it --rm $(cat $iidfile)
docker rmi $(cat $iidfile)

23
hack/test.Dockerfile Normal file
View File

@ -0,0 +1,23 @@
# syntax=docker/dockerfile:1.2
ARG NODE_VERSION
FROM node:${NODE_VERSION}-alpine AS base
RUN apk add --no-cache git
WORKDIR /src
FROM base AS deps
RUN --mount=type=bind,target=.,rw \
--mount=type=cache,target=/src/node_modules \
yarn install
FROM deps AS test
ENV RUNNER_TEMP=/tmp/github_runner
ENV RUNNER_TOOL_CACHE=/tmp/github_tool_cache
RUN --mount=type=bind,target=.,rw \
--mount=type=cache,target=/src/node_modules \
--mount=type=bind,from=crazymax/docker,source=/usr/libexec/docker/cli-plugins/docker-buildx,target=/usr/libexec/docker/cli-plugins/docker-buildx \
--mount=type=bind,from=crazymax/docker,source=/usr/local/bin/docker,target=/usr/bin/docker \
yarn run test --coverageDirectory=/tmp/coverage
FROM scratch AS test-coverage
COPY --from=test /tmp/coverage /

23
hack/vendor.Dockerfile Normal file
View File

@ -0,0 +1,23 @@
# syntax=docker/dockerfile:1.2
ARG NODE_VERSION
FROM node:${NODE_VERSION}-alpine AS base
RUN apk add --no-cache git
WORKDIR /src
FROM base AS vendored
RUN --mount=type=bind,target=.,rw \
--mount=type=cache,target=/src/node_modules \
yarn install && mkdir /out && cp yarn.lock /out
FROM scratch AS update
COPY --from=vendored /out /
FROM vendored AS validate
RUN --mount=type=bind,target=.,rw \
git add -A && cp -rf /out/* .; \
if [ -n "$(git status --porcelain -- yarn.lock)" ]; then \
echo >&2 'ERROR: Vendor result differs. Please vendor your package with "docker buildx bake vendor-update"'; \
git status --porcelain -- yarn.lock; \
exit 1; \
fi

View File

@ -29,9 +29,10 @@
"dependencies": { "dependencies": {
"@actions/core": "^1.2.6", "@actions/core": "^1.2.6",
"@actions/exec": "^1.0.4", "@actions/exec": "^1.0.4",
"@actions/http-client": "^1.0.8", "@actions/http-client": "^1.0.11",
"@actions/tool-cache": "^1.5.5", "@actions/tool-cache": "^1.6.1",
"semver": "^7.3.2" "semver": "^7.3.5",
"uuid": "^8.3.2"
}, },
"devDependencies": { "devDependencies": {
"@types/jest": "^26.0.3", "@types/jest": "^26.0.3",

View File

@ -34,15 +34,6 @@ export async function isAvailable(): Promise<Boolean> {
}); });
} }
export async function countBuilders(): Promise<number> {
return await exec.exec(`docker`, ['buildx', 'ls'], true).then(res => {
if (res.stderr != '' && !res.success) {
throw new Error(`Cannot list builders: ${res.stderr}`);
}
return (res.stdout.trim().split(`\n`).length - 1) / 2;
});
}
export async function platforms(): Promise<String | undefined> { export async function platforms(): Promise<String | undefined> {
return await exec.exec(`docker`, ['buildx', 'inspect'], true).then(res => { return await exec.exec(`docker`, ['buildx', 'inspect'], true).then(res => {
if (res.stderr != '' && !res.success) { if (res.stderr != '' && !res.success) {
@ -61,7 +52,7 @@ export async function install(inputVersion: string, dockerConfigHome: string): P
if (!release) { if (!release) {
throw new Error(`Cannot find buildx ${inputVersion} release`); throw new Error(`Cannot find buildx ${inputVersion} release`);
} }
core.debug(`Release found: ${release.tag_name}`); core.debug(`Release ${release.tag_name} found`);
const version = release.tag_name.replace(/^v+|v+$/g, ''); const version = release.tag_name.replace(/^v+|v+$/g, '');
let toolPath: string; let toolPath: string;
@ -85,7 +76,7 @@ export async function install(inputVersion: string, dockerConfigHome: string): P
core.debug(`Plugin path is ${pluginPath}`); core.debug(`Plugin path is ${pluginPath}`);
fs.copyFileSync(path.join(toolPath, filename), pluginPath); fs.copyFileSync(path.join(toolPath, filename), pluginPath);
core.info('🔨 Fixing perms...'); core.info('Fixing perms');
fs.chmodSync(pluginPath, '0755'); fs.chmodSync(pluginPath, '0755');
return pluginPath; return pluginPath;
@ -101,7 +92,7 @@ async function download(version: string): Promise<string> {
let downloadPath: string; let downloadPath: string;
try { try {
core.info(`⬇️ Downloading ${downloadUrl}...`); core.info(`Downloading ${downloadUrl}`);
downloadPath = await tc.downloadTool(downloadUrl); downloadPath = await tc.downloadTool(downloadUrl);
core.debug(`Downloaded to ${downloadPath}`); core.debug(`Downloaded to ${downloadPath}`);
} catch (error) { } catch (error) {

View File

@ -19,32 +19,25 @@ async function run(): Promise<void> {
const dockerConfigHome: string = process.env.DOCKER_CONFIG || path.join(os.homedir(), '.docker'); const dockerConfigHome: string = process.env.DOCKER_CONFIG || path.join(os.homedir(), '.docker');
if (!(await buildx.isAvailable()) || inputs.version) { if (!(await buildx.isAvailable()) || inputs.version) {
core.startGroup(`Installing buildx`);
await buildx.install(inputs.version || 'latest', dockerConfigHome); await buildx.install(inputs.version || 'latest', dockerConfigHome);
core.endGroup();
} }
const buildxVersion = await buildx.getVersion(); const buildxVersion = await buildx.getVersion();
core.info(`📣 Buildx version: ${buildxVersion}`); core.info(`Using buildx ${buildxVersion}`);
const builderName: string = const builderName: string = inputs.driver == 'docker' ? 'default' : `builder-${require('uuid').v4()}`;
inputs.driver == 'docker' ? 'default' : `builder-${process.env.GITHUB_JOB}-${(await buildx.countBuilders()) + 1}`;
core.setOutput('name', builderName); core.setOutput('name', builderName);
stateHelper.setBuilderName(builderName); stateHelper.setBuilderName(builderName);
if (inputs.driver !== 'docker') { if (inputs.driver !== 'docker') {
core.info('🔨 Creating a new builder instance...'); core.startGroup(`Creating a new builder instance`);
let createArgs: Array<string> = ['buildx', 'create', '--name', builderName, '--driver', inputs.driver]; let createArgs: Array<string> = ['buildx', 'create', '--name', builderName, '--driver', inputs.driver];
if (semver.satisfies(buildxVersion, '>=0.3.0')) { if (semver.satisfies(buildxVersion, '>=0.3.0')) {
let hasImageDriverOpt: boolean = false;
await context.asyncForEach(inputs.driverOpts, async driverOpt => { await context.asyncForEach(inputs.driverOpts, async driverOpt => {
if (driverOpt.startsWith('image=')) {
hasImageDriverOpt = true;
}
createArgs.push('--driver-opt', driverOpt); createArgs.push('--driver-opt', driverOpt);
}); });
if (!hasImageDriverOpt) {
//FIXME: Temporary fix (docker/build-push-action#154, docker/build-push-action#162)
createArgs.push('--driver-opt', 'image=moby/buildkit:v0.8-beta');
}
if (inputs.buildkitdFlags) { if (inputs.buildkitdFlags) {
createArgs.push('--buildkitd-flags', inputs.buildkitdFlags); createArgs.push('--buildkitd-flags', inputs.buildkitdFlags);
} }
@ -56,20 +49,28 @@ async function run(): Promise<void> {
createArgs.push(inputs.endpoint); createArgs.push(inputs.endpoint);
} }
await exec.exec('docker', createArgs); await exec.exec('docker', createArgs);
core.endGroup();
core.info('🏃 Booting builder...'); core.startGroup(`Booting builder`);
await exec.exec('docker', ['buildx', 'inspect', '--bootstrap']); let bootstrapArgs: Array<string> = ['buildx', 'inspect', '--bootstrap'];
if (semver.satisfies(buildxVersion, '>=0.4.0')) {
bootstrapArgs.push('--builder', builderName);
}
await exec.exec('docker', bootstrapArgs);
core.endGroup();
} }
if (inputs.install) { if (inputs.install) {
core.info('🤝 Setting buildx as default builder...'); core.startGroup(`Setting buildx as default builder`);
await exec.exec('docker', ['buildx', 'install']); await exec.exec('docker', ['buildx', 'install']);
core.endGroup();
} }
core.info('🛒 Extracting available platforms...'); core.startGroup(`Extracting available platforms`);
const platforms = await buildx.platforms(); const platforms = await buildx.platforms();
core.info(`${platforms}`); core.info(`${platforms}`);
core.setOutput('platforms', platforms); core.setOutput('platforms', platforms);
core.endGroup();
} catch (error) { } catch (error) {
core.setFailed(error.message); core.setFailed(error.message);
} }

View File

@ -2,7 +2,7 @@
# yarn lockfile v1 # yarn lockfile v1
"@actions/core@^1.2.3", "@actions/core@^1.2.6": "@actions/core@^1.2.6":
version "1.2.6" version "1.2.6"
resolved "https://registry.yarnpkg.com/@actions/core/-/core-1.2.6.tgz#a78d49f41a4def18e88ce47c2cac615d5694bf09" resolved "https://registry.yarnpkg.com/@actions/core/-/core-1.2.6.tgz#a78d49f41a4def18e88ce47c2cac615d5694bf09"
integrity sha512-ZQYitnqiyBc3D+k7LsgSBmMDVkOVidaagDG7j3fOym77jNunWRuYx7VSHa9GNfFZh+zh61xsCjRj4JxMZlDqTA== integrity sha512-ZQYitnqiyBc3D+k7LsgSBmMDVkOVidaagDG7j3fOym77jNunWRuYx7VSHa9GNfFZh+zh61xsCjRj4JxMZlDqTA==
@ -14,10 +14,10 @@
dependencies: dependencies:
"@actions/io" "^1.0.1" "@actions/io" "^1.0.1"
"@actions/http-client@^1.0.8": "@actions/http-client@^1.0.11", "@actions/http-client@^1.0.8":
version "1.0.8" version "1.0.11"
resolved "https://registry.yarnpkg.com/@actions/http-client/-/http-client-1.0.8.tgz#8bd76e8eca89dc8bcf619aa128eba85f7a39af45" resolved "https://registry.yarnpkg.com/@actions/http-client/-/http-client-1.0.11.tgz#c58b12e9aa8b159ee39e7dd6cbd0e91d905633c0"
integrity sha512-G4JjJ6f9Hb3Zvejj+ewLLKLf99ZC+9v+yCxoYf9vSyH+WkzPLB2LuUtRMGNkooMqdugGBFStIKXOuvH1W+EctA== integrity sha512-VRYHGQV1rqnROJqdMvGUbY/Kn8vriQe/F9HR2AlYHzmKuM/p3kjNuXhmdBfcVgsvRWTz5C5XW5xvndZrVBuAYg==
dependencies: dependencies:
tunnel "0.0.6" tunnel "0.0.6"
@ -26,12 +26,12 @@
resolved "https://registry.yarnpkg.com/@actions/io/-/io-1.0.2.tgz#2f614b6e69ce14d191180451eb38e6576a6e6b27" resolved "https://registry.yarnpkg.com/@actions/io/-/io-1.0.2.tgz#2f614b6e69ce14d191180451eb38e6576a6e6b27"
integrity sha512-J8KuFqVPr3p6U8W93DOXlXW6zFvrQAJANdS+vw0YhusLIq+bszW8zmK2Fh1C2kDPX8FMvwIl1OUcFgvJoXLbAg== integrity sha512-J8KuFqVPr3p6U8W93DOXlXW6zFvrQAJANdS+vw0YhusLIq+bszW8zmK2Fh1C2kDPX8FMvwIl1OUcFgvJoXLbAg==
"@actions/tool-cache@^1.5.5": "@actions/tool-cache@^1.6.1":
version "1.6.0" version "1.6.1"
resolved "https://registry.yarnpkg.com/@actions/tool-cache/-/tool-cache-1.6.0.tgz#5b425db2d642df65dd0d6bcec0d84dcdbca3f80d" resolved "https://registry.yarnpkg.com/@actions/tool-cache/-/tool-cache-1.6.1.tgz#5e199f7bfd9863eb2b0d467cd70751ef8042ec40"
integrity sha512-+fyEBImPD3m5I0o6DflCO0NHY180LPoX8Lo6y4Iez+V17kO8kfkH0VHxb8mUdmD6hn9dWA9Ch1JA20fXoIYUeQ== integrity sha512-F+vwEDwfqcHMKuSkj79pihOnsAMv23EkG76nMpc82UsnXwyQdyEsktGxrB0SNtm7pRqTXEIOoAPTgrSQclXYTg==
dependencies: dependencies:
"@actions/core" "^1.2.3" "@actions/core" "^1.2.6"
"@actions/exec" "^1.0.0" "@actions/exec" "^1.0.0"
"@actions/http-client" "^1.0.8" "@actions/http-client" "^1.0.8"
"@actions/io" "^1.0.1" "@actions/io" "^1.0.1"
@ -2490,6 +2490,13 @@ lru-cache@^4.1.5:
pseudomap "^1.0.2" pseudomap "^1.0.2"
yallist "^2.1.2" yallist "^2.1.2"
lru-cache@^6.0.0:
version "6.0.0"
resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-6.0.0.tgz#6d6fe6570ebd96aaf90fcad1dafa3b2566db3a94"
integrity sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==
dependencies:
yallist "^4.0.0"
make-dir@^3.0.0: make-dir@^3.0.0:
version "3.1.0" version "3.1.0"
resolved "https://registry.yarnpkg.com/make-dir/-/make-dir-3.1.0.tgz#415e967046b3a7f1d185277d84aa58203726a13f" resolved "https://registry.yarnpkg.com/make-dir/-/make-dir-3.1.0.tgz#415e967046b3a7f1d185277d84aa58203726a13f"
@ -3107,10 +3114,12 @@ saxes@^5.0.0:
resolved "https://registry.yarnpkg.com/semver/-/semver-5.7.1.tgz#a954f931aeba508d307bbf069eff0c01c96116f7" resolved "https://registry.yarnpkg.com/semver/-/semver-5.7.1.tgz#a954f931aeba508d307bbf069eff0c01c96116f7"
integrity sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ== integrity sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==
semver@7.x, semver@^7.3.2: semver@7.x, semver@^7.3.2, semver@^7.3.5:
version "7.3.2" version "7.3.5"
resolved "https://registry.yarnpkg.com/semver/-/semver-7.3.2.tgz#604962b052b81ed0786aae84389ffba70ffd3938" resolved "https://registry.yarnpkg.com/semver/-/semver-7.3.5.tgz#0b621c879348d8998e4b0e4be94b3f12e6018ef7"
integrity sha512-OrOb32TeeambH6UrhtShmF7CRDqhL6/5XpPNp2DuRH6+9QLw/orhp72j87v8Qa1ScDkvrrBNpZcDejAirJmfXQ== integrity sha512-PoeGJYh8HK4BTO/a9Tf6ZG3veo/A7ZVsYrSA6J8ny9nb3B1VrpkuN+z9OE5wfE5p6H4LchYZsegiQgbJD94ZFQ==
dependencies:
lru-cache "^6.0.0"
semver@^6.0.0, semver@^6.1.0, semver@^6.3.0: semver@^6.0.0, semver@^6.1.0, semver@^6.3.0:
version "6.3.0" version "6.3.0"
@ -3602,6 +3611,11 @@ uuid@^8.2.0:
resolved "https://registry.yarnpkg.com/uuid/-/uuid-8.3.0.tgz#ab738085ca22dc9a8c92725e459b1d507df5d6ea" resolved "https://registry.yarnpkg.com/uuid/-/uuid-8.3.0.tgz#ab738085ca22dc9a8c92725e459b1d507df5d6ea"
integrity sha512-fX6Z5o4m6XsXBdli9g7DtWgAx+osMsRRZFKma1mIUsLCz6vRvv+pz5VNbyu9UEDzpMWulZfvpgb/cmDXVulYFQ== integrity sha512-fX6Z5o4m6XsXBdli9g7DtWgAx+osMsRRZFKma1mIUsLCz6vRvv+pz5VNbyu9UEDzpMWulZfvpgb/cmDXVulYFQ==
uuid@^8.3.2:
version "8.3.2"
resolved "https://registry.yarnpkg.com/uuid/-/uuid-8.3.2.tgz#80d5b5ced271bb9af6c445f21a1a04c606cefbe2"
integrity sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==
v8-to-istanbul@^4.1.3: v8-to-istanbul@^4.1.3:
version "4.1.4" version "4.1.4"
resolved "https://registry.yarnpkg.com/v8-to-istanbul/-/v8-to-istanbul-4.1.4.tgz#b97936f21c0e2d9996d4985e5c5156e9d4e49cd6" resolved "https://registry.yarnpkg.com/v8-to-istanbul/-/v8-to-istanbul-4.1.4.tgz#b97936f21c0e2d9996d4985e5c5156e9d4e49cd6"
@ -3753,6 +3767,11 @@ yallist@^2.1.2:
resolved "https://registry.yarnpkg.com/yallist/-/yallist-2.1.2.tgz#1c11f9218f076089a47dd512f93c6699a6a81d52" resolved "https://registry.yarnpkg.com/yallist/-/yallist-2.1.2.tgz#1c11f9218f076089a47dd512f93c6699a6a81d52"
integrity sha1-HBH5IY8HYImkfdUS+TxmmaaoHVI= integrity sha1-HBH5IY8HYImkfdUS+TxmmaaoHVI=
yallist@^4.0.0:
version "4.0.0"
resolved "https://registry.yarnpkg.com/yallist/-/yallist-4.0.0.tgz#9bb92790d9c0effec63be73519e11a35019a3a72"
integrity sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==
yargs-parser@18.x, yargs-parser@^18.1.2: yargs-parser@18.x, yargs-parser@^18.1.2:
version "18.1.3" version "18.1.3"
resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-18.1.3.tgz#be68c4975c6b2abf469236b0c870362fab09a7b0" resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-18.1.3.tgz#be68c4975c6b2abf469236b0c870362fab09a7b0"