91 lines
4.3 KiB
YAML
91 lines
4.3 KiB
YAML
version: '3'
|
|
|
|
vars:
|
|
REMOTE_MACHINE: bl@flo-homeserver
|
|
BINARY_DIR: ./bin
|
|
APP_NAME: inventory-cdc-demo
|
|
BINARY: "{{.BINARY_DIR}}/{{.APP_NAME}}"
|
|
DATABASE_URL: postgres://postgres:postgres@localhost:5453/postgres?sslmode=disable
|
|
NATS_URL: nats://localhost:4222
|
|
NATS_SUBJECT: postgres.public.inventory
|
|
|
|
tasks:
|
|
|
|
# ── Build ──────────────────────────────────────────────────────────────────
|
|
|
|
build:
|
|
desc: vet, fmt, then build binary
|
|
deps: [vet, fmt]
|
|
cmds:
|
|
- CGO_ENABLED=0 GOOS=linux GOARCH=amd64 go build -o {{.BINARY}} ./cmd/server
|
|
|
|
# ── Deploy ─────────────────────────────────────────────────────────────────
|
|
|
|
deploy:
|
|
desc: build, stage files, and deploy to remote server (backend only)
|
|
deps: [build]
|
|
cmds:
|
|
- ssh {{.REMOTE_MACHINE}} "rm -rf /tmp/inventory-flo-deploy && mkdir -p /tmp/inventory-flo-deploy"
|
|
- rsync -avz --delete {{.BINARY}} ./application.prod.properties ./postgres ./scripts {{.REMOTE_MACHINE}}:/tmp/inventory-flo-deploy/
|
|
- ssh {{.REMOTE_MACHINE}} "mkdir -p ~/.local/bin ~/.local/share/live-inventory-cdc-demo && rsync -a --delete /tmp/inventory-flo-deploy/{{.APP_NAME}} ~/.local/bin/ && rsync -a --delete --exclude='offsets.dat' /tmp/inventory-flo-deploy/{application.prod.properties,postgres,scripts} ~/.local/share/live-inventory-cdc-demo/ && systemctl --user restart cdc-inventory.service"
|
|
- ssh {{.REMOTE_MACHINE}} "rm -rf /tmp/inventory-flo-deploy"
|
|
|
|
deploy-infra:
|
|
desc: build, stage files, and deploy quadlet units + full restart
|
|
deps: [build]
|
|
cmds:
|
|
- ssh {{.REMOTE_MACHINE}} "rm -rf /tmp/inventory-flo-deploy && mkdir -p /tmp/inventory-flo-deploy"
|
|
- rsync -avz --delete {{.BINARY}} ./application.prod.properties ./postgres ./scripts ./linux-files {{.REMOTE_MACHINE}}:/tmp/inventory-flo-deploy/
|
|
- ssh {{.REMOTE_MACHINE}} "mkdir -p ~/.local/bin ~/.local/share/live-inventory-cdc-demo ~/.config/containers/systemd ~/.config/systemd/user && rsync -a --delete /tmp/inventory-flo-deploy/{{.APP_NAME}} ~/.local/bin/ && rsync -a --delete --exclude='offsets.dat' /tmp/inventory-flo-deploy/{application.prod.properties,postgres,scripts} ~/.local/share/live-inventory-cdc-demo/ && rsync -a /tmp/inventory-flo-deploy/linux-files/dot_config/containers/systemd/cdc* ~/.config/containers/systemd/ && rsync -a /tmp/inventory-flo-deploy/linux-files/dot_config/systemd/user/cdc-inventory.service ~/.config/systemd/user/ && systemctl --user daemon-reload && systemctl --user restart cdc-postgres.service cdc-nats.service cdc-debezium.service cdc-inventory.service"
|
|
- ssh {{.REMOTE_MACHINE}} "rm -rf /tmp/inventory-flo-deploy"
|
|
|
|
# ── Development ────────────────────────────────────────────────────────────
|
|
|
|
infra:
|
|
desc: development - start Postgres, NATS, and Debezium with compose
|
|
cmds:
|
|
- podman compose -f compose.yml up
|
|
|
|
backend:
|
|
desc: development - run native Go backend against compose infrastructure
|
|
env:
|
|
DATABASE_URL: "{{.DATABASE_URL}}"
|
|
NATS_URL: "{{.NATS_URL}}"
|
|
NATS_SUBJECT: "{{.NATSSUBJECT}}"
|
|
cmds:
|
|
- go run ./cmd/server
|
|
|
|
up:
|
|
desc: development - alias for task infra
|
|
cmds:
|
|
- podman compose -f compose.yml up
|
|
|
|
down:
|
|
desc: development - stop compose infrastructure
|
|
cmds:
|
|
- podman compose -f compose.yml down
|
|
|
|
seed:
|
|
desc: development - generate a fresh burst of inventory CDC events
|
|
cmds:
|
|
- podman compose -f compose.yml --profile tools run --rm seed
|
|
|
|
inspect:
|
|
desc: development - inspect Debezium messages in NATS JetStream
|
|
cmds:
|
|
- podman compose -f compose.yml --profile tools run --rm nats-cli /scripts/inspect.sh
|
|
|
|
# ── Helpers ────────────────────────────────────────────────────────────────
|
|
|
|
vet:
|
|
cmds:
|
|
- go vet ./...
|
|
|
|
fmt:
|
|
cmds:
|
|
- go fmt ./...
|
|
|
|
clean:
|
|
cmds:
|
|
- rm -f {{.BINARY}}
|