mirror of
				https://github.moeyy.xyz/https://github.com/docker/setup-buildx-action
				synced 2025-10-29 07:46:40 +08:00 
			
		
		
		
	
		
			
				
	
	
		
			268 lines
		
	
	
		
			8.9 KiB
		
	
	
	
		
			Markdown
		
	
	
	
	
	
			
		
		
	
	
			268 lines
		
	
	
		
			8.9 KiB
		
	
	
	
		
			Markdown
		
	
	
	
	
	
| [](https://github.com/docker/setup-buildx-action/releases/latest)
 | |
| [](https://github.com/marketplace/actions/docker-setup-buildx)
 | |
| [](https://github.com/docker/setup-buildx-action/actions?workflow=ci)
 | |
| [](https://github.com/docker/setup-buildx-action/actions?workflow=test)
 | |
| [](https://codecov.io/gh/docker/setup-buildx-action)
 | |
| 
 | |
| ## About
 | |
| 
 | |
| GitHub Action to set up Docker [Buildx](https://github.com/docker/buildx).
 | |
| 
 | |
| This action will create and boot a builder that can be used in the following steps of your workflow if you're using
 | |
| [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)
 | |
| will be used to be able to build multi-platform images and export cache thanks to the [BuildKit](https://github.com/moby/buildkit)
 | |
| container.
 | |
| 
 | |
| 
 | |
| 
 | |
| ___
 | |
| 
 | |
| * [Usage](#usage)
 | |
|   * [Quick start](#quick-start)
 | |
|   * [With QEMU](#with-qemu)
 | |
|   * [Install by default](#install-by-default)
 | |
|   * [BuildKit daemon configuration](#buildkit-daemon-configuration)
 | |
|     * [Registry mirror](#registry-mirror)
 | |
|     * [Max parallelism](#max-parallelism)
 | |
| * [Customizing](#customizing)
 | |
|   * [inputs](#inputs)
 | |
|   * [outputs](#outputs)
 | |
|   * [environment variables](#environment-variables)
 | |
| * [Notes](#notes)
 | |
|   * [BuildKit container logs](#buildkit-container-logs)
 | |
| * [Keep up-to-date with GitHub Dependabot](#keep-up-to-date-with-github-dependabot)
 | |
| 
 | |
| ## Usage
 | |
| 
 | |
| ### Quick start
 | |
| 
 | |
| ```yaml
 | |
| name: ci
 | |
| 
 | |
| on:
 | |
|   push:
 | |
| 
 | |
| jobs:
 | |
|   buildx:
 | |
|     runs-on: ubuntu-latest
 | |
|     steps:
 | |
|       -
 | |
|         name: Checkout
 | |
|         uses: actions/checkout@v2
 | |
|       -
 | |
|         name: Set up Docker Buildx
 | |
|         id: buildx
 | |
|         uses: docker/setup-buildx-action@v1
 | |
|       -
 | |
|         name: Inspect builder
 | |
|         run: |
 | |
|           echo "Name:      ${{ steps.buildx.outputs.name }}"
 | |
|           echo "Endpoint:  ${{ steps.buildx.outputs.endpoint }}"
 | |
|           echo "Status:    ${{ steps.buildx.outputs.status }}"
 | |
|           echo "Flags:     ${{ steps.buildx.outputs.flags }}"
 | |
|           echo "Platforms: ${{ steps.buildx.outputs.platforms }}"
 | |
| ```
 | |
| 
 | |
| ### With QEMU
 | |
| 
 | |
| If you want support for more platforms you can use our [setup-qemu](https://github.com/docker/setup-qemu-action) action:
 | |
| 
 | |
| ```yaml
 | |
| name: ci
 | |
| 
 | |
| on:
 | |
|   push:
 | |
| 
 | |
| jobs:
 | |
|   buildx:
 | |
|     runs-on: ubuntu-latest
 | |
|     steps:
 | |
|       -
 | |
|         name: Checkout
 | |
|         uses: actions/checkout@v2
 | |
|       -
 | |
|         name: Set up QEMU
 | |
|         uses: docker/setup-qemu-action@v1
 | |
|       -
 | |
|         name: Set up Docker Buildx
 | |
|         id: buildx
 | |
|         uses: docker/setup-buildx-action@v1
 | |
|       -
 | |
|         name: Available platforms
 | |
|         run: echo ${{ steps.buildx.outputs.platforms }}
 | |
| ```
 | |
| 
 | |
| ### Install by default
 | |
| 
 | |
| ```yaml
 | |
| name: ci
 | |
| 
 | |
| on:
 | |
|   push:
 | |
| 
 | |
| jobs:
 | |
|   buildx:
 | |
|     runs-on: ubuntu-latest
 | |
|     steps:
 | |
|       -
 | |
|         name: Checkout
 | |
|         uses: actions/checkout@v2
 | |
|       -
 | |
|         uses: docker/setup-buildx-action@v1
 | |
|         id: buildx
 | |
|         with:
 | |
|           install: true
 | |
|       -
 | |
|         name: Build
 | |
|         run: |
 | |
|           docker build . # will run buildx
 | |
| ```
 | |
| 
 | |
| ### BuildKit daemon configuration
 | |
| 
 | |
| You can provide a [BuildKit configuration](https://github.com/moby/buildkit/blob/master/docs/buildkitd.toml.md)
 | |
| to your builder if you're using the [`docker-container` driver](https://github.com/docker/buildx/blob/master/docs/reference/buildx_create.md#driver)
 | |
| (default) with the `config` or `config-inline` inputs:
 | |
| 
 | |
| #### Registry mirror
 | |
| 
 | |
| You can configure a registry mirror using an inline block directly in your
 | |
| workflow with the `config-inline` input:
 | |
| 
 | |
| ```yaml
 | |
| name: ci
 | |
| 
 | |
| on:
 | |
|   push:
 | |
| 
 | |
| jobs:
 | |
|   buildx:
 | |
|     runs-on: ubuntu-latest
 | |
|     steps:
 | |
|       -
 | |
|         name: Set up Docker Buildx
 | |
|         uses: docker/setup-buildx-action@v1
 | |
|         with:
 | |
|           config-inline: |
 | |
|             [registry."docker.io"]
 | |
|               mirrors = ["mirror.gcr.io"]
 | |
| ```
 | |
| 
 | |
| #### Max parallelism
 | |
| 
 | |
| You can limit the parallelism of the BuildKit solver which is particularly
 | |
| useful for low-powered machines.
 | |
| 
 | |
| You can use the `config-inline` input like the
 | |
| previous example, or you can use a dedicated BuildKit config file from your
 | |
| repo if you want with the `config` input:
 | |
| 
 | |
| ```toml
 | |
| # .github/buildkitd.toml
 | |
| [worker.oci]
 | |
|   max-parallelism = 4
 | |
| ```
 | |
| 
 | |
| ```yaml
 | |
| name: ci
 | |
| 
 | |
| on:
 | |
|   push:
 | |
| 
 | |
| jobs:
 | |
|   buildx:
 | |
|     runs-on: ubuntu-latest
 | |
|     steps:
 | |
|       -
 | |
|         name: Set up Docker Buildx
 | |
|         uses: docker/setup-buildx-action@v1
 | |
|         with:
 | |
|           config: .github/buildkitd.toml
 | |
| ```
 | |
| 
 | |
| ## Customizing
 | |
| 
 | |
| ### inputs
 | |
| 
 | |
| Following inputs can be used as `step.with` keys
 | |
| 
 | |
| | Name               | Type    | Description                       |
 | |
| |--------------------|---------|-----------------------------------|
 | |
| | `version`          | String  | [buildx](https://github.com/docker/buildx) version. (eg. `v0.3.0`, `latest`, `https://github.com/docker/buildx.git#master`) |
 | |
| | `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/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)) |
 | |
| | `install`          | Bool    | Sets up `docker build` command as an alias to `docker buildx` (default `false`) |
 | |
| | `use`              | Bool    | Switch to this builder instance (default `true`) |
 | |
| | `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` |
 | |
| | `config`           | String  | [BuildKit config file](https://github.com/docker/buildx/blob/master/docs/reference/buildx_create.md#config) |
 | |
| | `config-inline`    | String  | Same as `config` but inline |
 | |
| 
 | |
| > `config` and `config-inline` are mutually exclusive.
 | |
| 
 | |
| > `CSV` type must be a newline-delimited string
 | |
| > ```yaml
 | |
| > driver-opts: image=moby/buildkit:master
 | |
| > ```
 | |
| > ```yaml
 | |
| > driver-opts: |
 | |
| >   image=moby/buildkit:master
 | |
| >   network=host
 | |
| > ```
 | |
| 
 | |
| ### outputs
 | |
| 
 | |
| Following outputs are available
 | |
| 
 | |
| | Name          | Type    | Description                           |
 | |
| |---------------|---------|---------------------------------------|
 | |
| | `name`        | String  | Builder name |
 | |
| | `driver`      | String  | Builder driver |
 | |
| | `endpoint`    | String  | Builder node endpoint |
 | |
| | `status`      | String  | Builder node status |
 | |
| | `flags`       | String  | Builder node flags (if applicable) |
 | |
| | `platforms`   | String  | Builder node platforms available (comma separated) |
 | |
| 
 | |
| ### environment variables
 | |
| 
 | |
| The following [official docker environment variables](https://docs.docker.com/engine/reference/commandline/cli/#environment-variables) are supported:
 | |
| 
 | |
| | Name            | Type    | Default      | Description                                    |
 | |
| |-----------------|---------|-------------|-------------------------------------------------|
 | |
| | `DOCKER_CONFIG` | String  | `~/.docker` | The location of your client configuration files |
 | |
| 
 | |
| ## Notes
 | |
| 
 | |
| ### BuildKit container logs
 | |
| 
 | |
| To display BuildKit container logs (when `docker-container` driver is used) you have to [enable step debug logging](https://docs.github.com/en/actions/managing-workflow-runs/enabling-debug-logging#enabling-step-debug-logging)
 | |
| or you can also enable debugging in the [setup-buildx action step](https://github.com/docker/setup-buildx-action):
 | |
| 
 | |
| ```yaml
 | |
|   -
 | |
|     name: Set up Docker Buildx
 | |
|     uses: docker/setup-buildx-action@v1
 | |
|     with:
 | |
|       buildkitd-flags: --debug
 | |
| ```
 | |
| 
 | |
| Logs will be available at the end of a job:
 | |
| 
 | |
| 
 | |
| 
 | |
| ## Keep up-to-date with GitHub Dependabot
 | |
| 
 | |
| Since [Dependabot](https://docs.github.com/en/github/administering-a-repository/keeping-your-actions-up-to-date-with-github-dependabot)
 | |
| has [native GitHub Actions support](https://docs.github.com/en/github/administering-a-repository/configuration-options-for-dependency-updates#package-ecosystem),
 | |
| to enable it on your GitHub repo all you need to do is add the `.github/dependabot.yml` file:
 | |
| 
 | |
| ```yaml
 | |
| version: 2
 | |
| updates:
 | |
|   # Maintain dependencies for GitHub Actions
 | |
|   - package-ecosystem: "github-actions"
 | |
|     directory: "/"
 | |
|     schedule:
 | |
|       interval: "daily"
 | |
| ```
 | 
