82 lines
2.5 KiB
YAML
82 lines
2.5 KiB
YAML
name: Build and Deploy GooSeek
|
|
|
|
on:
|
|
push:
|
|
branches:
|
|
- main
|
|
- master
|
|
|
|
env:
|
|
REGISTRY: 10.43.193.43:5000
|
|
|
|
jobs:
|
|
build-backend:
|
|
runs-on: ubuntu-latest
|
|
steps:
|
|
- uses: actions/checkout@v4
|
|
|
|
- name: Build backend image (all services)
|
|
working-directory: backend
|
|
run: |
|
|
docker build \
|
|
-f deploy/docker/Dockerfile.all \
|
|
-t $REGISTRY/gooseek/backend:${{ github.sha }} \
|
|
-t $REGISTRY/gooseek/backend:latest \
|
|
.
|
|
|
|
- name: Push backend image
|
|
run: |
|
|
docker push $REGISTRY/gooseek/backend:${{ github.sha }}
|
|
docker push $REGISTRY/gooseek/backend:latest
|
|
|
|
build-webui:
|
|
runs-on: ubuntu-latest
|
|
steps:
|
|
- uses: actions/checkout@v4
|
|
|
|
- name: Build WebUI image
|
|
working-directory: backend/webui
|
|
run: |
|
|
docker build \
|
|
-t $REGISTRY/gooseek/webui:${{ github.sha }} \
|
|
-t $REGISTRY/gooseek/webui:latest \
|
|
.
|
|
|
|
- name: Push WebUI image
|
|
run: |
|
|
docker push $REGISTRY/gooseek/webui:${{ github.sha }}
|
|
docker push $REGISTRY/gooseek/webui:latest
|
|
|
|
deploy:
|
|
needs: [build-backend, build-webui]
|
|
runs-on: ubuntu-latest
|
|
steps:
|
|
- uses: actions/checkout@v4
|
|
|
|
- name: Deploy to Kubernetes
|
|
run: |
|
|
export KUBECONFIG=/etc/rancher/k3s/k3s.yaml
|
|
cd backend/deploy/k8s
|
|
|
|
# Apply kustomization
|
|
kubectl apply -k .
|
|
|
|
# Restart deployments to pull new images
|
|
kubectl -n gooseek rollout restart deployment/api-gateway
|
|
kubectl -n gooseek rollout restart deployment/webui
|
|
kubectl -n gooseek rollout restart deployment/chat-svc
|
|
kubectl -n gooseek rollout restart deployment/agent-svc
|
|
kubectl -n gooseek rollout restart deployment/search-svc
|
|
kubectl -n gooseek rollout restart deployment/discover-svc
|
|
kubectl -n gooseek rollout restart deployment/learning-svc
|
|
kubectl -n gooseek rollout restart deployment/medicine-svc
|
|
kubectl -n gooseek rollout restart deployment/travel-svc
|
|
kubectl -n gooseek rollout restart deployment/sandbox-svc
|
|
|
|
# Wait for critical deployments
|
|
kubectl -n gooseek rollout status deployment/api-gateway --timeout=180s
|
|
kubectl -n gooseek rollout status deployment/webui --timeout=180s
|
|
|
|
echo "=== Deploy completed ==="
|
|
kubectl -n gooseek get pods
|