Skip to content

Building WebSummoner

Following the same philosophy as golang-docker-boilerplate, every build task runs inside a pinned Go container (golang:1.27-trixie by default). No Go installation is needed on your machine — only Docker.

Run each task in the pinned Go container. This repository is a self-contained Go module, so mounting it alone is enough.

Compile for your platform:

Terminal window
docker run --rm -v "$PWD":/app -w /app golang:1.27-trixie \
go build -buildvcs=false -o dist/websummoner .

Run the tests, with the same build tags CI uses:

Terminal window
docker run --rm -v "$PWD":/app -w /app golang:1.27-trixie \
go test -tags 's3 metadata' -race ./...

Vet and check formatting:

Terminal window
docker run --rm -v "$PWD":/app -w /app golang:1.27-trixie \
bash -c 'go vet ./... && test -z "$(gofmt -l .)"'

Lint with the project’s configuration:

Terminal window
docker run --rm -v "$PWD":/app -w /app golangci/golangci-lint:latest \
golangci-lint run ./...

ci/build.sh cross-compiles every release target into dist/, and CI runs it for tagged releases — so released binaries always come from one place. To reproduce a release build locally, run that script in the container:

Terminal window
docker run --rm -v "$PWD":/app -w /app golang:1.27-trixie ci/build.sh

Then build the image from the linux binary for your architecture:

Terminal window
docker build --build-arg TARGETARCH=amd64 -t websummoner:local .

Ready-made browser images are published to Docker Hub by RIADVICE and updated as new browser versions stabilize — you never need to build them to use WebSummoner. Just pull:

Terminal window
docker pull websummoner/chrome:152.0
docker pull websummoner/firefox:155.0.0

To build fully custom images yourself, the images repository contains the public images build tool and its build documentation.

This documentation is an Astro Starlight site in docs-site/:

Terminal window
cd docs-site
npm install
npm run dev # live preview at http://localhost:4321/
npm run build # static output in dist/ + llms.txt

It is built and deployed to GitHub Pages automatically by the custom docs GitHub Actions workflow.