An open API service indexing awesome lists of open source software.

https://github.com/lusingander/dobl

Dobl parses plain Docker BuildKit build logs into JSON that can be inspected, summarized, and eventually visualized 🐳
https://github.com/lusingander/dobl

docker docker-build docker-buildkit docker-buildx

Last synced: 14 days ago
JSON representation

Dobl parses plain Docker BuildKit build logs into JSON that can be inspected, summarized, and eventually visualized 🐳

Awesome Lists containing this project

README

          

# Dobl

Dobl parses Docker BuildKit `--progress=plain` build logs into structured JSON,
step summaries, and self-contained reports.

It is intended for CI and local build logs that need to be searched, filtered,
summarized, or turned into a shareable report.

> [!NOTE]
> This project is primarily developed with OpenAI Codex. Most implementation,
> testing, and documentation work is delegated to Codex, with human review and
> direction.

## Install

```sh
go install github.com/lusingander/dobl/cmd/dobl@latest
```

## Quick Start

Capture a plain BuildKit log:

```sh
docker buildx build --progress=plain . 2>&1 | tee build.log
```

Summarize it in the terminal:

```sh
dobl summary --format text build.log
```

Generate a self-contained HTML report:

```sh
dobl report build.log > report.html
```

Inspect it interactively in a terminal:

```sh
dobl tui build.log
```

Start focused on problem steps:

```sh
dobl tui --filter problems build.log
```

Produce JSON for other tools:

```sh
dobl summary --compact build.log > summary.json
```

The TUI can also read that summary JSON:

```sh
dobl tui --summary summary.json
```

For all commands, flags, filters, and output modes, see the
[CLI reference](docs/cli.md).

## Examples

`dobl summary --format text testdata/error_plain.log` shows the build at a
glance:

```text
Dobl Summary
Source: testdata/error_plain.log
Steps: 3 Done: 2 Cached: 0 Warnings: 0 Errors: 1 Canceled: 0 Outputs: 2

Timeline:
#1 D internal 0.0s | #2 D internal 0.4s | #3 E RUN

Problems:
x #3 ERROR RUN process "/bin/sh -c echo before && exit 1" did not complete successfully: exit code: 2
```

`dobl summary --failed --format table build.log` focuses on failed steps:

```text
ID STATUS DURATION STEP INSTRUCTION NAME OUTPUTS PROGRESS DIAGNOSTIC
#3 ERROR 1/1 RUN RUN echo before && exit 1 2 0 process "/bin/sh -c echo before && exit 1" did not complete successfully: exit code: 2
```

`dobl report build.log > report.html` creates a single HTML file that can be
opened directly in a browser. The report uses the same summary data as
`dobl summary --format json`.

## What It Provides

- Event JSON from BuildKit plain progress logs.
- Step summary JSON with stable fields for downstream tools.
- Human-readable table and static terminal summaries.
- Filters for failed steps, warnings, statuses, Dockerfile metadata, and step
IDs.
- An interactive terminal UI for completed plain build logs.
- A self-contained HTML report generated from a build log.
- A static summary JSON viewer in [examples/viewer](examples/viewer).

## Documentation

- [CLI reference](docs/cli.md)
- [Output formats](docs/output.md)
- [Library API and IR](docs/library.md)
- [Scope and parser behavior](docs/scope.md)
- [Summary JSON schema](docs/summary.schema.json)

## Development

Common checks are available through [Task](https://taskfile.dev/):

```sh
task ci
```

Useful focused commands:

```sh
task test
task lint
task browser:test
task generate
task actions:check
```

Install Node and browser dependencies before running browser checks locally:

```sh
task npm:install
task browser:install
```

## Scope

Implemented:

- non-streaming `docker build` / `docker buildx build` plain progress logs
- event JSON output
- step summary JSON, table, and text output
- non-streaming terminal UI
- static summary JSON viewer
- self-contained HTML report output
- normalization for common ANSI, carriage-return, timestamp, and CI log-prefix
artifacts

Not implemented:

- streaming parsing
- `--progress=rawjson`
- streaming terminal visualization

## License

MIT