
About
GitHub Action to set up 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 or the build-push action.
By default, the docker-container driver
will be used to be able to build multi-platform images and export cache using
a BuildKit container.

Usage
name: ci
on:
push:
jobs:
buildx:
runs-on: ubuntu-latest
steps:
-
# Add support for more platforms with QEMU (optional)
# https://github.com/docker/setup-qemu-action
name: Set up QEMU
uses: docker/setup-qemu-action@v4
-
name: Set up Docker Buildx
uses: docker/setup-buildx-action@v4
Configuring your builder
Customizing
The following inputs can be used as step.with keys:
List type is a newline-delimited string
driver-opts: |
image=moby/buildkit:master
network=host
CSV type must be a comma-delimited string
platforms: linux/amd64,linux/arm64
| Name |
Type |
Default |
Description |
version |
String |
|
Buildx version. (eg. v0.3.0, latest, https://github.com/docker/buildx.git#master) |
name |
String |
|
Name of the builder. If not specified, one will be generated or if it already exists, it will be used instead of creating a new one |
driver |
String |
docker-container |
Sets the builder driver to be used |
driver-opts |
List |
|
List of additional driver-specific options (eg. image=moby/buildkit:master) |
buildkitd-flags |
String |
|
BuildKit daemon flags |
buildkitd-config * |
String |
|
BuildKit daemon config file |
buildkitd-config-inline * |
String |
|
Same as buildkitd-config but inline |
use |
Bool |
true |
Switch to this builder instance |
endpoint |
String |
|
Optional address for docker socket or context from docker context ls |
platforms |
List/CSV |
|
Fixed platforms for current node. If not empty, values take priority over the detected ones |
append |
YAML |
|
Append additional nodes to the builder |
keep-state |
Bool |
false |
Keep BuildKit state on cleanup. This is only useful on persistent self-hosted runners |
cache-binary |
Bool |
true |
Cache buildx binary to GitHub Actions cache backend |
cleanup |
Bool |
true |
Cleanup temp files and remove builder at the end of a job |
[!IMPORTANT]
If you set the buildkitd-flags input, the default flags (--allow-insecure-entitlement security.insecure --allow-insecure-entitlement network.host)
will be reset. If you want to retain the default behavior, make sure to
include these flags in your custom buildkitd-flags value.
buildkitd-config and buildkitd-config-inline are mutually exclusive.
outputs
The following outputs are available:
| 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 |
environment variables
The following official docker environment variables are supported:
| Name |
Type |
Default |
Description |
DOCKER_CONFIG |
String |
~/.docker |
The location of your client configuration files |
Notes
nodes output
| 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 |
Example:
[
{
"name": "builder-8fa135e1-9bce-4a29-9368-46a09a1d750d0",
"endpoint": "unix:///var/run/docker.sock",
"status": "running",
"buildkitd-flags": "--allow-insecure-entitlement security.insecure --allow-insecure-entitlement network.host",
"buildkit": "v0.27.1",
"platforms": "linux/amd64,linux/amd64/v2,linux/amd64/v3,linux/386"
}
]
Contributing
Want to contribute? Awesome! You can find information about contributing to
this project in the CONTRIBUTING.md
评论