From fe83495f72176ec5d2eb12274dae976ff2c95124 Mon Sep 17 00:00:00 2001 From: Vamshi-Microsoft Date: Mon, 16 Mar 2026 14:43:51 +0530 Subject: [PATCH 01/16] refactor notification subject --- .github/workflows/deploy-orchestrator.yml | 3 +- .github/workflows/job-deploy-linux.yml | 2 +- .github/workflows/job-deploy-windows.yml | 2 +- .github/workflows/job-send-notification.yml | 87 +++++++++++++++------ 4 files changed, 67 insertions(+), 27 deletions(-) diff --git a/.github/workflows/deploy-orchestrator.yml b/.github/workflows/deploy-orchestrator.yml index 97c7a6ca..97961833 100644 --- a/.github/workflows/deploy-orchestrator.yml +++ b/.github/workflows/deploy-orchestrator.yml @@ -104,7 +104,7 @@ jobs: send-notification: if: "!cancelled()" - needs: [docker-build, deploy, e2e-test] + needs: [docker-build, deploy, e2e-test, cleanup-deployment] uses: ./.github/workflows/job-send-notification.yml with: @@ -120,6 +120,7 @@ jobs: QUOTA_FAILED: ${{ needs.deploy.outputs.QUOTA_FAILED }} TEST_SUCCESS: ${{ needs.e2e-test.outputs.TEST_SUCCESS }} TEST_REPORT_URL: ${{ needs.e2e-test.outputs.TEST_REPORT_URL }} + cleanup_result: ${{ needs.cleanup-deployment.result }} secrets: inherit cleanup-deployment: diff --git a/.github/workflows/job-deploy-linux.yml b/.github/workflows/job-deploy-linux.yml index 3829bf36..09ed696f 100644 --- a/.github/workflows/job-deploy-linux.yml +++ b/.github/workflows/job-deploy-linux.yml @@ -241,7 +241,7 @@ jobs: # Set additional parameters azd env set AZURE_SUBSCRIPTION_ID="${{ secrets.AZURE_SUBSCRIPTION_ID }}" - azd env set AZURE_ENV_AI_SERVICE_LOCATION="$INPUT_AZURE_ENV_OPENAI_LOCATION" + azd env set AZURE_ENV_OPENAI_LOCATION="$INPUT_AZURE_ENV_OPENAI_LOCATION" azd env set AZURE_LOCATION="$INPUT_AZURE_LOCATION" azd env set AZURE_RESOURCE_GROUP="$INPUT_RESOURCE_GROUP_NAME" azd env set AZURE_ENV_IMAGETAG="$INPUT_IMAGE_TAG" diff --git a/.github/workflows/job-deploy-windows.yml b/.github/workflows/job-deploy-windows.yml index 175ddeb1..6353275c 100644 --- a/.github/workflows/job-deploy-windows.yml +++ b/.github/workflows/job-deploy-windows.yml @@ -245,7 +245,7 @@ jobs: # Set additional parameters azd env set AZURE_SUBSCRIPTION_ID="${{ secrets.AZURE_SUBSCRIPTION_ID }}" - azd env set AZURE_ENV_AI_SERVICE_LOCATION="$env:INPUT_AZURE_ENV_OPENAI_LOCATION" + azd env set AZURE_ENV_OPENAI_LOCATION="$env:INPUT_AZURE_ENV_OPENAI_LOCATION" azd env set AZURE_LOCATION="$env:INPUT_AZURE_LOCATION" azd env set AZURE_RESOURCE_GROUP="$env:INPUT_RESOURCE_GROUP_NAME" azd env set AZURE_ENV_IMAGETAG="$env:INPUT_IMAGE_TAG" diff --git a/.github/workflows/job-send-notification.yml b/.github/workflows/job-send-notification.yml index 477a7566..d4b1dd0b 100644 --- a/.github/workflows/job-send-notification.yml +++ b/.github/workflows/job-send-notification.yml @@ -61,6 +61,11 @@ on: required: false default: '' type: string + cleanup_result: + description: 'Cleanup job result (success, failure, skipped)' + required: false + default: 'skipped' + type: string env: GPT_MIN_CAPACITY: 100 @@ -91,6 +96,7 @@ jobs: INPUT_QUOTA_FAILED: ${{ inputs.QUOTA_FAILED }} INPUT_TEST_SUCCESS: ${{ inputs.TEST_SUCCESS }} INPUT_TEST_REPORT_URL: ${{ inputs.TEST_REPORT_URL }} + INPUT_CLEANUP_RESULT: ${{ inputs.cleanup_result }} run: | echo "🔍 Validating workflow input parameters..." VALIDATION_FAILED=false @@ -222,6 +228,17 @@ jobs: fi fi + # Validate cleanup_result (must be specific values) + if [[ -n "$INPUT_CLEANUP_RESULT" ]]; then + ALLOWED_CLEANUP_RESULTS=("success" "failure" "skipped") + if [[ ! " ${ALLOWED_CLEANUP_RESULTS[@]} " =~ " ${INPUT_CLEANUP_RESULT} " ]]; then + echo "❌ ERROR: cleanup_result '$INPUT_CLEANUP_RESULT' is invalid. Allowed values: ${ALLOWED_CLEANUP_RESULTS[*]}" + VALIDATION_FAILED=true + else + echo "✅ cleanup_result: '$INPUT_CLEANUP_RESULT' is valid" + fi + fi + # Fail workflow if any validation failed if [[ "$VALIDATION_FAILED" == "true" ]]; then echo "" @@ -232,23 +249,35 @@ jobs: echo "" echo "✅ All input parameters validated successfully!" - # - name: Determine Test Suite Display Name - # id: test_suite - # shell: bash - # env: - # RUN_E2E_TESTS: ${{ env.RUN_E2E_TESTS }} - # run: | - # if [ "$RUN_E2E_TESTS" = "GoldenPath-Testing" ]; then - # TEST_SUITE_NAME="Golden Path Testing" - # elif [ "$RUN_E2E_TESTS" = "Smoke-Testing" ]; then - # TEST_SUITE_NAME="Smoke Testing" - # elif [ "$RUN_E2E_TESTS" = "None" ]; then - # TEST_SUITE_NAME="None" - # else - # TEST_SUITE_NAME="$RUN_E2E_TESTS" - # fi - # echo "TEST_SUITE_NAME=$TEST_SUITE_NAME" >> $GITHUB_OUTPUT - # echo "Test Suite: $TEST_SUITE_NAME" + - name: Determine Test Suite Display Name + id: test_suite + shell: bash + env: + RUN_E2E_TESTS: ${{ env.RUN_E2E_TESTS }} + run: | + if [ "$RUN_E2E_TESTS" = "GoldenPath-Testing" ]; then + TEST_SUITE_NAME="Golden Path Testing" + elif [ "$RUN_E2E_TESTS" = "Smoke-Testing" ]; then + TEST_SUITE_NAME="Smoke Testing" + elif [ "$RUN_E2E_TESTS" = "None" ]; then + TEST_SUITE_NAME="None" + else + TEST_SUITE_NAME="$RUN_E2E_TESTS" + fi + echo "TEST_SUITE_NAME=$TEST_SUITE_NAME" >> $GITHUB_OUTPUT + echo "Test Suite: $TEST_SUITE_NAME" + + - name: Determine Cleanup Status + id: cleanup + shell: bash + env: + CLEANUP_RESULT: ${{ inputs.cleanup_result }} + run: | + case "$CLEANUP_RESULT" in + success) echo "CLEANUP_STATUS=SUCCESS" >> $GITHUB_OUTPUT ;; + failure) echo "CLEANUP_STATUS=FAILED" >> $GITHUB_OUTPUT ;; + *) echo "CLEANUP_STATUS=SKIPPED" >> $GITHUB_OUTPUT ;; + esac - name: Send Quota Failure Notification if: inputs.deploy_result == 'failure' && inputs.QUOTA_FAILED == 'true' @@ -258,12 +287,13 @@ jobs: GITHUB_RUN_ID: ${{ github.run_id }} ACCELERATOR_NAME: ${{ env.accelerator_name }} LOGICAPP_URL: ${{ secrets.EMAILNOTIFICATION_LOGICAPP_URL_TA }} + CLEANUP_STATUS: ${{ steps.cleanup.outputs.CLEANUP_STATUS }} run: | RUN_URL="https://github.com/${GITHUB_REPOSITORY }/actions/runs/${GITHUB_RUN_ID}" EMAIL_BODY=$(cat <Dear Team,

We would like to inform you that the ${ACCELERATOR_NAME} deployment has failed due to insufficient quota in the requested regions.

Issue Details:
• Quota check failed for GPT model
• Required GPT Capacity: ${{ env.GPT_MIN_CAPACITY }}
• Checked Regions: ${{ vars.AZURE_REGIONS }}

Run URL: ${RUN_URL}

Please resolve the quota issue and retry the deployment.

Best regards,
Your Automation Team

", - "subject": "${ACCELERATOR_NAME} Pipeline - Failed (Insufficient Quota)" + "subject": "[CI/CD-Automation] | [${ACCELERATOR_NAME}] | Deployment | FAILED | Insufficient Quota | Cleanup: ${CLEANUP_STATUS}" } EOF ) @@ -281,6 +311,7 @@ jobs: LOGICAPP_URL: ${{ secrets.EMAILNOTIFICATION_LOGICAPP_URL_TA }} WAF_ENABLED: ${{ env.WAF_ENABLED }} EXP: ${{ env.EXP }} + CLEANUP_STATUS: ${{ steps.cleanup.outputs.CLEANUP_STATUS }} run: | RUN_URL="https://github.com/${{ github.repository }}/actions/runs/${{ github.run_id }}" RESOURCE_GROUP="$INPUT_RESOURCE_GROUP_NAME" @@ -288,7 +319,7 @@ jobs: EMAIL_BODY=$(cat <Dear Team,

We would like to inform you that the ${ACCELERATOR_NAME} deployment process has encountered an issue and has failed to complete successfully.

Deployment Details:
• Resource Group: ${RESOURCE_GROUP}
• WAF Enabled: ${WAF_ENABLED}
• EXP Enabled: ${EXP}

Run URL: ${RUN_URL}

Please investigate the deployment failure at your earliest convenience.

Best regards,
Your Automation Team

", - "subject": "${ACCELERATOR_NAME} Pipeline - Failed" + "subject": "[CI/CD-Automation] | [${ACCELERATOR_NAME}] | Deployment | FAILED | Deployment Error | Cleanup: ${CLEANUP_STATUS}" } EOF ) @@ -312,6 +343,8 @@ jobs: GITHUB_RUN_ID: ${{ github.run_id }} EXP: ${{ env.EXP }} WAF_ENABLED: ${{ env.WAF_ENABLED }} + CLEANUP_STATUS: ${{ steps.cleanup.outputs.CLEANUP_STATUS }} + RUN_E2E_TESTS: ${{ env.RUN_E2E_TESTS }} run: | RUN_URL="https://github.com/${GITHUB_REPOSITORY}/actions/runs/${GITHUB_RUN_ID}" @@ -324,7 +357,7 @@ jobs: EMAIL_BODY=$(cat <Dear Team,

We would like to inform you that the ${ACCELERATOR_NAME} deployment has completed successfully.

Deployment Details:
• Resource Group: ${RESOURCE_GROUP}
• Web App URL: ${WEBAPP_URL}
• E2E Tests: Skipped (as configured)

Configuration:
• WAF Enabled: ${WAF_ENABLED}
• EXP Enabled: ${EXP}

Run URL: ${RUN_URL}

Best regards,
Your Automation Team

", - "subject": "${ACCELERATOR_NAME} Pipeline - Deployment Success" + "subject": "[CI/CD-Automation] | [${ACCELERATOR_NAME}] | Deployment | SUCCESS | Tests Skipped | Cleanup: ${CLEANUP_STATUS}" } EOF ) @@ -332,7 +365,7 @@ jobs: EMAIL_BODY=$(cat <Dear Team,

We would like to inform you that the ${ACCELERATOR_NAME} deployment and testing process has completed successfully.

Deployment Details:
• Resource Group: ${RESOURCE_GROUP}
• Web App URL: ${WEBAPP_URL}
• E2E Tests: Passed ✅
• Test Suite: ${TEST_SUITE_NAME}
• Test Report: View Report

Configuration:
• WAF Enabled: ${WAF_ENABLED}
• EXP Enabled: ${EXP}

Run URL: ${RUN_URL}

Best regards,
Your Automation Team

", - "subject": "${ACCELERATOR_NAME} Pipeline - Test Automation - Success" + "subject": "[CI/CD-Automation] | [${ACCELERATOR_NAME}] | E2E Tests | SUCCESS | ${RUN_E2E_TESTS} | Cleanup: ${CLEANUP_STATUS}" } EOF ) @@ -355,6 +388,8 @@ jobs: INPUT_RESOURCE_GROUP_NAME: ${{ inputs.RESOURCE_GROUP_NAME }} ACCELERATOR_NAME: ${{ env.accelerator_name }} LOGICAPP_URL: ${{ secrets.EMAILNOTIFICATION_LOGICAPP_URL_TA }} + CLEANUP_STATUS: ${{ steps.cleanup.outputs.CLEANUP_STATUS }} + RUN_E2E_TESTS: ${{ env.RUN_E2E_TESTS }} # INPUT_TEST_REPORT_URL: ${{ inputs.TEST_REPORT_URL }} run: | RUN_URL="https://github.com/${{ env.GITHUB_REPOSITORY }}/actions/runs/${{ env.GITHUB_RUN_ID }}" @@ -366,7 +401,7 @@ jobs: EMAIL_BODY=$(cat <Dear Team,

We would like to inform you that ${ACCELERATOR_NAME} accelerator test automation process has encountered issues and failed to complete successfully.

Deployment Details:
• Resource Group: ${RESOURCE_GROUP}
• Web App URL: ${WEBAPP_URL}
• Deployment Status: ✅ Success
• E2E Tests: ❌ Failed
• Test Suite: ${TEST_SUITE_NAME}

Test Details:
• Test Report: View Report

Run URL: ${RUN_URL}

Please investigate the matter at your earliest convenience.

Best regards,
Your Automation Team

", - "subject": "${ACCELERATOR_NAME} Pipeline - Test Automation - Failed" + "subject": "[CI/CD-Automation] | [${ACCELERATOR_NAME}] | E2E Tests | FAILED | ${RUN_E2E_TESTS} | Cleanup: ${CLEANUP_STATUS}" } EOF ) @@ -387,6 +422,8 @@ jobs: INPUT_TEST_REPORT_URL: ${{ inputs.TEST_REPORT_URL }} ACCELERATOR_NAME: ${{ env.accelerator_name }} LOGICAPP_URL: ${{ secrets.EMAILNOTIFICATION_LOGICAPP_URL_TA }} + CLEANUP_STATUS: ${{ steps.cleanup.outputs.CLEANUP_STATUS }} + RUN_E2E_TESTS: ${{ env.RUN_E2E_TESTS }} run: | RUN_URL="https://github.com/${{ env.GITHUB_REPOSITORY }}/actions/runs/${{ env.GITHUB_RUN_ID }}" EXISTING_URL="$INPUT_EXISTING_WEBAPP_URL" @@ -396,7 +433,7 @@ jobs: EMAIL_BODY=$(cat <Dear Team,

The ${ACCELERATOR_NAME} pipeline executed against the specified Target URL and testing process has completed successfully.

Test Results:
• Status: ✅ Passed
• Test Suite: ${TEST_SUITE_NAME}
${TEST_REPORT_URL:+• Test Report: View Report}
• Target URL: ${EXISTING_URL}

Deployment: Skipped

Run URL: ${RUN_URL}

Best regards,
Your Automation Team

", - "subject": "${ACCELERATOR_NAME} Pipeline - Test Automation Passed " + "subject": "[CI/CD-Automation] | [${ACCELERATOR_NAME}] | E2E Tests | SUCCESS | ${RUN_E2E_TESTS} | Pre-Deployed" } EOF ) @@ -415,6 +452,8 @@ jobs: INPUT_TEST_REPORT_URL: ${{ inputs.TEST_REPORT_URL }} ACCELERATOR_NAME: ${{ env.accelerator_name }} LOGICAPP_URL: ${{ secrets.EMAILNOTIFICATION_LOGICAPP_URL_TA }} + CLEANUP_STATUS: ${{ steps.cleanup.outputs.CLEANUP_STATUS }} + RUN_E2E_TESTS: ${{ env.RUN_E2E_TESTS }} run: | RUN_URL="https://github.com/${{ env.GITHUB_REPOSITORY }}/actions/runs/${{ env.GITHUB_RUN_ID }}" EXISTING_URL="$INPUT_EXISTING_WEBAPP_URL" @@ -424,7 +463,7 @@ jobs: EMAIL_BODY=$(cat <Dear Team,

The ${ACCELERATOR_NAME} pipeline executed against the specified Target URL and the test automation has encountered issues and failed to complete successfully.

Failure Details:
• Target URL: ${EXISTING_URL}
${TEST_REPORT_URL:+• Test Report: View Report}
• Test Suite: ${TEST_SUITE_NAME}
• Deployment: Skipped

Run URL: ${RUN_URL}

Best regards,
Your Automation Team

", - "subject": "${ACCELERATOR_NAME} Pipeline - Test Automation Failed " + "subject": "[CI/CD-Automation] | [${ACCELERATOR_NAME}] | E2E Tests | FAILED | ${RUN_E2E_TESTS} | Pre-Deployed" } EOF ) From ca95dff4ecd2ced4be03a78c1dd2ed4f7d87291d Mon Sep 17 00:00:00 2001 From: Vamshi-Microsoft Date: Mon, 16 Mar 2026 15:48:32 +0530 Subject: [PATCH 02/16] Minor fixes on e2e test --- .github/workflows/job-send-notification.yml | 70 ++++++++++----------- 1 file changed, 33 insertions(+), 37 deletions(-) diff --git a/.github/workflows/job-send-notification.yml b/.github/workflows/job-send-notification.yml index d4b1dd0b..6ed5cf35 100644 --- a/.github/workflows/job-send-notification.yml +++ b/.github/workflows/job-send-notification.yml @@ -87,10 +87,10 @@ jobs: INPUT_TRIGGER_TYPE: ${{ inputs.trigger_type }} INPUT_WAF_ENABLED: ${{ inputs.waf_enabled }} INPUT_EXP: ${{ inputs.EXP }} - # INPUT_RUN_E2E_TESTS: ${{ inputs.run_e2e_tests }} + INPUT_RUN_E2E_TESTS: ${{ inputs.run_e2e_tests }} INPUT_EXISTING_WEBAPP_URL: ${{ inputs.existing_webapp_url }} INPUT_DEPLOY_RESULT: ${{ inputs.deploy_result }} - # INPUT_E2E_TEST_RESULT: ${{ inputs.e2e_test_result }} + INPUT_E2E_TEST_RESULT: ${{ inputs.e2e_test_result }} INPUT_CONTAINER_WEB_APPURL: ${{ inputs.CONTAINER_WEB_APPURL }} INPUT_RESOURCE_GROUP_NAME: ${{ inputs.RESOURCE_GROUP_NAME }} INPUT_QUOTA_FAILED: ${{ inputs.QUOTA_FAILED }} @@ -128,16 +128,16 @@ jobs: echo "✅ EXP: '$INPUT_EXP' is valid" fi - # # Validate run_e2e_tests (specific allowed values) - # if [[ -n "$INPUT_RUN_E2E_TESTS" ]]; then - # ALLOWED_VALUES=("None" "GoldenPath-Testing" "Smoke-Testing") - # if [[ ! " ${ALLOWED_VALUES[@]} " =~ " ${INPUT_RUN_E2E_TESTS} " ]]; then - # echo "❌ ERROR: run_e2e_tests '$INPUT_RUN_E2E_TESTS' is invalid. Allowed values: ${ALLOWED_VALUES[*]}" - # VALIDATION_FAILED=true - # else - # echo "✅ run_e2e_tests: '$INPUT_RUN_E2E_TESTS' is valid" - # fi - # fi + # Validate run_e2e_tests (specific allowed values) + if [[ -n "$INPUT_RUN_E2E_TESTS" ]]; then + ALLOWED_VALUES=("None" "GoldenPath-Testing" "Smoke-Testing") + if [[ ! " ${ALLOWED_VALUES[@]} " =~ " ${INPUT_RUN_E2E_TESTS} " ]]; then + echo "❌ ERROR: run_e2e_tests '$INPUT_RUN_E2E_TESTS' is invalid. Allowed values: ${ALLOWED_VALUES[*]}" + VALIDATION_FAILED=true + else + echo "✅ run_e2e_tests: '$INPUT_RUN_E2E_TESTS' is valid" + fi + fi # Validate existing_webapp_url (must start with https if provided) if [[ -n "$INPUT_EXISTING_WEBAPP_URL" ]]; then @@ -163,19 +163,19 @@ jobs: fi fi - # # Validate e2e_test_result (required, must be specific values) - # if [[ -z "$INPUT_E2E_TEST_RESULT" ]]; then - # echo "❌ ERROR: e2e_test_result is required but not provided" - # VALIDATION_FAILED=true - # else - # ALLOWED_TEST_RESULTS=("success" "failure" "skipped") - # if [[ ! " ${ALLOWED_TEST_RESULTS[@]} " =~ " ${INPUT_E2E_TEST_RESULT} " ]]; then - # echo "❌ ERROR: e2e_test_result '$INPUT_E2E_TEST_RESULT' is invalid. Allowed values: ${ALLOWED_TEST_RESULTS[*]}" - # VALIDATION_FAILED=true - # else - # echo "✅ e2e_test_result: '$INPUT_E2E_TEST_RESULT' is valid" - # fi - # fi + # Validate e2e_test_result (required, must be specific values) + if [[ -z "$INPUT_E2E_TEST_RESULT" ]]; then + echo "❌ ERROR: e2e_test_result is required but not provided" + VALIDATION_FAILED=true + else + ALLOWED_TEST_RESULTS=("success" "failure" "skipped") + if [[ ! " ${ALLOWED_TEST_RESULTS[@]} " =~ " ${INPUT_E2E_TEST_RESULT} " ]]; then + echo "❌ ERROR: e2e_test_result '$INPUT_E2E_TEST_RESULT' is invalid. Allowed values: ${ALLOWED_TEST_RESULTS[*]}" + VALIDATION_FAILED=true + else + echo "✅ e2e_test_result: '$INPUT_E2E_TEST_RESULT' is valid" + fi + fi # Validate CONTAINER_WEB_APPURL (must start with https if provided) if [[ -n "$INPUT_CONTAINER_WEB_APPURL" ]]; then @@ -336,7 +336,7 @@ jobs: INPUT_EXISTING_WEBAPP_URL: ${{ inputs.existing_webapp_url }} INPUT_RESOURCE_GROUP_NAME: ${{ inputs.RESOURCE_GROUP_NAME }} INPUT_TEST_REPORT_URL: ${{ inputs.TEST_REPORT_URL }} - # INPUT_E2E_TEST_RESULT: ${{ inputs.e2e_test_result }} + INPUT_E2E_TEST_RESULT: ${{ inputs.e2e_test_result }} ACCELERATOR_NAME: ${{ env.accelerator_name }} LOGICAPP_URL: ${{ secrets.EMAILNOTIFICATION_LOGICAPP_URL_TA }} GITHUB_REPOSITORY: ${{ github.repository }} @@ -345,13 +345,13 @@ jobs: WAF_ENABLED: ${{ env.WAF_ENABLED }} CLEANUP_STATUS: ${{ steps.cleanup.outputs.CLEANUP_STATUS }} RUN_E2E_TESTS: ${{ env.RUN_E2E_TESTS }} + TEST_SUITE_NAME: ${{ steps.test_suite.outputs.TEST_SUITE_NAME }} run: | RUN_URL="https://github.com/${GITHUB_REPOSITORY}/actions/runs/${GITHUB_RUN_ID}" WEBAPP_URL="${INPUT_CONTAINER_WEB_APPURL:-$INPUT_EXISTING_WEBAPP_URL}" RESOURCE_GROUP="$INPUT_RESOURCE_GROUP_NAME" TEST_REPORT_URL="$INPUT_TEST_REPORT_URL" - # TEST_SUITE_NAME="${{ steps.test_suite.outputs.TEST_SUITE_NAME }}" if [ "$INPUT_E2E_TEST_RESULT" = "skipped" ]; then EMAIL_BODY=$(cat < Date: Tue, 17 Mar 2026 10:42:42 +0530 Subject: [PATCH 03/16] fix: update email subject formatting in notification messages --- .github/workflows/job-send-notification.yml | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/.github/workflows/job-send-notification.yml b/.github/workflows/job-send-notification.yml index 6ed5cf35..a350a4ac 100644 --- a/.github/workflows/job-send-notification.yml +++ b/.github/workflows/job-send-notification.yml @@ -293,7 +293,7 @@ jobs: EMAIL_BODY=$(cat <Dear Team,

We would like to inform you that the ${ACCELERATOR_NAME} deployment has failed due to insufficient quota in the requested regions.

Issue Details:
• Quota check failed for GPT model
• Required GPT Capacity: ${{ env.GPT_MIN_CAPACITY }}
• Checked Regions: ${{ vars.AZURE_REGIONS }}

Run URL: ${RUN_URL}

Please resolve the quota issue and retry the deployment.

Best regards,
Your Automation Team

", - "subject": "[CI/CD-Automation] | [${ACCELERATOR_NAME}] | Deployment | FAILED | Insufficient Quota | Cleanup: ${CLEANUP_STATUS}" + "subject": "[CI/CD-Automation] [${ACCELERATOR_NAME}] | Deployment : FAILED | Insufficient Quota | Cleanup: ${CLEANUP_STATUS}" } EOF ) @@ -319,7 +319,7 @@ jobs: EMAIL_BODY=$(cat <Dear Team,

We would like to inform you that the ${ACCELERATOR_NAME} deployment process has encountered an issue and has failed to complete successfully.

Deployment Details:
• Resource Group: ${RESOURCE_GROUP}
• WAF Enabled: ${WAF_ENABLED}
• EXP Enabled: ${EXP}

Run URL: ${RUN_URL}

Please investigate the deployment failure at your earliest convenience.

Best regards,
Your Automation Team

", - "subject": "[CI/CD-Automation] | [${ACCELERATOR_NAME}] | Deployment | FAILED | Deployment Error | Cleanup: ${CLEANUP_STATUS}" + "subject": "[CI/CD-Automation] [${ACCELERATOR_NAME}] | Deployment : FAILED | Deployment Error | Cleanup: ${CLEANUP_STATUS}" } EOF ) @@ -357,7 +357,7 @@ jobs: EMAIL_BODY=$(cat <Dear Team,

We would like to inform you that the ${ACCELERATOR_NAME} deployment has completed successfully.

Deployment Details:
• Resource Group: ${RESOURCE_GROUP}
• Web App URL: ${WEBAPP_URL}
• E2E Tests: Skipped (as configured)

Configuration:
• WAF Enabled: ${WAF_ENABLED}
• EXP Enabled: ${EXP}

Run URL: ${RUN_URL}

Best regards,
Your Automation Team

", - "subject": "[CI/CD-Automation] | [${ACCELERATOR_NAME}] | Deployment | SUCCESS | Tests Skipped | Cleanup: ${CLEANUP_STATUS}" + "subject": "[CI/CD-Automation] [${ACCELERATOR_NAME}] | Deployment : SUCCESS | Tests Skipped | Cleanup: ${CLEANUP_STATUS}" } EOF ) @@ -365,7 +365,7 @@ jobs: EMAIL_BODY=$(cat <Dear Team,

We would like to inform you that the ${ACCELERATOR_NAME} deployment and testing process has completed successfully.

Deployment Details:
• Resource Group: ${RESOURCE_GROUP}
• Web App URL: ${WEBAPP_URL}
• E2E Tests: Passed ✅
• Test Suite: ${TEST_SUITE_NAME}
• Test Report: View Report

Configuration:
• WAF Enabled: ${WAF_ENABLED}
• EXP Enabled: ${EXP}

Run URL: ${RUN_URL}

Best regards,
Your Automation Team

", - "subject": "[CI/CD-Automation] | [${ACCELERATOR_NAME}] | E2E Tests | SUCCESS | ${RUN_E2E_TESTS} | Cleanup: ${CLEANUP_STATUS}" + "subject": "[CI/CD-Automation] [${ACCELERATOR_NAME}] | Deployment: SUCCESS | E2E Tests ${TEST_SUITE_NAME} : SUCCESS | Cleanup: ${CLEANUP_STATUS}" } EOF ) @@ -399,7 +399,7 @@ jobs: EMAIL_BODY=$(cat <Dear Team,

We would like to inform you that ${ACCELERATOR_NAME} accelerator test automation process has encountered issues and failed to complete successfully.

Deployment Details:
• Resource Group: ${RESOURCE_GROUP}
• Web App URL: ${WEBAPP_URL}
• Deployment Status: ✅ Success
• E2E Tests: ❌ Failed
• Test Suite: ${TEST_SUITE_NAME}

Test Details:
• Test Report: View Report

Run URL: ${RUN_URL}

Please investigate the matter at your earliest convenience.

Best regards,
Your Automation Team

", - "subject": "[CI/CD-Automation] | [${ACCELERATOR_NAME}] | E2E Tests | FAILED | ${RUN_E2E_TESTS} | Cleanup: ${CLEANUP_STATUS}" + "subject": "[CI/CD-Automation] [${ACCELERATOR_NAME}] | Deployment: SUCCESS | E2E Tests ${TEST_SUITE_NAME} : FAILED | Cleanup: ${CLEANUP_STATUS}" } EOF ) @@ -429,7 +429,7 @@ jobs: EMAIL_BODY=$(cat <Dear Team,

The ${ACCELERATOR_NAME} pipeline executed against the specified Target URL and testing process has completed successfully.

Test Results:
• Status: ✅ Passed
• Test Suite: ${TEST_SUITE_NAME}
${TEST_REPORT_URL:+• Test Report: View Report}
• Target URL: ${EXISTING_URL}

Deployment: Skipped

Run URL: ${RUN_URL}

Best regards,
Your Automation Team

", - "subject": "[CI/CD-Automation] | [${ACCELERATOR_NAME}] | E2E Tests | SUCCESS | ${RUN_E2E_TESTS} | Pre-Deployed" + "subject": "[CI/CD-Automation] [${ACCELERATOR_NAME}] | E2E Tests ${TEST_SUITE_NAME} : SUCCESS | Pre-Deployed RG" } EOF ) @@ -459,7 +459,7 @@ jobs: EMAIL_BODY=$(cat <Dear Team,

The ${ACCELERATOR_NAME} pipeline executed against the specified Target URL and the test automation has encountered issues and failed to complete successfully.

Failure Details:
• Target URL: ${EXISTING_URL}
${TEST_REPORT_URL:+• Test Report: View Report}
• Test Suite: ${TEST_SUITE_NAME}
• Deployment: Skipped

Run URL: ${RUN_URL}

Best regards,
Your Automation Team

", - "subject": "[CI/CD-Automation] | [${ACCELERATOR_NAME}] | E2E Tests | FAILED | ${RUN_E2E_TESTS} | Pre-Deployed" + "subject": "[CI/CD-Automation] [${ACCELERATOR_NAME}] | E2E Tests ${TEST_SUITE_NAME} : FAILED | Pre-Deployed RG" } EOF ) From 0703365f822d5e7174f1e4a592a45b3d84be43bc Mon Sep 17 00:00:00 2001 From: Vamshi-Microsoft Date: Tue, 17 Mar 2026 12:12:50 +0530 Subject: [PATCH 04/16] fix: update email subject formatting in notification messages --- .github/workflows/job-deploy.yml | 26 ++++++++++----------- .github/workflows/job-send-notification.yml | 8 +++---- 2 files changed, 17 insertions(+), 17 deletions(-) diff --git a/.github/workflows/job-deploy.yml b/.github/workflows/job-deploy.yml index 98cf0a2d..3fea5d55 100644 --- a/.github/workflows/job-deploy.yml +++ b/.github/workflows/job-deploy.yml @@ -90,12 +90,12 @@ on: value: ${{ jobs.azure-setup.outputs.QUOTA_FAILED }} env: - GPT_MIN_CAPACITY: 150 + GPT_MIN_CAPACITY: 50 BRANCH_NAME: ${{ github.event.workflow_run.head_branch || github.head_ref || github.ref_name }} WAF_ENABLED: ${{ inputs.trigger_type == 'workflow_dispatch' && (inputs.waf_enabled || false) || false }} EXP: ${{ inputs.trigger_type == 'workflow_dispatch' && (inputs.EXP || false) || false }} CLEANUP_RESOURCES: ${{ inputs.trigger_type != 'workflow_dispatch' || inputs.cleanup_resources }} - # RUN_E2E_TESTS: ${{ inputs.trigger_type == 'workflow_dispatch' && (inputs.run_e2e_tests || 'GoldenPath-Testing') || 'GoldenPath-Testing' }} + RUN_E2E_TESTS: ${{ inputs.trigger_type == 'workflow_dispatch' && (inputs.run_e2e_tests || 'GoldenPath-Testing') || 'GoldenPath-Testing' }} BUILD_DOCKER_IMAGE: ${{ inputs.trigger_type == 'workflow_dispatch' && (inputs.build_docker_image || false) || false }} jobs: @@ -121,7 +121,7 @@ jobs: INPUT_EXP: ${{ inputs.EXP }} INPUT_WAF_ENABLED: ${{ inputs.waf_enabled }} INPUT_CLEANUP_RESOURCES: ${{ inputs.cleanup_resources }} - # INPUT_RUN_E2E_TESTS: ${{ inputs.run_e2e_tests }} + INPUT_RUN_E2E_TESTS: ${{ inputs.run_e2e_tests }} INPUT_AZURE_ENV_LOG_ANALYTICS_WORKSPACE_ID: ${{ inputs.AZURE_ENV_LOG_ANALYTICS_WORKSPACE_ID }} INPUT_AZURE_EXISTING_AI_PROJECT_RESOURCE_ID: ${{ inputs.AZURE_EXISTING_AI_PROJECT_RESOURCE_ID }} INPUT_DOCKER_IMAGE_TAG: ${{ inputs.docker_image_tag }} @@ -176,16 +176,16 @@ jobs: echo "✅ cleanup_resources: '$INPUT_CLEANUP_RESOURCES' is valid" fi - # # Validate run_e2e_tests (specific allowed values) - # if [[ -n "$INPUT_RUN_E2E_TESTS" ]]; then - # ALLOWED_VALUES=("None" "GoldenPath-Testing" "Smoke-Testing") - # if [[ ! " ${ALLOWED_VALUES[@]} " =~ " ${INPUT_RUN_E2E_TESTS} " ]]; then - # echo "❌ ERROR: run_e2e_tests '$INPUT_RUN_E2E_TESTS' is invalid. Allowed values: ${ALLOWED_VALUES[*]}" - # VALIDATION_FAILED=true - # else - # echo "✅ run_e2e_tests: '$INPUT_RUN_E2E_TESTS' is valid" - # fi - # fi + # Validate run_e2e_tests (specific allowed values) + if [[ -n "$INPUT_RUN_E2E_TESTS" ]]; then + ALLOWED_VALUES=("None" "GoldenPath-Testing" "Smoke-Testing") + if [[ ! " ${ALLOWED_VALUES[@]} " =~ " ${INPUT_RUN_E2E_TESTS} " ]]; then + echo "❌ ERROR: run_e2e_tests '$INPUT_RUN_E2E_TESTS' is invalid. Allowed values: ${ALLOWED_VALUES[*]}" + VALIDATION_FAILED=true + else + echo "✅ run_e2e_tests: '$INPUT_RUN_E2E_TESTS' is valid" + fi + fi # Validate AZURE_ENV_LOG_ANALYTICS_WORKSPACE_ID (Azure Resource ID format) if [[ -n "$INPUT_AZURE_ENV_LOG_ANALYTICS_WORKSPACE_ID" ]]; then diff --git a/.github/workflows/job-send-notification.yml b/.github/workflows/job-send-notification.yml index a350a4ac..9f8b28e6 100644 --- a/.github/workflows/job-send-notification.yml +++ b/.github/workflows/job-send-notification.yml @@ -365,7 +365,7 @@ jobs: EMAIL_BODY=$(cat <Dear Team,

We would like to inform you that the ${ACCELERATOR_NAME} deployment and testing process has completed successfully.

Deployment Details:
• Resource Group: ${RESOURCE_GROUP}
• Web App URL: ${WEBAPP_URL}
• E2E Tests: Passed ✅
• Test Suite: ${TEST_SUITE_NAME}
• Test Report: View Report

Configuration:
• WAF Enabled: ${WAF_ENABLED}
• EXP Enabled: ${EXP}

Run URL: ${RUN_URL}

Best regards,
Your Automation Team

", - "subject": "[CI/CD-Automation] [${ACCELERATOR_NAME}] | Deployment: SUCCESS | E2E Tests ${TEST_SUITE_NAME} : SUCCESS | Cleanup: ${CLEANUP_STATUS}" + "subject": "[CI/CD-Automation] [${ACCELERATOR_NAME}] | Deployment: SUCCESS | E2E Tests : SUCCESS | Cleanup: ${CLEANUP_STATUS}" } EOF ) @@ -399,7 +399,7 @@ jobs: EMAIL_BODY=$(cat <Dear Team,

We would like to inform you that ${ACCELERATOR_NAME} accelerator test automation process has encountered issues and failed to complete successfully.

Deployment Details:
• Resource Group: ${RESOURCE_GROUP}
• Web App URL: ${WEBAPP_URL}
• Deployment Status: ✅ Success
• E2E Tests: ❌ Failed
• Test Suite: ${TEST_SUITE_NAME}

Test Details:
• Test Report: View Report

Run URL: ${RUN_URL}

Please investigate the matter at your earliest convenience.

Best regards,
Your Automation Team

", - "subject": "[CI/CD-Automation] [${ACCELERATOR_NAME}] | Deployment: SUCCESS | E2E Tests ${TEST_SUITE_NAME} : FAILED | Cleanup: ${CLEANUP_STATUS}" + "subject": "[CI/CD-Automation] [${ACCELERATOR_NAME}] | Deployment: SUCCESS | E2E Tests : FAILED | Cleanup: ${CLEANUP_STATUS}" } EOF ) @@ -429,7 +429,7 @@ jobs: EMAIL_BODY=$(cat <Dear Team,

The ${ACCELERATOR_NAME} pipeline executed against the specified Target URL and testing process has completed successfully.

Test Results:
• Status: ✅ Passed
• Test Suite: ${TEST_SUITE_NAME}
${TEST_REPORT_URL:+• Test Report: View Report}
• Target URL: ${EXISTING_URL}

Deployment: Skipped

Run URL: ${RUN_URL}

Best regards,
Your Automation Team

", - "subject": "[CI/CD-Automation] [${ACCELERATOR_NAME}] | E2E Tests ${TEST_SUITE_NAME} : SUCCESS | Pre-Deployed RG" + "subject": "[CI/CD-Automation] [${ACCELERATOR_NAME}] | E2E Tests : SUCCESS | Pre-Deployed RG" } EOF ) @@ -459,7 +459,7 @@ jobs: EMAIL_BODY=$(cat <Dear Team,

The ${ACCELERATOR_NAME} pipeline executed against the specified Target URL and the test automation has encountered issues and failed to complete successfully.

Failure Details:
• Target URL: ${EXISTING_URL}
${TEST_REPORT_URL:+• Test Report: View Report}
• Test Suite: ${TEST_SUITE_NAME}
• Deployment: Skipped

Run URL: ${RUN_URL}

Best regards,
Your Automation Team

", - "subject": "[CI/CD-Automation] [${ACCELERATOR_NAME}] | E2E Tests ${TEST_SUITE_NAME} : FAILED | Pre-Deployed RG" + "subject": "[CI/CD-Automation] [${ACCELERATOR_NAME}] | E2E Tests : FAILED | Pre-Deployed RG" } EOF ) From 95962cd8a4e219c0fb0029d6957330edf2af89a2 Mon Sep 17 00:00:00 2001 From: Vamshi-Microsoft Date: Tue, 17 Mar 2026 12:41:59 +0530 Subject: [PATCH 05/16] fix: update Docker image tag for main and default branches --- .github/workflows/job-deploy.yml | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/.github/workflows/job-deploy.yml b/.github/workflows/job-deploy.yml index 3fea5d55..22a04167 100644 --- a/.github/workflows/job-deploy.yml +++ b/.github/workflows/job-deploy.yml @@ -393,14 +393,14 @@ jobs: echo "Current branch: $BRANCH_NAME" if [[ "$BRANCH_NAME" == "main" ]]; then - IMAGE_TAG="latest" + IMAGE_TAG="latest_v2" elif [[ "$BRANCH_NAME" == "dev" ]]; then IMAGE_TAG="dev" elif [[ "$BRANCH_NAME" == "demo" ]]; then IMAGE_TAG="demo" else - IMAGE_TAG="latest" - echo "Using default for branch '$BRANCH_NAME' - image tag: latest" + IMAGE_TAG="latest_v2" + echo "Using default for branch '$BRANCH_NAME' - image tag: latest_v2" fi echo "Using existing Docker image tag: $IMAGE_TAG" fi From 4a17136350510c2a236683b92bbec3da7fc9f603 Mon Sep 17 00:00:00 2001 From: Vamshi-Microsoft Date: Tue, 17 Mar 2026 14:23:50 +0530 Subject: [PATCH 06/16] refactor: remove input validation step from notification job --- .github/workflows/job-send-notification.yml | 168 -------------------- 1 file changed, 168 deletions(-) diff --git a/.github/workflows/job-send-notification.yml b/.github/workflows/job-send-notification.yml index 9f8b28e6..99327c37 100644 --- a/.github/workflows/job-send-notification.yml +++ b/.github/workflows/job-send-notification.yml @@ -81,174 +81,6 @@ jobs: env: accelerator_name: "customer-chatbot-solution-accelerator" steps: - - name: Validate Workflow Input Parameters - shell: bash - env: - INPUT_TRIGGER_TYPE: ${{ inputs.trigger_type }} - INPUT_WAF_ENABLED: ${{ inputs.waf_enabled }} - INPUT_EXP: ${{ inputs.EXP }} - INPUT_RUN_E2E_TESTS: ${{ inputs.run_e2e_tests }} - INPUT_EXISTING_WEBAPP_URL: ${{ inputs.existing_webapp_url }} - INPUT_DEPLOY_RESULT: ${{ inputs.deploy_result }} - INPUT_E2E_TEST_RESULT: ${{ inputs.e2e_test_result }} - INPUT_CONTAINER_WEB_APPURL: ${{ inputs.CONTAINER_WEB_APPURL }} - INPUT_RESOURCE_GROUP_NAME: ${{ inputs.RESOURCE_GROUP_NAME }} - INPUT_QUOTA_FAILED: ${{ inputs.QUOTA_FAILED }} - INPUT_TEST_SUCCESS: ${{ inputs.TEST_SUCCESS }} - INPUT_TEST_REPORT_URL: ${{ inputs.TEST_REPORT_URL }} - INPUT_CLEANUP_RESULT: ${{ inputs.cleanup_result }} - run: | - echo "🔍 Validating workflow input parameters..." - VALIDATION_FAILED=false - - # Validate trigger_type (required - alphanumeric with underscores) - if [[ -z "$INPUT_TRIGGER_TYPE" ]]; then - echo "❌ ERROR: trigger_type is required but was not provided" - VALIDATION_FAILED=true - elif [[ ! "$INPUT_TRIGGER_TYPE" =~ ^[a-zA-Z0-9_]+$ ]]; then - echo "❌ ERROR: trigger_type '$INPUT_TRIGGER_TYPE' is invalid. Must contain only alphanumeric characters and underscores" - VALIDATION_FAILED=true - else - echo "✅ trigger_type: '$INPUT_TRIGGER_TYPE' is valid" - fi - - # Validate waf_enabled (boolean) - if [[ "$INPUT_WAF_ENABLED" != "true" && "$INPUT_WAF_ENABLED" != "false" ]]; then - echo "❌ ERROR: waf_enabled must be 'true' or 'false', got: '$INPUT_WAF_ENABLED'" - VALIDATION_FAILED=true - else - echo "✅ waf_enabled: '$INPUT_WAF_ENABLED' is valid" - fi - - # Validate EXP (boolean) - if [[ "$INPUT_EXP" != "true" && "$INPUT_EXP" != "false" ]]; then - echo "❌ ERROR: EXP must be 'true' or 'false', got: '$INPUT_EXP'" - VALIDATION_FAILED=true - else - echo "✅ EXP: '$INPUT_EXP' is valid" - fi - - # Validate run_e2e_tests (specific allowed values) - if [[ -n "$INPUT_RUN_E2E_TESTS" ]]; then - ALLOWED_VALUES=("None" "GoldenPath-Testing" "Smoke-Testing") - if [[ ! " ${ALLOWED_VALUES[@]} " =~ " ${INPUT_RUN_E2E_TESTS} " ]]; then - echo "❌ ERROR: run_e2e_tests '$INPUT_RUN_E2E_TESTS' is invalid. Allowed values: ${ALLOWED_VALUES[*]}" - VALIDATION_FAILED=true - else - echo "✅ run_e2e_tests: '$INPUT_RUN_E2E_TESTS' is valid" - fi - fi - - # Validate existing_webapp_url (must start with https if provided) - if [[ -n "$INPUT_EXISTING_WEBAPP_URL" ]]; then - if [[ ! "$INPUT_EXISTING_WEBAPP_URL" =~ ^https:// ]]; then - echo "❌ ERROR: existing_webapp_url must start with 'https://', got: '$INPUT_EXISTING_WEBAPP_URL'" - VALIDATION_FAILED=true - else - echo "✅ existing_webapp_url: '$INPUT_EXISTING_WEBAPP_URL' is valid" - fi - fi - - # Validate deploy_result (required, must be specific values) - if [[ -z "$INPUT_DEPLOY_RESULT" ]]; then - echo "❌ ERROR: deploy_result is required but not provided" - VALIDATION_FAILED=true - else - ALLOWED_DEPLOY_RESULTS=("success" "failure" "skipped") - if [[ ! " ${ALLOWED_DEPLOY_RESULTS[@]} " =~ " ${INPUT_DEPLOY_RESULT} " ]]; then - echo "❌ ERROR: deploy_result '$INPUT_DEPLOY_RESULT' is invalid. Allowed values: ${ALLOWED_DEPLOY_RESULTS[*]}" - VALIDATION_FAILED=true - else - echo "✅ deploy_result: '$INPUT_DEPLOY_RESULT' is valid" - fi - fi - - # Validate e2e_test_result (required, must be specific values) - if [[ -z "$INPUT_E2E_TEST_RESULT" ]]; then - echo "❌ ERROR: e2e_test_result is required but not provided" - VALIDATION_FAILED=true - else - ALLOWED_TEST_RESULTS=("success" "failure" "skipped") - if [[ ! " ${ALLOWED_TEST_RESULTS[@]} " =~ " ${INPUT_E2E_TEST_RESULT} " ]]; then - echo "❌ ERROR: e2e_test_result '$INPUT_E2E_TEST_RESULT' is invalid. Allowed values: ${ALLOWED_TEST_RESULTS[*]}" - VALIDATION_FAILED=true - else - echo "✅ e2e_test_result: '$INPUT_E2E_TEST_RESULT' is valid" - fi - fi - - # Validate CONTAINER_WEB_APPURL (must start with https if provided) - if [[ -n "$INPUT_CONTAINER_WEB_APPURL" ]]; then - if [[ ! "$INPUT_CONTAINER_WEB_APPURL" =~ ^https:// ]]; then - echo "❌ ERROR: CONTAINER_WEB_APPURL must start with 'https://', got: '$INPUT_CONTAINER_WEB_APPURL'" - VALIDATION_FAILED=true - else - echo "✅ CONTAINER_WEB_APPURL: '$INPUT_CONTAINER_WEB_APPURL' is valid" - fi - fi - - # Validate RESOURCE_GROUP_NAME (Azure resource group naming convention if provided) - if [[ -n "$INPUT_RESOURCE_GROUP_NAME" ]]; then - if [[ ! "$INPUT_RESOURCE_GROUP_NAME" =~ ^[a-zA-Z0-9._\(\)-]+$ ]] || [[ "$INPUT_RESOURCE_GROUP_NAME" =~ \.$ ]]; then - echo "❌ ERROR: RESOURCE_GROUP_NAME '$INPUT_RESOURCE_GROUP_NAME' is invalid. Must contain only alphanumerics, periods, underscores, hyphens, and parentheses. Cannot end with period." - VALIDATION_FAILED=true - elif [[ ${#INPUT_RESOURCE_GROUP_NAME} -gt 90 ]]; then - echo "❌ ERROR: RESOURCE_GROUP_NAME '$INPUT_RESOURCE_GROUP_NAME' exceeds 90 characters" - VALIDATION_FAILED=true - else - echo "✅ RESOURCE_GROUP_NAME: '$INPUT_RESOURCE_GROUP_NAME' is valid" - fi - fi - - # Validate QUOTA_FAILED (must be 'true' or 'false' or empty - defaults to 'false') - if [[ -n "$INPUT_QUOTA_FAILED" && "$INPUT_QUOTA_FAILED" != "true" && "$INPUT_QUOTA_FAILED" != "false" ]]; then - echo "❌ ERROR: QUOTA_FAILED must be 'true', 'false', or empty, got: '$INPUT_QUOTA_FAILED'" - VALIDATION_FAILED=true - else - echo "✅ QUOTA_FAILED: '${INPUT_QUOTA_FAILED:-false}' is valid" - fi - - # Validate TEST_SUCCESS (must be 'true' or 'false' or empty) - if [[ -n "$INPUT_TEST_SUCCESS" ]]; then - if [[ "$INPUT_TEST_SUCCESS" != "true" && "$INPUT_TEST_SUCCESS" != "false" ]]; then - echo "❌ ERROR: TEST_SUCCESS must be 'true', 'false', or empty, got: '$INPUT_TEST_SUCCESS'" - VALIDATION_FAILED=true - else - echo "✅ TEST_SUCCESS: '$INPUT_TEST_SUCCESS' is valid" - fi - fi - - # Validate TEST_REPORT_URL (must start with https if provided) - if [[ -n "$INPUT_TEST_REPORT_URL" ]]; then - if [[ ! "$INPUT_TEST_REPORT_URL" =~ ^https:// ]]; then - echo "❌ ERROR: TEST_REPORT_URL must start with 'https://', got: '$INPUT_TEST_REPORT_URL'" - VALIDATION_FAILED=true - else - echo "✅ TEST_REPORT_URL: '$INPUT_TEST_REPORT_URL' is valid" - fi - fi - - # Validate cleanup_result (must be specific values) - if [[ -n "$INPUT_CLEANUP_RESULT" ]]; then - ALLOWED_CLEANUP_RESULTS=("success" "failure" "skipped") - if [[ ! " ${ALLOWED_CLEANUP_RESULTS[@]} " =~ " ${INPUT_CLEANUP_RESULT} " ]]; then - echo "❌ ERROR: cleanup_result '$INPUT_CLEANUP_RESULT' is invalid. Allowed values: ${ALLOWED_CLEANUP_RESULTS[*]}" - VALIDATION_FAILED=true - else - echo "✅ cleanup_result: '$INPUT_CLEANUP_RESULT' is valid" - fi - fi - - # Fail workflow if any validation failed - if [[ "$VALIDATION_FAILED" == "true" ]]; then - echo "" - echo "❌ Parameter validation failed. Please correct the errors above and try again." - exit 1 - fi - - echo "" - echo "✅ All input parameters validated successfully!" - - name: Determine Test Suite Display Name id: test_suite shell: bash From 31aa051654da5a226184aefcf6cdc013cf4c624b Mon Sep 17 00:00:00 2001 From: Vamshi-Microsoft Date: Tue, 17 Mar 2026 14:28:21 +0530 Subject: [PATCH 07/16] Potential fix for pull request finding Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com> --- .github/workflows/job-send-notification.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/job-send-notification.yml b/.github/workflows/job-send-notification.yml index 99327c37..b566b676 100644 --- a/.github/workflows/job-send-notification.yml +++ b/.github/workflows/job-send-notification.yml @@ -121,7 +121,7 @@ jobs: LOGICAPP_URL: ${{ secrets.EMAILNOTIFICATION_LOGICAPP_URL_TA }} CLEANUP_STATUS: ${{ steps.cleanup.outputs.CLEANUP_STATUS }} run: | - RUN_URL="https://github.com/${GITHUB_REPOSITORY }/actions/runs/${GITHUB_RUN_ID}" + RUN_URL="https://github.com/${GITHUB_REPOSITORY}/actions/runs/${GITHUB_RUN_ID}" EMAIL_BODY=$(cat <Dear Team,

We would like to inform you that the ${ACCELERATOR_NAME} deployment has failed due to insufficient quota in the requested regions.

Issue Details:
• Quota check failed for GPT model
• Required GPT Capacity: ${{ env.GPT_MIN_CAPACITY }}
• Checked Regions: ${{ vars.AZURE_REGIONS }}

Run URL: ${RUN_URL}

Please resolve the quota issue and retry the deployment.

Best regards,
Your Automation Team

", From 3b3f172b5201d713955f419c77eaa2d534c48130 Mon Sep 17 00:00:00 2001 From: Vamshi-Microsoft Date: Tue, 17 Mar 2026 16:07:13 +0530 Subject: [PATCH 08/16] fix: update GPT_MIN_CAPACITY and enhance notification email formatting --- .github/workflows/job-send-notification.yml | 38 ++++++++++----------- 1 file changed, 19 insertions(+), 19 deletions(-) diff --git a/.github/workflows/job-send-notification.yml b/.github/workflows/job-send-notification.yml index 99327c37..f9d06256 100644 --- a/.github/workflows/job-send-notification.yml +++ b/.github/workflows/job-send-notification.yml @@ -68,7 +68,7 @@ on: type: string env: - GPT_MIN_CAPACITY: 100 + GPT_MIN_CAPACITY: 50 BRANCH_NAME: ${{ github.event.workflow_run.head_branch || github.head_ref || github.ref_name }} WAF_ENABLED: ${{ inputs.trigger_type == 'workflow_dispatch' && (inputs.waf_enabled || false) || false }} EXP: ${{ inputs.trigger_type == 'workflow_dispatch' && (inputs.EXP || false) || false }} @@ -106,9 +106,9 @@ jobs: CLEANUP_RESULT: ${{ inputs.cleanup_result }} run: | case "$CLEANUP_RESULT" in - success) echo "CLEANUP_STATUS=SUCCESS" >> $GITHUB_OUTPUT ;; - failure) echo "CLEANUP_STATUS=FAILED" >> $GITHUB_OUTPUT ;; - *) echo "CLEANUP_STATUS=SKIPPED" >> $GITHUB_OUTPUT ;; + success) echo "CLEANUP_STATUS=✅ SUCCESS" >> $GITHUB_OUTPUT ;; + failure) echo "CLEANUP_STATUS=❌ FAILED" >> $GITHUB_OUTPUT ;; + *) echo "CLEANUP_STATUS=⏭️ SKIPPED" >> $GITHUB_OUTPUT ;; esac - name: Send Quota Failure Notification @@ -121,11 +121,11 @@ jobs: LOGICAPP_URL: ${{ secrets.EMAILNOTIFICATION_LOGICAPP_URL_TA }} CLEANUP_STATUS: ${{ steps.cleanup.outputs.CLEANUP_STATUS }} run: | - RUN_URL="https://github.com/${GITHUB_REPOSITORY }/actions/runs/${GITHUB_RUN_ID}" + RUN_URL="https://github.com/${GITHUB_REPOSITORY}/actions/runs/${GITHUB_RUN_ID}" EMAIL_BODY=$(cat <Dear Team,

We would like to inform you that the ${ACCELERATOR_NAME} deployment has failed due to insufficient quota in the requested regions.

Issue Details:
• Quota check failed for GPT model
• Required GPT Capacity: ${{ env.GPT_MIN_CAPACITY }}
• Checked Regions: ${{ vars.AZURE_REGIONS }}

Run URL: ${RUN_URL}

Please resolve the quota issue and retry the deployment.

Best regards,
Your Automation Team

", - "subject": "[CI/CD-Automation] [${ACCELERATOR_NAME}] | Deployment : FAILED | Insufficient Quota | Cleanup: ${CLEANUP_STATUS}" + "body": "

Dear Team,

We would like to inform you that the ${ACCELERATOR_NAME} deployment has failed due to insufficient quota.

Status Summary:
StageStatus
Deployment❌ FAILED (Insufficient Quota)
E2E Tests⏭️ SKIPPED
Cleanup${CLEANUP_STATUS}

Issue Details:
• Quota check failed for GPT model
• Required GPT Capacity: ${{ env.GPT_MIN_CAPACITY }}
• Checked Regions: ${{ vars.AZURE_REGIONS }}

Run URL: ${RUN_URL}

Please resolve the quota issue and retry the deployment.

Best regards,
Your Automation Team

", + "subject": "[CI/CD-Automation] [${ACCELERATOR_NAME}]" } EOF ) @@ -150,8 +150,8 @@ jobs: EMAIL_BODY=$(cat <Dear Team,

We would like to inform you that the ${ACCELERATOR_NAME} deployment process has encountered an issue and has failed to complete successfully.

Deployment Details:
• Resource Group: ${RESOURCE_GROUP}
• WAF Enabled: ${WAF_ENABLED}
• EXP Enabled: ${EXP}

Run URL: ${RUN_URL}

Please investigate the deployment failure at your earliest convenience.

Best regards,
Your Automation Team

", - "subject": "[CI/CD-Automation] [${ACCELERATOR_NAME}] | Deployment : FAILED | Deployment Error | Cleanup: ${CLEANUP_STATUS}" + "body": "

Dear Team,

We would like to inform you that the ${ACCELERATOR_NAME} deployment has failed.

Status Summary:
StageStatus
Deployment❌ FAILED (Deployment Issue)
E2E Tests⏭️ SKIPPED
Cleanup${CLEANUP_STATUS}

Deployment Details:
• Resource Group: ${RESOURCE_GROUP}
• WAF Enabled: ${WAF_ENABLED}
• EXP Enabled: ${EXP}

Run URL: ${RUN_URL}

Please investigate the deployment failure at your earliest convenience.

Best regards,
Your Automation Team

", + "subject": "[CI/CD-Automation] [${ACCELERATOR_NAME}]" } EOF ) @@ -188,16 +188,16 @@ jobs: if [ "$INPUT_E2E_TEST_RESULT" = "skipped" ]; then EMAIL_BODY=$(cat <Dear Team,

We would like to inform you that the ${ACCELERATOR_NAME} deployment has completed successfully.

Deployment Details:
• Resource Group: ${RESOURCE_GROUP}
• Web App URL: ${WEBAPP_URL}
• E2E Tests: Skipped (as configured)

Configuration:
• WAF Enabled: ${WAF_ENABLED}
• EXP Enabled: ${EXP}

Run URL: ${RUN_URL}

Best regards,
Your Automation Team

", - "subject": "[CI/CD-Automation] [${ACCELERATOR_NAME}] | Deployment : SUCCESS | Tests Skipped | Cleanup: ${CLEANUP_STATUS}" + "body": "

Dear Team,

We would like to inform you that the ${ACCELERATOR_NAME} deployment has completed successfully.

Status Summary:
StageStatus
Deployment✅ SUCCESS
E2E Tests⏭️ SKIPPED
Cleanup${CLEANUP_STATUS}

Deployment Details:
• Resource Group: ${RESOURCE_GROUP}
• Web App URL: ${WEBAPP_URL}

Configuration:
• WAF Enabled: ${WAF_ENABLED}
• EXP Enabled: ${EXP}

Run URL: ${RUN_URL}

Best regards,
Your Automation Team

", + "subject": "[CI/CD-Automation] [${ACCELERATOR_NAME}]" } EOF ) else EMAIL_BODY=$(cat <Dear Team,

We would like to inform you that the ${ACCELERATOR_NAME} deployment and testing process has completed successfully.

Deployment Details:
• Resource Group: ${RESOURCE_GROUP}
• Web App URL: ${WEBAPP_URL}
• E2E Tests: Passed ✅
• Test Suite: ${TEST_SUITE_NAME}
• Test Report: View Report

Configuration:
• WAF Enabled: ${WAF_ENABLED}
• EXP Enabled: ${EXP}

Run URL: ${RUN_URL}

Best regards,
Your Automation Team

", - "subject": "[CI/CD-Automation] [${ACCELERATOR_NAME}] | Deployment: SUCCESS | E2E Tests : SUCCESS | Cleanup: ${CLEANUP_STATUS}" + "body": "

Dear Team,

We would like to inform you that the ${ACCELERATOR_NAME} deployment and testing has completed successfully.

Status Summary:
StageStatus
Deployment✅ SUCCESS
E2E Tests✅ SUCCESS
Cleanup${CLEANUP_STATUS}

Deployment Details:
• Resource Group: ${RESOURCE_GROUP}
• Web App URL: ${WEBAPP_URL}
• Test Suite: ${TEST_SUITE_NAME}
• Test Report: View Report

Configuration:
• WAF Enabled: ${WAF_ENABLED}
• EXP Enabled: ${EXP}

Run URL: ${RUN_URL}

Best regards,
Your Automation Team

", + "subject": "[CI/CD-Automation] [${ACCELERATOR_NAME}]" } EOF ) @@ -230,8 +230,8 @@ jobs: EMAIL_BODY=$(cat <Dear Team,

We would like to inform you that ${ACCELERATOR_NAME} accelerator test automation process has encountered issues and failed to complete successfully.

Deployment Details:
• Resource Group: ${RESOURCE_GROUP}
• Web App URL: ${WEBAPP_URL}
• Deployment Status: ✅ Success
• E2E Tests: ❌ Failed
• Test Suite: ${TEST_SUITE_NAME}

Test Details:
• Test Report: View Report

Run URL: ${RUN_URL}

Please investigate the matter at your earliest convenience.

Best regards,
Your Automation Team

", - "subject": "[CI/CD-Automation] [${ACCELERATOR_NAME}] | Deployment: SUCCESS | E2E Tests : FAILED | Cleanup: ${CLEANUP_STATUS}" + "body": "

Dear Team,

We would like to inform you that ${ACCELERATOR_NAME} test automation has failed.

Status Summary:
StageStatus
Deployment✅ SUCCESS
E2E Tests❌ FAILED
Cleanup${CLEANUP_STATUS}

Deployment Details:
• Resource Group: ${RESOURCE_GROUP}
• Web App URL: ${WEBAPP_URL}
• Test Suite: ${TEST_SUITE_NAME}
• Test Report: View Report

Run URL: ${RUN_URL}

Please investigate the matter at your earliest convenience.

Best regards,
Your Automation Team

", + "subject": "[CI/CD-Automation] [${ACCELERATOR_NAME}]" } EOF ) @@ -260,8 +260,8 @@ jobs: EMAIL_BODY=$(cat <Dear Team,

The ${ACCELERATOR_NAME} pipeline executed against the specified Target URL and testing process has completed successfully.

Test Results:
• Status: ✅ Passed
• Test Suite: ${TEST_SUITE_NAME}
${TEST_REPORT_URL:+• Test Report: View Report}
• Target URL: ${EXISTING_URL}

Deployment: Skipped

Run URL: ${RUN_URL}

Best regards,
Your Automation Team

", - "subject": "[CI/CD-Automation] [${ACCELERATOR_NAME}] | E2E Tests : SUCCESS | Pre-Deployed RG" + "body": "

Dear Team,

The ${ACCELERATOR_NAME} pipeline executed against the specified Target URL and testing has completed successfully.

Status Summary:
StageStatus
Deployment⏭️ SKIPPED (Tests executed on Pre-deployed RG)
E2E Tests✅ SUCCESS
Cleanup${CLEANUP_STATUS}

Test Results:
• Test Suite: ${TEST_SUITE_NAME}
${TEST_REPORT_URL:+• Test Report: View Report}
• Target URL: ${EXISTING_URL}

Run URL: ${RUN_URL}

Best regards,
Your Automation Team

", + "subject": "[CI/CD-Automation] [${ACCELERATOR_NAME}]" } EOF ) @@ -290,8 +290,8 @@ jobs: EMAIL_BODY=$(cat <Dear Team,

The ${ACCELERATOR_NAME} pipeline executed against the specified Target URL and the test automation has encountered issues and failed to complete successfully.

Failure Details:
• Target URL: ${EXISTING_URL}
${TEST_REPORT_URL:+• Test Report: View Report}
• Test Suite: ${TEST_SUITE_NAME}
• Deployment: Skipped

Run URL: ${RUN_URL}

Best regards,
Your Automation Team

", - "subject": "[CI/CD-Automation] [${ACCELERATOR_NAME}] | E2E Tests : FAILED | Pre-Deployed RG" + "body": "

Dear Team,

The ${ACCELERATOR_NAME} pipeline executed against the specified Target URL and test automation has failed.

Status Summary:
StageStatus
Deployment⏭️ SKIPPED (Tests executed on Pre-deployed RG)
E2E Tests❌ FAILED
Cleanup${CLEANUP_STATUS}

Failure Details:
• Target URL: ${EXISTING_URL}
${TEST_REPORT_URL:+• Test Report: View Report}
• Test Suite: ${TEST_SUITE_NAME}

Run URL: ${RUN_URL}

Best regards,
Your Automation Team

", + "subject": "[CI/CD-Automation] [${ACCELERATOR_NAME}]" } EOF ) From 70b06a6ec297a26d895d8b971d51b508b4560911 Mon Sep 17 00:00:00 2001 From: Vamshi-Microsoft Date: Tue, 17 Mar 2026 20:08:36 +0530 Subject: [PATCH 09/16] Refactor configuration --- .github/workflows/job-send-notification.yml | 29 ++++++++++++++------- 1 file changed, 20 insertions(+), 9 deletions(-) diff --git a/.github/workflows/job-send-notification.yml b/.github/workflows/job-send-notification.yml index f9d06256..89f89153 100644 --- a/.github/workflows/job-send-notification.yml +++ b/.github/workflows/job-send-notification.yml @@ -111,6 +111,17 @@ jobs: *) echo "CLEANUP_STATUS=⏭️ SKIPPED" >> $GITHUB_OUTPUT ;; esac + - name: Determine Configuration Label + id: config + shell: bash + env: + WAF_ENABLED: ${{ env.WAF_ENABLED }} + EXP: ${{ env.EXP }} + run: | + WAF_LABEL=$( [ "$WAF_ENABLED" = "true" ] && echo "WAF" || echo "Non-WAF" ) + EXP_LABEL=$( [ "$EXP" = "true" ] && echo "EXP" || echo "Non-EXP" ) + echo "CONFIG_LABEL=${WAF_LABEL} + ${EXP_LABEL}" >> $GITHUB_OUTPUT + - name: Send Quota Failure Notification if: inputs.deploy_result == 'failure' && inputs.QUOTA_FAILED == 'true' shell: bash @@ -120,11 +131,12 @@ jobs: ACCELERATOR_NAME: ${{ env.accelerator_name }} LOGICAPP_URL: ${{ secrets.EMAILNOTIFICATION_LOGICAPP_URL_TA }} CLEANUP_STATUS: ${{ steps.cleanup.outputs.CLEANUP_STATUS }} + CONFIG_LABEL: ${{ steps.config.outputs.CONFIG_LABEL }} run: | RUN_URL="https://github.com/${GITHUB_REPOSITORY}/actions/runs/${GITHUB_RUN_ID}" EMAIL_BODY=$(cat <Dear Team,

We would like to inform you that the ${ACCELERATOR_NAME} deployment has failed due to insufficient quota.

Status Summary:
StageStatus
Deployment❌ FAILED (Insufficient Quota)
E2E Tests⏭️ SKIPPED
Cleanup${CLEANUP_STATUS}

Issue Details:
• Quota check failed for GPT model
• Required GPT Capacity: ${{ env.GPT_MIN_CAPACITY }}
• Checked Regions: ${{ vars.AZURE_REGIONS }}

Run URL: ${RUN_URL}

Please resolve the quota issue and retry the deployment.

Best regards,
Your Automation Team

", + "body": "

Dear Team,

We would like to inform you that the ${ACCELERATOR_NAME} deployment has failed due to insufficient quota.

Status Summary:
StageStatus
Deployment❌ FAILED (Insufficient Quota)
E2E Tests⏭️ SKIPPED
Cleanup${CLEANUP_STATUS}

Issue Details:
• Quota check failed for GPT model
• Required GPT Capacity: ${{ env.GPT_MIN_CAPACITY }}
• Checked Regions: ${{ vars.AZURE_REGIONS }}

Configuration: ${CONFIG_LABEL}

Run URL: ${RUN_URL}

Please resolve the quota issue and retry the deployment.

Best regards,
Your Automation Team

", "subject": "[CI/CD-Automation] [${ACCELERATOR_NAME}]" } EOF @@ -141,8 +153,7 @@ jobs: INPUT_RESOURCE_GROUP_NAME: ${{ inputs.RESOURCE_GROUP_NAME }} ACCELERATOR_NAME: ${{ env.accelerator_name }} LOGICAPP_URL: ${{ secrets.EMAILNOTIFICATION_LOGICAPP_URL_TA }} - WAF_ENABLED: ${{ env.WAF_ENABLED }} - EXP: ${{ env.EXP }} + CONFIG_LABEL: ${{ steps.config.outputs.CONFIG_LABEL }} CLEANUP_STATUS: ${{ steps.cleanup.outputs.CLEANUP_STATUS }} run: | RUN_URL="https://github.com/${{ github.repository }}/actions/runs/${{ github.run_id }}" @@ -150,7 +161,7 @@ jobs: EMAIL_BODY=$(cat <Dear Team,

We would like to inform you that the ${ACCELERATOR_NAME} deployment has failed.

Status Summary:
StageStatus
Deployment❌ FAILED (Deployment Issue)
E2E Tests⏭️ SKIPPED
Cleanup${CLEANUP_STATUS}

Deployment Details:
• Resource Group: ${RESOURCE_GROUP}
• WAF Enabled: ${WAF_ENABLED}
• EXP Enabled: ${EXP}

Run URL: ${RUN_URL}

Please investigate the deployment failure at your earliest convenience.

Best regards,
Your Automation Team

", + "body": "

Dear Team,

We would like to inform you that the ${ACCELERATOR_NAME} deployment has failed.

Status Summary:
StageStatus
Deployment❌ FAILED (Deployment Issue)
E2E Tests⏭️ SKIPPED
Cleanup${CLEANUP_STATUS}

Deployment Details:
• Resource Group: ${RESOURCE_GROUP}

Configuration: ${CONFIG_LABEL}

Run URL: ${RUN_URL}

Please investigate the deployment failure at your earliest convenience.

Best regards,
Your Automation Team

", "subject": "[CI/CD-Automation] [${ACCELERATOR_NAME}]" } EOF @@ -173,8 +184,7 @@ jobs: LOGICAPP_URL: ${{ secrets.EMAILNOTIFICATION_LOGICAPP_URL_TA }} GITHUB_REPOSITORY: ${{ github.repository }} GITHUB_RUN_ID: ${{ github.run_id }} - EXP: ${{ env.EXP }} - WAF_ENABLED: ${{ env.WAF_ENABLED }} + CONFIG_LABEL: ${{ steps.config.outputs.CONFIG_LABEL }} CLEANUP_STATUS: ${{ steps.cleanup.outputs.CLEANUP_STATUS }} RUN_E2E_TESTS: ${{ env.RUN_E2E_TESTS }} TEST_SUITE_NAME: ${{ steps.test_suite.outputs.TEST_SUITE_NAME }} @@ -188,7 +198,7 @@ jobs: if [ "$INPUT_E2E_TEST_RESULT" = "skipped" ]; then EMAIL_BODY=$(cat <Dear Team,

We would like to inform you that the ${ACCELERATOR_NAME} deployment has completed successfully.

Status Summary:
StageStatus
Deployment✅ SUCCESS
E2E Tests⏭️ SKIPPED
Cleanup${CLEANUP_STATUS}

Deployment Details:
• Resource Group: ${RESOURCE_GROUP}
• Web App URL: ${WEBAPP_URL}

Configuration:
• WAF Enabled: ${WAF_ENABLED}
• EXP Enabled: ${EXP}

Run URL: ${RUN_URL}

Best regards,
Your Automation Team

", + "body": "

Dear Team,

We would like to inform you that the ${ACCELERATOR_NAME} deployment has completed successfully.

Status Summary:
StageStatus
Deployment✅ SUCCESS
E2E Tests⏭️ SKIPPED
Cleanup${CLEANUP_STATUS}

Deployment Details:
• Resource Group: ${RESOURCE_GROUP}
• Web App URL: ${WEBAPP_URL}

Configuration: ${CONFIG_LABEL}

Run URL: ${RUN_URL}

Best regards,
Your Automation Team

", "subject": "[CI/CD-Automation] [${ACCELERATOR_NAME}]" } EOF @@ -196,7 +206,7 @@ jobs: else EMAIL_BODY=$(cat <Dear Team,

We would like to inform you that the ${ACCELERATOR_NAME} deployment and testing has completed successfully.

Status Summary:
StageStatus
Deployment✅ SUCCESS
E2E Tests✅ SUCCESS
Cleanup${CLEANUP_STATUS}

Deployment Details:
• Resource Group: ${RESOURCE_GROUP}
• Web App URL: ${WEBAPP_URL}
• Test Suite: ${TEST_SUITE_NAME}
• Test Report: View Report

Configuration:
• WAF Enabled: ${WAF_ENABLED}
• EXP Enabled: ${EXP}

Run URL: ${RUN_URL}

Best regards,
Your Automation Team

", + "body": "

Dear Team,

We would like to inform you that the ${ACCELERATOR_NAME} deployment and testing has completed successfully.

Status Summary:
StageStatus
Deployment✅ SUCCESS
E2E Tests✅ SUCCESS
Cleanup${CLEANUP_STATUS}

Deployment Details:
• Resource Group: ${RESOURCE_GROUP}
• Web App URL: ${WEBAPP_URL}
• Test Suite: ${TEST_SUITE_NAME}
• Test Report: View Report

Configuration: ${CONFIG_LABEL}

Run URL: ${RUN_URL}

Best regards,
Your Automation Team

", "subject": "[CI/CD-Automation] [${ACCELERATOR_NAME}]" } EOF @@ -219,6 +229,7 @@ jobs: ACCELERATOR_NAME: ${{ env.accelerator_name }} LOGICAPP_URL: ${{ secrets.EMAILNOTIFICATION_LOGICAPP_URL_TA }} CLEANUP_STATUS: ${{ steps.cleanup.outputs.CLEANUP_STATUS }} + CONFIG_LABEL: ${{ steps.config.outputs.CONFIG_LABEL }} RUN_E2E_TESTS: ${{ env.RUN_E2E_TESTS }} TEST_SUITE_NAME: ${{ steps.test_suite.outputs.TEST_SUITE_NAME }} INPUT_TEST_REPORT_URL: ${{ inputs.TEST_REPORT_URL }} @@ -230,7 +241,7 @@ jobs: EMAIL_BODY=$(cat <Dear Team,

We would like to inform you that ${ACCELERATOR_NAME} test automation has failed.

Status Summary:
StageStatus
Deployment✅ SUCCESS
E2E Tests❌ FAILED
Cleanup${CLEANUP_STATUS}

Deployment Details:
• Resource Group: ${RESOURCE_GROUP}
• Web App URL: ${WEBAPP_URL}
• Test Suite: ${TEST_SUITE_NAME}
• Test Report: View Report

Run URL: ${RUN_URL}

Please investigate the matter at your earliest convenience.

Best regards,
Your Automation Team

", + "body": "

Dear Team,

We would like to inform you that ${ACCELERATOR_NAME} test automation has failed.

Status Summary:
StageStatus
Deployment✅ SUCCESS
E2E Tests❌ FAILED
Cleanup${CLEANUP_STATUS}

Deployment Details:
• Resource Group: ${RESOURCE_GROUP}
• Web App URL: ${WEBAPP_URL}
• Test Suite: ${TEST_SUITE_NAME}
• Test Report: View Report

Configuration: ${CONFIG_LABEL}

Run URL: ${RUN_URL}

Please investigate the matter at your earliest convenience.

Best regards,
Your Automation Team

", "subject": "[CI/CD-Automation] [${ACCELERATOR_NAME}]" } EOF From 74a2f4e1e970c58195f9576f597e2d4c9bea6cf2 Mon Sep 17 00:00:00 2001 From: Vamshi-Microsoft Date: Tue, 17 Mar 2026 20:33:10 +0530 Subject: [PATCH 10/16] fix: enhance cleanup status messaging for better clarity --- .github/workflows/job-send-notification.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/job-send-notification.yml b/.github/workflows/job-send-notification.yml index 89f89153..2a3b603d 100644 --- a/.github/workflows/job-send-notification.yml +++ b/.github/workflows/job-send-notification.yml @@ -107,8 +107,8 @@ jobs: run: | case "$CLEANUP_RESULT" in success) echo "CLEANUP_STATUS=✅ SUCCESS" >> $GITHUB_OUTPUT ;; - failure) echo "CLEANUP_STATUS=❌ FAILED" >> $GITHUB_OUTPUT ;; - *) echo "CLEANUP_STATUS=⏭️ SKIPPED" >> $GITHUB_OUTPUT ;; + failure) echo "CLEANUP_STATUS=❌ FAILED (Needs Manual Cleanup)" >> $GITHUB_OUTPUT ;; + *) echo "CLEANUP_STATUS=⏭️ SKIPPED (Needs Manual Cleanup)" >> $GITHUB_OUTPUT ;; esac - name: Determine Configuration Label From b7387bbddb11631278811b5d508f1a9e7dc45eae Mon Sep 17 00:00:00 2001 From: Vamshi-Microsoft Date: Wed, 18 Mar 2026 13:46:50 +0530 Subject: [PATCH 11/16] fix: update condition for Existing URL Success Notification to include TEST_SUCCESS checks --- .github/workflows/job-send-notification.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/job-send-notification.yml b/.github/workflows/job-send-notification.yml index 2a3b603d..460d1231 100644 --- a/.github/workflows/job-send-notification.yml +++ b/.github/workflows/job-send-notification.yml @@ -252,7 +252,7 @@ jobs: -d "$EMAIL_BODY" || echo "Failed to send test failure notification" - name: Send Existing URL Success Notification - if: inputs.deploy_result == 'skipped' && inputs.existing_webapp_url != '' && inputs.e2e_test_result == 'success' + if: inputs.deploy_result == 'skipped' && inputs.existing_webapp_url != '' && inputs.e2e_test_result == 'success' && (inputs.TEST_SUCCESS == 'true' || inputs.TEST_SUCCESS == '') shell: bash env: GITHUB_REPOSITORY: ${{ github.repository }} From 792928a99258503a5705ac9150e2b0d56306f83c Mon Sep 17 00:00:00 2001 From: Vamshi-Microsoft Date: Fri, 20 Mar 2026 13:11:52 +0530 Subject: [PATCH 12/16] fix: update notification subjects for clarity and consistency --- .github/workflows/job-send-notification.yml | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/.github/workflows/job-send-notification.yml b/.github/workflows/job-send-notification.yml index 460d1231..2b120bf6 100644 --- a/.github/workflows/job-send-notification.yml +++ b/.github/workflows/job-send-notification.yml @@ -79,7 +79,7 @@ jobs: runs-on: ubuntu-latest continue-on-error: true env: - accelerator_name: "customer-chatbot-solution-accelerator" + accelerator_name: "BYOCC" steps: - name: Determine Test Suite Display Name id: test_suite @@ -137,7 +137,7 @@ jobs: EMAIL_BODY=$(cat <Dear Team,

We would like to inform you that the ${ACCELERATOR_NAME} deployment has failed due to insufficient quota.

Status Summary:
StageStatus
Deployment❌ FAILED (Insufficient Quota)
E2E Tests⏭️ SKIPPED
Cleanup${CLEANUP_STATUS}

Issue Details:
• Quota check failed for GPT model
• Required GPT Capacity: ${{ env.GPT_MIN_CAPACITY }}
• Checked Regions: ${{ vars.AZURE_REGIONS }}

Configuration: ${CONFIG_LABEL}

Run URL: ${RUN_URL}

Please resolve the quota issue and retry the deployment.

Best regards,
Your Automation Team

", - "subject": "[CI/CD-Automation] [${ACCELERATOR_NAME}]" + "subject": "[CI/CD-Automation] [${ACCELERATOR_NAME}] Insufficient Quota" } EOF ) @@ -162,7 +162,7 @@ jobs: EMAIL_BODY=$(cat <Dear Team,

We would like to inform you that the ${ACCELERATOR_NAME} deployment has failed.

Status Summary:
StageStatus
Deployment❌ FAILED (Deployment Issue)
E2E Tests⏭️ SKIPPED
Cleanup${CLEANUP_STATUS}

Deployment Details:
• Resource Group: ${RESOURCE_GROUP}

Configuration: ${CONFIG_LABEL}

Run URL: ${RUN_URL}

Please investigate the deployment failure at your earliest convenience.

Best regards,
Your Automation Team

", - "subject": "[CI/CD-Automation] [${ACCELERATOR_NAME}]" + "subject": "[CI/CD-Automation] [${ACCELERATOR_NAME}] Deployment-Failed" } EOF ) @@ -199,7 +199,7 @@ jobs: EMAIL_BODY=$(cat <Dear Team,

We would like to inform you that the ${ACCELERATOR_NAME} deployment has completed successfully.

Status Summary:
StageStatus
Deployment✅ SUCCESS
E2E Tests⏭️ SKIPPED
Cleanup${CLEANUP_STATUS}

Deployment Details:
• Resource Group: ${RESOURCE_GROUP}
• Web App URL: ${WEBAPP_URL}

Configuration: ${CONFIG_LABEL}

Run URL: ${RUN_URL}

Best regards,
Your Automation Team

", - "subject": "[CI/CD-Automation] [${ACCELERATOR_NAME}]" + "subject": "[CI/CD-Automation] [${ACCELERATOR_NAME}] Success" } EOF ) @@ -207,7 +207,7 @@ jobs: EMAIL_BODY=$(cat <Dear Team,

We would like to inform you that the ${ACCELERATOR_NAME} deployment and testing has completed successfully.

Status Summary:
StageStatus
Deployment✅ SUCCESS
E2E Tests✅ SUCCESS
Cleanup${CLEANUP_STATUS}

Deployment Details:
• Resource Group: ${RESOURCE_GROUP}
• Web App URL: ${WEBAPP_URL}
• Test Suite: ${TEST_SUITE_NAME}
• Test Report: View Report

Configuration: ${CONFIG_LABEL}

Run URL: ${RUN_URL}

Best regards,
Your Automation Team

", - "subject": "[CI/CD-Automation] [${ACCELERATOR_NAME}]" + "subject": "[CI/CD-Automation] [${ACCELERATOR_NAME}] Success" } EOF ) @@ -242,7 +242,7 @@ jobs: EMAIL_BODY=$(cat <Dear Team,

We would like to inform you that ${ACCELERATOR_NAME} test automation has failed.

Status Summary:
StageStatus
Deployment✅ SUCCESS
E2E Tests❌ FAILED
Cleanup${CLEANUP_STATUS}

Deployment Details:
• Resource Group: ${RESOURCE_GROUP}
• Web App URL: ${WEBAPP_URL}
• Test Suite: ${TEST_SUITE_NAME}
• Test Report: View Report

Configuration: ${CONFIG_LABEL}

Run URL: ${RUN_URL}

Please investigate the matter at your earliest convenience.

Best regards,
Your Automation Team

", - "subject": "[CI/CD-Automation] [${ACCELERATOR_NAME}]" + "subject": "[CI/CD-Automation] [${ACCELERATOR_NAME}] E2E Test-Failed" } EOF ) @@ -272,7 +272,7 @@ jobs: EMAIL_BODY=$(cat <Dear Team,

The ${ACCELERATOR_NAME} pipeline executed against the specified Target URL and testing has completed successfully.

Status Summary:
StageStatus
Deployment⏭️ SKIPPED (Tests executed on Pre-deployed RG)
E2E Tests✅ SUCCESS
Cleanup${CLEANUP_STATUS}

Test Results:
• Test Suite: ${TEST_SUITE_NAME}
${TEST_REPORT_URL:+• Test Report: View Report}
• Target URL: ${EXISTING_URL}

Run URL: ${RUN_URL}

Best regards,
Your Automation Team

", - "subject": "[CI/CD-Automation] [${ACCELERATOR_NAME}]" + "subject": "[CI/CD-Automation] [${ACCELERATOR_NAME}] Success" } EOF ) @@ -302,7 +302,7 @@ jobs: EMAIL_BODY=$(cat <Dear Team,

The ${ACCELERATOR_NAME} pipeline executed against the specified Target URL and test automation has failed.

Status Summary:
StageStatus
Deployment⏭️ SKIPPED (Tests executed on Pre-deployed RG)
E2E Tests❌ FAILED
Cleanup${CLEANUP_STATUS}

Failure Details:
• Target URL: ${EXISTING_URL}
${TEST_REPORT_URL:+• Test Report: View Report}
• Test Suite: ${TEST_SUITE_NAME}

Run URL: ${RUN_URL}

Best regards,
Your Automation Team

", - "subject": "[CI/CD-Automation] [${ACCELERATOR_NAME}]" + "subject": "[CI/CD-Automation] [${ACCELERATOR_NAME}] E2E Test-Failed" } EOF ) From 07d21cba4cae3b9310d8ff1e8fc520361965a9c5 Mon Sep 17 00:00:00 2001 From: Vamshi-Microsoft Date: Fri, 20 Mar 2026 13:29:45 +0530 Subject: [PATCH 13/16] fix: implement retry logic for data upload and agent creation scripts --- .github/workflows/job-deploy-linux.yml | 44 +++++++++++++++----------- 1 file changed, 26 insertions(+), 18 deletions(-) diff --git a/.github/workflows/job-deploy-linux.yml b/.github/workflows/job-deploy-linux.yml index 09ed696f..09adace3 100644 --- a/.github/workflows/job-deploy-linux.yml +++ b/.github/workflows/job-deploy-linux.yml @@ -409,15 +409,19 @@ jobs: # Navigate to workspace root cd $GITHUB_WORKSPACE - # Run the data upload script (it will pull parameters from azd env and install its own requirements) - bash ./infra/scripts/data_scripts/run_upload_data_scripts.sh - - if [[ $? -eq 0 ]]; then - echo "✅ Data upload completed successfully" - else - echo "❌ Data upload failed" - exit 1 - fi + MAX_RETRIES=3 + RETRY_DELAY=30 + for attempt in $(seq 1 $MAX_RETRIES); do + echo "🔄 Attempt $attempt of $MAX_RETRIES..." + bash ./infra/scripts/data_scripts/run_upload_data_scripts.sh && break + if [[ $attempt -eq $MAX_RETRIES ]]; then + echo "❌ Data upload failed after $MAX_RETRIES attempts" + exit 1 + fi + echo "⚠️ Attempt $attempt failed. Retrying in ${RETRY_DELAY}s..." + sleep $RETRY_DELAY + done + echo "✅ Data upload completed successfully" - name: Run Agent Creation Scripts shell: bash run: | @@ -426,15 +430,19 @@ jobs: # Navigate to workspace root cd $GITHUB_WORKSPACE - # Run the agent creation script (it will pull parameters from azd env and install its own requirements) - bash ./infra/scripts/agent_scripts/run_create_agents_scripts.sh - - if [[ $? -eq 0 ]]; then - echo "✅ Agent creation completed successfully" - else - echo "❌ Agent creation failed" - exit 1 - fi + MAX_RETRIES=3 + RETRY_DELAY=30 + for attempt in $(seq 1 $MAX_RETRIES); do + echo "🔄 Attempt $attempt of $MAX_RETRIES..." + bash ./infra/scripts/agent_scripts/run_create_agents_scripts.sh && break + if [[ $attempt -eq $MAX_RETRIES ]]; then + echo "❌ Agent creation failed after $MAX_RETRIES attempts" + exit 1 + fi + echo "⚠️ Attempt $attempt failed. Retrying in ${RETRY_DELAY}s..." + sleep $RETRY_DELAY + done + echo "✅ Agent creation completed successfully" - name: Wait for Data Propagation shell: bash From c98c56b7203cc584fe89d042a29795c9b638750d Mon Sep 17 00:00:00 2001 From: Vamshi-Microsoft Date: Fri, 20 Mar 2026 15:03:36 +0530 Subject: [PATCH 14/16] Minor fix --- .github/workflows/deploy-orchestrator.yml | 34 ++++++++++----------- .github/workflows/job-send-notification.yml | 6 ++-- 2 files changed, 19 insertions(+), 21 deletions(-) diff --git a/.github/workflows/deploy-orchestrator.yml b/.github/workflows/deploy-orchestrator.yml index 97961833..27ac055c 100644 --- a/.github/workflows/deploy-orchestrator.yml +++ b/.github/workflows/deploy-orchestrator.yml @@ -102,10 +102,25 @@ jobs: TEST_SUITE: ${{ inputs.trigger_type == 'workflow_dispatch' && inputs.run_e2e_tests || 'GoldenPath-Testing' }} secrets: inherit + cleanup-deployment: + if: "always() && needs.deploy.outputs.RESOURCE_GROUP_NAME != '' && inputs.existing_webapp_url == '' && (inputs.trigger_type != 'workflow_dispatch' || inputs.cleanup_resources)" + needs: [docker-build, deploy, e2e-test] + uses: ./.github/workflows/job-cleanup-deployment.yml + with: + runner_os: ${{ inputs.runner_os }} + trigger_type: ${{ inputs.trigger_type }} + cleanup_resources: ${{ inputs.cleanup_resources }} + existing_webapp_url: ${{ inputs.existing_webapp_url }} + RESOURCE_GROUP_NAME: ${{ needs.deploy.outputs.RESOURCE_GROUP_NAME }} + AZURE_LOCATION: ${{ needs.deploy.outputs.AZURE_LOCATION }} + AZURE_ENV_OPENAI_LOCATION: ${{ needs.deploy.outputs.AZURE_ENV_OPENAI_LOCATION }} + ENV_NAME: ${{ needs.deploy.outputs.ENV_NAME }} + IMAGE_TAG: ${{ needs.deploy.outputs.IMAGE_TAG }} + secrets: inherit + send-notification: if: "!cancelled()" needs: [docker-build, deploy, e2e-test, cleanup-deployment] - uses: ./.github/workflows/job-send-notification.yml with: trigger_type: ${{ inputs.trigger_type }} @@ -122,20 +137,3 @@ jobs: TEST_REPORT_URL: ${{ needs.e2e-test.outputs.TEST_REPORT_URL }} cleanup_result: ${{ needs.cleanup-deployment.result }} secrets: inherit - - cleanup-deployment: - if: "always() && needs.deploy.outputs.RESOURCE_GROUP_NAME != '' && inputs.existing_webapp_url == '' && (inputs.trigger_type != 'workflow_dispatch' || inputs.cleanup_resources)" - needs: [docker-build, deploy, e2e-test] - - uses: ./.github/workflows/job-cleanup-deployment.yml - with: - runner_os: ${{ inputs.runner_os }} - trigger_type: ${{ inputs.trigger_type }} - cleanup_resources: ${{ inputs.cleanup_resources }} - existing_webapp_url: ${{ inputs.existing_webapp_url }} - RESOURCE_GROUP_NAME: ${{ needs.deploy.outputs.RESOURCE_GROUP_NAME }} - AZURE_LOCATION: ${{ needs.deploy.outputs.AZURE_LOCATION }} - AZURE_ENV_OPENAI_LOCATION: ${{ needs.deploy.outputs.AZURE_ENV_OPENAI_LOCATION }} - ENV_NAME: ${{ needs.deploy.outputs.ENV_NAME }} - IMAGE_TAG: ${{ needs.deploy.outputs.IMAGE_TAG }} - secrets: inherit diff --git a/.github/workflows/job-send-notification.yml b/.github/workflows/job-send-notification.yml index 2b120bf6..5a6dc47a 100644 --- a/.github/workflows/job-send-notification.yml +++ b/.github/workflows/job-send-notification.yml @@ -136,7 +136,7 @@ jobs: RUN_URL="https://github.com/${GITHUB_REPOSITORY}/actions/runs/${GITHUB_RUN_ID}" EMAIL_BODY=$(cat <Dear Team,

We would like to inform you that the ${ACCELERATOR_NAME} deployment has failed due to insufficient quota.

Status Summary:
StageStatus
Deployment❌ FAILED (Insufficient Quota)
E2E Tests⏭️ SKIPPED
Cleanup${CLEANUP_STATUS}

Issue Details:
• Quota check failed for GPT model
• Required GPT Capacity: ${{ env.GPT_MIN_CAPACITY }}
• Checked Regions: ${{ vars.AZURE_REGIONS }}

Configuration: ${CONFIG_LABEL}

Run URL: ${RUN_URL}

Please resolve the quota issue and retry the deployment.

Best regards,
Your Automation Team

", + "body": "

Dear Team,

We would like to inform you that the ${ACCELERATOR_NAME} deployment has failed due to insufficient quota.

Status Summary:
StageStatus
Deployment❌ FAILED (Insufficient Quota)
E2E Tests⏭️ SKIPPED
Cleanup${CLEANUP_STATUS}

Configuration: ${CONFIG_LABEL}

Run URL: ${RUN_URL}

Please resolve the quota issue and retry the deployment.

Best regards,
Your Automation Team

", "subject": "[CI/CD-Automation] [${ACCELERATOR_NAME}] Insufficient Quota" } EOF @@ -206,7 +206,7 @@ jobs: else EMAIL_BODY=$(cat <Dear Team,

We would like to inform you that the ${ACCELERATOR_NAME} deployment and testing has completed successfully.

Status Summary:
StageStatus
Deployment✅ SUCCESS
E2E Tests✅ SUCCESS
Cleanup${CLEANUP_STATUS}

Deployment Details:
• Resource Group: ${RESOURCE_GROUP}
• Web App URL: ${WEBAPP_URL}
• Test Suite: ${TEST_SUITE_NAME}
• Test Report: View Report

Configuration: ${CONFIG_LABEL}

Run URL: ${RUN_URL}

Best regards,
Your Automation Team

", + "body": "

Dear Team,

We would like to inform you that the ${ACCELERATOR_NAME} deployment and test automation has completed successfully.

Status Summary:
StageStatus
Deployment✅ SUCCESS
E2E Tests✅ SUCCESS
Cleanup${CLEANUP_STATUS}

Deployment Details:
• Resource Group: ${RESOURCE_GROUP}
• Web App URL: ${WEBAPP_URL}
• Test Suite: ${TEST_SUITE_NAME}
• Test Report: View Report

Configuration: ${CONFIG_LABEL}

Run URL: ${RUN_URL}

Best regards,
Your Automation Team

", "subject": "[CI/CD-Automation] [${ACCELERATOR_NAME}] Success" } EOF @@ -271,7 +271,7 @@ jobs: EMAIL_BODY=$(cat <Dear Team,

The ${ACCELERATOR_NAME} pipeline executed against the specified Target URL and testing has completed successfully.

Status Summary:
StageStatus
Deployment⏭️ SKIPPED (Tests executed on Pre-deployed RG)
E2E Tests✅ SUCCESS
Cleanup${CLEANUP_STATUS}

Test Results:
• Test Suite: ${TEST_SUITE_NAME}
${TEST_REPORT_URL:+• Test Report: View Report}
• Target URL: ${EXISTING_URL}

Run URL: ${RUN_URL}

Best regards,
Your Automation Team

", + "body": "

Dear Team,

The ${ACCELERATOR_NAME} pipeline executed against the specified Target URL and test automation has completed successfully.

Status Summary:
StageStatus
Deployment⏭️ SKIPPED (Tests executed on Pre-deployed RG)
E2E Tests✅ SUCCESS
Cleanup${CLEANUP_STATUS}

Test Results:
• Test Suite: ${TEST_SUITE_NAME}
${TEST_REPORT_URL:+• Test Report: View Report}
• Target URL: ${EXISTING_URL}

Run URL: ${RUN_URL}

Best regards,
Your Automation Team

", "subject": "[CI/CD-Automation] [${ACCELERATOR_NAME}] Success" } EOF From 98f63d0e944ba4d082f928fe464fd8b73a74f9ce Mon Sep 17 00:00:00 2001 From: Vamshi-Microsoft Date: Tue, 24 Mar 2026 11:25:04 +0530 Subject: [PATCH 15/16] fix: update email subjects to include status icons --- .github/workflows/job-send-notification.yml | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/.github/workflows/job-send-notification.yml b/.github/workflows/job-send-notification.yml index 5a6dc47a..941c0056 100644 --- a/.github/workflows/job-send-notification.yml +++ b/.github/workflows/job-send-notification.yml @@ -137,7 +137,7 @@ jobs: EMAIL_BODY=$(cat <Dear Team,

We would like to inform you that the ${ACCELERATOR_NAME} deployment has failed due to insufficient quota.

Status Summary:
StageStatus
Deployment❌ FAILED (Insufficient Quota)
E2E Tests⏭️ SKIPPED
Cleanup${CLEANUP_STATUS}

Configuration: ${CONFIG_LABEL}

Run URL: ${RUN_URL}

Please resolve the quota issue and retry the deployment.

Best regards,
Your Automation Team

", - "subject": "[CI/CD-Automation] [${ACCELERATOR_NAME}] Insufficient Quota" + "subject": "❌[CI/CD-Automation] [${ACCELERATOR_NAME}] Insufficient Quota" } EOF ) @@ -162,7 +162,7 @@ jobs: EMAIL_BODY=$(cat <Dear Team,

We would like to inform you that the ${ACCELERATOR_NAME} deployment has failed.

Status Summary:
StageStatus
Deployment❌ FAILED (Deployment Issue)
E2E Tests⏭️ SKIPPED
Cleanup${CLEANUP_STATUS}

Deployment Details:
• Resource Group: ${RESOURCE_GROUP}

Configuration: ${CONFIG_LABEL}

Run URL: ${RUN_URL}

Please investigate the deployment failure at your earliest convenience.

Best regards,
Your Automation Team

", - "subject": "[CI/CD-Automation] [${ACCELERATOR_NAME}] Deployment-Failed" + "subject": "❌[CI/CD-Automation] [${ACCELERATOR_NAME}] Deployment-Failed" } EOF ) @@ -199,7 +199,7 @@ jobs: EMAIL_BODY=$(cat <Dear Team,

We would like to inform you that the ${ACCELERATOR_NAME} deployment has completed successfully.

Status Summary:
StageStatus
Deployment✅ SUCCESS
E2E Tests⏭️ SKIPPED
Cleanup${CLEANUP_STATUS}

Deployment Details:
• Resource Group: ${RESOURCE_GROUP}
• Web App URL: ${WEBAPP_URL}

Configuration: ${CONFIG_LABEL}

Run URL: ${RUN_URL}

Best regards,
Your Automation Team

", - "subject": "[CI/CD-Automation] [${ACCELERATOR_NAME}] Success" + "subject": "✅[CI/CD-Automation] [${ACCELERATOR_NAME}] Success" } EOF ) @@ -207,7 +207,7 @@ jobs: EMAIL_BODY=$(cat <Dear Team,

We would like to inform you that the ${ACCELERATOR_NAME} deployment and test automation has completed successfully.

Status Summary:
StageStatus
Deployment✅ SUCCESS
E2E Tests✅ SUCCESS
Cleanup${CLEANUP_STATUS}

Deployment Details:
• Resource Group: ${RESOURCE_GROUP}
• Web App URL: ${WEBAPP_URL}
• Test Suite: ${TEST_SUITE_NAME}
• Test Report: View Report

Configuration: ${CONFIG_LABEL}

Run URL: ${RUN_URL}

Best regards,
Your Automation Team

", - "subject": "[CI/CD-Automation] [${ACCELERATOR_NAME}] Success" + "subject": "✅[CI/CD-Automation] [${ACCELERATOR_NAME}] Success" } EOF ) @@ -242,7 +242,7 @@ jobs: EMAIL_BODY=$(cat <Dear Team,

We would like to inform you that ${ACCELERATOR_NAME} test automation has failed.

Status Summary:
StageStatus
Deployment✅ SUCCESS
E2E Tests❌ FAILED
Cleanup${CLEANUP_STATUS}

Deployment Details:
• Resource Group: ${RESOURCE_GROUP}
• Web App URL: ${WEBAPP_URL}
• Test Suite: ${TEST_SUITE_NAME}
• Test Report: View Report

Configuration: ${CONFIG_LABEL}

Run URL: ${RUN_URL}

Please investigate the matter at your earliest convenience.

Best regards,
Your Automation Team

", - "subject": "[CI/CD-Automation] [${ACCELERATOR_NAME}] E2E Test-Failed" + "subject": "❌[CI/CD-Automation] [${ACCELERATOR_NAME}] E2E Test-Failed" } EOF ) @@ -272,7 +272,7 @@ jobs: EMAIL_BODY=$(cat <Dear Team,

The ${ACCELERATOR_NAME} pipeline executed against the specified Target URL and test automation has completed successfully.

Status Summary:
StageStatus
Deployment⏭️ SKIPPED (Tests executed on Pre-deployed RG)
E2E Tests✅ SUCCESS
Cleanup${CLEANUP_STATUS}

Test Results:
• Test Suite: ${TEST_SUITE_NAME}
${TEST_REPORT_URL:+• Test Report: View Report}
• Target URL: ${EXISTING_URL}

Run URL: ${RUN_URL}

Best regards,
Your Automation Team

", - "subject": "[CI/CD-Automation] [${ACCELERATOR_NAME}] Success" + "subject": "✅[CI/CD-Automation] [${ACCELERATOR_NAME}] Success" } EOF ) @@ -302,7 +302,7 @@ jobs: EMAIL_BODY=$(cat <Dear Team,

The ${ACCELERATOR_NAME} pipeline executed against the specified Target URL and test automation has failed.

Status Summary:
StageStatus
Deployment⏭️ SKIPPED (Tests executed on Pre-deployed RG)
E2E Tests❌ FAILED
Cleanup${CLEANUP_STATUS}

Failure Details:
• Target URL: ${EXISTING_URL}
${TEST_REPORT_URL:+• Test Report: View Report}
• Test Suite: ${TEST_SUITE_NAME}

Run URL: ${RUN_URL}

Best regards,
Your Automation Team

", - "subject": "[CI/CD-Automation] [${ACCELERATOR_NAME}] E2E Test-Failed" + "subject": "❌[CI/CD-Automation] [${ACCELERATOR_NAME}] E2E Test-Failed" } EOF ) From fe17ab2136af2fd5412c82229ab17346d53165eb Mon Sep 17 00:00:00 2001 From: Thanusree-Microsoft <168087422+Thanusree-Microsoft@users.noreply.github.com> Date: Thu, 26 Mar 2026 17:19:42 +0530 Subject: [PATCH 16/16] Update RBAC role name in Deployment Guide --- documents/DeploymentGuide.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/documents/DeploymentGuide.md b/documents/DeploymentGuide.md index 790e4bcb..b5446e1d 100644 --- a/documents/DeploymentGuide.md +++ b/documents/DeploymentGuide.md @@ -16,7 +16,7 @@ Ensure you have access to an [Azure subscription](https://azure.microsoft.com/fr |------------------------------|-----------|-------------| | **Contributor** | Subscription level | Create and manage Azure resources | | **User Access Administrator** | Subscription level | Manage user access and role assignments | -| **Role Based Access Control** | Subscription/Resource Group level | Configure RBAC permissions | +| **Role Based Access Control Admin** | Subscription/Resource Group level | Configure RBAC permissions | | **App Registration Creation** | Azure Active Directory | Create and configure authentication | **🔍 How to Check Your Permissions:**