name: Build and Deploy to ACR on: push: branches: - main workflow_dispatch: env: IMAGE_NAME: teams-browser-bot RESOURCE_GROUP: resource-core CONTAINER_APP_NAME: cae-poweron-shared jobs: build: runs-on: ubuntu-latest steps: - name: Checkout repository uses: actions/checkout@v4 - name: Log in to Azure Container Registry uses: docker/login-action@v3 with: registry: ${{ secrets.ACR_LOGIN_SERVER }} username: ${{ secrets.ACR_USERNAME }} password: ${{ secrets.ACR_PASSWORD }} - name: Build and push Docker image uses: docker/build-push-action@v5 with: context: . push: true tags: | ${{ secrets.ACR_LOGIN_SERVER }}/${{ env.IMAGE_NAME }}:latest ${{ secrets.ACR_LOGIN_SERVER }}/${{ env.IMAGE_NAME }}:${{ github.sha }} - name: Azure Login uses: azure/login@v2 with: creds: ${{ secrets.AZURE_CREDENTIALS }} - name: Deploy to Container App uses: azure/cli@v2 with: azcliversion: latest inlineScript: | # Update with unique revision suffix to force new revision SUFFIX=$(echo "${{ github.sha }}" | cut -c1-8) az containerapp update \ --name ${{ env.CONTAINER_APP_NAME }} \ --resource-group ${{ env.RESOURCE_GROUP }} \ --image ${{ secrets.ACR_LOGIN_SERVER }}/${{ env.IMAGE_NAME }}:${{ github.sha }} \ --revision-suffix "deploy-${SUFFIX}" - name: Verify deployment uses: azure/cli@v2 with: azcliversion: latest inlineScript: | # Wait for new revision to be active, then restart if needed sleep 10 LATEST_REVISION=$(az containerapp revision list \ --name ${{ env.CONTAINER_APP_NAME }} \ --resource-group ${{ env.RESOURCE_GROUP }} \ --query "[0].name" -o tsv) echo "Latest revision: $LATEST_REVISION" az containerapp revision restart \ --name ${{ env.CONTAINER_APP_NAME }} \ --resource-group ${{ env.RESOURCE_GROUP }} \ --revision "$LATEST_REVISION" || true - name: Summary run: | echo "### Deployed successfully! :rocket:" >> $GITHUB_STEP_SUMMARY echo "" >> $GITHUB_STEP_SUMMARY echo "Image: \`${{ secrets.ACR_LOGIN_SERVER }}/${{ env.IMAGE_NAME }}:${{ github.sha }}\`" >> $GITHUB_STEP_SUMMARY