Skip to content

Hello Node App to Azure AKS #5

Hello Node App to Azure AKS

Hello Node App to Azure AKS #5

name: Hello Node App to Azure AKS
on:
# push:
# branches:
# - main
# paths:
# - "docker/app1-hello/node"
workflow_dispatch:
jobs:
build-test:
runs-on: ubuntu-latest
steps:
- name: Checkout Code
uses: actions/checkout@v6
- name: Setup Node.js
uses: actions/setup-node@v6
with:
node-version: '25'
- name: Install Dependencies
working-directory: docker/app1-hello/node
run: npm ci
- name: Run Tests (If any)
working-directory: docker/app1-hello/node
run: npm test --if-present
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 Docker Image
uses: docker/build-push-action@v6
with:
context: docker/app1-hello/node
push: true
platforms: linux/amd64,linux/arm64
tags: |
${{ secrets.DOCKER_USERNAME }}/hello-node: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