Spaces:
Running
Running
| 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 | |