apiVersion: argoproj.io/v1alpha1 kind: Workflow metadata: generateName: deploy-user-microservice- spec: entrypoint: deploy serviceAccountName: argo-workflows-user arguments: parameters: - name: branch value: ArgoWorkflows-deploy templates: - name: deploy container: image: marcin00.azurecr.io/azure-cli-kubectl:latest command: [sh, -c] env: - name: CLIENT_ID value: "c302726f-fafb-4143-94c1-67a70975574a" - name: CLUSTER_NAME value: "build" - name: RESOURCE_GROUP value: "tst-aks-rg" - name: DEPLOY_FILES value: "namespace.yaml secret-store.yaml deploy.yaml ingress.yaml" - name: DEPLOYMENT value: "api" - name: NAMESPACE value: "user-microservice" - name: HEALTHCHECK_URL value: "https://user-microservice.marcin00.pl/health" args: - | echo "===> Logging in to Azure" az login --identity --client-id $CLIENT_ID az aks get-credentials --resource-group $RESOURCE_GROUP --name $CLUSTER_NAME --overwrite-existing kubelogin convert-kubeconfig -l azurecli echo "===> Applying Kubernetes manifests" for file in $DEPLOY_FILES; do kubectl apply -f "$file" done echo "===> Waiting for deployment to complete" kubectl rollout status deployment/$DEPLOYMENT -n $NAMESPACE --timeout=60s echo "===> Running health check" for i in $(seq 1 120); do if curl -sf $HEALTHCHECK_URL; then echo "Health check OK" exit 0 else echo "Health check failed. Retry $i..." sleep 5 fi done echo "Health check failed" exit 1