13 Commits

Author SHA1 Message Date
igodwin 3e84b9c3ad build(notifier): support multi-arch image builds
Build on the native host arch (--platform=$BUILDPLATFORM) and cross-compile
the static binary per target via buildx-provided TARGETOS/TARGETARCH, so
`make docker-build` with REGISTRY set produces linux/amd64 + linux/arm64
images without emulating the Go toolchain under QEMU. Also correct the CMD
comment to the real env var (NOTIFIER_SERVER_MODE).

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-29 14:19:56 -07:00
igodwin fa813c011c build: route docker-build through buildx for multi-arch + push
Setting REGISTRY now switches `make docker-build` from a single-arch
local build to a multi-arch (linux/amd64+linux/arm64) buildx build
that pushes $REGISTRY/$IMAGE:$VERSION and :latest. The redundant
docker-buildx target is removed. Bump the builder base image to
golang:1.25-alpine so protoc-gen-go-grpc@latest installs cleanly.

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2026-05-12 00:07:59 -07:00
egodwin c04db89633 Add multi-architecture Docker build support via buildx
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-28 15:27:48 -07:00
igodwin 298c960808 Fix 8 high-severity audit findings across security, Go, API, and container domains
- Use typed context key for auth context to prevent collisions (auth.go)
- Eliminate nested locking in CheckRateLimit to prevent potential deadlock (auth.go)
- Add 1MB request body size limit middleware to prevent DoS (router.go)
- Return proper gRPC status codes instead of nil errors on failures (handler.go)
- Use key name instead of raw API key in admin URL paths to prevent secret leakage (keys.go, router.go, keystore_db.go, keystore_hybrid.go)
- Enforce RBAC authorization in service Send/SendBatch for both REST and gRPC (service.go)
- Pin runtime Docker image to alpine:3.21 for reproducible builds (Dockerfile)
- Enable readOnlyRootFilesystem with /tmp emptyDir in k8s deployment (deployment.yaml)

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-26 20:17:51 -07:00
igodwin 1cbe58888c Implement production and development build targets with binary size optimization
- Add LDFLAGS_BASE for version info only, LDFLAGS for production (with -s -w optimization), and LDFLAGS_DEV for development
- Create 'build' target (production) that strips symbols, reducing binary size by ~30% (56MB -> 39MB)
- Create 'build-dev' target (development) that keeps debug symbols for profiling
- Update 'docker-build' to pass BUILD_FLAGS="-s -w" for optimized production images
- Create 'docker-build-dev' target that builds development images with notifier:latest-dev tag and no optimization
- Update Dockerfile to accept and use BUILD_FLAGS argument in build stage
- All targets now clearly indicate their optimization level in output messages
2025-10-31 00:06:42 -07:00
igodwin 8cf369cc38 Fix Docker build by adding protobuf code generation step
The Docker build was failing because protobuf-generated code wasn't
  available during compilation. Changes made:
  - Added protoc and protobuf-dev packages to build dependencies
  - Installed protoc-gen-go and protoc-gen-go-grpc plugins
  - Added make proto-gen step to generate pb files before build

  🤖 Generated with [Claude Code](https://claude.com/claude-code)

  Co-Authored-By: Claude <noreply@anthropic.com>
2025-10-22 23:46:47 -07:00
igodwin 8229944149 Change logging and implement gRPC 2025-10-18 23:12:25 -07:00
igodwin aed1a3b6a1 Update go version in docker build stage to 1.24 2025-10-17 20:38:27 -07:00
igodwin c15f1a50ca Update config naming and doc 2025-10-17 20:36:29 -07:00
igodwin ba3fad9431 Tidying up 2025-10-16 22:10:47 -07:00
igodwin 46b6008981 Fix build command in Dockerfile 2025-10-16 21:45:17 -07:00
igodwin 9087a710e5 Basic impl added 2025-10-16 21:22:51 -07:00
igodwin 46d3b66feb Add basic project layout 2024-11-01 19:36:58 -07:00