name: deploy on: { workflow_dispatch: { inputs: { env: { description: staging|prod, default: staging } } } } jobs: deploy: runs-on: ubuntu-latest permissions: { packages: write, contents: read } steps: - uses: actions/checkout@v4 - uses: docker/login-action@v3 with: { registry: ghcr.io, username: ${{ github.actor }}, password: ${{ secrets.GITHUB_TOKEN }} } - run: | docker build -f backend/Dockerfile -t ghcr.io/${{ github.repository_owner }}/uqo-chat-api:${{ github.sha }} . docker build -t ghcr.io/${{ github.repository_owner }}/uqo-chat-sandbox:${{ github.sha }} sandbox-runner docker push ghcr.io/${{ github.repository_owner }}/uqo-chat-api:${{ github.sha }} docker push ghcr.io/${{ github.repository_owner }}/uqo-chat-sandbox:${{ github.sha }} - uses: azure/setup-kubectl@v4 - run: | echo "${{ secrets.KUBECONFIG }}" > kubeconfig && export KUBECONFIG=kubeconfig kubectl apply -k k8s/overlays/${{ inputs.env }} kubectl -n uqo-chat set image deployment/api api=ghcr.io/${{ github.repository_owner }}/uqo-chat-api:${{ github.sha }} kubectl -n uqo-chat set image deployment/sandbox-runner sandbox=ghcr.io/${{ github.repository_owner }}/uqo-chat-sandbox:${{ github.sha }} kubectl -n uqo-chat rollout status deployment/api kubectl -n uqo-chat run smoke --rm -i --restart=Never --image=curlimages/curl -- -fsS http://api:8190/api/v1/ready