Two nodes on exch and one on infra-gamma, plain Compose per server, ports on the private addresses only. Nodes unseal through the transit seal on the platform Vault; the transit token reaches only the server process. make prod-images resolves the latest stable Vault release once and pins its digest in ignored .local/prod/images.env, so every node runs the same build. infra/prod/README.md records the layout, the first rollout, node replacement and recovery when the platform Vault is lost (#74).
108 lines
3.4 KiB
Makefile
108 lines
3.4 KiB
Makefile
.PHONY: test
|
|
|
|
test: test-backend test-frontend
|
|
|
|
.PHONY: test-frontend
|
|
|
|
test-frontend:
|
|
cd frontend/app && flutter gen-l10n
|
|
cd frontend/packages/sxchnge_wallet && flutter test
|
|
cd frontend/packages/sxchnge_kyc && flutter test
|
|
cd frontend/packages/sxchnge_analytics && flutter test
|
|
cd frontend/packages/sxchnge_auth && flutter test
|
|
cd frontend/packages/sxchnge_theme && flutter test
|
|
cd frontend/packages/sxchnge_theme/example && flutter test
|
|
cd frontend/app && flutter test
|
|
|
|
.PHONY: test-backend lint-backend run-backend
|
|
|
|
test-backend: generate-notifications
|
|
docker pull mongo:latest
|
|
docker pull nats:latest
|
|
cd backend/shared && go test -race -count=1 ./...
|
|
cd backend/notifications/interface && go test -race -count=1 ./...
|
|
cd backend/notifications && go test -race -count=1 ./...
|
|
cd backend/product && go test -race -count=1 ./...
|
|
|
|
lint-backend: generate-notifications
|
|
cd backend/product && go test ./architecture
|
|
cd backend && test -z "$$(gofmt -l .)"
|
|
cd backend/shared && go vet ./...
|
|
cd backend/notifications/interface && go vet ./...
|
|
cd backend/notifications && go vet ./...
|
|
cd backend/product && go vet ./...
|
|
|
|
run-backend:
|
|
cd backend/product && go run .
|
|
|
|
.PHONY: run-notifications generate-notifications
|
|
run-notifications: generate-notifications
|
|
cd backend/notifications && go run .
|
|
|
|
generate-notifications:
|
|
@command -v protoc >/dev/null
|
|
@tmp=$$(mktemp -d); trap 'rm -rf "$$tmp"' EXIT; \
|
|
GOBIN="$$tmp" go install google.golang.org/protobuf/cmd/protoc-gen-go@v1.36.11 && \
|
|
GOBIN="$$tmp" go install google.golang.org/grpc/cmd/protoc-gen-go-grpc@v1.5.1 && \
|
|
PATH="$$tmp:$$PATH" protoc -I backend/notifications/interface/proto --go_out=backend/notifications/interface --go_opt=module=git.sendico.io/tech/sxchnge/notifications/interface --go-grpc_out=backend/notifications/interface --go-grpc_opt=module=git.sendico.io/tech/sxchnge/notifications/interface backend/notifications/interface/proto/v1/interface.proto
|
|
|
|
.PHONY: package-notifications-interface
|
|
package-notifications-interface: generate-notifications
|
|
mkdir -p dist
|
|
tar -czf dist/notifications-proto-v1.tar.gz -C backend/notifications/interface proto README.md
|
|
tar -czf dist/notifications-go-v1.tar.gz -C backend/notifications/interface go.mod go.sum notifications README.md
|
|
|
|
# Local product stack. Releases are resolved afresh, then pinned by digest.
|
|
COMPOSE = docker compose --project-directory . -f infra/local/compose.yml --env-file .local/dev/images.env
|
|
ifneq ($(wildcard .local/dev/sendico/settings.env),)
|
|
COMPOSE += -f infra/local/sendico/compose.yml
|
|
endif
|
|
.PHONY: build up down logs ps test-dev
|
|
build:
|
|
sh infra/local/tools.sh build
|
|
sh infra/local/tools.sh images
|
|
$(COMPOSE) pull vault mongo
|
|
$(COMPOSE) build --pull
|
|
|
|
up:
|
|
sh infra/local/tools.sh up
|
|
|
|
down:
|
|
$(COMPOSE) down
|
|
|
|
logs:
|
|
$(COMPOSE) logs --tail=100 -f
|
|
|
|
ps:
|
|
$(COMPOSE) ps
|
|
|
|
test-dev:
|
|
sh infra/local/tools.sh test
|
|
sh infra/local/tools.sh verify
|
|
|
|
# Production pins (infra/prod/README.md): resolved once, copied to every node.
|
|
.PHONY: prod-images
|
|
prod-images:
|
|
sh infra/local/tools.sh build
|
|
sh infra/local/tools.sh prod-images
|
|
|
|
.PHONY: test-dev-infra
|
|
test-dev-infra:
|
|
sh infra/local/tools.sh test
|
|
sh infra/local/tools.sh verify-infra
|
|
|
|
.PHONY: test-dev-rotation
|
|
test-dev-rotation:
|
|
sh infra/local/tools.sh rotation
|
|
|
|
.PHONY: email test-dev-tooling
|
|
email:
|
|
sh infra/local/tools.sh email
|
|
|
|
test-dev-tooling:
|
|
sh infra/local/tools.sh test
|
|
|
|
.PHONY: sendico
|
|
sendico:
|
|
sh infra/local/tools.sh sendico
|