Skip to content
This repository was archived by the owner on Nov 23, 2025. It is now read-only.

Deploy Gateway to Kubernetes #3

Deploy Gateway to Kubernetes

Deploy Gateway to Kubernetes #3

Workflow file for this run

# 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