Compare commits
	
		
			8 Commits
		
	
	
		
			v2.9.0
			...
			releases/v
		
	
	| Author | SHA1 | Date | |
|---|---|---|---|
|   | ac9327eae2 | ||
|   | 7c41daf2a5 | ||
|   | e115266953 | ||
|   | 50fa0058d9 | ||
|   | 309fb9180f | ||
| ![dependabot[bot]](/assets/img/avatar_default.png)  | db68526220 | ||
|   | fe02965b48 | ||
|   | 5af8693d82 | 
							
								
								
									
										213
									
								
								.github/workflows/ci.yml
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										213
									
								
								.github/workflows/ci.yml
									
									
									
									
										vendored
									
									
								
							| @@ -15,7 +15,7 @@ jobs: | ||||
|     steps: | ||||
|       - | ||||
|         name: Checkout | ||||
|         uses: actions/checkout@v2 | ||||
|         uses: actions/checkout@v3 | ||||
|         with: | ||||
|           path: action | ||||
|       - | ||||
| @@ -26,10 +26,6 @@ jobs: | ||||
|         uses: ./action | ||||
|         with: | ||||
|           file: ./test/Dockerfile | ||||
|       - | ||||
|         name: Dump context | ||||
|         if: always() | ||||
|         uses: crazy-max/ghaction-dump-context@v1 | ||||
|  | ||||
|   git-context: | ||||
|     runs-on: ubuntu-latest | ||||
| @@ -41,7 +37,7 @@ jobs: | ||||
|     steps: | ||||
|       - | ||||
|         name: Checkout | ||||
|         uses: actions/checkout@v2 | ||||
|         uses: actions/checkout@v3 | ||||
|         with: | ||||
|           path: action | ||||
|       - | ||||
| @@ -77,10 +73,6 @@ jobs: | ||||
|             echo "::error::Digest should not be empty" | ||||
|             exit 1 | ||||
|           fi | ||||
|       - | ||||
|         name: Dump context | ||||
|         if: always() | ||||
|         uses: crazy-max/ghaction-dump-context@v1 | ||||
|  | ||||
|   git-context-secret: | ||||
|     runs-on: ubuntu-latest | ||||
| @@ -92,7 +84,7 @@ jobs: | ||||
|     steps: | ||||
|       - | ||||
|         name: Checkout | ||||
|         uses: actions/checkout@v2 | ||||
|         uses: actions/checkout@v3 | ||||
|         with: | ||||
|           path: action | ||||
|       - | ||||
| @@ -137,10 +129,6 @@ jobs: | ||||
|             echo "::error::Digest should not be empty" | ||||
|             exit 1 | ||||
|           fi | ||||
|       - | ||||
|         name: Dump context | ||||
|         if: always() | ||||
|         uses: crazy-max/ghaction-dump-context@v1 | ||||
|  | ||||
|   path-context: | ||||
|     runs-on: ubuntu-latest | ||||
| @@ -158,7 +146,7 @@ jobs: | ||||
|     steps: | ||||
|       - | ||||
|         name: Checkout | ||||
|         uses: actions/checkout@v2 | ||||
|         uses: actions/checkout@v3 | ||||
|       - | ||||
|         name: Set up QEMU | ||||
|         uses: docker/setup-qemu-action@v1 | ||||
| @@ -192,17 +180,13 @@ jobs: | ||||
|             echo "::error::Digest should not be empty" | ||||
|             exit 1 | ||||
|           fi | ||||
|       - | ||||
|         name: Dump context | ||||
|         if: always() | ||||
|         uses: crazy-max/ghaction-dump-context@v1 | ||||
|  | ||||
|   error: | ||||
|     runs-on: ubuntu-latest | ||||
|     steps: | ||||
|       - | ||||
|         name: Checkout | ||||
|         uses: actions/checkout@v2 | ||||
|         uses: actions/checkout@v3 | ||||
|       - | ||||
|         name: Stop docker | ||||
|         run: | | ||||
| @@ -223,17 +207,13 @@ jobs: | ||||
|             echo "::error::Should have failed" | ||||
|             exit 1 | ||||
|           fi | ||||
|       - | ||||
|         name: Dump context | ||||
|         if: always() | ||||
|         uses: crazy-max/ghaction-dump-context@v1 | ||||
|  | ||||
|   error-buildx: | ||||
|     runs-on: ubuntu-latest | ||||
|     steps: | ||||
|       - | ||||
|         name: Checkout | ||||
|         uses: actions/checkout@v2 | ||||
|         uses: actions/checkout@v3 | ||||
|       - | ||||
|         name: Set up QEMU | ||||
|         uses: docker/setup-qemu-action@v1 | ||||
| @@ -259,10 +239,6 @@ jobs: | ||||
|             echo "::error::Should have failed" | ||||
|             exit 1 | ||||
|           fi | ||||
|       - | ||||
|         name: Dump context | ||||
|         if: always() | ||||
|         uses: crazy-max/ghaction-dump-context@v1 | ||||
|  | ||||
|   docker-driver: | ||||
|     runs-on: ubuntu-latest | ||||
| @@ -274,7 +250,7 @@ jobs: | ||||
|     steps: | ||||
|       - | ||||
|         name: Checkout | ||||
|         uses: actions/checkout@v2 | ||||
|         uses: actions/checkout@v3 | ||||
|       - | ||||
|         name: Build | ||||
|         id: docker_build | ||||
| @@ -284,17 +260,13 @@ jobs: | ||||
|           file: ./test/Dockerfile | ||||
|           push: true | ||||
|           tags: localhost:5000/name/app:latest | ||||
|       - | ||||
|         name: Dump context | ||||
|         if: always() | ||||
|         uses: crazy-max/ghaction-dump-context@v1 | ||||
|  | ||||
|   export-docker: | ||||
|     runs-on: ubuntu-latest | ||||
|     steps: | ||||
|       - | ||||
|         name: Checkout | ||||
|         uses: actions/checkout@v2 | ||||
|         uses: actions/checkout@v3 | ||||
|       - | ||||
|         name: Build | ||||
|         uses: ./ | ||||
| @@ -307,17 +279,13 @@ jobs: | ||||
|         name: Inspect | ||||
|         run: | | ||||
|           docker image inspect myimage:latest | ||||
|       - | ||||
|         name: Dump context | ||||
|         if: always() | ||||
|         uses: crazy-max/ghaction-dump-context@v1 | ||||
|  | ||||
|   network: | ||||
|     runs-on: ubuntu-latest | ||||
|     steps: | ||||
|       - | ||||
|         name: Checkout | ||||
|         uses: actions/checkout@v2 | ||||
|         uses: actions/checkout@v3 | ||||
|       - | ||||
|         name: Set up Docker Buildx | ||||
|         uses: docker/setup-buildx-action@v1 | ||||
| @@ -331,17 +299,13 @@ jobs: | ||||
|           context: ./test | ||||
|           tags: name/app:latest | ||||
|           network: host | ||||
|       - | ||||
|         name: Dump context | ||||
|         if: always() | ||||
|         uses: crazy-max/ghaction-dump-context@v1 | ||||
|  | ||||
|   shm-size: | ||||
|     runs-on: ubuntu-latest | ||||
|     steps: | ||||
|       - | ||||
|         name: Checkout | ||||
|         uses: actions/checkout@v2 | ||||
|         uses: actions/checkout@v3 | ||||
|       - | ||||
|         name: Set up Docker Buildx | ||||
|         uses: docker/setup-buildx-action@v1 | ||||
| @@ -357,17 +321,13 @@ jobs: | ||||
|           file: ./test/shmsize.Dockerfile | ||||
|           tags: name/app:latest | ||||
|           shm-size: 2g | ||||
|       - | ||||
|         name: Dump context | ||||
|         if: always() | ||||
|         uses: crazy-max/ghaction-dump-context@v1 | ||||
|  | ||||
|   ulimit: | ||||
|     runs-on: ubuntu-latest | ||||
|     steps: | ||||
|       - | ||||
|         name: Checkout | ||||
|         uses: actions/checkout@v2 | ||||
|         uses: actions/checkout@v3 | ||||
|       - | ||||
|         name: Set up Docker Buildx | ||||
|         uses: docker/setup-buildx-action@v1 | ||||
| @@ -385,17 +345,13 @@ jobs: | ||||
|           ulimit: | | ||||
|             nofile=1024:1024 | ||||
|             nproc=3 | ||||
|       - | ||||
|         name: Dump context | ||||
|         if: always() | ||||
|         uses: crazy-max/ghaction-dump-context@v1 | ||||
|  | ||||
|   cgroup-parent: | ||||
|     runs-on: ubuntu-latest | ||||
|     steps: | ||||
|       - | ||||
|         name: Checkout | ||||
|         uses: actions/checkout@v2 | ||||
|         uses: actions/checkout@v3 | ||||
|       - | ||||
|         name: Set up Docker Buildx | ||||
|         uses: docker/setup-buildx-action@v1 | ||||
| @@ -411,17 +367,13 @@ jobs: | ||||
|           file: ./test/cgroup.Dockerfile | ||||
|           tags: name/app:latest | ||||
|           cgroup-parent: foo | ||||
|       - | ||||
|         name: Dump context | ||||
|         if: always() | ||||
|         uses: crazy-max/ghaction-dump-context@v1 | ||||
|  | ||||
|   add-hosts: | ||||
|     runs-on: ubuntu-latest | ||||
|     steps: | ||||
|       - | ||||
|         name: Checkout | ||||
|         uses: actions/checkout@v2 | ||||
|         uses: actions/checkout@v3 | ||||
|       - | ||||
|         name: Set up Docker Buildx | ||||
|         uses: docker/setup-buildx-action@v1 | ||||
| @@ -435,10 +387,27 @@ jobs: | ||||
|           add-hosts: | | ||||
|             docker:10.180.0.1 | ||||
|             foo:10.0.0.1 | ||||
|  | ||||
|   build-contexts: | ||||
|     runs-on: ubuntu-latest | ||||
|     steps: | ||||
|       - | ||||
|         name: Dump context | ||||
|         if: always() | ||||
|         uses: crazy-max/ghaction-dump-context@v1 | ||||
|         name: Checkout | ||||
|         uses: actions/checkout@v2 | ||||
|       - | ||||
|         name: Set up Docker Buildx | ||||
|         uses: docker/setup-buildx-action@v1 | ||||
|         with: | ||||
|           version: v0.8.0 | ||||
|       - | ||||
|         name: Build | ||||
|         uses: ./ | ||||
|         with: | ||||
|           context: ./test | ||||
|           file: ./test/buildcontext.Dockerfile | ||||
|           build-contexts: | | ||||
|             alpine=docker-image://debian:stable-slim | ||||
|           tags: name/app:latest | ||||
|  | ||||
|   multi: | ||||
|     runs-on: ubuntu-latest | ||||
| @@ -459,7 +428,7 @@ jobs: | ||||
|     steps: | ||||
|       - | ||||
|         name: Checkout | ||||
|         uses: actions/checkout@v2 | ||||
|         uses: actions/checkout@v3 | ||||
|       - | ||||
|         name: Set up QEMU | ||||
|         uses: docker/setup-qemu-action@v1 | ||||
| @@ -494,10 +463,94 @@ jobs: | ||||
|             echo "::error::Digest should not be empty" | ||||
|             exit 1 | ||||
|           fi | ||||
|  | ||||
|   digest: | ||||
|     runs-on: ubuntu-latest | ||||
|     env: | ||||
|       DOCKER_IMAGE: localhost:5000/name/app | ||||
|     strategy: | ||||
|       fail-fast: false | ||||
|       matrix: | ||||
|         driver: | ||||
|           - docker | ||||
|           - docker-container | ||||
|         load: | ||||
|           - true | ||||
|           - false | ||||
|         push: | ||||
|           - true | ||||
|           - false | ||||
|         exclude: | ||||
|           - driver: docker | ||||
|             load: true | ||||
|             push: true | ||||
|           - driver: docker-container | ||||
|             load: true | ||||
|             push: true | ||||
|           - driver: docker | ||||
|             load: false | ||||
|             push: false | ||||
|           - driver: docker-container | ||||
|             load: false | ||||
|             push: false | ||||
|     services: | ||||
|       registry: | ||||
|         image: registry:2 | ||||
|         ports: | ||||
|           - 5000:5000 | ||||
|     steps: | ||||
|       - | ||||
|         name: Dump context | ||||
|         if: always() | ||||
|         uses: crazy-max/ghaction-dump-context@v1 | ||||
|         name: Checkout | ||||
|         uses: actions/checkout@v2 | ||||
|       - | ||||
|         name: Set up Docker Buildx | ||||
|         uses: docker/setup-buildx-action@v1 | ||||
|         with: | ||||
|           version: v0.8.0 | ||||
|           driver: ${{ matrix.driver }} | ||||
|           driver-opts: | | ||||
|             network=host | ||||
|       - | ||||
|         name: Build | ||||
|         id: docker_build | ||||
|         uses: ./ | ||||
|         with: | ||||
|           context: ./test | ||||
|           load: ${{ matrix.load }} | ||||
|           push: ${{ matrix.push }} | ||||
|           tags: ${{ env.DOCKER_IMAGE }}:latest | ||||
|           platforms: ${{ matrix.platforms }} | ||||
|       - | ||||
|         name: Docker images | ||||
|         run: | | ||||
|           docker image ls --no-trunc | ||||
|       - | ||||
|         name: Check digest | ||||
|         if: ${{ matrix.push }} | ||||
|         run: | | ||||
|           if [ -z "${{ steps.docker_build.outputs.digest }}" ]; then | ||||
|             echo "::error::Digest should not be empty" | ||||
|             exit 1 | ||||
|           fi | ||||
|       - | ||||
|         name: Check manifest | ||||
|         if: ${{ matrix.push }} | ||||
|         run: | | ||||
|           set -x | ||||
|           docker buildx imagetools inspect ${{ env.DOCKER_IMAGE }}@${{ steps.docker_build.outputs.digest }} --format '{{json .}}' | ||||
|       - | ||||
|         name: Check image ID | ||||
|         run: | | ||||
|           if [ -z "${{ steps.docker_build.outputs.imageid }}" ]; then | ||||
|             echo "::error::Image ID should not be empty" | ||||
|             exit 1 | ||||
|           fi | ||||
|       - | ||||
|         name: Inspect image | ||||
|         if: ${{ matrix.load }} | ||||
|         run: | | ||||
|           set -x | ||||
|           docker image inspect ${{ steps.docker_build.outputs.imageid }} | ||||
|  | ||||
|   registry-cache: | ||||
|     runs-on: ubuntu-latest | ||||
| @@ -509,7 +562,7 @@ jobs: | ||||
|     steps: | ||||
|       - | ||||
|         name: Checkout | ||||
|         uses: actions/checkout@v2 | ||||
|         uses: actions/checkout@v3 | ||||
|       - | ||||
|         name: Set up QEMU | ||||
|         uses: docker/setup-qemu-action@v1 | ||||
| @@ -584,10 +637,6 @@ jobs: | ||||
|             echo "::error::Digests should be identical" | ||||
|             exit 1 | ||||
|           fi | ||||
|       - | ||||
|         name: Dump context | ||||
|         if: always() | ||||
|         uses: crazy-max/ghaction-dump-context@v1 | ||||
|  | ||||
|   local-cache-first: | ||||
|     runs-on: ubuntu-latest | ||||
| @@ -601,7 +650,7 @@ jobs: | ||||
|     steps: | ||||
|       - | ||||
|         name: Checkout | ||||
|         uses: actions/checkout@v2 | ||||
|         uses: actions/checkout@v3 | ||||
|       - | ||||
|         name: Set up QEMU | ||||
|         uses: docker/setup-qemu-action@v1 | ||||
| @@ -650,10 +699,6 @@ jobs: | ||||
|             echo "::error::Digest should not be empty" | ||||
|             exit 1 | ||||
|           fi | ||||
|       - | ||||
|         name: Dump context | ||||
|         if: always() | ||||
|         uses: crazy-max/ghaction-dump-context@v1 | ||||
|  | ||||
|   local-cache-hit: | ||||
|     runs-on: ubuntu-latest | ||||
| @@ -666,7 +711,7 @@ jobs: | ||||
|     steps: | ||||
|       - | ||||
|         name: Checkout | ||||
|         uses: actions/checkout@v2 | ||||
|         uses: actions/checkout@v3 | ||||
|       - | ||||
|         name: Set up QEMU | ||||
|         uses: docker/setup-qemu-action@v1 | ||||
| @@ -723,10 +768,6 @@ jobs: | ||||
|       - | ||||
|         name: Cache hit | ||||
|         run: echo ${{ steps.cache.outputs.cache-hit }} | ||||
|       - | ||||
|         name: Dump context | ||||
|         if: always() | ||||
|         uses: crazy-max/ghaction-dump-context@v1 | ||||
|  | ||||
|   github-cache: | ||||
|     runs-on: ubuntu-latest | ||||
| @@ -744,7 +785,7 @@ jobs: | ||||
|     steps: | ||||
|       - | ||||
|         name: Checkout | ||||
|         uses: actions/checkout@v2 | ||||
|         uses: actions/checkout@v3 | ||||
|       - | ||||
|         name: Set up QEMU | ||||
|         uses: docker/setup-qemu-action@v1 | ||||
| @@ -773,7 +814,3 @@ jobs: | ||||
|         name: Inspect | ||||
|         run: | | ||||
|           docker buildx imagetools inspect localhost:5000/name/app:1.0.0 | ||||
|       - | ||||
|         name: Dump context | ||||
|         if: always() | ||||
|         uses: crazy-max/ghaction-dump-context@v1 | ||||
|   | ||||
							
								
								
									
										2
									
								
								.github/workflows/e2e.yml
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										2
									
								
								.github/workflows/e2e.yml
									
									
									
									
										vendored
									
									
								
							| @@ -60,7 +60,7 @@ jobs: | ||||
|     steps: | ||||
|       - | ||||
|         name: Checkout | ||||
|         uses: actions/checkout@v2 | ||||
|         uses: actions/checkout@v3 | ||||
|       - | ||||
|         name: Docker meta | ||||
|         id: meta | ||||
|   | ||||
							
								
								
									
										2
									
								
								.github/workflows/example.yml
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										2
									
								
								.github/workflows/example.yml
									
									
									
									
										vendored
									
									
								
							| @@ -25,7 +25,7 @@ jobs: | ||||
|     steps: | ||||
|       - | ||||
|         name: Checkout | ||||
|         uses: actions/checkout@v2 | ||||
|         uses: actions/checkout@v3 | ||||
|       - | ||||
|         name: Docker meta | ||||
|         id: meta | ||||
|   | ||||
							
								
								
									
										2
									
								
								.github/workflows/test.yml
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										2
									
								
								.github/workflows/test.yml
									
									
									
									
										vendored
									
									
								
							| @@ -14,7 +14,7 @@ jobs: | ||||
|     steps: | ||||
|       - | ||||
|         name: Checkout | ||||
|         uses: actions/checkout@v2 | ||||
|         uses: actions/checkout@v3 | ||||
|       - | ||||
|         name: Validate | ||||
|         uses: docker/bake-action@v1 | ||||
|   | ||||
							
								
								
									
										30
									
								
								README.md
									
									
									
									
									
								
							
							
						
						
									
										30
									
								
								README.md
									
									
									
									
									
								
							| @@ -202,10 +202,11 @@ Following inputs can be used as `step.with` keys | ||||
| | `add-hosts`         | List/CSV | List of [customs host-to-IP mapping](https://docs.docker.com/engine/reference/commandline/build/#add-entries-to-container-hosts-file---add-host) (e.g., `docker:10.180.0.1`) | | ||||
| | `allow`             | List/CSV | List of [extra privileged entitlement](https://github.com/docker/buildx/blob/master/docs/reference/buildx_build.md#allow) (e.g., `network.host,security.insecure`) | | ||||
| | `builder`           | String   | Builder instance (see [setup-buildx](https://github.com/docker/setup-buildx-action) action) | | ||||
| | `build-args`        | List     | List of build-time variables | | ||||
| | `build-args`        | List     | List of [build-time variables](https://github.com/docker/buildx/blob/master/docs/reference/buildx_build.md#build-arg) | | ||||
| | `build-contexts`    | List     | List of additional [build contexts](https://github.com/docker/buildx/blob/master/docs/reference/buildx_build.md#build-context) (e.g., `name=path`) | | ||||
| | `cache-from`        | List     | List of [external cache sources](https://github.com/docker/buildx/blob/master/docs/reference/buildx_build.md#cache-from) (e.g., `type=local,src=path/to/dir`) | | ||||
| | `cache-to`          | List     | List of [cache export destinations](https://github.com/docker/buildx/blob/master/docs/reference/buildx_build.md#cache-to) (e.g., `type=local,dest=path/to/dir`) | | ||||
| | `cgroup-parent`¹    | String   | Optional [parent cgroup](https://docs.docker.com/engine/reference/commandline/build/#use-a-custom-parent-cgroup---cgroup-parent) for the container used in the build | | ||||
| | `cgroup-parent`     | String   | Optional [parent cgroup](https://docs.docker.com/engine/reference/commandline/build/#use-a-custom-parent-cgroup---cgroup-parent) for the container used in the build | | ||||
| | `context`           | String   | Build's context is the set of files located in the specified [`PATH` or `URL`](https://docs.docker.com/engine/reference/commandline/build/) (default [Git context](#git-context)) | | ||||
| | `file`              | String   | Path to the Dockerfile. (default `{context}/Dockerfile`) | | ||||
| | `labels`            | List     | List of metadata for an image | | ||||
| @@ -214,34 +215,25 @@ Following inputs can be used as `step.with` keys | ||||
| | `no-cache`          | Bool     | Do not use cache when building the image (default `false`) | | ||||
| | `outputs`           | List     | List of [output destinations](https://github.com/docker/buildx/blob/master/docs/reference/buildx_build.md#output) (format: `type=local,dest=path`) | | ||||
| | `platforms`         | List/CSV | List of [target platforms](https://github.com/docker/buildx/blob/master/docs/reference/buildx_build.md#platform) for build | | ||||
| | `pull`              | Bool     | Always attempt to pull a newer version of the image (default `false`) | | ||||
| | `pull`              | Bool     | Always attempt to pull all referenced images (default `false`) | | ||||
| | `push`              | Bool     | [Push](https://github.com/docker/buildx/blob/master/docs/reference/buildx_build.md#push) is a shorthand for `--output=type=registry` (default `false`) | | ||||
| | `secrets`           | List     | List of secrets to expose to the build (e.g., `key=string`, `GIT_AUTH_TOKEN=mytoken`) | | ||||
| | `secret-files`      | List     | List of secret files to expose to the build (e.g., `key=filename`, `MY_SECRET=./secret.txt`) | | ||||
| | `shm-size`¹         | String   | Size of [`/dev/shm`](https://github.com/docker/buildx/blob/master/docs/reference/buildx_build.md#-size-of-devshm---shm-size) (e.g., `2g`) | | ||||
| | `ssh`               | List     | List of SSH agent socket or keys to expose to the build | | ||||
| | `secrets`           | List     | List of [secrets](https://github.com/docker/buildx/blob/master/docs/reference/buildx_build.md#secret) to expose to the build (e.g., `key=string`, `GIT_AUTH_TOKEN=mytoken`) | | ||||
| | `secret-files`      | List     | List of [secret files](https://github.com/docker/buildx/blob/master/docs/reference/buildx_build.md#secret) to expose to the build (e.g., `key=filename`, `MY_SECRET=./secret.txt`) | | ||||
| | `shm-size`          | String   | Size of [`/dev/shm`](https://github.com/docker/buildx/blob/master/docs/reference/buildx_build.md#-size-of-devshm---shm-size) (e.g., `2g`) | | ||||
| | `ssh`               | List     | List of [SSH agent socket or keys](https://github.com/docker/buildx/blob/master/docs/reference/buildx_build.md#ssh) to expose to the build | | ||||
| | `tags`              | List/CSV | List of tags | | ||||
| | `target`            | String   | Sets the target stage to build | | ||||
| | `ulimit`¹           | List     | [Ulimit](https://github.com/docker/buildx/blob/master/docs/reference/buildx_build.md#-set-ulimits---ulimit) options (e.g., `nofile=1024:1024`) | | ||||
| | `ulimit`            | List     | [Ulimit](https://github.com/docker/buildx/blob/master/docs/reference/buildx_build.md#-set-ulimits---ulimit) options (e.g., `nofile=1024:1024`) | | ||||
| | `github-token`      | String   | GitHub Token used to authenticate against a repository for [Git context](#git-context) (default `${{ github.token }}`) | | ||||
|  | ||||
| > ¹ `cgroup-parent`, `shm-size` and `ulimit` are only available using `moby/buildkit:master` | ||||
| > as builder image atm: | ||||
| > ```yaml | ||||
| > - name: Set up Docker Buildx | ||||
| >   uses: docker/setup-buildx-action@v1 | ||||
| >   with: | ||||
| >   driver-opts: | | ||||
| >     image=moby/buildkit:master | ||||
| > ``` | ||||
|  | ||||
| ### outputs | ||||
|  | ||||
| Following outputs are available | ||||
|  | ||||
| | Name              | Type    | Description                           | | ||||
| |-------------------|---------|---------------------------------------| | ||||
| | `digest`          | String  | Image content-addressable identifier also called a digest | | ||||
| | `imageid`         | String  | Image ID | | ||||
| | `digest`          | String  | Image digest | | ||||
| | `metadata`        | JSON    | Build result metadata | | ||||
|  | ||||
| ## Troubleshooting | ||||
|   | ||||
| @@ -7,7 +7,7 @@ import * as buildx from '../src/buildx'; | ||||
| import * as context from '../src/context'; | ||||
|  | ||||
| const tmpNameSync = path.join('/tmp/.docker-build-push-jest', '.tmpname-jest').split(path.sep).join(path.posix.sep); | ||||
| const digest = 'sha256:bfb45ab72e46908183546477a08f8867fc40cebadd00af54b071b097aed127a9'; | ||||
| const imageID = 'sha256:bfb45ab72e46908183546477a08f8867fc40cebadd00af54b071b097aed127a9'; | ||||
| const metadata = `{ | ||||
|   "containerimage.config.digest": "sha256:059b68a595b22564a1cbc167af369349fdc2ecc1f7bc092c2235cbf601a795fd", | ||||
|   "containerimage.digest": "sha256:b09b9482c72371486bb2c1d2c2a2633ed1d0b8389e12c8d52b9e052725c0c83c" | ||||
| @@ -28,9 +28,9 @@ jest.spyOn(context, 'tmpNameSync').mockImplementation((): string => { | ||||
| describe('getImageID', () => { | ||||
|   it('matches', async () => { | ||||
|     const imageIDFile = await buildx.getImageIDFile(); | ||||
|     await fs.writeFileSync(imageIDFile, digest); | ||||
|     const imageID = await buildx.getImageID(); | ||||
|     expect(imageID).toEqual(digest); | ||||
|     await fs.writeFileSync(imageIDFile, imageID); | ||||
|     const expected = await buildx.getImageID(); | ||||
|     expect(expected).toEqual(imageID); | ||||
|   }); | ||||
| }); | ||||
|  | ||||
| @@ -43,6 +43,15 @@ describe('getMetadata', () => { | ||||
|   }); | ||||
| }); | ||||
|  | ||||
| describe('getDigest', () => { | ||||
|   it('matches', async () => { | ||||
|     const metadataFile = await buildx.getMetadataFile(); | ||||
|     await fs.writeFileSync(metadataFile, metadata); | ||||
|     const expected = await buildx.getDigest(metadata); | ||||
|     expect(expected).toEqual('sha256:b09b9482c72371486bb2c1d2c2a2633ed1d0b8389e12c8d52b9e052725c0c83c'); | ||||
|   }); | ||||
| }); | ||||
|  | ||||
| describe('isLocalOrTarExporter', () => { | ||||
|   // prettier-ignore | ||||
|   test.each([ | ||||
|   | ||||
| @@ -16,6 +16,9 @@ inputs: | ||||
|   build-args: | ||||
|     description: "List of build-time variables" | ||||
|     required: false | ||||
|   build-contexts: | ||||
|     description: "List of additional build contexts (e.g., name=path)" | ||||
|     required: false | ||||
|   builder: | ||||
|     description: "Builder instance" | ||||
|     required: false | ||||
| @@ -55,7 +58,7 @@ inputs: | ||||
|     description: "List of target platforms for build" | ||||
|     required: false | ||||
|   pull: | ||||
|     description: "Always attempt to pull a newer version of the image" | ||||
|     description: "Always attempt to pull all referenced images" | ||||
|     required: false | ||||
|     default: 'false' | ||||
|   push: | ||||
| @@ -89,8 +92,10 @@ inputs: | ||||
|     required: false | ||||
|  | ||||
| outputs: | ||||
|   imageid: | ||||
|     description: 'Image ID' | ||||
|   digest: | ||||
|     description: 'Image content-addressable identifier also called a digest' | ||||
|     description: 'Image digest' | ||||
|   metadata: | ||||
|     description: 'Build result metadata' | ||||
|  | ||||
|   | ||||
							
								
								
									
										52
									
								
								dist/index.js
									
									
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										52
									
								
								dist/index.js
									
									
									
										generated
									
									
										vendored
									
									
								
							| @@ -38,7 +38,7 @@ var __importDefault = (this && this.__importDefault) || function (mod) { | ||||
|     return (mod && mod.__esModule) ? mod : { "default": mod }; | ||||
| }; | ||||
| Object.defineProperty(exports, "__esModule", ({ value: true })); | ||||
| exports.satisfies = exports.parseVersion = exports.getVersion = exports.isAvailable = exports.hasGitAuthToken = exports.isLocalOrTarExporter = exports.getSecret = exports.getSecretFile = exports.getSecretString = exports.getMetadata = exports.getMetadataFile = exports.getImageID = exports.getImageIDFile = void 0; | ||||
| exports.satisfies = exports.parseVersion = exports.getVersion = exports.isAvailable = exports.hasGitAuthToken = exports.isLocalOrTarExporter = exports.getSecret = exports.getSecretFile = exports.getSecretString = exports.getDigest = exports.getMetadata = exports.getMetadataFile = exports.getImageID = exports.getImageIDFile = void 0; | ||||
| const sync_1 = __importDefault(__nccwpck_require__(8750)); | ||||
| const fs_1 = __importDefault(__nccwpck_require__(5747)); | ||||
| const path_1 = __importDefault(__nccwpck_require__(5622)); | ||||
| @@ -81,6 +81,19 @@ function getMetadata() { | ||||
|     }); | ||||
| } | ||||
| exports.getMetadata = getMetadata; | ||||
| function getDigest(metadata) { | ||||
|     return __awaiter(this, void 0, void 0, function* () { | ||||
|         if (metadata === undefined) { | ||||
|             return undefined; | ||||
|         } | ||||
|         const metadataJSON = JSON.parse(metadata); | ||||
|         if (metadataJSON['containerimage.digest']) { | ||||
|             return metadataJSON['containerimage.digest']; | ||||
|         } | ||||
|         return undefined; | ||||
|     }); | ||||
| } | ||||
| exports.getDigest = getDigest; | ||||
| function getSecretString(kvp) { | ||||
|     return __awaiter(this, void 0, void 0, function* () { | ||||
|         return getSecret(kvp, false); | ||||
| @@ -273,6 +286,7 @@ function getInputs(defaultContext) { | ||||
|             addHosts: yield getInputList('add-hosts'), | ||||
|             allow: yield getInputList('allow'), | ||||
|             buildArgs: yield getInputList('build-args', true), | ||||
|             buildContexts: yield getInputList('build-contexts', true), | ||||
|             builder: core.getInput('builder'), | ||||
|             cacheFrom: yield getInputList('cache-from', true), | ||||
|             cacheTo: yield getInputList('cache-to', true), | ||||
| @@ -321,6 +335,11 @@ function getBuildArgs(inputs, defaultContext, buildxVersion) { | ||||
|         yield exports.asyncForEach(inputs.buildArgs, (buildArg) => __awaiter(this, void 0, void 0, function* () { | ||||
|             args.push('--build-arg', buildArg); | ||||
|         })); | ||||
|         if (buildx.satisfies(buildxVersion, '>=0.8.0')) { | ||||
|             yield exports.asyncForEach(inputs.buildContexts, (buildContext) => __awaiter(this, void 0, void 0, function* () { | ||||
|                 args.push('--build-context', buildContext); | ||||
|             })); | ||||
|         } | ||||
|         yield exports.asyncForEach(inputs.cacheFrom, (cacheFrom) => __awaiter(this, void 0, void 0, function* () { | ||||
|             args.push('--cache-from', cacheFrom); | ||||
|         })); | ||||
| @@ -516,18 +535,27 @@ function run() { | ||||
|                     throw new Error(`buildx failed with: ${res.stderr.match(/(.*)\s*$/)[0].trim()}`); | ||||
|                 } | ||||
|             }); | ||||
|             yield core.group(`Setting outputs`, () => __awaiter(this, void 0, void 0, function* () { | ||||
|                 const imageID = yield buildx.getImageID(); | ||||
|                 const metadata = yield buildx.getMetadata(); | ||||
|                 if (imageID) { | ||||
|                     core.info(`digest=${imageID}`); | ||||
|                     context.setOutput('digest', imageID); | ||||
|                 } | ||||
|                 if (metadata) { | ||||
|                     core.info(`metadata=${metadata}`); | ||||
|             const imageID = yield buildx.getImageID(); | ||||
|             const metadata = yield buildx.getMetadata(); | ||||
|             const digest = yield buildx.getDigest(metadata); | ||||
|             if (imageID) { | ||||
|                 yield core.group(`ImageID`, () => __awaiter(this, void 0, void 0, function* () { | ||||
|                     core.info(imageID); | ||||
|                     context.setOutput('imageid', imageID); | ||||
|                 })); | ||||
|             } | ||||
|             if (digest) { | ||||
|                 yield core.group(`Digest`, () => __awaiter(this, void 0, void 0, function* () { | ||||
|                     core.info(digest); | ||||
|                     context.setOutput('digest', digest); | ||||
|                 })); | ||||
|             } | ||||
|             if (metadata) { | ||||
|                 yield core.group(`Metadata`, () => __awaiter(this, void 0, void 0, function* () { | ||||
|                     core.info(metadata); | ||||
|                     context.setOutput('metadata', metadata); | ||||
|                 } | ||||
|             })); | ||||
|                 })); | ||||
|             } | ||||
|         } | ||||
|         catch (error) { | ||||
|             core.setFailed(error.message); | ||||
|   | ||||
| @@ -34,6 +34,17 @@ export async function getMetadata(): Promise<string | undefined> { | ||||
|   return content; | ||||
| } | ||||
|  | ||||
| export async function getDigest(metadata: string | undefined): Promise<string | undefined> { | ||||
|   if (metadata === undefined) { | ||||
|     return undefined; | ||||
|   } | ||||
|   const metadataJSON = JSON.parse(metadata); | ||||
|   if (metadataJSON['containerimage.digest']) { | ||||
|     return metadataJSON['containerimage.digest']; | ||||
|   } | ||||
|   return undefined; | ||||
| } | ||||
|  | ||||
| export async function getSecretString(kvp: string): Promise<string> { | ||||
|   return getSecret(kvp, false); | ||||
| } | ||||
|   | ||||
| @@ -17,6 +17,7 @@ export interface Inputs { | ||||
|   addHosts: string[]; | ||||
|   allow: string[]; | ||||
|   buildArgs: string[]; | ||||
|   buildContexts: string[]; | ||||
|   builder: string; | ||||
|   cacheFrom: string[]; | ||||
|   cacheTo: string[]; | ||||
| @@ -71,6 +72,7 @@ export async function getInputs(defaultContext: string): Promise<Inputs> { | ||||
|     addHosts: await getInputList('add-hosts'), | ||||
|     allow: await getInputList('allow'), | ||||
|     buildArgs: await getInputList('build-args', true), | ||||
|     buildContexts: await getInputList('build-contexts', true), | ||||
|     builder: core.getInput('builder'), | ||||
|     cacheFrom: await getInputList('cache-from', true), | ||||
|     cacheTo: await getInputList('cache-to', true), | ||||
| @@ -115,6 +117,11 @@ async function getBuildArgs(inputs: Inputs, defaultContext: string, buildxVersio | ||||
|   await asyncForEach(inputs.buildArgs, async buildArg => { | ||||
|     args.push('--build-arg', buildArg); | ||||
|   }); | ||||
|   if (buildx.satisfies(buildxVersion, '>=0.8.0')) { | ||||
|     await asyncForEach(inputs.buildContexts, async buildContext => { | ||||
|       args.push('--build-context', buildContext); | ||||
|     }); | ||||
|   } | ||||
|   await asyncForEach(inputs.cacheFrom, async cacheFrom => { | ||||
|     args.push('--cache-from', cacheFrom); | ||||
|   }); | ||||
|   | ||||
							
								
								
									
										32
									
								
								src/main.ts
									
									
									
									
									
								
							
							
						
						
									
										32
									
								
								src/main.ts
									
									
									
									
									
								
							| @@ -33,18 +33,28 @@ async function run(): Promise<void> { | ||||
|         } | ||||
|       }); | ||||
|  | ||||
|     await core.group(`Setting outputs`, async () => { | ||||
|       const imageID = await buildx.getImageID(); | ||||
|       const metadata = await buildx.getMetadata(); | ||||
|       if (imageID) { | ||||
|         core.info(`digest=${imageID}`); | ||||
|         context.setOutput('digest', imageID); | ||||
|       } | ||||
|       if (metadata) { | ||||
|         core.info(`metadata=${metadata}`); | ||||
|     const imageID = await buildx.getImageID(); | ||||
|     const metadata = await buildx.getMetadata(); | ||||
|     const digest = await buildx.getDigest(metadata); | ||||
|  | ||||
|     if (imageID) { | ||||
|       await core.group(`ImageID`, async () => { | ||||
|         core.info(imageID); | ||||
|         context.setOutput('imageid', imageID); | ||||
|       }); | ||||
|     } | ||||
|     if (digest) { | ||||
|       await core.group(`Digest`, async () => { | ||||
|         core.info(digest); | ||||
|         context.setOutput('digest', digest); | ||||
|       }); | ||||
|     } | ||||
|     if (metadata) { | ||||
|       await core.group(`Metadata`, async () => { | ||||
|         core.info(metadata); | ||||
|         context.setOutput('metadata', metadata); | ||||
|       } | ||||
|     }); | ||||
|       }); | ||||
|     } | ||||
|   } catch (error) { | ||||
|     core.setFailed(error.message); | ||||
|   } | ||||
|   | ||||
							
								
								
									
										3
									
								
								test/buildcontext.Dockerfile
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										3
									
								
								test/buildcontext.Dockerfile
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,3 @@ | ||||
| # syntax=docker/dockerfile-upstream:master | ||||
| FROM alpine | ||||
| RUN cat /etc/*release | ||||
		Reference in New Issue
	
	Block a user