Skip to content

Hello Python App to Azure AKS #1

Hello Python App to Azure AKS

Hello Python App to Azure AKS #1

name: Hello Python App to Azure AKS
on:
# push:
# branches:
# - main
# paths:
# - "docker/app1-hello/python"
workflow_dispatch:
jobs:
build-test:
runs-on: ubuntu-latest
steps:
- name: Checkout code
uses: actions/checkout@v6
- name: Setup Python
uses: actions/setup-python@v6
with:
python-version: '3.13'
- name: Install Dependencies
working-directory: docker/app1-hello/python
run: |
python -m pip install --upgrade pip
pip install -r requirements.txt
- name: Run Smoke Test
working-directory: docker/app1-hello/python
run: python -m py_compile main.py
docker-build-push:
runs-on: ubuntu-latest
needs: build-test
steps:
- name: Checkout code
uses: actions/checkout@v6
- name: Login to Docker Hub
uses: docker/login-action@v3
with:
username: ${{ secrets.DOCKER_USERNAME }}
password: ${{ secrets.DOCKER_PASSWORD }}
- name: Set up QEMU
uses: docker/setup-qemu-action@v3
- name: Set up Docker Buildx
uses: docker/setup-buildx-action@v3
- name: Build and Push Image
uses: docker/build-push-action@v6
with:
context: docker/app1-hello/python
platforms: linux/amd64,linux/arm64
push: true
tags: |
${{ secrets.DOCKER_USERNAME }}/hello-python:latest
deploy-aks:
runs-on: ubuntu-latest
needs: docker-build-push
permissions:
id-token: write
contents: read
steps:
- name: Checkout Code
uses: actions/checkout@v4
- name: Debug Secrets (safe check)
run: |
echo "CLIENT_ID length: ${#CLIENT_ID}"
echo "TENANT_ID length: ${#TENANT_ID}"
echo "SUB_ID length: ${#SUB_ID}"
echo "CLIENT_ID starts with: ${CLIENT_ID:0:8}..."
echo "TENANT_ID starts with: ${TENANT_ID:0:8}..."
env:
CLIENT_ID: ${{ secrets.AZURE_CLIENT_ID }}
TENANT_ID: ${{ secrets.AZURE_TENANT_ID }}
SUB_ID: ${{ secrets.AZURE_SUBSCRIPTION_ID }}
- name: Authenticate to Azure
uses: azure/login@v2
with:
client-id: ${{ secrets.AZURE_CLIENT_ID }}
tenant-id: ${{ secrets.AZURE_TENANT_ID }}
subscription-id: ${{ secrets.AZURE_SUBSCRIPTION_ID }}
- name: Setup kubectl
uses: azure/setup-kubectl@v4
- name: Debug AKS Secrets Again
run: |
echo "CLUSTER_NAME length: ${#CLUSTER_NAME}"
echo "RESOURCE_GROUP length: ${#RESOURCE_GROUP}"
echo "CLUSTER_NAME value: ${CLUSTER_NAME}"
echo "RESOURCE_GROUP value: ${RESOURCE_GROUP}"
env:
CLUSTER_NAME: ${{ secrets.AZURE_AKS_CLUSTER_NAME }}
RESOURCE_GROUP: ${{ secrets.AZURE_RESOURCE_GROUP }}
- name: Set AKS Context
run: |
az aks get-credentials \
--resource-group ${{ secrets.AZURE_RESOURCE_GROUP }} \
--name ${{ secrets.AZURE_AKS_CLUSTER_NAME }}
- name: Verify connection
run: kubectl get nodes
- name: Deploy to Azure AKS
run: kubectl apply -f k8s/azure/app1-hello