Home

Awesome

GitHub release GitHub marketplace CI workflow Test workflow Codecov

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.

Screenshot


Usage

name: ci

on:
  push:

jobs:
  buildx:
    runs-on: ubuntu-latest
    steps:
      -
        name: Checkout
        uses: actions/checkout@v4
      -
        # Add support for more platforms with QEMU (optional)
        # https://github.com/docker/setup-qemu-action
        name: Set up QEMU
        uses: docker/setup-qemu-action@v3
      -
        name: Set up Docker Buildx
        uses: docker/setup-buildx-action@v3

Configuring your builder

Customizing

inputs

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
NameTypeDefaultDescription
versionStringBuildx version. (eg. v0.3.0, latest, https://github.com/docker/buildx.git#master)
driverStringdocker-containerSets the builder driver to be used
driver-optsListList of additional driver-specific options (eg. image=moby/buildkit:master)
buildkitd-flagsStringBuildKit daemon flags
buildkitd-config *StringBuildKit daemon config file
buildkitd-config-inline *StringSame as buildkitd-config but inline
installBoolfalseSets up docker build command as an alias to docker buildx
useBooltrueSwitch to this builder instance
endpointStringOptional address for docker socket or context from docker context ls
platformsList/CSVFixed platforms for current node. If not empty, values take priority over the detected ones.
appendYAMLAppend additional nodes to the builder
cache-binaryBooltrueCache buildx binary to GitHub Actions cache backend
cleanupBooltrueCleanup 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.

[!NOTE] buildkitd-config and buildkitd-config-inline are mutually exclusive.

outputs

The following outputs are available:

NameTypeDescription
nameStringBuilder name
driverStringBuilder driver
platformsStringBuilder node platforms (preferred and/or available)
nodesJSONBuilder nodes metadata

environment variables

The following official docker environment variables are supported:

NameTypeDefaultDescription
DOCKER_CONFIGString~/.dockerThe location of your client configuration files

Notes

nodes output

[
  {
     "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"
  }
]
NameTypeDescription
nameStringNode name
endpointStringNode endpoint
driver-optsListOptions for the driver
statusStringNode status
buildkitd-flagsStringFlags for buildkitd daemon
buildkitStringBuildKit version
platformsStringPlatforms available

Contributing

Want to contribute? Awesome! You can find information about contributing to this project in the CONTRIBUTING.md