Skip to content
You're viewing an older version of this GitHub Action. Do you want to see the latest version instead?
docker

GitHub Action

Docker Buildx Bake

v4.1.0

Docker Buildx Bake

docker

Docker Buildx Bake

GitHub Action to use Docker Buildx Bake as a high-level build command

Installation

Copy and paste the following snippet into your .yml file.

              

- name: Docker Buildx Bake

uses: docker/bake-action@v4.1.0

Learn more about this action in docker/bake-action

Choose a version

GitHub release GitHub marketplace CI workflow Test workflow Codecov

About

GitHub Action to use Docker Buildx Bake as a high-level build command.

Screenshot


Usage

name: ci

on:
  push:
    branches:
      - 'master'

jobs:
  bake:
    runs-on: ubuntu-latest
    steps:
      -
        name: Checkout
        uses: actions/checkout@v4
      -
        name: Set up Docker Buildx
        uses: docker/setup-buildx-action@v3
      -
        name: Login to DockerHub
        uses: docker/login-action@v3
        with:
          username: ${{ secrets.DOCKERHUB_USERNAME }}
          password: ${{ secrets.DOCKERHUB_TOKEN }}
      -
        name: Build and push
        uses: docker/bake-action@v4
        with:
          push: true

Subactions

list-targets

This subaction generates a list of Bake targets that can be used in a GitHub matrix, so you can distribute your builds across multiple runners.

# docker-bake.hcl
group "validate" {
  targets = ["lint", "doctoc"]
}

target "lint" {
  target = "lint"
}

target "doctoc" {
  target = "doctoc"
}
jobs:
  prepare:
    runs-on: ubuntu-latest
    outputs:
      targets: ${{ steps.generate.outputs.targets }}
    steps:
      -
        name: Checkout
        uses: actions/checkout@v4
      -
        name: List targets
        id: generate
        uses: docker/bake-action/subaction/list-targets@v4
        with:
          target: validate

  validate:
    runs-on: ubuntu-latest
    needs:
      - prepare
    strategy:
      fail-fast: false
      matrix:
        target: ${{ fromJson(needs.prepare.outputs.targets) }}
    steps:
      -
        name: Checkout
        uses: actions/checkout@v4
      -
        name: Validate
        uses: docker/bake-action@v4
        with:
          targets: ${{ matrix.target }}

Customizing

inputs

Following inputs can be used as step.with keys

List type is a newline-delimited string

set: target.args.mybuildarg=value
set: |
  target.args.mybuildarg=value
  foo*.args.mybuildarg=value

CSV type is a comma-delimited string

targets: default,release
Name Type Description
builder String Builder instance (see setup-buildx action)
files List/CSV List of bake definition files
workdir String Working directory of execution
targets List/CSV List of bake targets (default target used if empty)
no-cache Bool Do not use cache when building the image (default false)
pull Bool Always attempt to pull a newer version of the image (default false)
load Bool Load is a shorthand for --set=*.output=type=docker (default false)
provenance Bool/String Provenance is a shorthand for --set=*.attest=type=provenance
push Bool Push is a shorthand for --set=*.output=type=registry (default false)
sbom Bool/String SBOM is a shorthand for --set=*.attest=type=sbom
set List List of targets values to override (eg: targetpattern.key=value)
source String Remote bake definition to build from

outputs

The following outputs are available

Name Type Description
metadata JSON Build result metadata

Contributing

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