name: Deploy to Azure on: # Uncomment to auto-deploy after CI passes on main: # workflow_run: # workflows: [CI] # types: [completed] # branches: [main] workflow_dispatch: env: AZURE_RESOURCE_GROUP: ${{ vars.AZURE_RESOURCE_GROUP }} ACR_NAME: ${{ vars.ACR_NAME }} CONTAINER_APP_NAME: doc-assistant IMAGE_NAME: doc-assistant jobs: deploy: runs-on: ubuntu-latest if: ${{ github.event.workflow_run.conclusion == 'success' || github.event_name == 'workflow_dispatch' }} steps: - uses: actions/checkout@v4 - name: Login to Azure uses: azure/login@v2 with: creds: ${{ secrets.AZURE_CREDENTIALS }} - name: Login to ACR run: az acr login --name ${{ env.ACR_NAME }} - name: Build and push image to ACR run: | IMAGE_TAG=${{ env.ACR_NAME }}.azurecr.io/${{ env.IMAGE_NAME }}:${{ github.sha }} docker build -f Dockerfile.compose -t $IMAGE_TAG . docker push $IMAGE_TAG - name: Deploy to Container Apps run: | az containerapp update \ --name ${{ env.CONTAINER_APP_NAME }} \ --resource-group ${{ env.AZURE_RESOURCE_GROUP }} \ --image ${{ env.ACR_NAME }}.azurecr.io/${{ env.IMAGE_NAME }}:${{ github.sha }} - name: Wait for readiness run: | APP_URL=$(az containerapp show \ --name ${{ env.CONTAINER_APP_NAME }} \ --resource-group ${{ env.AZURE_RESOURCE_GROUP }} \ --query properties.configuration.ingress.fqdn -o tsv) for i in $(seq 1 30); do if curl -sf "https://${APP_URL}/health/ready" > /dev/null 2>&1; then echo "Application is ready" exit 0 fi echo "Waiting for readiness... ($i/30)" sleep 10 done echo "Readiness check timed out" exit 1