2024-07-23 11:29:12 +08:00
|
|
|
version: '3'
|
2025-11-15 16:30:29 +08:00
|
|
|
|
2024-07-23 11:29:12 +08:00
|
|
|
vars:
|
2025-11-15 16:30:29 +08:00
|
|
|
build_dir: bin
|
|
|
|
|
binary: '{{.build_dir}}/receiver'
|
|
|
|
|
cmd: ./cmd/main
|
2024-07-23 11:29:12 +08:00
|
|
|
|
|
|
|
|
tasks:
|
|
|
|
|
all:
|
|
|
|
|
desc: Default target
|
|
|
|
|
cmds:
|
|
|
|
|
- task: build
|
|
|
|
|
|
|
|
|
|
build:
|
2025-11-15 16:30:29 +08:00
|
|
|
desc: Build the receiver binary
|
2024-07-23 11:29:12 +08:00
|
|
|
cmds:
|
2025-11-15 16:30:29 +08:00
|
|
|
- mkdir -p {{.build_dir}}
|
2024-07-23 11:29:12 +08:00
|
|
|
- echo "Building receiver..."
|
2025-11-15 16:30:29 +08:00
|
|
|
- go build -o {{.binary}} {{.cmd}}
|
2024-07-23 11:29:12 +08:00
|
|
|
|
|
|
|
|
run:
|
2025-11-15 16:30:29 +08:00
|
|
|
desc: Alias for run-dev
|
2024-07-23 11:29:12 +08:00
|
|
|
cmds:
|
|
|
|
|
- task: run-dev
|
|
|
|
|
|
2025-11-15 16:30:29 +08:00
|
|
|
run-dev:
|
2025-11-17 16:25:23 +08:00
|
|
|
desc: Run the receiver in development mode (uses core NATS mode by default)
|
2025-11-15 16:30:29 +08:00
|
|
|
deps:
|
|
|
|
|
- build
|
|
|
|
|
cmds:
|
2025-11-17 16:25:23 +08:00
|
|
|
- |
|
|
|
|
|
echo "Running receiver in development mode (NATS mode: core by default)..."
|
2025-11-15 16:30:29 +08:00
|
|
|
- GO_ENV=dev {{.binary}} listen
|
|
|
|
|
|
2024-07-23 11:29:12 +08:00
|
|
|
run-prod:
|
2025-11-17 16:25:23 +08:00
|
|
|
desc: Run the receiver in production mode (requires config.prod.toml and JetStream mode)
|
2025-11-15 16:30:29 +08:00
|
|
|
deps:
|
|
|
|
|
- build
|
2024-07-23 11:29:12 +08:00
|
|
|
cmds:
|
2025-11-17 16:25:23 +08:00
|
|
|
- |
|
|
|
|
|
echo "Running receiver in production mode..."
|
|
|
|
|
echo "Note: Production mode requires:"
|
|
|
|
|
echo " - configs/config.prod.toml file (or CAATSM_* environment variables)"
|
|
|
|
|
echo " - NATS JetStream enabled (nats.mode = jetstream)"
|
|
|
|
|
echo " - Stream and Consumer must exist (not auto-created in prod)"
|
|
|
|
|
echo " - PostgreSQL connection configured"
|
2025-11-15 16:30:29 +08:00
|
|
|
- GO_ENV=prod {{.binary}} listen
|
2024-07-23 11:29:12 +08:00
|
|
|
|
|
|
|
|
run-test:
|
|
|
|
|
desc: Run the receiver in test mode
|
2025-11-15 16:30:29 +08:00
|
|
|
deps:
|
|
|
|
|
- build
|
2024-07-23 11:29:12 +08:00
|
|
|
cmds:
|
|
|
|
|
- echo "Running receiver in test mode..."
|
2025-11-15 16:30:29 +08:00
|
|
|
- GO_ENV=test {{.binary}} listen
|
2024-07-31 11:05:23 +08:00
|
|
|
|
2025-11-15 16:30:29 +08:00
|
|
|
run-local:
|
2025-11-17 16:25:23 +08:00
|
|
|
desc: Run receiver via go run (default GO_ENV=dev, uses core NATS mode by default)
|
2024-07-31 11:05:23 +08:00
|
|
|
cmds:
|
2025-11-15 16:30:29 +08:00
|
|
|
- |
|
2025-11-17 16:25:23 +08:00
|
|
|
echo "Running receiver via go run (GO_ENV=${GO_ENV:-dev}, NATS mode: core by default in dev)..."
|
|
|
|
|
- |
|
2025-11-15 16:30:29 +08:00
|
|
|
GO_ENV=${GO_ENV:-dev} go run {{.cmd}} listen
|
2024-07-23 11:29:12 +08:00
|
|
|
|
|
|
|
|
test:
|
2025-11-16 10:08:26 +08:00
|
|
|
desc: Run Ginkgo unit test suites (verbose)
|
2024-07-23 11:29:12 +08:00
|
|
|
cmds:
|
2025-11-16 09:58:49 +08:00
|
|
|
- |
|
|
|
|
|
if ! command -v ginkgo >/dev/null; then
|
|
|
|
|
echo "Install ginkgo (go install github.com/onsi/ginkgo/v2/ginkgo@latest)"
|
|
|
|
|
exit 1
|
|
|
|
|
fi
|
2025-11-16 10:08:26 +08:00
|
|
|
- echo "Running Ginkgo unit test suites (verbose)..."
|
2025-11-16 10:18:40 +08:00
|
|
|
- ginkgo -r -v ./cmd ./internal
|
2025-11-15 16:30:29 +08:00
|
|
|
|
|
|
|
|
test-int:
|
|
|
|
|
desc: Run integration tests (requires Docker)
|
|
|
|
|
cmds:
|
|
|
|
|
- |
|
|
|
|
|
echo "Running integration tests (Docker required)..."
|
|
|
|
|
GO_ENV=${GO_ENV:-test} go test -tags=integration ./test/integration/...
|
|
|
|
|
|
|
|
|
|
test-ginkgo:
|
2025-11-16 09:58:49 +08:00
|
|
|
desc: Alias for Ginkgo unit test suites
|
2025-11-15 16:30:29 +08:00
|
|
|
cmds:
|
2025-11-16 09:58:49 +08:00
|
|
|
- task: test
|
|
|
|
|
|
|
|
|
|
test-all:
|
|
|
|
|
desc: Run unit tests (Ginkgo) and integration tests
|
|
|
|
|
cmds:
|
|
|
|
|
- task: test
|
|
|
|
|
- task: test-int
|
2024-07-23 11:29:12 +08:00
|
|
|
|
2024-08-07 20:05:43 +08:00
|
|
|
coverage:
|
2025-11-15 16:30:29 +08:00
|
|
|
desc: Generate coverage report (profile + HTML)
|
2024-08-07 20:05:43 +08:00
|
|
|
cmds:
|
2025-11-15 16:30:29 +08:00
|
|
|
- mkdir -p coverage
|
2024-08-07 20:05:43 +08:00
|
|
|
- echo "Generating test coverage report..."
|
2025-11-15 16:30:29 +08:00
|
|
|
- go test ./... -coverprofile=coverage/coverage.out
|
|
|
|
|
- go tool cover -html=coverage/coverage.out -o coverage/coverage.html
|
2024-07-23 11:29:12 +08:00
|
|
|
|
|
|
|
|
fmt:
|
2025-11-15 16:30:29 +08:00
|
|
|
desc: Format Go code
|
2024-07-23 11:29:12 +08:00
|
|
|
cmds:
|
|
|
|
|
- echo "Formatting code..."
|
|
|
|
|
- go fmt ./...
|
|
|
|
|
|
2025-11-15 16:30:29 +08:00
|
|
|
lint:
|
|
|
|
|
desc: Run golangci-lint
|
2024-07-23 11:29:12 +08:00
|
|
|
cmds:
|
2025-11-15 16:30:29 +08:00
|
|
|
- |
|
|
|
|
|
if ! command -v golangci-lint >/dev/null; then
|
|
|
|
|
echo "Install golangci-lint: https://golangci-lint.run/"
|
|
|
|
|
exit 1
|
|
|
|
|
fi
|
|
|
|
|
- echo "Linting code..."
|
|
|
|
|
- golangci-lint run ./...
|
|
|
|
|
|
2025-11-17 11:47:23 +08:00
|
|
|
wire:
|
|
|
|
|
desc: Generate wire dependency injection code
|
|
|
|
|
cmds:
|
|
|
|
|
- |
|
|
|
|
|
if ! command -v wire >/dev/null; then
|
|
|
|
|
echo "Install wire: go install github.com/google/wire/cmd/wire@latest"
|
|
|
|
|
exit 1
|
|
|
|
|
fi
|
|
|
|
|
- echo "Generating wire code..."
|
|
|
|
|
- wire ./pkg/di
|
|
|
|
|
|
|
|
|
|
generate:
|
|
|
|
|
desc: Generate all code (wire, etc.)
|
|
|
|
|
cmds:
|
|
|
|
|
- task: wire
|
|
|
|
|
- echo "Code generation complete"
|
|
|
|
|
|
2025-11-15 16:30:29 +08:00
|
|
|
deps:
|
|
|
|
|
desc: Sync go.mod / go.sum
|
|
|
|
|
cmds:
|
|
|
|
|
- echo "Tidying go modules..."
|
2024-07-23 11:29:12 +08:00
|
|
|
- go mod tidy
|
|
|
|
|
|
2025-11-15 16:30:29 +08:00
|
|
|
upgrade:
|
|
|
|
|
desc: Upgrade Go dependencies
|
2024-07-23 11:29:12 +08:00
|
|
|
cmds:
|
2025-11-15 16:30:29 +08:00
|
|
|
- echo "Upgrading go modules..."
|
|
|
|
|
- go get -u -v ./...
|
|
|
|
|
- go mod tidy
|
2024-07-23 11:29:12 +08:00
|
|
|
|
2025-11-15 16:30:29 +08:00
|
|
|
install-test:
|
|
|
|
|
desc: Install ginkgo/gomega tooling
|
2025-11-15 12:08:26 +08:00
|
|
|
cmds:
|
2025-11-15 16:30:29 +08:00
|
|
|
- echo "Installing ginkgo tooling..."
|
|
|
|
|
- go install github.com/onsi/ginkgo/v2/ginkgo@latest
|
|
|
|
|
- go get github.com/onsi/gomega/...
|
|
|
|
|
|
|
|
|
|
clean:
|
|
|
|
|
desc: Clean build + coverage artifacts
|
|
|
|
|
cmds:
|
|
|
|
|
- echo "Cleaning build artifacts..."
|
|
|
|
|
- rm -rf {{.build_dir}} coverage
|
2025-11-15 12:08:26 +08:00
|
|
|
|
2025-11-15 09:46:29 +08:00
|
|
|
up:
|
2025-11-15 12:08:26 +08:00
|
|
|
desc: Start TimescaleDB + NATS dev stack (docker compose)
|
2025-11-15 09:46:29 +08:00
|
|
|
cmds:
|
|
|
|
|
- echo "Starting dev infrastructure..."
|
2025-11-15 15:27:53 +08:00
|
|
|
- docker compose -f docker-compose.dev.yml up -d postgres nats nats-box nats-exporter
|
2025-11-15 14:24:11 +08:00
|
|
|
- docker compose -f docker-compose.dev.yml up -d otel-collector jaeger prometheus grafana
|
2025-11-15 09:46:29 +08:00
|
|
|
|
|
|
|
|
down:
|
|
|
|
|
desc: Stop dev compose stack and remove containers
|
|
|
|
|
cmds:
|
|
|
|
|
- echo "Stopping dev infrastructure..."
|
2025-11-15 14:24:11 +08:00
|
|
|
- docker compose -f docker-compose.dev.yml down -v
|
2025-11-15 09:46:29 +08:00
|
|
|
|
2025-11-16 11:38:49 +08:00
|
|
|
dev-run-compose:
|
|
|
|
|
desc: Run receiver inside docker-compose dev stack
|
|
|
|
|
cmds:
|
|
|
|
|
- echo "Starting dev stack including caatsm-receiver..."
|
|
|
|
|
- docker compose -f docker-compose.dev.yml up -d postgres nats nats-box nats-exporter
|
|
|
|
|
- docker compose -f docker-compose.dev.yml up -d otel-collector jaeger prometheus grafana caatsm-receiver
|
|
|
|
|
|
2025-11-15 09:46:29 +08:00
|
|
|
dev-run:
|
|
|
|
|
desc: Run receiver locally against dev stack
|
2025-11-15 14:42:33 +08:00
|
|
|
deps:
|
|
|
|
|
- up
|
2025-11-15 12:08:26 +08:00
|
|
|
env:
|
|
|
|
|
CAATSM_NATS_URL: nats://localhost:4222
|
2025-11-17 16:25:23 +08:00
|
|
|
CAATSM_NATS_MODE: core
|
2025-11-15 12:08:26 +08:00
|
|
|
CAATSM_POSTGRES_URL: postgres://caatsm:caatsm@localhost:5432/aviation?sslmode=disable
|
|
|
|
|
CAATSM_TELEMETRY_ENABLED: "true"
|
|
|
|
|
CAATSM_TELEMETRY_ENDPOINT: localhost:4318
|
|
|
|
|
CAATSM_TELEMETRY_INSECURE: "true"
|
2025-11-16 11:38:49 +08:00
|
|
|
CAATSM_MONITORING_ADDR: 0.0.0.0:2112
|
|
|
|
|
CAATSM_MONITORING_ENABLE_METRICS: "true"
|
|
|
|
|
CAATSM_MONITORING_ENABLE_HEALTH: "true"
|
2025-11-15 12:08:26 +08:00
|
|
|
GO_ENV: dev
|
2025-11-15 09:46:29 +08:00
|
|
|
cmds:
|
2025-11-15 12:08:26 +08:00
|
|
|
- |
|
2025-11-15 14:42:33 +08:00
|
|
|
echo "Ensuring observability stack is healthy (Jaeger @ http://localhost:16686)"
|
|
|
|
|
docker compose -f docker-compose.dev.yml ps jaeger otel-collector >/dev/null
|
2025-11-15 12:08:26 +08:00
|
|
|
echo "Running receiver with telemetry (mode=${CAATSM_NATS_MODE:-core})"
|
|
|
|
|
CAATSM_NATS_MODE=${CAATSM_NATS_MODE:-core} \
|
2025-11-15 09:46:29 +08:00
|
|
|
go run ./cmd/main listen
|
|
|
|
|
|
2025-11-15 12:08:26 +08:00
|
|
|
seed:
|
2025-11-17 16:25:23 +08:00
|
|
|
desc: Generate sample telegrams (publishes to Core NATS by default, compatible with dev mode)
|
2025-11-15 12:08:26 +08:00
|
|
|
cmds:
|
|
|
|
|
- |
|
|
|
|
|
GO_ENV=dev \
|
|
|
|
|
NATS_URL=${CAATSM_NATS_URL:-nats://localhost:4222} \
|
|
|
|
|
SUBJECT=${CAATSM_NATS_SUBJECT:-telegram.serial} \
|
2025-11-16 11:38:49 +08:00
|
|
|
COUNT={{.COUNT | default "10"}} \
|
|
|
|
|
CATEGORY={{.CATEGORY | default "mixed"}} \
|
|
|
|
|
STATUS={{.STATUS | default "random"}} \
|
2025-11-15 12:08:26 +08:00
|
|
|
bash -c '
|
|
|
|
|
set -euo pipefail
|
|
|
|
|
cmd=(go run ./cmd/seed-telegrams)
|
|
|
|
|
if [ -n "$NATS_URL" ]; then
|
|
|
|
|
cmd+=("--nats-url" "$NATS_URL")
|
|
|
|
|
fi
|
|
|
|
|
cmd+=(
|
|
|
|
|
--subject "$SUBJECT"
|
|
|
|
|
--count "$COUNT"
|
|
|
|
|
--category "$CATEGORY"
|
|
|
|
|
--status "$STATUS"
|
|
|
|
|
)
|
|
|
|
|
exec "${cmd[@]}"
|
|
|
|
|
'
|
2025-11-15 16:30:29 +08:00
|
|
|
|
2024-07-23 11:29:12 +08:00
|
|
|
help:
|
|
|
|
|
desc: Show this help message
|
|
|
|
|
cmds:
|
2025-11-15 16:30:29 +08:00
|
|
|
- |
|
|
|
|
|
printf "Task targets:\n"
|
|
|
|
|
task --list
|