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 🐳
- Host: GitHub
- URL: https://github.com/lusingander/dobl
- Owner: lusingander
- License: mit
- Created: 2026-04-30T12:21:08.000Z (2 months ago)
- Default Branch: master
- Last Pushed: 2026-05-01T13:27:16.000Z (2 months ago)
- Last Synced: 2026-05-01T14:16:49.555Z (2 months ago)
- Topics: docker, docker-build, docker-buildkit, docker-buildx
- Language: Go
- Homepage:
- Size: 43 KB
- Stars: 0
- Watchers: 0
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
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