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