commit
						bfea497a8e
					
				| @ -1 +1,2 @@ | |||||||
| node_modules | /coverage | ||||||
|  | /node_modules | ||||||
|  | |||||||
							
								
								
									
										35
									
								
								.github/CONTRIBUTING.md
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										35
									
								
								.github/CONTRIBUTING.md
									
									
									
									
										vendored
									
									
								
							| @ -2,33 +2,20 @@ | |||||||
| 
 | 
 | ||||||
| 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/build-push-action/fork) and clone the repository | 1. [Fork](https://github.com/docker/build-push-action/fork) and clone the repository | ||||||
| 2. Configure and install the dependencies: `yarn install` | 2. Configure and install the dependencies: `yarn install` | ||||||
| 3. Make sure the tests pass on your machine: `yarn run test` | 3. Create a new branch: `git checkout -b my-branch-name` | ||||||
| 4. Create a new branch: `git checkout -b my-branch-name` | 4. Make your changes | ||||||
| 5. Make your change, add tests, and make sure the tests still pass | 5. Make sure the tests pass: `docker buildx bake test` | ||||||
| 6. Run pre-checkin: `yarn run pre-checkin` | 6. Format code and build javascript artifacts: `docker buildx bake pre-checkin` | ||||||
| 7. Push to your fork and [submit a pull request](https://github.com/docker/build-push-action/compare) | 7. Validate all code has correctly formatted and built: `docker buildx bake validate` | ||||||
| 8. Pat your self on the back and wait for your pull request to be reviewed and merged. | 8. Push to your fork and [submit a pull request](https://github.com/docker/build-push-action/compare) | ||||||
| 
 | 9. Pat your self on the back and wait for your pull request to be reviewed and merged. | ||||||
| ## Container based developer flow |  | ||||||
| 
 |  | ||||||
| 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: | ||||||
| 
 | 
 | ||||||
| @ -40,5 +27,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) | ||||||
|  | |||||||
							
								
								
									
										2
									
								
								.github/ISSUE_TEMPLATE/bug_report.md
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										2
									
								
								.github/ISSUE_TEMPLATE/bug_report.md
									
									
									
									
										vendored
									
									
								
							| @ -34,4 +34,4 @@ Before sumbitting a bug report please read the [Troubleshooting doc](https://git | |||||||
| 
 | 
 | ||||||
| ### 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. | ||||||
|  | |||||||
							
								
								
									
										10
									
								
								.github/workflows/ci.yml
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										10
									
								
								.github/workflows/ci.yml
									
									
									
									
										vendored
									
									
								
							| @ -326,7 +326,7 @@ jobs: | |||||||
|         uses: ./ |         uses: ./ | ||||||
|         with: |         with: | ||||||
|           context: ./test |           context: ./test | ||||||
|           file: ./test/Dockerfile-${{ matrix.dockerfile }} |           file: ./test/${{ matrix.dockerfile }}.Dockerfile | ||||||
|           builder: ${{ steps.buildx.outputs.name }} |           builder: ${{ steps.buildx.outputs.name }} | ||||||
|           platforms: linux/amd64,linux/arm64 |           platforms: linux/amd64,linux/arm64 | ||||||
|           push: true |           push: true | ||||||
| @ -379,7 +379,7 @@ jobs: | |||||||
|         uses: ./ |         uses: ./ | ||||||
|         with: |         with: | ||||||
|           context: ./test |           context: ./test | ||||||
|           file: ./test/Dockerfile-multi |           file: ./test/multi.Dockerfile | ||||||
|           builder: ${{ steps.buildx.outputs.name }} |           builder: ${{ steps.buildx.outputs.name }} | ||||||
|           platforms: linux/amd64,linux/arm64 |           platforms: linux/amd64,linux/arm64 | ||||||
|           push: true |           push: true | ||||||
| @ -412,7 +412,7 @@ jobs: | |||||||
|         uses: ./ |         uses: ./ | ||||||
|         with: |         with: | ||||||
|           context: ./test |           context: ./test | ||||||
|           file: ./test/Dockerfile-multi |           file: ./test/multi.Dockerfile | ||||||
|           builder: ${{ steps.buildx.outputs.name }} |           builder: ${{ steps.buildx.outputs.name }} | ||||||
|           platforms: linux/amd64,linux/arm64 |           platforms: linux/amd64,linux/arm64 | ||||||
|           push: true |           push: true | ||||||
| @ -489,7 +489,7 @@ jobs: | |||||||
|         uses: ./ |         uses: ./ | ||||||
|         with: |         with: | ||||||
|           context: ./test |           context: ./test | ||||||
|           file: ./test/Dockerfile-multi |           file: ./test/multi.Dockerfile | ||||||
|           builder: ${{ steps.buildx.outputs.name }} |           builder: ${{ steps.buildx.outputs.name }} | ||||||
|           platforms: linux/amd64,linux/arm64 |           platforms: linux/amd64,linux/arm64 | ||||||
|           push: true |           push: true | ||||||
| @ -554,7 +554,7 @@ jobs: | |||||||
|         uses: ./ |         uses: ./ | ||||||
|         with: |         with: | ||||||
|           context: ./test |           context: ./test | ||||||
|           file: ./test/Dockerfile-multi |           file: ./test/multi.Dockerfile | ||||||
|           builder: ${{ steps.buildx.outputs.name }} |           builder: ${{ steps.buildx.outputs.name }} | ||||||
|           platforms: linux/amd64,linux/arm64 |           platforms: linux/amd64,linux/arm64 | ||||||
|           push: true |           push: true | ||||||
|  | |||||||
							
								
								
									
										2
									
								
								.github/workflows/e2e.yml
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										2
									
								
								.github/workflows/e2e.yml
									
									
									
									
										vendored
									
									
								
							| @ -81,7 +81,7 @@ jobs: | |||||||
|         uses: ./ |         uses: ./ | ||||||
|         with: |         with: | ||||||
|           context: ./test |           context: ./test | ||||||
|           file: ./test/Dockerfile-multi |           file: ./test/multi.Dockerfile | ||||||
|           platforms: linux/386,linux/amd64,linux/arm/v6,linux/arm/v7,linux/arm64,linux/ppc64le,linux/s390x |           platforms: linux/386,linux/amd64,linux/arm/v6,linux/arm/v7,linux/arm64,linux/ppc64le,linux/s390x | ||||||
|           push: ${{ github.event_name != 'pull_request' }} |           push: ${{ github.event_name != 'pull_request' }} | ||||||
|           tags: ${{ steps.docker_meta.outputs.tags }} |           tags: ${{ steps.docker_meta.outputs.tags }} | ||||||
|  | |||||||
							
								
								
									
										29
									
								
								.github/workflows/test.yml
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										29
									
								
								.github/workflows/test.yml
									
									
									
									
										vendored
									
									
								
							| @ -3,25 +3,12 @@ name: test | |||||||
| on: | on: | ||||||
|   push: |   push: | ||||||
|     branches: |     branches: | ||||||
|       - master |       - 'master' | ||||||
|   pull_request: |   pull_request: | ||||||
|     branches: |     branches: | ||||||
|       - master |       - 'master' | ||||||
| 
 | 
 | ||||||
| jobs: | jobs: | ||||||
|   test-containerized: |  | ||||||
|     runs-on: ubuntu-latest |  | ||||||
|     steps: |  | ||||||
|       - |  | ||||||
|         name: Checkout |  | ||||||
|         uses: actions/checkout@v2 |  | ||||||
|       - |  | ||||||
|         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: | ||||||
| @ -29,15 +16,17 @@ jobs: | |||||||
|         name: Checkout |         name: Checkout | ||||||
|         uses: actions/checkout@v2 |         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 |         uses: codecov/codecov-action@v1 | ||||||
|         if: success() |  | ||||||
|         with: |         with: | ||||||
|           token: ${{ secrets.CODECOV_TOKEN }} |  | ||||||
|           file: ./coverage/clover.xml |           file: ./coverage/clover.xml | ||||||
|  | |||||||
							
								
								
									
										52
									
								
								Dockerfile
									
									
									
									
									
								
							
							
						
						
									
										52
									
								
								Dockerfile
									
									
									
									
									
								
							| @ -1,52 +0,0 @@ | |||||||
| #syntax=docker/dockerfile:1.2 |  | ||||||
| 
 |  | ||||||
| FROM node:12 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.5.1 |  | ||||||
| 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"] |  | ||||||
| @ -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
									
								
							
							
						
						
									
										42
									
								
								hack/build.Dockerfile
									
									
									
									
									
										Normal 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 \ | ||||||
							
								
								
									
										23
									
								
								hack/test.Dockerfile
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										23
									
								
								hack/test.Dockerfile
									
									
									
									
									
										Normal 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
									
								
							
							
						
						
									
										23
									
								
								hack/vendor.Dockerfile
									
									
									
									
									
										Normal 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 | ||||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user