This repository was archived by the owner on Nov 23, 2025. It is now read-only.
Deploy Gateway to Kubernetes #3
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| # API_Gateway/.github/workflows/deploy.yml | |
| name: Deploy Gateway to Kubernetes | |
| on: | |
| workflow_run: | |
| # This MUST match the 'name:' of your build.yml file | |
| workflows: ["Build, Test, and Package Gateway"] | |
| types: | |
| - completed # Run only after the build workflow finishes | |
| branches: | |
| - 'main' # Deploy on main | |
| - 'devOps' # Deploy on devOps | |
| # Note: We are not deploying the 'dev' branch, as requested | |
| jobs: | |
| deploy: | |
| name: Deploy Gateway to Kubernetes | |
| # We only deploy if the build job was successful | |
| if: ${{ github.event.workflow_run.conclusion == 'success' }} | |
| runs-on: ubuntu-latest | |
| steps: | |
| # Checks out the code so we can access the K8s files | |
| - name: Checkout Code | |
| uses: actions/checkout@v4 | |
| # Finds the 7-character commit SHA that triggered the build | |
| - name: Get Commit SHA | |
| id: get_sha | |
| run: | | |
| echo "sha=$(echo ${{ github.event.workflow_run.head_sha }} | cut -c1-7)" >> $GITHUB_OUTPUT | |
| # Installs kubectl | |
| - name: Install kubectl | |
| uses: azure/setup-kubectl@v3 | |
| # Installs yq, the tool we use to safely edit YAML | |
| - name: Install yq | |
| run: | | |
| sudo wget https://github.com/mikefarah/yq/releases/latest/download/yq_linux_amd64 -O /usr/bin/yq | |
| sudo chmod +x /usr/bin/yq | |
| # Logs into your Azure VM's K3s cluster | |
| - name: Set Kubernetes context | |
| uses: azure/k8s-set-context@v4 | |
| with: | |
| # This uses the Org-level secret you created | |
| kubeconfig: ${{ secrets.KUBE_CONFIG_DATA }} | |
| # This is the magic step! | |
| # It replaces the image tag in your K8s file with the new one | |
| - name: Update image tag in YAML | |
| run: | | |
| yq -i '.spec.template.spec.containers[0].image = "ghcr.io/techtorque-2025/api_gateway:${{ steps.get_sha.outputs.sha }}"' Kubernetes/services/gateway-deployment.yaml | |
| # Applies the updated file to your cluster | |
| - name: Deploy to Kubernetes | |
| run: | | |
| kubectl apply -f Kubernetes/services/gateway-deployment.yaml | |
| # Waits for the new version to be fully rolled out | |
| kubectl rollout status deployment/api-gateway-deployment |