162 lines
4.2 KiB
YAML
162 lines
4.2 KiB
YAML
version: "3"
|
|
|
|
env:
|
|
COMPOSE_PROJECT_NAME: maplepress
|
|
|
|
# Variables for Docker Compose command detection
|
|
vars:
|
|
DOCKER_COMPOSE_CMD:
|
|
sh: |
|
|
if command -v docker-compose >/dev/null 2>&1; then
|
|
echo "docker-compose"
|
|
elif docker compose version >/dev/null 2>&1; then
|
|
echo "docker compose"
|
|
else
|
|
echo "docker-compose"
|
|
fi
|
|
|
|
tasks:
|
|
# Development workflow (requires infrastructure)
|
|
dev:
|
|
desc: Start app in development mode (requires infrastructure running)
|
|
deps: [dev:check-infra]
|
|
cmds:
|
|
- "{{.DOCKER_COMPOSE_CMD}} -f docker-compose.dev.yml up --build"
|
|
- echo "Press Ctrl+C to stop"
|
|
|
|
dev:down:
|
|
desc: Stop development app
|
|
cmds:
|
|
- "{{.DOCKER_COMPOSE_CMD}} -f docker-compose.dev.yml down"
|
|
|
|
dev:restart:
|
|
desc: Quick restart (fast!)
|
|
cmds:
|
|
- "{{.DOCKER_COMPOSE_CMD}} -f docker-compose.dev.yml restart"
|
|
- echo "✅ MaplePress backend restarted"
|
|
|
|
dev:logs:
|
|
desc: View app logs
|
|
cmds:
|
|
- "{{.DOCKER_COMPOSE_CMD}} -f docker-compose.dev.yml logs -f"
|
|
|
|
dev:shell:
|
|
desc: Open shell in running container
|
|
cmds:
|
|
- docker exec -it maplepress-backend-dev sh
|
|
|
|
dev:check-infra:
|
|
desc: Verify infrastructure is running
|
|
silent: true
|
|
cmds:
|
|
- |
|
|
if ! docker network inspect maple-dev >/dev/null 2>&1; then
|
|
echo "❌ Infrastructure not running!"
|
|
echo ""
|
|
echo "Start it with:"
|
|
echo " cd ../infrastructure/development && task dev:start"
|
|
echo ""
|
|
exit 1
|
|
fi
|
|
if ! docker ps | grep -q maple-cassandra-1-dev; then
|
|
echo "❌ Cassandra not running!"
|
|
echo ""
|
|
echo "Start it with:"
|
|
echo " cd ../infrastructure/development && task dev:start"
|
|
echo ""
|
|
exit 1
|
|
fi
|
|
echo "✅ Infrastructure is running"
|
|
|
|
# Database operations
|
|
migrate:up:
|
|
desc: Run all migrations up
|
|
cmds:
|
|
- ./maplepress-backend migrate up
|
|
|
|
migrate:down:
|
|
desc: Run all migrations down
|
|
cmds:
|
|
- ./maplepress-backend migrate down
|
|
|
|
migrate:create:
|
|
desc: Create new migration (usage task migrate:create -- create_users)
|
|
cmds:
|
|
- ./maplepress-backend migrate create {{.CLI_ARGS}}
|
|
|
|
db:clear:
|
|
desc: Clear Cassandra database (drop and recreate keyspace)
|
|
deps: [build]
|
|
cmds:
|
|
- echo "⚠️ Dropping keyspace 'maplepress'..."
|
|
- docker exec maple-cassandra-1-dev cqlsh -e "DROP KEYSPACE IF EXISTS maplepress;"
|
|
- echo "✅ Keyspace dropped"
|
|
- echo "🔄 Running migrations to recreate schema..."
|
|
- ./maplepress-backend migrate up
|
|
- echo "✅ Database cleared and recreated"
|
|
|
|
db:reset:
|
|
desc: Reset database using migrations (down then up)
|
|
deps: [build]
|
|
cmds:
|
|
- echo "🔄 Running migrations down..."
|
|
- ./maplepress-backend migrate down
|
|
- echo "🔄 Running migrations up..."
|
|
- ./maplepress-backend migrate up
|
|
- echo "✅ Database reset complete"
|
|
|
|
# Build and test
|
|
build:
|
|
desc: Build the Go binary
|
|
cmds:
|
|
- task: wire
|
|
- go build -o maplepress-backend
|
|
|
|
test:
|
|
desc: Run tests
|
|
cmds:
|
|
- go test ./... -v
|
|
|
|
test:short:
|
|
desc: Run short tests only
|
|
cmds:
|
|
- go test ./... -short
|
|
|
|
lint:
|
|
desc: Run linters
|
|
cmds:
|
|
- task: nilaway
|
|
- go vet ./...
|
|
|
|
nilaway:
|
|
desc: Run nilaway static analyzer
|
|
cmds:
|
|
- nilaway ./...
|
|
|
|
wire:
|
|
desc: Generate Wire dependency injection
|
|
cmds:
|
|
- cd app && wire
|
|
|
|
format:
|
|
desc: Format code
|
|
cmds:
|
|
- go fmt ./...
|
|
|
|
tidy:
|
|
desc: Tidy Go modules
|
|
cmds:
|
|
- go mod tidy
|
|
|
|
clean:
|
|
desc: Clean build artifacts
|
|
cmds:
|
|
- rm -f maplepress-backend
|
|
- rm -f app/wire_gen.go
|
|
|
|
deploy:
|
|
desc: (DevOps only) Command will build the production container of this project and deploy to the private docker container registry.
|
|
cmds:
|
|
- docker build -f Dockerfile --rm -t registry.digitalocean.com/ssp/maplepress_backend:prod --platform linux/amd64 .
|
|
- docker tag registry.digitalocean.com/ssp/maplepress_backend:prod registry.digitalocean.com/ssp/maplepress_backend:prod
|
|
- docker push registry.digitalocean.com/ssp/maplepress_backend:prod
|