initial commit
This commit is contained in:
commit
1253955070
75 changed files with 13972 additions and 0 deletions
110
Makefile
Normal file
110
Makefile
Normal file
|
|
@ -0,0 +1,110 @@
|
|||
# Makefile for Go Places Project
|
||||
# ---------------------------------
|
||||
# Port Configuration:
|
||||
# - Go API: defaults to :8080 (via ADDR env var)
|
||||
# - React UI: defaults to :5173 (via Vite)
|
||||
# - Proxy: forwards /api, /graphql, /media, /healthz to Go API
|
||||
# ---------------------------------
|
||||
|
||||
# --- Configuration ---
|
||||
API_CHART_PATH := ./charts/api
|
||||
LOOSE_CHART_PATH := ./charts/go-loose
|
||||
API_DIR := api
|
||||
BIN_DIR := bin
|
||||
API_BINARY := $(BIN_DIR)/go-places
|
||||
|
||||
# --- Targets ---
|
||||
|
||||
.PHONY: all build build-api build-loose run test fmt vet validate dry-run-deploy deploy clean help
|
||||
|
||||
# Default target: build the service that lives in this repository.
|
||||
all: build-api
|
||||
|
||||
# Main build target.
|
||||
build: build-api
|
||||
|
||||
# Build go-places. The module root is api/, so the build has to run there
|
||||
# rather than from the repository root.
|
||||
build-api:
|
||||
@echo "--- Building go-places ---"
|
||||
@mkdir -p $(BIN_DIR)
|
||||
cd $(API_DIR) && go build -o ../$(API_BINARY) ./cmd
|
||||
@echo "built $(API_BINARY)"
|
||||
|
||||
# go-loose is the authentication service this API depends on. Its source lives in
|
||||
# its own repository, so it cannot be built from here.
|
||||
build-loose:
|
||||
@echo "go-loose is a separate service and its source is not part of this repository." >&2
|
||||
@echo "See charts/$(notdir $(LOOSE_CHART_PATH))/values.yaml for how it is deployed." >&2
|
||||
@exit 1
|
||||
|
||||
# Run the service locally with development defaults.
|
||||
# The already-built binary is exec'd rather than run through "go run", so the
|
||||
# process make starts is the service itself: startup is immediate (no second
|
||||
# compile) and Ctrl-C reaches it directly.
|
||||
# Environment variables:
|
||||
# ADDR - Go API listen address (default: :8080)
|
||||
# AUTH_MODE - Authentication mode: dev or jwt (default: dev)
|
||||
# ENABLE_REST - Enable REST endpoints (default: true)
|
||||
run: build-api
|
||||
cd $(API_DIR) && AUTH_MODE=dev ENABLE_REST=true exec ../$(API_BINARY)
|
||||
|
||||
# React UI development server
|
||||
# Forwards /api, /graphql, /media, /healthz to the Go API via Vite proxy.
|
||||
# Vite dev server runs on :5173 by default (or next available port).
|
||||
# Environment variable:
|
||||
# VITE_PROXY_TARGET - API target URL (default: http://localhost:8080)
|
||||
web-dev:
|
||||
cd web && npm run dev
|
||||
|
||||
test:
|
||||
cd $(API_DIR) && go test ./...
|
||||
|
||||
fmt:
|
||||
cd $(API_DIR) && go fmt ./...
|
||||
|
||||
vet:
|
||||
cd $(API_DIR) && go vet ./...
|
||||
|
||||
# Validate all Helm charts.
|
||||
validate:
|
||||
@echo "--- Validating Helm Charts ---"
|
||||
helm lint $(API_CHART_PATH) $(LOOSE_CHART_PATH)
|
||||
@echo "Helm linting complete."
|
||||
|
||||
# Dry run deployment to validate manifests before applying to a cluster.
|
||||
dry-run-deploy:
|
||||
@echo "--- DRY RUN: Validating API Helm Chart ---"
|
||||
helm lint $(API_CHART_PATH)
|
||||
@echo "--- DRY RUN: Validating go-loose Helm Chart ---"
|
||||
helm lint $(LOOSE_CHART_PATH)
|
||||
@echo "Dry run validation complete. Manifests look correct."
|
||||
|
||||
# Deploy all charts to a target environment (requires configured k8s context).
|
||||
deploy: validate
|
||||
@echo "--- Deploying all charts to Kubernetes ---"
|
||||
helm upgrade --install go-places $(API_CHART_PATH) --namespace dev --create-namespace -f $(API_CHART_PATH)/values.yaml
|
||||
helm upgrade --install go-loose $(LOOSE_CHART_PATH) --namespace dev --create-namespace -f $(LOOSE_CHART_PATH)/values.yaml
|
||||
@echo "Deployment process initiated. Check cluster status."
|
||||
|
||||
# Clean up generated files or images (if any)
|
||||
clean:
|
||||
@echo "--- Cleaning up build artifacts ---"
|
||||
rm -rf $(BIN_DIR)
|
||||
|
||||
# Help target
|
||||
help:
|
||||
@echo "=========================================="
|
||||
@echo "Go Places Project Makefile Help"
|
||||
@echo "make all : Build the go-places service."
|
||||
@echo "make build : Alias for 'make all'."
|
||||
@echo "make build-api : Build bin/go-places from ./api."
|
||||
@echo "make run : Run the API locally with AUTH_MODE=dev."
|
||||
@echo "make web-dev : Start Vite dev server for React UI (ports: API:8080, UI:5173)"
|
||||
@echo "make test : Run the Go tests."
|
||||
@echo "make fmt / vet : Format / vet the Go sources."
|
||||
@echo "make build-loose : Not buildable here; go-loose is a separate repo."
|
||||
@echo "make validate : Run 'helm lint' on both charts."
|
||||
@echo "make dry-run-deploy : Validate Helm charts without deploying."
|
||||
@echo "make deploy : Validate charts and deploy to Kubernetes."
|
||||
@echo "make clean : Remove local build artifacts."
|
||||
Loading…
Add table
Add a link
Reference in a new issue