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:
| Stage | Status |
|---|
| 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:
| Stage | Status |
|---|
| 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:
| Stage | Status |
|---|
| 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:
| Stage | Status |
|---|
| 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:
| Stage | Status |
|---|
| 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:
| Stage | Status |
|---|
| 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:
| Stage | Status |
|---|
| 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:
| Stage | Status |
|---|
| 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:
| Stage | Status |
|---|
| 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:
| Stage | Status |
|---|
| 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:
| Stage | Status |
|---|
| 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:
| Stage | Status |
|---|
| 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:
| Stage | Status |
|---|
| 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:
| Stage | Status |
|---|
| 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:
| Stage | Status |
|---|
| 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:
| Stage | Status |
|---|
| 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:
| Stage | Status |
|---|
| 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:
| Stage | Status |
|---|
| 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:
| Stage | Status |
|---|
| 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:
| Stage | Status |
|---|
| 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:
| Stage | Status |
|---|
| 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:
| Stage | Status |
|---|
| 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:
| Stage | Status |
|---|
| 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:
| Stage | Status |
|---|
| 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:
| Stage | Status |
|---|
| 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:
| Stage | Status |
|---|
| 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:
| Stage | Status |
|---|
| 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:
| Stage | Status |
|---|
| 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:
| Stage | Status |
|---|
| 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:
| Stage | Status |
|---|
| 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:
| Stage | Status |
|---|
| 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:
| Stage | Status |
|---|
| 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:
| Stage | Status |
|---|
| 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:
| Stage | Status |
|---|
| 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:
| Stage | Status |
|---|
| 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:
| Stage | Status |
|---|
| 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:
| Stage | Status |
|---|
| 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:**