Files
logpile/docs/bible/08-build-release.md
Mikhail Chusavitin fcd57c1ba9 docs: introduce project Bible and consolidate all architecture documentation
- Create docs/bible/ with 10 structured chapters (overview, architecture,
  API, data models, collectors, parsers, exporters, build, testing, decisions)
- All documentation in English per ADL-007
- Record all existing architectural decisions in docs/bible/10-decisions.md
- Slim README.md to user-facing quick start only
- Replace CLAUDE.md with a single directive to read and follow the Bible
- Remove absorbed files: REANIMATOR_EXPORT.md, docs/INTEGRATION_GUIDE.md,
  and all vendor parser README.md files

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-02-20 14:15:35 +03:00

2.3 KiB

08 — Build & Release

CLI flags

Defined in cmd/logpile/main.go:

Flag Default Description
--port 8082 HTTP server port
--file Reserved for archive preload (not active)
--version Print version and exit
--no-browser Do not open browser on start
--hold-on-crash true on Windows Keep console open on fatal crash for debugging

Build

# Local binary (current OS/arch)
make build
# Output: bin/logpile

# Cross-platform binaries
make build-all
# Output:
#   bin/logpile-linux-amd64
#   bin/logpile-linux-arm64
#   bin/logpile-darwin-amd64
#   bin/logpile-darwin-arm64
#   bin/logpile-windows-amd64.exe

Both make build and make build-all run scripts/update-pci-ids.sh --best-effort before compilation to sync pci.ids from the submodule.

To skip PCI IDs update:

SKIP_PCI_IDS_UPDATE=1 make build

Build flags: CGO_ENABLED=0 — fully static binary, no C runtime dependency.

PCI IDs submodule

Source: third_party/pciids (git submodule → github.com/pciutils/pciids) Local copy embedded at build time: internal/parser/vendors/pciids/pci.ids

# Manual update
make update-pci-ids

# Init submodule after fresh clone
git submodule update --init third_party/pciids

Release process

scripts/release.sh

What it does:

  1. Reads version from git describe --tags
  2. Validates clean working tree (override: ALLOW_DIRTY=1)
  3. Sets stable GOPATH / GOCACHE / GOTOOLCHAIN env
  4. Creates releases/{VERSION}/ directory
  5. Generates RELEASE_NOTES.md template if not present
  6. Builds darwin-arm64 and windows-amd64 binaries
  7. Packages all binaries found in bin/ as .tar.gz / .zip
  8. Generates SHA256SUMS.txt
  9. Prints next steps (tag, push, create release on git.mchus.pro)

Release notes live in docs/releases/<tag>.md. Tags and releases are published with tea.

Running

./bin/logpile
./bin/logpile --port 9090
./bin/logpile --no-browser
./bin/logpile --version
./bin/logpile --hold-on-crash   # keep console open on crash (default on Windows)

macOS Gatekeeper

After downloading a binary, remove the quarantine attribute:

xattr -d com.apple.quarantine /path/to/logpile-darwin-arm64