Permalink
Name already in use
A tag already exists with the provided branch name. Many Git commands accept both tag and branch names, so creating this branch may cause unexpected behavior. Are you sure you want to create this branch?
setup-buildx-action/README.md
Go to fileThis commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.

Clarify install option in example
297 lines (236 sloc)
9.54 KB
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
[](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) | |
* [Standalone mode](#standalone-mode) | |
* [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@v3 | |
- | |
name: Set up Docker Buildx | |
id: buildx | |
uses: docker/setup-buildx-action@v2 | |
- | |
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@v3 | |
- | |
name: Set up QEMU | |
uses: docker/setup-qemu-action@v2 | |
- | |
name: Set up Docker Buildx | |
id: buildx | |
uses: docker/setup-buildx-action@v2 | |
- | |
name: Available platforms | |
run: echo ${{ steps.buildx.outputs.platforms }} | |
``` | |
### Install by default | |
If you want set up the `docker build` command as an alias to `docker buildx build`: | |
```yaml | |
name: ci | |
on: | |
push: | |
jobs: | |
buildx: | |
runs-on: ubuntu-latest | |
steps: | |
- | |
name: Checkout | |
uses: actions/checkout@v3 | |
- | |
uses: docker/setup-buildx-action@v2 | |
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@v2 | |
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@v2 | |
with: | |
config: .github/buildkitd.toml | |
``` | |
### Standalone mode | |
If you don't have the Docker CLI installed on the GitHub Runner, buildx binary | |
is invoked directly, instead of calling it as a docker plugin. This can be | |
useful if you want to use the `kubernetes` driver in your self-hosted runner: | |
```yaml | |
name: ci | |
on: | |
push: | |
jobs: | |
buildx: | |
runs-on: ubuntu-latest | |
steps: | |
- | |
name: Set up Docker Buildx | |
uses: docker/setup-buildx-action@v2 | |
with: | |
driver: kubernetes | |
- | |
name: Build | |
run: | | |
buildx build . | |
``` | |
## 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@v2 | |
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" | |
``` |