diff --git a/argo-workflows/workflow.yaml b/argo-workflows/workflow.yaml new file mode 100644 index 0000000..60b7a6f --- /dev/null +++ b/argo-workflows/workflow.yaml @@ -0,0 +1,58 @@ +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