name: Build and Deploy on: push: branches: [main] env: INTERNAL_REGISTRY: gitea-http.gitea.svc.cluster.local:3000 NODE_REGISTRY: localhost:30300 jobs: build-and-deploy: runs-on: ubuntu-latest steps: - name: Checkout uses: actions/checkout@v4 - name: Install Docker CLI run: | curl -fsSL https://download.docker.com/linux/static/stable/x86_64/docker-27.5.1.tgz \ | tar xz --strip-components=1 -C /usr/local/bin docker/docker docker version - name: Install kubectl run: | curl -LO "https://dl.k8s.io/release/$(curl -L -s https://dl.k8s.io/release/stable.txt)/bin/linux/amd64/kubectl" chmod +x kubectl mv kubectl /usr/local/bin/ kubectl version --client - name: Login to Gitea Registry run: | echo "${{ secrets.REGISTRY_PASSWORD }}" | \ docker login ${{ env.INTERNAL_REGISTRY }} \ -u ${{ secrets.REGISTRY_USERNAME }} --password-stdin - name: Build and push image run: | docker build -f Dockerfile \ -t ${{ env.INTERNAL_REGISTRY }}/admin/ai-service:${{ github.sha }} \ -t ${{ env.INTERNAL_REGISTRY }}/admin/ai-service:latest \ . docker push ${{ env.INTERNAL_REGISTRY }}/admin/ai-service:${{ github.sha }} docker push ${{ env.INTERNAL_REGISTRY }}/admin/ai-service:latest - name: Deploy to Kubernetes env: KUBECONFIG: /kubeconfig/config run: | kubectl apply -f k8s/namespace.yaml kubectl apply -f k8s/secrets.yaml kubectl apply -f k8s/configmap.yaml kubectl apply -f k8s/postgres.yaml kubectl apply -f k8s/server-deployment.yaml kubectl apply -f k8s/server-service.yaml kubectl -n ai-service set image deployment/ai-service \ server=${{ env.NODE_REGISTRY }}/admin/ai-service:${{ github.sha }} kubectl -n ai-service rollout status deployment/ai-service --timeout=180s