> ## Documentation Index
> Fetch the complete documentation index at: https://buildcharts.dev/llms.txt
> Use this file to discover all available pages before exploring further.

# GitHub Actions

> Run BuildCharts in GitHub Actions with Buildx Bake.

## Actions

* [buildcharts/setup-action](https://github.com/buildcharts/setup-action)
* [buildcharts/generate-action](https://github.com/buildcharts/generate-action)
* [buildcharts/summary-action](https://github.com/buildcharts/summary-action)

## Usage

```yaml theme={"theme":{"light":"plastic","dark":"plastic"}}
on:
  push:
    branches: [main]
  pull_request:

jobs:
  build:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4

      - name: Set up BuildCharts
        uses: buildcharts/setup-action@v1

      - name: Generate BuildCharts
        uses: buildcharts/generate-action@v1

      - name: Set up Docker Buildx
        uses: docker/setup-buildx-action@v3

      - name: Docker build and test
        uses: docker/bake-action@v6
        with:
          files: .buildcharts/docker-bake.hcl
        env:
          VERSION: ${{ github.ref_name }}
          COMMIT: ${{ github.sha }}

      - name: BuildCharts summary
        uses: buildcharts/summary-action@v1
```

## Enable caching

BuildKit supports cache backends. On GitHub Actions, `type=gha` is a common choice.

Example using `docker/bake-action` to set cache options on the generated `_common` target:

```yaml theme={"theme":{"light":"plastic","dark":"plastic"}}
- name: Docker build and test
  uses: docker/bake-action@v6
  with:
    files: .buildcharts/docker-bake.hcl
    set: |
      _common.cache-from=type=gha,scope=buildcharts
      _common.cache-to=type=gha,scope=buildcharts,mode=max
  env:
    VERSION: ${{ github.ref_name }}
    COMMIT: ${{ github.sha }}
```

Read more about [Cache storage backend](https://docs.docker.com/build/cache/backends/) and the [GitHub Actions cache](https://docs.docker.com/build/cache/backends/gha/).

## Add build summary

The [buildcharts/summary-action](https://github.com/buildcharts/summary-action) reads Docker Buildx history, parses the logs, and generates a summary.

```yaml theme={"theme":{"light":"plastic","dark":"plastic"}}
- name: Build summary
  uses: buildcharts/summary-action@v1
```

## What each action does

* [`buildcharts/setup-action@v1`](https://github.com/buildcharts/setup-action) installs the CLI.
* [`buildcharts/generate-action@v1`](https://github.com/buildcharts/generate-action) generates the build.
* [`buildcharts/summary-action@v1`](https://github.com/buildcharts/summary-action) writes build summary to the GHA job summary.
* [`docker/bake-action@v6`](https://github.com/docker/bake-action) runs the generated build plan.
