Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
5 changes: 4 additions & 1 deletion .github/workflows/release.yml
Original file line number Diff line number Diff line change
Expand Up @@ -77,7 +77,8 @@ jobs:
GOARCH: ${{ matrix.goarch }}
CGO_ENABLED: "0"
run: |
go build -ldflags="-s -w" -o buggregator-${{ matrix.goos }}-${{ matrix.goarch }} ./cmd/buggregator
VERSION=${GITHUB_REF_NAME#v}
go build -ldflags="-s -w -X main.version=${VERSION}" -o buggregator-${{ matrix.goos }}-${{ matrix.goarch }} ./cmd/buggregator

- name: Upload artifact
uses: actions/upload-artifact@v4
Expand Down Expand Up @@ -141,6 +142,8 @@ jobs:
${{ steps.meta-dockerhub.outputs.tags }}
labels: ${{ steps.meta.outputs.labels }}
platforms: linux/amd64,linux/arm64
build-args: |
VERSION=${{ steps.meta.outputs.version }}
cache-from: type=gha
cache-to: type=gha,mode=max

Expand Down
3 changes: 2 additions & 1 deletion Dockerfile
Original file line number Diff line number Diff line change
Expand Up @@ -52,7 +52,8 @@ COPY --from=php-builder /php/vardumper-parser modules/vardumper/bin/vardumper-pa
# Copy frontend into the embed location
COPY --from=frontend /frontend/ internal/frontend/dist/

RUN CGO_ENABLED=0 go build -o buggregator ./cmd/buggregator
ARG VERSION=dev
RUN CGO_ENABLED=0 go build -ldflags="-s -w -X main.version=${VERSION}" -o buggregator ./cmd/buggregator

# Stage 4: Final minimal image
FROM alpine:3.20
Expand Down
16 changes: 9 additions & 7 deletions Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,8 @@ FRONTEND_VERSION ?= 1.29.1
FRONTEND_URL = https://github.com/buggregator/frontend/releases/download/$(FRONTEND_VERSION)/frontend-$(FRONTEND_VERSION).zip
FRONTEND_DIR = internal/frontend/dist
BINARY = buggregator
VERSION ?= dev
LDFLAGS = -s -w -X main.version=$(VERSION)

# PHP VarDumper binary build
PHP_DIR = php/vardumper
Expand Down Expand Up @@ -113,24 +115,24 @@ deps:
build: deps
@if [ ! -f $(FRONTEND_DIR)/index.html ]; then $(MAKE) frontend; fi
@if [ -z "$$(ls $(PHP_BIN_DIR)/vardumper-parser-* 2>/dev/null)" ]; then $(MAKE) vardumper-php; fi
go build -o $(BINARY) ./cmd/buggregator
go build -ldflags="$(LDFLAGS)" -o $(BINARY) ./cmd/buggregator
@echo "Built $(BINARY) ($$(du -h $(BINARY) | cut -f1))"

# Cross-compile for a specific platform
# Usage: make build-cross GOOS=linux GOARCH=amd64
build-cross: deps
@if [ ! -f $(FRONTEND_DIR)/index.html ]; then $(MAKE) frontend; fi
@if [ ! -f $(PHP_BIN_DIR)/vardumper-parser-$(GOOS)-$(GOARCH) ]; then $(MAKE) vardumper-$(GOOS)-$(GOARCH); fi
GOOS=$(GOOS) GOARCH=$(GOARCH) go build -o $(BINARY)-$(GOOS)-$(GOARCH) ./cmd/buggregator
GOOS=$(GOOS) GOARCH=$(GOARCH) go build -ldflags="$(LDFLAGS)" -o $(BINARY)-$(GOOS)-$(GOARCH) ./cmd/buggregator
@echo "Built $(BINARY)-$(GOOS)-$(GOARCH) ($$(du -h $(BINARY)-$(GOOS)-$(GOARCH) | cut -f1))"

# Build all platforms
release: deps frontend vardumper-all
GOOS=linux GOARCH=amd64 go build -ldflags="-s -w" -o $(BINARY)-linux-amd64 ./cmd/buggregator
GOOS=linux GOARCH=arm64 go build -ldflags="-s -w" -o $(BINARY)-linux-arm64 ./cmd/buggregator
GOOS=darwin GOARCH=amd64 go build -ldflags="-s -w" -o $(BINARY)-darwin-amd64 ./cmd/buggregator
GOOS=darwin GOARCH=arm64 go build -ldflags="-s -w" -o $(BINARY)-darwin-arm64 ./cmd/buggregator
GOOS=windows GOARCH=amd64 go build -ldflags="-s -w" -o $(BINARY)-windows-amd64.exe ./cmd/buggregator
GOOS=linux GOARCH=amd64 go build -ldflags="$(LDFLAGS)" -o $(BINARY)-linux-amd64 ./cmd/buggregator
GOOS=linux GOARCH=arm64 go build -ldflags="$(LDFLAGS)" -o $(BINARY)-linux-arm64 ./cmd/buggregator
GOOS=darwin GOARCH=amd64 go build -ldflags="$(LDFLAGS)" -o $(BINARY)-darwin-amd64 ./cmd/buggregator
GOOS=darwin GOARCH=arm64 go build -ldflags="$(LDFLAGS)" -o $(BINARY)-darwin-arm64 ./cmd/buggregator
GOOS=windows GOARCH=amd64 go build -ldflags="$(LDFLAGS)" -o $(BINARY)-windows-amd64.exe ./cmd/buggregator
@echo "Release binaries built."

run: build
Expand Down
4 changes: 4 additions & 0 deletions cmd/buggregator/main.go
Original file line number Diff line number Diff line change
Expand Up @@ -24,6 +24,9 @@ import (
"github.com/buggregator/go-buggregator/modules/webhooks"
)

// version is set at build time via -ldflags "-X main.version=...".
var version = "dev"

func main() {
// MCP proxy subcommand: "buggregator mcp" bridges stdio to the running instance.
if len(os.Args) > 1 && os.Args[1] == "mcp" {
Expand All @@ -41,6 +44,7 @@ func main() {
slog.SetDefault(slog.New(slog.NewTextHandler(os.Stdout, &slog.HandlerOptions{Level: slog.LevelInfo})))

cfg := app.LoadConfig()
cfg.Version = version

db, err := storage.Open(cfg.DatabaseDSN)
if err != nil {
Expand Down
2 changes: 1 addition & 1 deletion internal/app/config.go
Original file line number Diff line number Diff line change
Expand Up @@ -160,7 +160,7 @@ func LoadConfig() Config {
var configFile string
flag.StringVar(&configFile, "config", "", "Path to config file (buggregator.yaml)")

cfg := Config{Version: "1.0.0"}
cfg := Config{}

flag.StringVar(&cfg.Server.Addr, "http-addr", "", "HTTP listen address")
flag.StringVar(&cfg.Database.DSN, "db", "", "SQLite DSN")
Expand Down
Loading