2020-08-18 17:54:41 +02: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-19 20:23:49 +01: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 17:41:10 +02: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 17:54:41 +02:00
2020-08-18 17:40:31 +02:00
## About
GitHub Action to set up Docker [Buildx ](https://github.com/docker/buildx ).
2022-09-18 00:24:58 +02: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-17 18:30:12 +01:00
2020-08-19 13:24:24 +02:00
![Screenshot ](.github/setup-buildx-action.png )
2020-08-18 17:40:31 +02:00
___
* [Usage ](#usage )
2022-11-10 16:01:32 +01:00
* [Configuring your builder ](#configuring-your-builder )
2023-01-25 12:36:32 +00:00
* [Version pinning ](#version-pinning )
2020-08-18 17:40:31 +02:00
* [Customizing ](#customizing )
* [inputs ](#inputs )
* [outputs ](#outputs )
* [environment variables ](#environment-variables )
2021-04-23 22:08:40 +02:00
* [Notes ](#notes )
2022-09-18 02:24:38 +02:00
* [`nodes` output ](#nodes-output )
2021-04-23 22:08:40 +02:00
* [BuildKit container logs ](#buildkit-container-logs )
2022-11-10 16:02:34 +01:00
* [Contributing ](#contributing )
2020-08-18 17:40:31 +02:00
## Usage
```yaml
name: ci
on:
push:
jobs:
buildx:
runs-on: ubuntu-latest
steps:
-
name: Checkout
2022-05-11 16:11:52 +01:00
uses: actions/checkout@v3
2020-08-18 17:40:31 +02:00
-
2022-09-18 00:24:58 +02:00
# Add support for more platforms with QEMU (optional)
# https://github.com/docker/setup-qemu-action
2020-08-18 17:40:31 +02:00
name: Set up QEMU
2022-05-05 19:43:45 +02:00
uses: docker/setup-qemu-action@v2
2021-09-03 22:21:20 +02:00
-
name: Set up Docker Buildx
2022-05-05 19:43:45 +02:00
uses: docker/setup-buildx-action@v2
2021-09-03 22:21:20 +02:00
```
2022-11-10 16:01:32 +01:00
## Configuring your builder
2021-09-03 22:21:20 +02:00
2022-11-10 16:01:32 +01:00
See https://docs.docker.com/build/ci/github-actions/configure-builder/
2022-04-17 17:22:03 +02:00
2023-01-25 12:36:32 +00:00
## Version pinning
This action builds images using [Buildx ](https://github.com/docker/buildx ) and
[BuildKit ](https://github.com/moby/buildkit ). By default, the action will
attempt to use the latest version of Buildx available on the GitHub Runner
(the build client) and the latest release of BuildKit (the build server).
To pin to a specific version of Buildx, use the `version` input. For example,
to pin to Buildx v0.10.0:
```yaml
- name: Set up Docker Buildx
2023-01-28 14:03:18 +01:00
uses: docker/setup-buildx-action@v2
2023-01-25 12:36:32 +00:00
with:
version: v0.10.0
```
To pin to a specific version of BuildKit, use the `image` option in the
`driver-opts` input. For example, to pin to BuildKit v0.11.0:
```yaml
- name: Set up Docker Buildx
2023-01-28 14:03:18 +01:00
uses: docker/setup-buildx-action@v2
2023-01-25 12:36:32 +00:00
with:
driver-opts: image=moby/buildkit:v0.11.0
```
2020-08-18 17:40:31 +02:00
## Customizing
### inputs
2022-09-22 11:54:00 +02:00
Following inputs can be used as `step.with` keys:
2021-09-03 22:21:20 +02:00
2022-09-22 11:54:00 +02:00
> `List` type is a newline-delimited string
2020-09-03 16:23:15 +02:00
> ```yaml
> driver-opts: |
> image=moby/buildkit:master
> network=host
> ```
2022-09-22 11:54:00 +02:00
> `CSV` type must be a newline-delimited string
> ```yaml
> platforms: linux/amd64,linux/arm64
> ```
| 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://docs.docker.com/engine/reference/commandline/buildx_create/#driver ) to be used (default `docker-container` ) |
| `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 (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://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 |
> * ¹ `config` and `config-inline` are mutually exclusive
2020-08-18 17:40:31 +02:00
### outputs
Following outputs are available
2022-09-18 02:24:38 +02:00
| Name | Type | Description |
|-------------|--------|-------------------------------------------------|
| `name` | String | Builder name |
| `driver` | String | Builder driver |
| `platforms` | String | Builder node platforms (preferred or available) |
| `nodes` | JSON | Builder [nodes metadata ](#nodes-output ) |
2020-08-18 17:40:31 +02:00
### environment variables
The following [official docker environment variables ](https://docs.docker.com/engine/reference/commandline/cli/#environment-variables ) are supported:
2022-09-18 00:24:58 +02:00
| Name | Type | Default | Description |
|-----------------|--------|-------------|-------------------------------------------------|
| `DOCKER_CONFIG` | String | `~/.docker` | The location of your client configuration files |
2020-08-18 17:40:31 +02:00
2021-04-23 22:08:40 +02:00
## Notes
2022-09-18 02:24:38 +02: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 |
2021-04-23 22:08:40 +02:00
### BuildKit container logs
2022-11-10 16:01:32 +01:00
See https://docs.docker.com/build/ci/github-actions/configure-builder/#buildkit-container-logs
2021-04-23 22:08:40 +02:00
2022-11-10 16:02:34 +01:00
## Contributing
2020-08-20 17:26:41 +02:00
2022-11-10 16:02:34 +01:00
Want to contribute? Awesome! You can find information about contributing to
this project in the [CONTRIBUTING.md ](/.github/CONTRIBUTING.md )