GitHub Action to set up Docker Buildx
Find a file
CrazyMax 693fdd6ca6
Merge pull request #174 from crazy-max/input-quote
preserve quotes surrounding fields in input list
2022-10-18 10:37:08 +02:00
.github platforms input 2022-10-14 11:47:46 +02:00
__tests__ preserve quotes surrounding fields in input list 2022-10-17 20:44:03 +02:00
dist preserve quotes surrounding fields in input list 2022-10-17 20:44:03 +02:00
docs/advanced append nodes to builder support 2022-10-14 11:46:19 +02:00
src preserve quotes surrounding fields in input list 2022-10-17 20:44:03 +02:00
.dockerignore Enhance workflow 2021-04-02 01:19:20 +02:00
.editorconfig Initial commit (docker/build-push-action#87) 2020-08-18 17:40:31 +02:00
.eslintrc.json chore: update dev dependencies and workflow 2022-03-21 13:43:41 +01:00
.gitattributes Initial commit (docker/build-push-action#87) 2020-08-18 17:40:31 +02:00
.gitignore Initial commit (docker/build-push-action#87) 2020-08-18 17:40:31 +02:00
.prettierrc.json Allow building buildx from source 2021-07-02 07:02:33 +02:00
action.yml platforms input 2022-10-14 11:47:46 +02:00
codecov.yml Allow building buildx from source 2021-07-02 07:02:33 +02:00
dev.Dockerfile Node 16 as default runtime 2022-03-21 13:50:20 +01:00
docker-bake.hcl chore: update dev dependencies and workflow 2022-03-21 13:43:41 +01:00
jest.config.ts append nodes to builder support 2022-10-14 11:46:19 +02:00
LICENSE Initial commit (docker/build-push-action#87) 2020-08-18 17:40:31 +02:00
package.json Bump csv-parse from 5.3.0 to 5.3.1 2022-10-17 04:04:47 +00:00
README.md platforms input 2022-10-14 11:47:46 +02:00
tsconfig.json chore: update dev dependencies and workflow 2022-03-21 13:43:41 +01:00
yarn.lock Bump csv-parse from 5.3.0 to 5.3.1 2022-10-17 04:04:47 +00:00

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@v3
      -
        # Add support for more platforms with QEMU (optional)
        # https://github.com/docker/setup-qemu-action
        name: Set up QEMU
        uses: docker/setup-qemu-action@v2
      -
        name: Set up Docker Buildx
        uses: docker/setup-buildx-action@v2

Advanced usage

Customizing

inputs

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 newline-delimited string

platforms: linux/amd64,linux/arm64
Name Type Description
version String Buildx version. (eg. v0.3.0, latest, https://github.com/docker/buildx.git#master)
driver String Sets the builder driver to be used (default docker-container)
driver-opts List List of additional driver-specific options (eg. image=moby/buildkit:master)
buildkitd-flags String Flags for buildkitd daemon (since buildx 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 or context from docker context ls
platforms List/CSV Fixed platforms for current node. If not empty, values take priority over the detected ones.
config¹ String BuildKit config file
config-inline¹ String Same as config but inline
append YAML Append additional nodes to the builder
  • ¹ config and config-inline are mutually exclusive

outputs

Following outputs are available

Name Type Description
name String Builder name
driver String Builder driver
platforms String Builder node platforms (preferred 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": "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

BuildKit container logs

To display BuildKit container logs (when docker-container driver is used) you have to enable step debug logging, or you can also enable debugging in the setup-buildx action step:

  -
    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:

BuildKit container logs

Keep up-to-date with GitHub Dependabot

Since Dependabot has native GitHub Actions support, to enable it on your GitHub repo all you need to do is add the .github/dependabot.yml file:

version: 2
updates:
  # Maintain dependencies for GitHub Actions
  - package-ecosystem: "github-actions"
    directory: "/"
    schedule:
      interval: "daily"