@@ -47,14 +47,7 @@ tasks:
4747 cmds :
4848 - tilt logs
4949
50- # Development tasks
5150 dev:items-service :
52- desc : Run items-service in development mode with hot reload
53- dir : apps/items-service
54- cmds :
55- - bun install && bun run dev
56-
57- dev:items-service:postgres :
5851 desc : Run items-service locally with PostgreSQL connection (requires port-forward)
5952 dir : apps/items-service
6053 cmds :
@@ -77,6 +70,65 @@ tasks:
7770 cmds :
7871 - bun install && bun run dev
7972
73+ dev:semcache-service :
74+ desc : Run semcache-service locally with Air + K8s PostgreSQL (auto port-forwards)
75+ dir : apps/semcache-service
76+ cmds :
77+ - |
78+ echo "🔥 Starting semcache-service with Air hot reload + K8s PostgreSQL..."
79+ echo "📝 Edit any .go file and see changes in ~1 second!"
80+ echo ""
81+
82+ # Check if port-forward is already running
83+ if lsof -Pi :5432 -sTCP:LISTEN -t >/dev/null 2>&1; then
84+ echo "✅ PostgreSQL port-forward already running on localhost:5432"
85+ else
86+ echo "🔌 Starting PostgreSQL port-forward in background..."
87+ kubectl port-forward svc/postgres 5432:5432 > /dev/null 2>&1 &
88+ PF_PID=$!
89+ echo " Port-forward PID: $PF_PID"
90+ sleep 2
91+
92+ # Verify port-forward is working
93+ if ! lsof -Pi :5432 -sTCP:LISTEN -t >/dev/null 2>&1; then
94+ echo "❌ Failed to start port-forward"
95+ exit 1
96+ fi
97+ echo "✅ Port-forward established"
98+ fi
99+
100+ echo ""
101+ if ! command -v air &> /dev/null; then
102+ echo "Installing Air..."
103+ go install github.com/air-verse/air@latest
104+ fi
105+
106+ set -a
107+ source ../../.env
108+ set +a
109+ export PORT=8090
110+ export DB_HOST=localhost
111+ export DB_PORT=5432
112+ export DB_USER=$POSTGRES_USER
113+ export DB_PASSWORD=$POSTGRES_PASSWORD
114+ export DB_NAME=$POSTGRES_DB
115+ export DB_SSLMODE=disable
116+ export OTEL_ENABLED=false
117+
118+ echo "🚀 Starting Air hot reload on port 8090..."
119+ echo " http://localhost:8090/health"
120+ echo " http://localhost:8090/v1/greetings"
121+ echo ""
122+ air -c .air.toml
123+
124+ # dev:stop-port-forwards:
125+ # desc: Stop all kubectl port-forward processes
126+ # cmds:
127+ # - |
128+ # echo "🛑 Stopping all kubectl port-forward processes..."
129+ # pkill -f "kubectl port-forward" || echo "No port-forwards running"
130+ # echo "✅ Done"
131+
80132 # Docker tasks
81133 docker:build:items-service :
82134 desc : Build Docker image for items-service
@@ -88,11 +140,17 @@ tasks:
88140 cmds :
89141 - docker build -t website-app:local ./apps/website-app
90142
143+ docker:build:semcache-service :
144+ desc : Build Docker image for semcache-service
145+ cmds :
146+ - docker build -t semcache-service:local ./apps/semcache-service
147+
91148 docker:build:all :
92149 desc : Build Docker images for all apps
93150 cmds :
94151 - task : docker:build:items-service
95152 - task : docker:build:website-app
153+ - task : docker:build:semcache-service
96154
97155 docker:run:items-service :
98156 desc : Run items-service Docker container locally
@@ -104,6 +162,11 @@ tasks:
104162 cmds :
105163 - docker run --rm -p 8080:8080 website-app:local
106164
165+ docker:run:semcache-service :
166+ desc : Run semcache-service Docker container locally
167+ cmds :
168+ - docker run --rm -p 8080:8080 semcache-service:local
169+
107170 # Terraform tasks
108171 tf:init :
109172 desc : Initialize Terraform
@@ -205,6 +268,11 @@ tasks:
205268 cmds :
206269 - kubectl --kubeconfig={{.KUBECONFIG}} logs -l app=website-app --tail=100 -f
207270
271+ k8s:logs:semcache-service :
272+ desc : Get logs from semcache-service
273+ cmds :
274+ - kubectl --kubeconfig={{.KUBECONFIG}} logs -l app=semcache-service --tail=100 -f
275+
208276 k8s:describe:items-service :
209277 desc : Describe items-service deployment
210278 cmds :
@@ -215,6 +283,11 @@ tasks:
215283 cmds :
216284 - kubectl --kubeconfig={{.KUBECONFIG}} describe deployment website-app
217285
286+ k8s:describe:semcache-service :
287+ desc : Describe semcache-service deployment
288+ cmds :
289+ - kubectl --kubeconfig={{.KUBECONFIG}} describe deployment semcache-service
290+
218291 # Deployment tasks
219292 deploy:items-service :
220293 desc : Deploy items-service to Kubernetes
@@ -229,6 +302,14 @@ tasks:
229302 cmds :
230303 - kubectl --kubeconfig={{.KUBECONFIG}} apply -f {{.K8S_DIR}}/apps/website-app-deployment.yaml
231304
305+ deploy:semcache-service :
306+ desc : Deploy semcache-service to Kubernetes
307+ cmds :
308+ - kubectl --kubeconfig={{.KUBECONFIG}} apply -f {{.K8S_DIR}}/apps/semcache-service-deployment.yaml
309+ - echo "✅ semcache-service deployed"
310+ - echo "Waiting for rollout to complete..."
311+ - kubectl --kubeconfig={{.KUBECONFIG}} rollout status deployment/semcache-service --timeout=120s
312+
232313 deploy:headlamp-readonly :
233314 desc : Deploy Headlamp Kubernetes Dashboard (Read-Only Public)
234315 cmds :
@@ -242,6 +323,7 @@ tasks:
242323 cmds :
243324 - task : deploy:items-service
244325 - task : deploy:website-app
326+ - task : deploy:semcache-service
245327 - task : deploy:headlamp-readonly
246328
247329 deploy:items-service:with-postgres :
@@ -335,6 +417,11 @@ tasks:
335417 cmds :
336418 - kubectl --kubeconfig={{.KUBECONFIG}} rollout restart deployment/website-app
337419
420+ rollout:restart:semcache-service :
421+ desc : Restart semcache-service deployment
422+ cmds :
423+ - kubectl --kubeconfig={{.KUBECONFIG}} rollout restart deployment/semcache-service
424+
338425 rollout:status:items-service :
339426 desc : Check rollout status for items-service
340427 cmds :
@@ -345,6 +432,11 @@ tasks:
345432 cmds :
346433 - kubectl --kubeconfig={{.KUBECONFIG}} rollout status deployment/website-app
347434
435+ rollout:status:semcache-service :
436+ desc : Check rollout status for semcache-service
437+ cmds :
438+ - kubectl --kubeconfig={{.KUBECONFIG}} rollout status deployment/semcache-service
439+
348440 # DNS and networking tasks
349441 dns:clear-cache :
350442 desc : Clear DNS cache (macOS)
@@ -369,21 +461,31 @@ tasks:
369461 cmds :
370462 - curl -s https://roussev.com/health | jq
371463
464+ health:semcache-service :
465+ desc : Check health of semcache-service (local)
466+ cmds :
467+ - curl -s https://app.roussev.com/semcache/v1/health | jq
468+
372469 clean:docker :
373470 desc : Clean Docker images
374471 cmds :
375- - docker rmi items-service:local website-app:local || true
472+ - docker rmi items-service:local website-app:local semcache-service:local || true
376473
377474 # Port forwarding tasks
378- port-forward:items-service :
379- desc : Port forward to items-service pod
380- cmds :
381- - kubectl --kubeconfig={{.KUBECONFIG}} port-forward svc/items-service 8080:80
382-
383- port-forward:website-app :
384- desc : Port forward to website-app pod
385- cmds :
386- - kubectl --kubeconfig={{.KUBECONFIG}} port-forward svc/website-app 8080:80
475+ # port-forward:items-service:
476+ # desc: Port forward to items-service pod
477+ # cmds:
478+ # - kubectl --kubeconfig={{.KUBECONFIG}} port-forward svc/items-service 8080:80
479+
480+ # port-forward:website-app:
481+ # desc: Port forward to website-app pod
482+ # cmds:
483+ # - kubectl --kubeconfig={{.KUBECONFIG}} port-forward svc/website-app 8080:80
484+
485+ # port-forward:semcache-service:
486+ # desc: Port forward to semcache-service pod
487+ # cmds:
488+ # - kubectl --kubeconfig={{.KUBECONFIG}} port-forward svc/semcache-service 8080:80
387489
388490 # SSH tasks
389491 ssh :
0 commit comments