2020-08-18 23:54:41 +08:00
[![GitHub release ](https://img.shields.io/github/release/docker/setup-buildx-action.svg?style=flat-square )](https://github.com/docker/setup-buildx-action/releases/latest)
[![GitHub marketplace ](https://img.shields.io/badge/marketplace-docker--setup--buildx-blue?logo=github&style=flat-square )](https://github.com/marketplace/actions/docker-setup-buildx)
2022-12-20 03:23:49 +08:00
[![CI workflow ](https://img.shields.io/github/actions/workflow/status/docker/setup-buildx-action/ci.yml?branch=master&label=ci&logo=github&style=flat-square )](https://github.com/docker/setup-buildx-action/actions?workflow=ci)
[![Test workflow ](https://img.shields.io/github/actions/workflow/status/docker/setup-buildx-action/test.yml?branch=master&label=test&logo=github&style=flat-square )](https://github.com/docker/setup-buildx-action/actions?workflow=test)
2020-08-27 23:41:10 +08:00
[![Codecov ](https://img.shields.io/codecov/c/github/docker/setup-buildx-action?logo=codecov&style=flat-square )](https://codecov.io/gh/docker/setup-buildx-action)
2020-08-18 23:54:41 +08:00
2020-08-18 23:40:31 +08:00
## About
GitHub Action to set up Docker [Buildx ](https://github.com/docker/buildx ).
2022-09-18 06:24:58 +08:00
This action will create and boot a builder that can be used in the following
steps of your workflow if you're using Buildx or the [`build-push` action ](https://github.com/docker/build-push-action/ ).
By default, the [`docker-container` driver ](https://docs.docker.com/build/building/drivers/docker-container/ )
will be used to be able to build multi-platform images and export cache using
a [BuildKit ](https://github.com/moby/buildkit ) container.
2021-02-18 01:30:12 +08:00
2020-08-19 19:24:24 +08:00
![Screenshot ](.github/setup-buildx-action.png )
2020-08-18 23:40:31 +08:00
___
* [Usage ](#usage )
2022-11-10 23:01:32 +08:00
* [Configuring your builder ](#configuring-your-builder )
2020-08-18 23:40:31 +08:00
* [Customizing ](#customizing )
* [inputs ](#inputs )
* [outputs ](#outputs )
* [environment variables ](#environment-variables )
2021-04-24 04:08:40 +08:00
* [Notes ](#notes )
2022-09-18 08:24:38 +08:00
* [`nodes` output ](#nodes-output )
2022-11-10 23:02:34 +08:00
* [Contributing ](#contributing )
2020-08-18 23:40:31 +08:00
## Usage
```yaml
name: ci
on:
push:
jobs:
buildx:
runs-on: ubuntu-latest
steps:
-
name: Checkout
2023-09-12 16:29:11 +08:00
uses: actions/checkout@v4
2020-08-18 23:40:31 +08:00
-
2022-09-18 06:24:58 +08:00
# Add support for more platforms with QEMU (optional)
# https://github.com/docker/setup-qemu-action
2020-08-18 23:40:31 +08:00
name: Set up QEMU
2023-09-12 16:29:11 +08:00
uses: docker/setup-qemu-action@v3
2021-09-04 04:21:20 +08:00
-
name: Set up Docker Buildx
2023-09-12 16:29:11 +08:00
uses: docker/setup-buildx-action@v3
2021-09-04 04:21:20 +08:00
```
2022-11-10 23:01:32 +08:00
## Configuring your builder
2021-09-04 04:21:20 +08:00
2023-02-24 10:22:30 +08:00
* [Version pinning ](https://docs.docker.com/build/ci/github-actions/configure-builder/#version-pinning ): Pin to a specific Buildx or BuildKit version
* [BuildKit container logs ](https://docs.docker.com/build/ci/github-actions/configure-builder/#buildkit-container-logs ): Enable BuildKit container logs for debugging purposes
* [BuildKit Daemon configuration ](https://docs.docker.com/build/ci/github-actions/configure-builder/#buildkit-daemon-configuration )
* [Registry mirror ](https://docs.docker.com/build/ci/github-actions/configure-builder/#registry-mirror ): Configure a registry mirror for your builds
* [Max parallelism ](https://docs.docker.com/build/ci/github-actions/configure-builder/#max-parallelism ): Configure the maximum parallelism for your builds
* [Append additional nodes to the builder ](https://docs.docker.com/build/ci/github-actions/configure-builder/#append-additional-nodes-to-the-builder ): Create additional nodes for your builder
* [Authentication for remote builders ](https://docs.docker.com/build/ci/github-actions/configure-builder/#authentication-for-remote-builders )
* [SSH authentication ](https://docs.docker.com/build/ci/github-actions/configure-builder/#ssh-authentication ): Authenticate to a remote builder using SSH
* [TLS authentication ](https://docs.docker.com/build/ci/github-actions/configure-builder/#tls-authentication ): Authenticate to a remote builder using TLS
* [Standalone mode ](https://docs.docker.com/build/ci/github-actions/configure-builder/#standalone-mode ): Use Buildx as a standalone binary (without the Docker CLI)
* [Isolated builders ](https://docs.docker.com/build/ci/github-actions/configure-builder/#isolated-builders ): Create isolated builders for your builds
2023-01-25 20:36:32 +08:00
2020-08-18 23:40:31 +08:00
## Customizing
### inputs
2023-09-12 16:29:11 +08:00
The following inputs can be used as `step.with` keys:
2021-09-04 04:21:20 +08:00
2022-09-22 17:54:00 +08:00
> `List` type is a newline-delimited string
2020-09-03 22:23:15 +08:00
> ```yaml
> driver-opts: |
> image=moby/buildkit:master
> network=host
> ```
2023-03-08 00:09:55 +08:00
> `CSV` type must be a comma-delimited string
2022-09-22 17:54:00 +08:00
> ```yaml
> platforms: linux/amd64,linux/arm64
> ```
2023-03-03 18:56:21 +08:00
| Name | Type | Default | Description |
|-------------------|----------|--------------------|------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
| `version` | String | | [Buildx ](https://github.com/docker/buildx ) version. (eg. `v0.3.0` , `latest` , `https://github.com/docker/buildx.git#master` ) |
| `driver` | String | `docker-container` | Sets the [builder driver ](https://docs.docker.com/engine/reference/commandline/buildx_create/#driver ) to be used |
| `driver-opts` | List | | List of additional [driver-specific options ](https://docs.docker.com/engine/reference/commandline/buildx_create/#driver-opt ) (eg. `image=moby/buildkit:master` ) |
| `buildkitd-flags` | String | | [Flags for buildkitd ](https://docs.docker.com/engine/reference/commandline/buildx_create/#buildkitd-flags ) daemon |
| `install` | Bool | `false` | Sets up `docker build` command as an alias to `docker buildx` |
| `use` | Bool | `true` | Switch to this builder instance |
| `endpoint` | String | | [Optional address for docker socket ](https://docs.docker.com/engine/reference/commandline/buildx_create/#description ) or context from `docker context ls` |
| `platforms` | List/CSV | | Fixed [platforms ](https://docs.docker.com/engine/reference/commandline/buildx_create/#platform ) for current node. If not empty, values take priority over the detected ones. |
| `config` ¹ | String | | [BuildKit config file ](https://docs.docker.com/engine/reference/commandline/buildx_create/#config ) |
| `config-inline` ¹ | String | | Same as `config` but inline |
| `append` | YAML | | [Append additional nodes ](docs/advanced/append-nodes.md ) to the builder |
| `cleanup` | Bool | `true` | Cleanup temp files and remove builder at the end of a job |
2022-09-22 17:54:00 +08:00
> * ¹ `config` and `config-inline` are mutually exclusive
2020-08-18 23:40:31 +08:00
### outputs
2023-09-12 16:29:11 +08:00
The following outputs are available:
2020-08-18 23:40:31 +08:00
2023-09-12 16:29:11 +08:00
| Name | Type | Description |
|-------------|--------|-----------------------------------------------------|
| `name` | String | Builder name |
| `driver` | String | Builder driver |
| `platforms` | String | Builder node platforms (preferred and/or available) |
| `nodes` | JSON | Builder [nodes metadata ](#nodes-output ) |
2020-08-18 23:40:31 +08:00
### environment variables
The following [official docker environment variables ](https://docs.docker.com/engine/reference/commandline/cli/#environment-variables ) are supported:
2022-09-18 06:24:58 +08:00
| Name | Type | Default | Description |
|-----------------|--------|-------------|-------------------------------------------------|
| `DOCKER_CONFIG` | String | `~/.docker` | The location of your client configuration files |
2020-08-18 23:40:31 +08:00
2021-04-24 04:08:40 +08:00
## Notes
2022-09-18 08:24:38 +08:00
### `nodes` output
```json
[
{
"name": "builder-3820d274-502c-4498-ae24-d4c32b3023d90",
"endpoint": "unix:///var/run/docker.sock",
"driver-opts": [
"network=host",
"image=moby/buildkit:master"
],
"status": "running",
"buildkitd-flags": "--allow-insecure-entitlement security.insecure --allow-insecure-entitlement network.host",
"buildkit": "3fab389",
"platforms": "linux/amd64,linux/amd64/v2,linux/amd64/v3,linux/amd64/v4,linux/386"
}
]
```
| Name | Type | Description |
|-------------------|--------|----------------------------|
| `name` | String | Node name |
| `endpoint` | String | Node endpoint |
| `driver-opts` | List | Options for the driver |
| `status` | String | Node status |
| `buildkitd-flags` | String | Flags for buildkitd daemon |
| `buildkit` | String | BuildKit version |
| `platforms` | String | Platforms available |
2022-11-10 23:02:34 +08:00
## Contributing
2020-08-20 23:26:41 +08:00
2022-11-10 23:02:34 +08:00
Want to contribute? Awesome! You can find information about contributing to
this project in the [CONTRIBUTING.md ](/.github/CONTRIBUTING.md )