100 lines
3.6 KiB
YAML
100 lines
3.6 KiB
YAML
version: '3'
|
|
|
|
vars:
|
|
DEV_REPO: us-west2-docker.pkg.dev/flowy-dev-440017/deployments
|
|
PROD_REPO: us-west2-docker.pkg.dev/flowy-prod-440017/deployments
|
|
|
|
tasks:
|
|
generate:
|
|
desc: Generate protobuf code and run go generate
|
|
cmds:
|
|
- task: genproto
|
|
- go generate ./...
|
|
|
|
format:
|
|
desc: Format go files
|
|
cmds:
|
|
- go fmt ./...
|
|
|
|
genproto:
|
|
desc: Generate Go code from .proto files via docker
|
|
vars:
|
|
PROTO_DIR: '{{.PROTO_DIR | default "./protocol"}}'
|
|
OUT_DIR: '{{.OUT_DIR | default "./genproto"}}'
|
|
cmds:
|
|
- 'echo "Proto directory: {{.PROTO_DIR}}"'
|
|
- 'echo "Output directory: {{.OUT_DIR}}"'
|
|
- rm -rf {{.OUT_DIR}}
|
|
- mkdir -p {{.OUT_DIR}}
|
|
- |
|
|
docker run --rm \
|
|
-v "{{.PROTO_DIR}}/":/protocol \
|
|
-v "{{.OUT_DIR}}":/genproto \
|
|
--workdir / \
|
|
talksik/golang-protoc:latest \
|
|
sh -c 'protoc --proto_path=./protocol \
|
|
--go_out=./genproto \
|
|
--go_opt=paths=source_relative \
|
|
--go-grpc_out=./genproto \
|
|
--go-grpc_opt=paths=source_relative \
|
|
$(find ./protocol -name "*.proto")'
|
|
|
|
test:
|
|
desc: Run tests with pretty output via gotestfmt
|
|
cmds:
|
|
- go test -json ./... | docker run -i ghcr.io/gotesttools/gotestfmt:latest
|
|
|
|
create-migration:
|
|
desc: 'Create new migration (usage: task create-migration ARG=create_users_table)'
|
|
cmds:
|
|
- 'echo "Creating migration with name {{.ARG}}"'
|
|
- docker run -v ./migrations:/migrations --network host migrate/migrate create -ext sql -seq -dir /migrations {{.ARG}}
|
|
|
|
dev-database:
|
|
desc: Open psql shell against the dev database
|
|
interactive: true
|
|
cmds:
|
|
- |
|
|
kubectl run postgres-client \
|
|
--rm -it --image=postgres:latest \
|
|
--env="LLINK_POSTGRES_CONNECTION_URL=$(kubectl get secret shared-secrets -o jsonpath='{.data.LLINK_POSTGRES_CONNECTION_URL}' --context dev | base64 --decode)" \
|
|
--context dev \
|
|
--command -- /bin/bash -c "psql \$LLINK_POSTGRES_CONNECTION_URL"
|
|
|
|
prod-database:
|
|
desc: Open psql shell against the prod database
|
|
interactive: true
|
|
cmds:
|
|
- |
|
|
kubectl run postgres-client \
|
|
--rm -it --image=postgres:latest \
|
|
--env="LLINK_POSTGRES_CONNECTION_URL=$(kubectl get secret shared-secrets -o jsonpath='{.data.LLINK_POSTGRES_CONNECTION_URL}' --context prod | base64 --decode)" \
|
|
--context prod \
|
|
--command -- /bin/bash -c "psql \$LLINK_POSTGRES_CONNECTION_URL"
|
|
|
|
migrate-dev:
|
|
desc: Run migrations against dev cluster
|
|
cmds:
|
|
- kubectl delete job migrations --ignore-not-found --context=dev
|
|
- SKAFFOLD_DEFAULT_REPO={{.DEV_REPO}} skaffold run -p migrations --kube-context dev --tail
|
|
|
|
migrate-prod:
|
|
desc: Run migrations against prod cluster
|
|
cmds:
|
|
- kubectl delete job migrations --ignore-not-found --context=prod
|
|
- SKAFFOLD_DEFAULT_REPO={{.PROD_REPO}} skaffold run -p migrations --kube-context prod --tail
|
|
|
|
deploy-dev:
|
|
desc: 'Deploy to dev (optionally MODULE=orion to deploy a single service)'
|
|
cmds:
|
|
- task: generate
|
|
- task: test
|
|
- SKAFFOLD_DEFAULT_REPO={{.DEV_REPO}} skaffold run -p dev {{if .MODULE}}-m {{.MODULE}}{{end}} --kube-context dev --port-forward --tail
|
|
|
|
deploy-prod:
|
|
desc: 'Deploy to prod (optionally MODULE=orion to deploy a single service)'
|
|
cmds:
|
|
- task: generate
|
|
- task: test
|
|
- SKAFFOLD_DEFAULT_REPO={{.PROD_REPO}} skaffold run -p prod {{if .MODULE}}-m {{.MODULE}}{{end}} --kube-context prod --port-forward --tail
|