Files
inventory-flo-debezium-nats/Taskfile.yml
T
2026-08-11 20:42:44 +01:00

169 lines
5.2 KiB
YAML

version: '3'
vars:
DATABASE_URL: postgres://postgres:postgres@localhost:5453/postgres?sslmode=disable
NATS_URL: nats://localhost:4222
NATS_SUBJECT: postgres.public.inventory
APP_NAME: inventory-cdc-demo
APP_SHARE: '{{.HOME}}/.local/share/live-inventory-cdc-demo'
APP_BIN: '{{.HOME}}/.local/bin/inventory-cdc-demo'
QUADLET_DIR: '{{.HOME}}/.config/containers/systemd'
USER_UNIT_DIR: '{{.HOME}}/.config/systemd/user'
tasks:
default:
desc: list available tasks
cmds:
- go tool task --list
run:
desc: show the common development and production commands
cmds:
- echo "Development - go tool task infra, then go tool task backend"
- echo "Production - go tool task prod-install, then go tool task prod-start"
- echo "Open - http://localhost:8080"
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: "{{.NATS_SUBJECT}}"
cmds:
- go run ./cmd/server
up:
desc: development - alias for task infra
cmds:
- go tool task infra
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
build:
desc: build the native Go backend binary
env:
CGO_ENABLED: "0"
cmds:
- go build -o bin/{{.APP_NAME}} ./cmd/server
binary:
desc: run the built backend binary
env:
DATABASE_URL: "{{.DATABASE_URL}}"
NATS_URL: "{{.NATS_URL}}"
NATS_SUBJECT: "{{.NATS_SUBJECT}}"
cmds:
- ./bin/{{.APP_NAME}}
fmt:
desc: format Go files
cmds:
- go fmt ./...
vet:
desc: vet Go files
cmds:
- go vet ./...
test:
desc: run tests
cmds:
- go test ./...
check:
desc: run formatting, vet, and tests
cmds:
- go tool task fmt
- go tool task vet
- go tool task test
prod-install:
desc: production - install user-level quadlets and Go backend service
env:
CGO_ENABLED: "0"
cmds:
- go build -o bin/{{.APP_NAME}} ./cmd/server
- mkdir -p "{{.QUADLET_DIR}}" "{{.USER_UNIT_DIR}}" "{{.HOME}}/.local/bin" "{{.APP_SHARE}}"
- cp bin/{{.APP_NAME}} "{{.APP_BIN}}"
- cp -R postgres scripts "{{.APP_SHARE}}/"
- cp application.prod.properties "{{.APP_SHARE}}/application.properties"
- cp linux-files/dot_config/containers/systemd/cdc* "{{.QUADLET_DIR}}/"
- cp linux-files/dot_config/systemd/user/cdc-inventory.service "{{.USER_UNIT_DIR}}/"
- systemctl --user daemon-reload
- echo "Installed production units. Run go tool task prod-start, then open http://localhost:8080"
prod-infra:
desc: production - start quadlet-managed Postgres, NATS, and Debezium
cmds:
- systemctl --user start cdc-postgres.service cdc-nats.service cdc-debezium.service
prod-backend:
desc: production - start the Go backend user service
cmds:
- systemctl --user start cdc-inventory.service
prod-start:
desc: production - start quadlet infrastructure and Go backend
cmds:
- systemctl --user start cdc-postgres.service cdc-nats.service cdc-debezium.service cdc-inventory.service
prod-restart:
desc: production - restart the full demo
cmds:
- systemctl --user restart cdc-postgres.service cdc-nats.service cdc-debezium.service cdc-inventory.service
prod-status:
desc: production - show user service status
cmds:
- systemctl --user status cdc-postgres.service cdc-nats.service cdc-debezium.service cdc-inventory.service --no-pager
prod-logs:
desc: production - follow logs for demo user services
cmds:
- journalctl --user -fu cdc-postgres.service -fu cdc-nats.service -fu cdc-debezium.service -fu cdc-inventory.service
prod-down:
desc: production - stop all user services
cmds:
- systemctl --user stop cdc-inventory.service cdc-debezium.service cdc-nats.service cdc-postgres.service
prod-enable:
desc: production - enable services at user login
cmds:
- systemctl --user enable cdc-postgres.service cdc-nats.service cdc-debezium.service cdc-inventory.service
prod-disable:
desc: production - disable services at user login
cmds:
- systemctl --user disable cdc-inventory.service cdc-debezium.service cdc-nats.service cdc-postgres.service
prod-seed:
desc: production - generate a fresh burst of inventory CDC events
cmds:
- systemctl --user start cdc-seed.service
- journalctl --user -u cdc-seed.service -n 80 --no-pager
prod-inspect:
desc: production - inspect Debezium messages in NATS JetStream
cmds:
- systemctl --user start cdc-inspect.service
- journalctl --user -u cdc-inspect.service -n 120 --no-pager