Files
inventory-flo-debezium-nats/Taskfile.yml
T

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}}