From 518af0e08d1dabd823bd81f0474eaa65f34a6c7c Mon Sep 17 00:00:00 2001 From: Harmanpreet-Microsoft Date: Tue, 17 Mar 2026 11:06:16 +0000 Subject: [PATCH 1/9] fix: Update model version references and correct environment variable names in documentation --- README.md | 2 +- docs/TroubleShootingSteps.md | 2 +- docs/conversation_flow_options.md | 2 +- docs/model_configuration.md | 2 +- 4 files changed, 4 insertions(+), 4 deletions(-) diff --git a/README.md b/README.md index b0d214446..d9bc1e10b 100644 --- a/README.md +++ b/README.md @@ -202,7 +202,7 @@ Select either "PostgreSQL" or "Cosmos DB": When Deployment is complete, follow steps in [Set Up Authentication in Azure App Service](./docs/azure_app_service_auth_setup.md) to add app authentication to your web app running on Azure App Service **Note**: The default configuration deploys an OpenAI Model "gpt-4.1" with version 2025-04-14. However, not all -locations support this version. If you're deploying to a location that doesn't support version 2024-05-13, you'll need to +locations support this version. If you're deploying to a location that doesn't support version 2025-04-14, you'll need to switch to a lower version. To find out which versions are supported in different regions, visit the [GPT-4.1 Model Availability](https://learn.microsoft.com/en-us/azure/ai-services/openai/concepts/models?tabs=global-standard%2Cstandard-chat-completions#global-standard-model-availability) page. diff --git a/docs/TroubleShootingSteps.md b/docs/TroubleShootingSteps.md index 89d4c171e..49db1df6c 100644 --- a/docs/TroubleShootingSteps.md +++ b/docs/TroubleShootingSteps.md @@ -82,7 +82,7 @@ Use these as quick reference guides to unblock your deployments. | Issue/Error Code | Description | Steps to Resolve | |-----------------|-------------|------------------| -| **LocationNotAvailableForResourceType** | Resource type not supported in selected region | This error occurs when you attempt to deploy a resource to a region that does not support that specific resource type or SKU.

**Resolution:**
| +| **LocationNotAvailableForResourceType** | Resource type not supported in selected region | This error occurs when you attempt to deploy a resource to a region that does not support that specific resource type or SKU.

**Resolution:**
| | **InvalidResourceLocation** | Cannot change region for already deployed resources | This error occurs when you attempt to modify the location/region of a resource that has already been deployed. Azure resources **cannot change regions** after creation.

**Resolution:**

⚠️ **Important:** Backup critical data before deleting resources.

**Reference:** [Move Azure resources across regions](https://learn.microsoft.com/en-us/azure/resource-mover/overview) | | **ServiceUnavailable/ResourceNotFound** | Service unavailable or restricted in selected region | | | **ResourceOperationFailure/
ProvisioningDisabled** | Resource provisioning restricted or disabled in region | | diff --git a/docs/conversation_flow_options.md b/docs/conversation_flow_options.md index c8bdd2b84..cd199c78e 100644 --- a/docs/conversation_flow_options.md +++ b/docs/conversation_flow_options.md @@ -30,4 +30,4 @@ CONVERSATION_FLOW=byod With `CONVERSATION_FLOW` set to "byod", the backend service will mimic the [On Your Data](https://learn.microsoft.com/en-us/azure/ai-services/openai/concepts/use-your-data) flow. -'On Your Data' enables you to run advanced AI models such as GPT-35-Turbo and GPT-4 on your own enterprise data without needing to train or fine-tune models. You can chat on top of and analyze your data with greater accuracy. You can specify sources to support the responses based on the latest information available in your designated data sources. +'On Your Data' enables you to run advanced AI models such as GPT-4.1 on your own enterprise data without needing to train or fine-tune models. You can chat on top of and analyze your data with greater accuracy. You can specify sources to support the responses based on the latest information available in your designated data sources. diff --git a/docs/model_configuration.md b/docs/model_configuration.md index 3bd443d46..046a2f42e 100644 --- a/docs/model_configuration.md +++ b/docs/model_configuration.md @@ -72,6 +72,6 @@ This document outlines the necessary steps and configurations required for setti - `AZURE_OPENAI_EMBEDDING_MODEL_NAME`: `text-embedding-3-large` - `AZURE_OPENAI_EMBEDDING_MODEL_VERSION`: `1` - `AZURE_SEARCH_DIMENSIONS`: `3072` - - `AZURE_MAX_TOKENS`: `4096` + - `AZURE_OPENAI_MAX_TOKENS`: `4096` --- From 92587244ff6aaae525d2f05dcdc393b0e02d0e49 Mon Sep 17 00:00:00 2001 From: Harmanpreet-Microsoft Date: Tue, 17 Mar 2026 12:04:08 +0000 Subject: [PATCH 2/9] fix: Remove unused --exclude-mail option from broken link checker arguments --- .github/workflows/broken-links-checker.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/broken-links-checker.yml b/.github/workflows/broken-links-checker.yml index 619ecbbda..39cc57cad 100644 --- a/.github/workflows/broken-links-checker.yml +++ b/.github/workflows/broken-links-checker.yml @@ -38,7 +38,7 @@ jobs: uses: lycheeverse/lychee-action@v2.7.0 with: args: > - --verbose --exclude-mail --no-progress --exclude ^https?:// + --verbose --no-progress --exclude ^https?:// ${{ steps.changed-markdown-files.outputs.all_changed_files }} failIfEmpty: false env: @@ -51,7 +51,7 @@ jobs: uses: lycheeverse/lychee-action@v2.7.0 with: args: > - --verbose --exclude-mail --no-progress --exclude ^https?:// + --verbose --no-progress --exclude ^https?:// '**/*.md' failIfEmpty: false env: From dba9aec8e5c49c7c5fbb9118103b653cfca9ae84 Mon Sep 17 00:00:00 2001 From: Harmanpreet-Microsoft Date: Thu, 19 Mar 2026 12:27:35 +0530 Subject: [PATCH 3/9] fix: Rename AZURE_ENV_LOG_ANALYTICS_WORKSPACE_ID to AZURE_ENV_LOG_ANALYTICS_WORKSPACE_RID across workflows and documentation --- .github/workflows/deploy-orchestrator.yml | 4 +-- .github/workflows/deploy-v2.yml | 26 ++++++++-------- .github/workflows/job-deploy-linux.yml | 36 +++++++++++------------ .github/workflows/job-deploy-windows.yml | 36 +++++++++++------------ .github/workflows/job-deploy.yml | 22 +++++++------- docs/re-use-log-analytics.md | 2 +- infra/main.bicep | 20 ++++++------- infra/main.json | 20 ++++++------- infra/main.parameters.json | 6 ++-- infra/main.waf.parameters.json | 14 ++++----- 10 files changed, 93 insertions(+), 93 deletions(-) diff --git a/.github/workflows/deploy-orchestrator.yml b/.github/workflows/deploy-orchestrator.yml index 191c0ac3f..494dc353f 100644 --- a/.github/workflows/deploy-orchestrator.yml +++ b/.github/workflows/deploy-orchestrator.yml @@ -46,7 +46,7 @@ on: description: 'Trigger type (workflow_dispatch, pull_request, schedule)' required: true type: string - AZURE_ENV_LOG_ANALYTICS_WORKSPACE_ID: + AZURE_ENV_LOG_ANALYTICS_WORKSPACE_RID: description: 'Log Analytics Workspace ID (Optional)' required: false default: '' @@ -87,7 +87,7 @@ jobs: EXP: ${{ inputs.EXP }} existing_webapp_url: ${{ inputs.existing_webapp_url }} run_e2e_tests: ${{ inputs.run_e2e_tests }} - AZURE_ENV_LOG_ANALYTICS_WORKSPACE_ID: ${{ inputs.AZURE_ENV_LOG_ANALYTICS_WORKSPACE_ID }} + AZURE_ENV_LOG_ANALYTICS_WORKSPACE_RID: ${{ inputs.AZURE_ENV_LOG_ANALYTICS_WORKSPACE_RID }} cleanup_resources: ${{ inputs.cleanup_resources }} AZURE_SEARCH_USE_INTEGRATED_VECTORIZATION: ${{ inputs.AZURE_SEARCH_USE_INTEGRATED_VECTORIZATION }} AZURE_SEARCH_USE_SEMANTIC_SEARCH: ${{ inputs.AZURE_SEARCH_USE_SEMANTIC_SEARCH }} diff --git a/.github/workflows/deploy-v2.yml b/.github/workflows/deploy-v2.yml index c16d39e52..19200c5c6 100644 --- a/.github/workflows/deploy-v2.yml +++ b/.github/workflows/deploy-v2.yml @@ -63,7 +63,7 @@ on: - 'GoldenPath-Testing' - 'Smoke-Testing' - 'None' - AZURE_ENV_LOG_ANALYTICS_WORKSPACE_ID: + AZURE_ENV_LOG_ANALYTICS_WORKSPACE_RID: description: 'Log Analytics Workspace ID (Optional)' required: false default: '' @@ -125,7 +125,7 @@ jobs: exp: ${{ steps.validate.outputs.exp }} cleanup_resources: ${{ steps.validate.outputs.cleanup_resources }} run_e2e_tests: ${{ steps.validate.outputs.run_e2e_tests }} - azure_env_log_analytics_workspace_id: ${{ steps.validate.outputs.azure_env_log_analytics_workspace_id }} + AZURE_ENV_LOG_ANALYTICS_WORKSPACE_RID: ${{ steps.validate.outputs.AZURE_ENV_LOG_ANALYTICS_WORKSPACE_RID }} azure_search_use_integrated_vectorization: ${{ steps.validate.outputs.azure_search_use_integrated_vectorization }} azure_search_use_semantic_search: ${{ steps.validate.outputs.azure_search_use_semantic_search }} use_advanced_image_processing: ${{ steps.validate.outputs.use_advanced_image_processing }} @@ -143,7 +143,7 @@ jobs: INPUT_EXP: ${{ github.event.inputs.EXP }} INPUT_CLEANUP_RESOURCES: ${{ github.event.inputs.cleanup_resources }} INPUT_RUN_E2E_TESTS: ${{ github.event.inputs.run_e2e_tests }} - INPUT_AZURE_ENV_LOG_ANALYTICS_WORKSPACE_ID: ${{ github.event.inputs.AZURE_ENV_LOG_ANALYTICS_WORKSPACE_ID }} + INPUT_AZURE_ENV_LOG_ANALYTICS_WORKSPACE_RID: ${{ github.event.inputs.AZURE_ENV_LOG_ANALYTICS_WORKSPACE_RID }} INPUT_AZURE_SEARCH_USE_INTEGRATED_VECTORIZATION: ${{ github.event.inputs.AZURE_SEARCH_USE_INTEGRATED_VECTORIZATION }} INPUT_AZURE_SEARCH_USE_SEMANTIC_SEARCH: ${{ github.event.inputs.AZURE_SEARCH_USE_SEMANTIC_SEARCH }} INPUT_USE_ADVANCED_IMAGE_PROCESSING: ${{ github.event.inputs.USE_ADVANCED_IMAGE_PROCESSING }} @@ -241,19 +241,19 @@ jobs: echo "✅ run_e2e_tests: '$TEST_OPTION' is valid" fi - # Validate AZURE_ENV_LOG_ANALYTICS_WORKSPACE_ID (optional, Azure Resource ID format) - if [[ -n "$INPUT_AZURE_ENV_LOG_ANALYTICS_WORKSPACE_ID" ]]; then - if [[ ! "$INPUT_AZURE_ENV_LOG_ANALYTICS_WORKSPACE_ID" =~ ^/subscriptions/[a-fA-F0-9-]+/[Rr]esource[Gg]roups/[^/]+/providers/[Mm]icrosoft\.[Oo]perational[Ii]nsights/[Ww]orkspaces/[^/]+$ ]]; then - echo "❌ ERROR: AZURE_ENV_LOG_ANALYTICS_WORKSPACE_ID is invalid. Must be a valid Azure Resource ID format:" + # Validate AZURE_ENV_LOG_ANALYTICS_WORKSPACE_RID (optional, Azure Resource ID format) + if [[ -n "$INPUT_AZURE_ENV_LOG_ANALYTICS_WORKSPACE_RID" ]]; then + if [[ ! "$INPUT_AZURE_ENV_LOG_ANALYTICS_WORKSPACE_RID" =~ ^/subscriptions/[a-fA-F0-9-]+/[Rr]esource[Gg]roups/[^/]+/providers/[Mm]icrosoft\.[Oo]perational[Ii]nsights/[Ww]orkspaces/[^/]+$ ]]; then + echo "❌ ERROR: AZURE_ENV_LOG_ANALYTICS_WORKSPACE_RID is invalid. Must be a valid Azure Resource ID format:" echo " /subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.OperationalInsights/workspaces/{workspaceName}" - echo " Got: '$INPUT_AZURE_ENV_LOG_ANALYTICS_WORKSPACE_ID'" - VALIDATION_ERRORS="${VALIDATION_ERRORS}| AZURE_ENV_LOG_ANALYTICS_WORKSPACE_ID | (invalid value) | Must be a valid Azure Resource ID format |\n" + echo " Got: '$INPUT_AZURE_ENV_LOG_ANALYTICS_WORKSPACE_RID'" + VALIDATION_ERRORS="${VALIDATION_ERRORS}| AZURE_ENV_LOG_ANALYTICS_WORKSPACE_RID | (invalid value) | Must be a valid Azure Resource ID format |\n" VALIDATION_FAILED=true else - echo "✅ AZURE_ENV_LOG_ANALYTICS_WORKSPACE_ID: Valid Resource ID format" + echo "✅ AZURE_ENV_LOG_ANALYTICS_WORKSPACE_RID: Valid Resource ID format" fi else - echo "✅ AZURE_ENV_LOG_ANALYTICS_WORKSPACE_ID: Not provided (optional)" + echo "✅ AZURE_ENV_LOG_ANALYTICS_WORKSPACE_RID: Not provided (optional)" fi # Validate AZURE_SEARCH_USE_INTEGRATED_VECTORIZATION (boolean string) @@ -359,7 +359,7 @@ jobs: echo "exp=$EXP_ENABLED" >> $GITHUB_OUTPUT echo "cleanup_resources=$CLEANUP_RESOURCES" >> $GITHUB_OUTPUT echo "run_e2e_tests=$TEST_OPTION" >> $GITHUB_OUTPUT - echo "azure_env_log_analytics_workspace_id=$INPUT_AZURE_ENV_LOG_ANALYTICS_WORKSPACE_ID" >> $GITHUB_OUTPUT + echo "AZURE_ENV_LOG_ANALYTICS_WORKSPACE_RID=$INPUT_AZURE_ENV_LOG_ANALYTICS_WORKSPACE_RID" >> $GITHUB_OUTPUT echo "azure_search_use_integrated_vectorization=$INTEGRATED_VECTORIZATION" >> $GITHUB_OUTPUT echo "azure_search_use_semantic_search=$SEMANTIC_SEARCH" >> $GITHUB_OUTPUT echo "use_advanced_image_processing=$ADVANCED_IMAGE_PROCESSING" >> $GITHUB_OUTPUT @@ -376,7 +376,7 @@ jobs: EXP: ${{ needs.validate-inputs.outputs.exp == 'true' }} cleanup_resources: ${{ github.event_name != 'workflow_dispatch' || needs.validate-inputs.outputs.cleanup_resources == 'true' }} run_e2e_tests: ${{ needs.validate-inputs.outputs.run_e2e_tests || 'GoldenPath-Testing' }} - AZURE_ENV_LOG_ANALYTICS_WORKSPACE_ID: ${{ needs.validate-inputs.outputs.azure_env_log_analytics_workspace_id || '' }} + AZURE_ENV_LOG_ANALYTICS_WORKSPACE_RID: ${{ needs.validate-inputs.outputs.AZURE_ENV_LOG_ANALYTICS_WORKSPACE_RID || '' }} existing_webapp_url: ${{ needs.validate-inputs.outputs.existing_webapp_url || '' }} existing_admin_app_url: ${{ needs.validate-inputs.outputs.existing_admin_app_url || '' }} trigger_type: ${{ github.event_name }} diff --git a/.github/workflows/job-deploy-linux.yml b/.github/workflows/job-deploy-linux.yml index 9118a912d..355d2f5de 100644 --- a/.github/workflows/job-deploy-linux.yml +++ b/.github/workflows/job-deploy-linux.yml @@ -25,7 +25,7 @@ on: required: false type: string default: 'false' - AZURE_ENV_LOG_ANALYTICS_WORKSPACE_ID: + AZURE_ENV_LOG_ANALYTICS_WORKSPACE_RID: required: false type: string AZURE_SEARCH_USE_INTEGRATED_VECTORIZATION: @@ -94,7 +94,7 @@ jobs: INPUT_IMAGE_TAG: ${{ inputs.IMAGE_TAG }} INPUT_EXP: ${{ inputs.EXP }} INPUT_WAF_ENABLED: ${{ inputs.WAF_ENABLED }} - INPUT_AZURE_ENV_LOG_ANALYTICS_WORKSPACE_ID: ${{ inputs.AZURE_ENV_LOG_ANALYTICS_WORKSPACE_ID }} + INPUT_AZURE_ENV_LOG_ANALYTICS_WORKSPACE_RID: ${{ inputs.AZURE_ENV_LOG_ANALYTICS_WORKSPACE_RID }} INPUT_AZURE_SEARCH_USE_INTEGRATED_VECTORIZATION: ${{ inputs.AZURE_SEARCH_USE_INTEGRATED_VECTORIZATION }} INPUT_AZURE_SEARCH_USE_SEMANTIC_SEARCH: ${{ inputs.AZURE_SEARCH_USE_SEMANTIC_SEARCH }} INPUT_USE_ADVANCED_IMAGE_PROCESSING: ${{ inputs.USE_ADVANCED_IMAGE_PROCESSING }} @@ -177,18 +177,18 @@ jobs: echo "✅ WAF_ENABLED: '$INPUT_WAF_ENABLED' is valid" fi - # Validate AZURE_ENV_LOG_ANALYTICS_WORKSPACE_ID (optional, Azure Resource ID format) - if [[ -n "$INPUT_AZURE_ENV_LOG_ANALYTICS_WORKSPACE_ID" ]]; then - if [[ ! "$INPUT_AZURE_ENV_LOG_ANALYTICS_WORKSPACE_ID" =~ ^/subscriptions/[a-fA-F0-9-]+/[Rr]esource[Gg]roups/[^/]+/providers/[Mm]icrosoft\.[Oo]perational[Ii]nsights/[Ww]orkspaces/[^/]+$ ]]; then - echo "❌ ERROR: AZURE_ENV_LOG_ANALYTICS_WORKSPACE_ID is invalid. Must be a valid Azure Resource ID format:" + # Validate AZURE_ENV_LOG_ANALYTICS_WORKSPACE_RID (optional, Azure Resource ID format) + if [[ -n "$INPUT_AZURE_ENV_LOG_ANALYTICS_WORKSPACE_RID" ]]; then + if [[ ! "$INPUT_AZURE_ENV_LOG_ANALYTICS_WORKSPACE_RID" =~ ^/subscriptions/[a-fA-F0-9-]+/[Rr]esource[Gg]roups/[^/]+/providers/[Mm]icrosoft\.[Oo]perational[Ii]nsights/[Ww]orkspaces/[^/]+$ ]]; then + echo "❌ ERROR: AZURE_ENV_LOG_ANALYTICS_WORKSPACE_RID is invalid. Must be a valid Azure Resource ID format:" echo " /subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.OperationalInsights/workspaces/{workspaceName}" - echo " Got: '$INPUT_AZURE_ENV_LOG_ANALYTICS_WORKSPACE_ID'" + echo " Got: '$INPUT_AZURE_ENV_LOG_ANALYTICS_WORKSPACE_RID'" VALIDATION_FAILED=true else - echo "✅ AZURE_ENV_LOG_ANALYTICS_WORKSPACE_ID: Valid Resource ID format" + echo "✅ AZURE_ENV_LOG_ANALYTICS_WORKSPACE_RID: Valid Resource ID format" fi else - echo "✅ AZURE_ENV_LOG_ANALYTICS_WORKSPACE_ID: Not provided (optional)" + echo "✅ AZURE_ENV_LOG_ANALYTICS_WORKSPACE_RID: Not provided (optional)" fi # Validate AZURE_SEARCH_USE_INTEGRATED_VECTORIZATION (boolean string) @@ -278,13 +278,13 @@ jobs: INPUT_AZURE_ENV_OPENAI_LOCATION: ${{ inputs.AZURE_ENV_OPENAI_LOCATION }} INPUT_RESOURCE_GROUP_NAME: ${{ inputs.RESOURCE_GROUP_NAME }} INPUT_EXP: ${{ inputs.EXP }} - INPUT_AZURE_ENV_LOG_ANALYTICS_WORKSPACE_ID: ${{ inputs.AZURE_ENV_LOG_ANALYTICS_WORKSPACE_ID }} + INPUT_AZURE_ENV_LOG_ANALYTICS_WORKSPACE_RID: ${{ inputs.AZURE_ENV_LOG_ANALYTICS_WORKSPACE_RID }} INPUT_AZURE_SEARCH_USE_INTEGRATED_VECTORIZATION: ${{ inputs.AZURE_SEARCH_USE_INTEGRATED_VECTORIZATION }} INPUT_AZURE_SEARCH_USE_SEMANTIC_SEARCH: ${{ inputs.AZURE_SEARCH_USE_SEMANTIC_SEARCH }} INPUT_USE_ADVANCED_IMAGE_PROCESSING: ${{ inputs.USE_ADVANCED_IMAGE_PROCESSING }} INPUT_DATABASE_TYPE: ${{ inputs.DATABASE_TYPE }} - EVENT_AZURE_ENV_LOG_ANALYTICS_WORKSPACE_ID: ${{ github.event.inputs.AZURE_ENV_LOG_ANALYTICS_WORKSPACE_ID }} - SECRET_AZURE_ENV_LOG_ANALYTICS_WORKSPACE_ID: ${{ secrets.AZURE_ENV_LOG_ANALYTICS_WORKSPACE_ID }} + EVENT_AZURE_ENV_LOG_ANALYTICS_WORKSPACE_RID: ${{ github.event.inputs.AZURE_ENV_LOG_ANALYTICS_WORKSPACE_RID }} + SECRET_AZURE_ENV_LOG_ANALYTICS_WORKSPACE_RID: ${{ secrets.AZURE_ENV_LOG_ANALYTICS_WORKSPACE_RID }} run: | set -e @@ -304,17 +304,17 @@ jobs: echo "✅ EXP ENABLED - Setting EXP parameters..." # Set EXP variables dynamically - if [[ -n "$EVENT_AZURE_ENV_LOG_ANALYTICS_WORKSPACE_ID" ]]; then - EXP_LOG_ANALYTICS_ID="$EVENT_AZURE_ENV_LOG_ANALYTICS_WORKSPACE_ID" + if [[ -n "$EVENT_AZURE_ENV_LOG_ANALYTICS_WORKSPACE_RID" ]]; then + EXP_LOG_ANALYTICS_ID="$EVENT_AZURE_ENV_LOG_ANALYTICS_WORKSPACE_RID" else - EXP_LOG_ANALYTICS_ID="$SECRET_AZURE_ENV_LOG_ANALYTICS_WORKSPACE_ID" + EXP_LOG_ANALYTICS_ID="$SECRET_AZURE_ENV_LOG_ANALYTICS_WORKSPACE_RID" fi - echo "AZURE_ENV_LOG_ANALYTICS_WORKSPACE_ID: $EXP_LOG_ANALYTICS_ID" - azd env set AZURE_ENV_LOG_ANALYTICS_WORKSPACE_ID="$EXP_LOG_ANALYTICS_ID" + echo "AZURE_ENV_LOG_ANALYTICS_WORKSPACE_RID: $EXP_LOG_ANALYTICS_ID" + azd env set AZURE_ENV_LOG_ANALYTICS_WORKSPACE_RID="$EXP_LOG_ANALYTICS_ID" else echo "❌ EXP DISABLED - Skipping EXP parameters" - if [[ -n "$EVENT_AZURE_ENV_LOG_ANALYTICS_WORKSPACE_ID" ]]; then + if [[ -n "$EVENT_AZURE_ENV_LOG_ANALYTICS_WORKSPACE_RID" ]]; then echo "⚠️ Warning: EXP parameter values provided but EXP is disabled. These values will be ignored." fi fi diff --git a/.github/workflows/job-deploy-windows.yml b/.github/workflows/job-deploy-windows.yml index b88b7183f..b06ee9f7d 100644 --- a/.github/workflows/job-deploy-windows.yml +++ b/.github/workflows/job-deploy-windows.yml @@ -25,7 +25,7 @@ on: required: false type: string default: 'false' - AZURE_ENV_LOG_ANALYTICS_WORKSPACE_ID: + AZURE_ENV_LOG_ANALYTICS_WORKSPACE_RID: required: false type: string AZURE_SEARCH_USE_INTEGRATED_VECTORIZATION: @@ -94,7 +94,7 @@ jobs: INPUT_IMAGE_TAG: ${{ inputs.IMAGE_TAG }} INPUT_EXP: ${{ inputs.EXP }} INPUT_WAF_ENABLED: ${{ inputs.WAF_ENABLED }} - INPUT_AZURE_ENV_LOG_ANALYTICS_WORKSPACE_ID: ${{ inputs.AZURE_ENV_LOG_ANALYTICS_WORKSPACE_ID }} + INPUT_AZURE_ENV_LOG_ANALYTICS_WORKSPACE_RID: ${{ inputs.AZURE_ENV_LOG_ANALYTICS_WORKSPACE_RID }} INPUT_AZURE_SEARCH_USE_INTEGRATED_VECTORIZATION: ${{ inputs.AZURE_SEARCH_USE_INTEGRATED_VECTORIZATION }} INPUT_AZURE_SEARCH_USE_SEMANTIC_SEARCH: ${{ inputs.AZURE_SEARCH_USE_SEMANTIC_SEARCH }} INPUT_USE_ADVANCED_IMAGE_PROCESSING: ${{ inputs.USE_ADVANCED_IMAGE_PROCESSING }} @@ -177,18 +177,18 @@ jobs: echo "✅ WAF_ENABLED: '$INPUT_WAF_ENABLED' is valid" fi - # Validate AZURE_ENV_LOG_ANALYTICS_WORKSPACE_ID (optional, Azure Resource ID format) - if [[ -n "$INPUT_AZURE_ENV_LOG_ANALYTICS_WORKSPACE_ID" ]]; then - if [[ ! "$INPUT_AZURE_ENV_LOG_ANALYTICS_WORKSPACE_ID" =~ ^/subscriptions/[a-fA-F0-9-]+/[Rr]esource[Gg]roups/[^/]+/providers/[Mm]icrosoft\.[Oo]perational[Ii]nsights/[Ww]orkspaces/[^/]+$ ]]; then - echo "❌ ERROR: AZURE_ENV_LOG_ANALYTICS_WORKSPACE_ID is invalid. Must be a valid Azure Resource ID format:" + # Validate AZURE_ENV_LOG_ANALYTICS_WORKSPACE_RID (optional, Azure Resource ID format) + if [[ -n "$INPUT_AZURE_ENV_LOG_ANALYTICS_WORKSPACE_RID" ]]; then + if [[ ! "$INPUT_AZURE_ENV_LOG_ANALYTICS_WORKSPACE_RID" =~ ^/subscriptions/[a-fA-F0-9-]+/[Rr]esource[Gg]roups/[^/]+/providers/[Mm]icrosoft\.[Oo]perational[Ii]nsights/[Ww]orkspaces/[^/]+$ ]]; then + echo "❌ ERROR: AZURE_ENV_LOG_ANALYTICS_WORKSPACE_RID is invalid. Must be a valid Azure Resource ID format:" echo " /subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.OperationalInsights/workspaces/{workspaceName}" - echo " Got: '$INPUT_AZURE_ENV_LOG_ANALYTICS_WORKSPACE_ID'" + echo " Got: '$INPUT_AZURE_ENV_LOG_ANALYTICS_WORKSPACE_RID'" VALIDATION_FAILED=true else - echo "✅ AZURE_ENV_LOG_ANALYTICS_WORKSPACE_ID: Valid Resource ID format" + echo "✅ AZURE_ENV_LOG_ANALYTICS_WORKSPACE_RID: Valid Resource ID format" fi else - echo "✅ AZURE_ENV_LOG_ANALYTICS_WORKSPACE_ID: Not provided (optional)" + echo "✅ AZURE_ENV_LOG_ANALYTICS_WORKSPACE_RID: Not provided (optional)" fi # Validate AZURE_SEARCH_USE_INTEGRATED_VECTORIZATION (boolean string) @@ -279,13 +279,13 @@ jobs: INPUT_AZURE_ENV_OPENAI_LOCATION: ${{ inputs.AZURE_ENV_OPENAI_LOCATION }} INPUT_RESOURCE_GROUP_NAME: ${{ inputs.RESOURCE_GROUP_NAME }} INPUT_EXP: ${{ inputs.EXP }} - INPUT_AZURE_ENV_LOG_ANALYTICS_WORKSPACE_ID: ${{ inputs.AZURE_ENV_LOG_ANALYTICS_WORKSPACE_ID }} + INPUT_AZURE_ENV_LOG_ANALYTICS_WORKSPACE_RID: ${{ inputs.AZURE_ENV_LOG_ANALYTICS_WORKSPACE_RID }} INPUT_AZURE_SEARCH_USE_INTEGRATED_VECTORIZATION: ${{ inputs.AZURE_SEARCH_USE_INTEGRATED_VECTORIZATION }} INPUT_AZURE_SEARCH_USE_SEMANTIC_SEARCH: ${{ inputs.AZURE_SEARCH_USE_SEMANTIC_SEARCH }} INPUT_USE_ADVANCED_IMAGE_PROCESSING: ${{ inputs.USE_ADVANCED_IMAGE_PROCESSING }} INPUT_DATABASE_TYPE: ${{ inputs.DATABASE_TYPE }} - EVENT_AZURE_ENV_LOG_ANALYTICS_WORKSPACE_ID: ${{ github.event.inputs.AZURE_ENV_LOG_ANALYTICS_WORKSPACE_ID }} - SECRET_AZURE_ENV_LOG_ANALYTICS_WORKSPACE_ID: ${{ secrets.AZURE_ENV_LOG_ANALYTICS_WORKSPACE_ID }} + EVENT_AZURE_ENV_LOG_ANALYTICS_WORKSPACE_RID: ${{ github.event.inputs.AZURE_ENV_LOG_ANALYTICS_WORKSPACE_RID }} + SECRET_AZURE_ENV_LOG_ANALYTICS_WORKSPACE_RID: ${{ secrets.AZURE_ENV_LOG_ANALYTICS_WORKSPACE_RID }} run: | $ErrorActionPreference = "Stop" @@ -305,17 +305,17 @@ jobs: Write-Host "✅ EXP ENABLED - Setting EXP parameters..." # Set EXP variables dynamically - if (-not [string]::IsNullOrEmpty($env:EVENT_AZURE_ENV_LOG_ANALYTICS_WORKSPACE_ID)) { - $ExpLogAnalyticsId = $env:EVENT_AZURE_ENV_LOG_ANALYTICS_WORKSPACE_ID + if (-not [string]::IsNullOrEmpty($env:EVENT_AZURE_ENV_LOG_ANALYTICS_WORKSPACE_RID)) { + $ExpLogAnalyticsId = $env:EVENT_AZURE_ENV_LOG_ANALYTICS_WORKSPACE_RID } else { - $ExpLogAnalyticsId = $env:SECRET_AZURE_ENV_LOG_ANALYTICS_WORKSPACE_ID + $ExpLogAnalyticsId = $env:SECRET_AZURE_ENV_LOG_ANALYTICS_WORKSPACE_RID } - Write-Host "AZURE_ENV_LOG_ANALYTICS_WORKSPACE_ID: $ExpLogAnalyticsId" - azd env set AZURE_ENV_LOG_ANALYTICS_WORKSPACE_ID="$ExpLogAnalyticsId" + Write-Host "AZURE_ENV_LOG_ANALYTICS_WORKSPACE_RID: $ExpLogAnalyticsId" + azd env set AZURE_ENV_LOG_ANALYTICS_WORKSPACE_RID="$ExpLogAnalyticsId" } else { Write-Host "❌ EXP DISABLED - Skipping EXP parameters" - if (-not [string]::IsNullOrEmpty($env:EVENT_AZURE_ENV_LOG_ANALYTICS_WORKSPACE_ID)) { + if (-not [string]::IsNullOrEmpty($env:EVENT_AZURE_ENV_LOG_ANALYTICS_WORKSPACE_RID)) { Write-Host "⚠️ Warning: EXP parameter values provided but EXP is disabled. These values will be ignored." } } diff --git a/.github/workflows/job-deploy.yml b/.github/workflows/job-deploy.yml index da7cd180b..5aa5430fb 100644 --- a/.github/workflows/job-deploy.yml +++ b/.github/workflows/job-deploy.yml @@ -26,7 +26,7 @@ on: required: false default: false type: boolean - AZURE_ENV_LOG_ANALYTICS_WORKSPACE_ID: + AZURE_ENV_LOG_ANALYTICS_WORKSPACE_RID: description: 'Log Analytics Workspace ID (Optional)' required: false default: '' @@ -140,7 +140,7 @@ jobs: INPUT_EXP: ${{ inputs.EXP }} INPUT_CLEANUP_RESOURCES: ${{ inputs.cleanup_resources }} INPUT_RUN_E2E_TESTS: ${{ inputs.run_e2e_tests }} - INPUT_AZURE_ENV_LOG_ANALYTICS_WORKSPACE_ID: ${{ inputs.AZURE_ENV_LOG_ANALYTICS_WORKSPACE_ID }} + INPUT_AZURE_ENV_LOG_ANALYTICS_WORKSPACE_RID: ${{ inputs.AZURE_ENV_LOG_ANALYTICS_WORKSPACE_RID }} INPUT_EXISTING_WEBAPP_URL: ${{ inputs.existing_webapp_url }} INPUT_AZURE_SEARCH_USE_INTEGRATED_VECTORIZATION: ${{ inputs.AZURE_SEARCH_USE_INTEGRATED_VECTORIZATION }} INPUT_AZURE_SEARCH_USE_SEMANTIC_SEARCH: ${{ inputs.AZURE_SEARCH_USE_SEMANTIC_SEARCH }} @@ -213,18 +213,18 @@ jobs: echo "✅ run_e2e_tests: Not provided (will use default 'GoldenPath-Testing')" fi - # Validate AZURE_ENV_LOG_ANALYTICS_WORKSPACE_ID (optional, Azure Resource ID format) - if [[ -n "$INPUT_AZURE_ENV_LOG_ANALYTICS_WORKSPACE_ID" ]]; then - if [[ ! "$INPUT_AZURE_ENV_LOG_ANALYTICS_WORKSPACE_ID" =~ ^/subscriptions/[a-fA-F0-9-]+/[Rr]esource[Gg]roups/[^/]+/providers/[Mm]icrosoft\.[Oo]perational[Ii]nsights/[Ww]orkspaces/[^/]+$ ]]; then - echo "❌ ERROR: AZURE_ENV_LOG_ANALYTICS_WORKSPACE_ID is invalid. Must be a valid Azure Resource ID format:" + # Validate AZURE_ENV_LOG_ANALYTICS_WORKSPACE_RID (optional, Azure Resource ID format) + if [[ -n "$INPUT_AZURE_ENV_LOG_ANALYTICS_WORKSPACE_RID" ]]; then + if [[ ! "$INPUT_AZURE_ENV_LOG_ANALYTICS_WORKSPACE_RID" =~ ^/subscriptions/[a-fA-F0-9-]+/[Rr]esource[Gg]roups/[^/]+/providers/[Mm]icrosoft\.[Oo]perational[Ii]nsights/[Ww]orkspaces/[^/]+$ ]]; then + echo "❌ ERROR: AZURE_ENV_LOG_ANALYTICS_WORKSPACE_RID is invalid. Must be a valid Azure Resource ID format:" echo " /subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.OperationalInsights/workspaces/{workspaceName}" - echo " Got: '$INPUT_AZURE_ENV_LOG_ANALYTICS_WORKSPACE_ID'" + echo " Got: '$INPUT_AZURE_ENV_LOG_ANALYTICS_WORKSPACE_RID'" VALIDATION_FAILED=true else - echo "✅ AZURE_ENV_LOG_ANALYTICS_WORKSPACE_ID: Valid Resource ID format" + echo "✅ AZURE_ENV_LOG_ANALYTICS_WORKSPACE_RID: Valid Resource ID format" fi else - echo "✅ AZURE_ENV_LOG_ANALYTICS_WORKSPACE_ID: Not provided (optional)" + echo "✅ AZURE_ENV_LOG_ANALYTICS_WORKSPACE_RID: Not provided (optional)" fi # Validate AZURE_SEARCH_USE_INTEGRATED_VECTORIZATION (boolean string) @@ -513,7 +513,7 @@ jobs: IMAGE_TAG: ${{ needs.azure-setup.outputs.IMAGE_TAG }} EXP: ${{ inputs.EXP || 'false' }} WAF_ENABLED: ${{ inputs.waf_enabled == true && 'true' || 'false' }} - AZURE_ENV_LOG_ANALYTICS_WORKSPACE_ID: ${{ inputs.AZURE_ENV_LOG_ANALYTICS_WORKSPACE_ID }} + AZURE_ENV_LOG_ANALYTICS_WORKSPACE_RID: ${{ inputs.AZURE_ENV_LOG_ANALYTICS_WORKSPACE_RID }} AZURE_SEARCH_USE_INTEGRATED_VECTORIZATION: ${{ inputs.AZURE_SEARCH_USE_INTEGRATED_VECTORIZATION }} AZURE_SEARCH_USE_SEMANTIC_SEARCH: ${{ inputs.AZURE_SEARCH_USE_SEMANTIC_SEARCH }} USE_ADVANCED_IMAGE_PROCESSING: ${{ inputs.USE_ADVANCED_IMAGE_PROCESSING }} @@ -533,7 +533,7 @@ jobs: IMAGE_TAG: ${{ needs.azure-setup.outputs.IMAGE_TAG }} EXP: ${{ inputs.EXP || 'false' }} WAF_ENABLED: ${{ inputs.waf_enabled == true && 'true' || 'false' }} - AZURE_ENV_LOG_ANALYTICS_WORKSPACE_ID: ${{ inputs.AZURE_ENV_LOG_ANALYTICS_WORKSPACE_ID }} + AZURE_ENV_LOG_ANALYTICS_WORKSPACE_RID: ${{ inputs.AZURE_ENV_LOG_ANALYTICS_WORKSPACE_RID }} AZURE_SEARCH_USE_INTEGRATED_VECTORIZATION: ${{ inputs.AZURE_SEARCH_USE_INTEGRATED_VECTORIZATION }} AZURE_SEARCH_USE_SEMANTIC_SEARCH: ${{ inputs.AZURE_SEARCH_USE_SEMANTIC_SEARCH }} USE_ADVANCED_IMAGE_PROCESSING: ${{ inputs.USE_ADVANCED_IMAGE_PROCESSING }} diff --git a/docs/re-use-log-analytics.md b/docs/re-use-log-analytics.md index 11e2e7a8b..a3b0a9f09 100644 --- a/docs/re-use-log-analytics.md +++ b/docs/re-use-log-analytics.md @@ -23,7 +23,7 @@ Copy Resource ID that is your Workspace ID ### 4. Set the Workspace ID in Your Environment Run the following command in your terminal ```bash -azd env set AZURE_ENV_LOG_ANALYTICS_WORKSPACE_ID '' +azd env set AZURE_ENV_LOG_ANALYTICS_WORKSPACE_RID '' ``` Replace `` with the value obtained from Step 3. diff --git a/infra/main.bicep b/infra/main.bicep index f58fe96f8..e57269e8d 100644 --- a/infra/main.bicep +++ b/infra/main.bicep @@ -326,11 +326,11 @@ param vmSize string = 'Standard_DS2_v2' @description('Optional. The user name for the administrator account of the virtual machine. Allows to customize credentials if `enablePrivateNetworking` is set to true.') @secure() -param virtualMachineAdminUsername string = '' +param vmAdminUsername string = '' @description('Optional. The password for the administrator account of the virtual machine. Allows to customize credentials if `enablePrivateNetworking` is set to true.') @secure() -param virtualMachineAdminPassword string = '' +param vmAdminPassword string = '' @description('Optional. Enable/Disable usage telemetry for module.') param enableTelemetry bool = true @@ -342,7 +342,7 @@ var eventGridSystemTopicName = 'evgt-${solutionSuffix}' var baseUrl = 'https://raw.githubusercontent.com/Azure-Samples/chat-with-your-data-solution-accelerator/main/' @description('Optional. Image version tag to use.') -param appversion string = 'latest_waf' // Update GIT deployment branch +param imageTag string = 'latest_waf' // Update GIT deployment branch var registryName = 'cwydcontainerreg' // Update Registry name @@ -452,8 +452,8 @@ resource avmTelemetry 'Microsoft.Resources/deployments@2024-03-01' = if (enableT // params: { // resourcesName: networkResourceName // logAnalyticsWorkSpaceResourceId: enableMonitoring ? monitoring!.outputs.logAnalyticsWorkspaceId : '' -// vmAdminUsername: empty(virtualMachineAdminUsername) ? 'JumpboxAdminUser' : virtualMachineAdminUsername -// vmAdminPassword: empty(virtualMachineAdminPassword) ? 'JumpboxAdminP@ssw0rd1234!' : virtualMachineAdminPassword +// vmAdminUsername: empty(vmAdminUsername) ? 'JumpboxAdminUser' : vmAdminUsername +// vmAdminPassword: empty(vmAdminPassword) ? 'JumpboxAdminP@ssw0rd1234!' : vmAdminPassword // vmSize: empty(vmSize) ? 'Standard_DS2_v2' : vmSize // location: location // tags: allTags @@ -513,8 +513,8 @@ module jumpboxVM 'br/public:avm/res/compute/virtual-machine:0.15.0' = if (enable name: take(jumpboxVmName, 15) // Shorten VM name to 15 characters to avoid Azure limits vmSize: vmSize ?? 'Standard_DS2_v2' location: location - adminUsername: !empty(virtualMachineAdminUsername) ? virtualMachineAdminUsername : 'JumpboxAdminUser' - adminPassword: !empty(virtualMachineAdminPassword) ? virtualMachineAdminPassword : 'JumpboxAdminP@ssw0rd1234!' + adminUsername: !empty(vmAdminUsername) ? vmAdminUsername : 'JumpboxAdminUser' + adminPassword: !empty(vmAdminPassword) ? vmAdminPassword : 'JumpboxAdminP@ssw0rd1234!' tags: tags zone: 0 imageReference: { @@ -1239,7 +1239,7 @@ module web 'modules/app/web.bicep' = { runtimeName: hostingModel == 'code' ? 'python' : null runtimeVersion: hostingModel == 'code' ? '3.11' : null // docker-specific fields apply only for container-hosted apps - dockerFullImageName: hostingModel == 'container' ? '${registryName}.azurecr.io/rag-webapp:${appversion}' : null + dockerFullImageName: hostingModel == 'container' ? '${registryName}.azurecr.io/rag-webapp:${imageTag}' : null useDocker: hostingModel == 'container' ? true : false allowedOrigins: [] appCommandLine: '' @@ -1348,7 +1348,7 @@ module adminweb 'modules/app/adminweb.bicep' = { runtimeName: hostingModel == 'code' ? 'python' : null runtimeVersion: hostingModel == 'code' ? '3.11' : null // docker-specific fields apply only for container-hosted apps - dockerFullImageName: hostingModel == 'container' ? '${registryName}.azurecr.io/rag-adminwebapp:${appversion}' : null + dockerFullImageName: hostingModel == 'container' ? '${registryName}.azurecr.io/rag-adminwebapp:${imageTag}' : null useDocker: hostingModel == 'container' ? true : false userAssignedIdentityResourceId: managedIdentityModule.outputs.resourceId // App settings @@ -1446,7 +1446,7 @@ module function 'modules/app/function.bicep' = { tags: union(tags, { 'azd-service-name': hostingModel == 'container' ? 'function-docker' : 'function' }) runtimeName: 'python' runtimeVersion: '3.11' - dockerFullImageName: hostingModel == 'container' ? '${registryName}.azurecr.io/rag-backend:${appversion}' : '' + dockerFullImageName: hostingModel == 'container' ? '${registryName}.azurecr.io/rag-backend:${imageTag}' : '' serverFarmResourceId: webServerFarm.outputs.resourceId applicationInsightsName: enableMonitoring ? monitoring!.outputs.applicationInsightsName : '' storageAccountName: storage.outputs.name diff --git a/infra/main.json b/infra/main.json index f1d51c217..b58482f9f 100644 --- a/infra/main.json +++ b/infra/main.json @@ -6,7 +6,7 @@ "_generator": { "name": "bicep", "version": "0.40.2.10011", - "templateHash": "10600386575020047711" + "templateHash": "14890085901474467053" } }, "parameters": { @@ -530,14 +530,14 @@ "description": "Optional. Size of the Jumpbox Virtual Machine when created. Set to custom value if enablePrivateNetworking is true." } }, - "virtualMachineAdminUsername": { + "vmAdminUsername": { "type": "securestring", "defaultValue": "", "metadata": { "description": "Optional. The user name for the administrator account of the virtual machine. Allows to customize credentials if `enablePrivateNetworking` is set to true." } }, - "virtualMachineAdminPassword": { + "vmAdminPassword": { "type": "securestring", "defaultValue": "", "metadata": { @@ -551,7 +551,7 @@ "description": "Optional. Enable/Disable usage telemetry for module." } }, - "appversion": { + "imageTag": { "type": "string", "defaultValue": "latest_waf", "metadata": { @@ -4900,8 +4900,8 @@ "location": { "value": "[parameters('location')]" }, - "adminUsername": "[if(not(empty(parameters('virtualMachineAdminUsername'))), createObject('value', parameters('virtualMachineAdminUsername')), createObject('value', 'JumpboxAdminUser'))]", - "adminPassword": "[if(not(empty(parameters('virtualMachineAdminPassword'))), createObject('value', parameters('virtualMachineAdminPassword')), createObject('value', 'JumpboxAdminP@ssw0rd1234!'))]", + "adminUsername": "[if(not(empty(parameters('vmAdminUsername'))), createObject('value', parameters('vmAdminUsername')), createObject('value', 'JumpboxAdminUser'))]", + "adminPassword": "[if(not(empty(parameters('vmAdminPassword'))), createObject('value', parameters('vmAdminPassword')), createObject('value', 'JumpboxAdminP@ssw0rd1234!'))]", "tags": { "value": "[parameters('tags')]" }, @@ -33707,7 +33707,7 @@ }, "runtimeName": "[if(equals(parameters('hostingModel'), 'code'), createObject('value', 'python'), createObject('value', null()))]", "runtimeVersion": "[if(equals(parameters('hostingModel'), 'code'), createObject('value', '3.11'), createObject('value', null()))]", - "dockerFullImageName": "[if(equals(parameters('hostingModel'), 'container'), createObject('value', format('{0}.azurecr.io/rag-webapp:{1}', variables('registryName'), parameters('appversion'))), createObject('value', null()))]", + "dockerFullImageName": "[if(equals(parameters('hostingModel'), 'container'), createObject('value', format('{0}.azurecr.io/rag-webapp:{1}', variables('registryName'), parameters('imageTag'))), createObject('value', null()))]", "useDocker": "[if(equals(parameters('hostingModel'), 'container'), createObject('value', true()), createObject('value', false()))]", "allowedOrigins": { "value": [] @@ -36023,7 +36023,7 @@ }, "runtimeName": "[if(equals(parameters('hostingModel'), 'code'), createObject('value', 'python'), createObject('value', null()))]", "runtimeVersion": "[if(equals(parameters('hostingModel'), 'code'), createObject('value', '3.11'), createObject('value', null()))]", - "dockerFullImageName": "[if(equals(parameters('hostingModel'), 'container'), createObject('value', format('{0}.azurecr.io/rag-adminwebapp:{1}', variables('registryName'), parameters('appversion'))), createObject('value', null()))]", + "dockerFullImageName": "[if(equals(parameters('hostingModel'), 'container'), createObject('value', format('{0}.azurecr.io/rag-adminwebapp:{1}', variables('registryName'), parameters('imageTag'))), createObject('value', null()))]", "useDocker": "[if(equals(parameters('hostingModel'), 'container'), createObject('value', true()), createObject('value', false()))]", "userAssignedIdentityResourceId": { "value": "[reference('managedIdentityModule').outputs.resourceId.value]" @@ -38329,7 +38329,7 @@ "runtimeVersion": { "value": "3.11" }, - "dockerFullImageName": "[if(equals(parameters('hostingModel'), 'container'), createObject('value', format('{0}.azurecr.io/rag-backend:{1}', variables('registryName'), parameters('appversion'))), createObject('value', ''))]", + "dockerFullImageName": "[if(equals(parameters('hostingModel'), 'container'), createObject('value', format('{0}.azurecr.io/rag-backend:{1}', variables('registryName'), parameters('imageTag'))), createObject('value', ''))]", "serverFarmResourceId": { "value": "[reference('webServerFarm').outputs.resourceId.value]" }, @@ -55152,8 +55152,8 @@ }, "dependsOn": [ "[format('avmPrivateDnsZones[{0}]', variables('dnsZoneIndex').storageBlob)]", - "[format('avmPrivateDnsZones[{0}]', variables('dnsZoneIndex').storageQueue)]", "[format('avmPrivateDnsZones[{0}]', variables('dnsZoneIndex').storageFile)]", + "[format('avmPrivateDnsZones[{0}]', variables('dnsZoneIndex').storageQueue)]", "managedIdentityModule", "virtualNetwork" ] diff --git a/infra/main.parameters.json b/infra/main.parameters.json index 388b20ea3..6fa38bfb6 100644 --- a/infra/main.parameters.json +++ b/infra/main.parameters.json @@ -172,10 +172,10 @@ "value": "${AZURE_COMPUTER_VISION_VECTORIZE_IMAGE_MODEL_VERSION=2023-04-15}" }, "existingLogAnalyticsWorkspaceId": { - "value": "${AZURE_ENV_LOG_ANALYTICS_WORKSPACE_ID}" + "value": "${AZURE_ENV_LOG_ANALYTICS_WORKSPACE_RID}" }, - "appversion": { - "value": "${AZURE_IMAGE_TAG=latest_waf}" + "imageTag": { + "value": "${AZURE_ENV_IMAGETAG=latest}" } } } diff --git a/infra/main.waf.parameters.json b/infra/main.waf.parameters.json index 27c8dcb6d..4a2b9d743 100644 --- a/infra/main.waf.parameters.json +++ b/infra/main.waf.parameters.json @@ -172,7 +172,7 @@ "value": "${AZURE_COMPUTER_VISION_VECTORIZE_IMAGE_MODEL_VERSION=2023-04-15}" }, "existingLogAnalyticsWorkspaceId": { - "value": "${AZURE_ENV_LOG_ANALYTICS_WORKSPACE_ID}" + "value": "${AZURE_ENV_LOG_ANALYTICS_WORKSPACE_RID}" }, "enableMonitoring": { "value": true @@ -190,22 +190,22 @@ "value": "${ENABLE_PURGE_PROTECTION=false}" }, "enableTelemetry": { - "value": "${ENABLE_TELEMETRY=true}" + "value": "${AZURE_ENV_ENABLE_TELEMETRY}" }, "tags": { "value": {} }, "vmSize": { - "value": "${AZURE_ENV_JUMPBOX_SIZE}" + "value": "${AZURE_ENV_VM_SIZE}" }, - "virtualMachineAdminUsername": { + "vmAdminUsername": { "value": "${AZURE_ENV_VM_ADMIN_USERNAME}" }, - "virtualMachineAdminPassword": { + "vmAdminPassword": { "value": "${AZURE_ENV_VM_ADMIN_PASSWORD}" }, - "appversion": { - "value": "${AZURE_IMAGE_TAG=latest_waf}" + "imageTag": { + "value": "${AZURE_ENV_IMAGETAG=latest}" } } } From e38c9d273cd62b19b9ad563ab47bf8c592c7defd Mon Sep 17 00:00:00 2001 From: Harmanpreet-Microsoft Date: Thu, 19 Mar 2026 15:52:58 +0530 Subject: [PATCH 4/9] fix: Add Type property to resourceGroupTags based on enablePrivateNetworking condition --- infra/main.bicep | 1 + 1 file changed, 1 insertion(+) diff --git a/infra/main.bicep b/infra/main.bicep index e57269e8d..f6812acbf 100644 --- a/infra/main.bicep +++ b/infra/main.bicep @@ -387,6 +387,7 @@ resource resourceGroupTags 'Microsoft.Resources/tags@2025-04-01' = { { TemplateName: 'CWYD' CreatedBy: createdBy + Type: enablePrivateNetworking ? 'WAF' : 'Non-WAF' } ) } From c0ede0304660918e7e3508933e8a9c92c7eed63a Mon Sep 17 00:00:00 2001 From: Harmanpreet-Microsoft Date: Fri, 27 Mar 2026 14:08:52 +0530 Subject: [PATCH 5/9] fix: Update log analytics workspace ID input to use RID instead of ID --- .github/workflows/job-deploy.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/job-deploy.yml b/.github/workflows/job-deploy.yml index a62ac782d..641883ab1 100644 --- a/.github/workflows/job-deploy.yml +++ b/.github/workflows/job-deploy.yml @@ -139,7 +139,7 @@ jobs: INPUT_EXP: ${{ inputs.EXP }} INPUT_CLEANUP_RESOURCES: ${{ inputs.cleanup_resources }} INPUT_RUN_E2E_TESTS: ${{ inputs.run_e2e_tests }} - INPUT_AZURE_ENV_LOG_ANALYTICS_WORKSPACE_ID: ${{ inputs.AZURE_ENV_LOG_ANALYTICS_WORKSPACE_ID }} + INPUT_AZURE_ENV_LOG_ANALYTICS_WORKSPACE_RID: ${{ inputs.AZURE_ENV_LOG_ANALYTICS_WORKSPACE_RID }} INPUT_RG_TAGS: ${{ env.RG_TAGS }} INPUT_EXISTING_WEBAPP_URL: ${{ inputs.existing_webapp_url }} INPUT_AZURE_SEARCH_USE_INTEGRATED_VECTORIZATION: ${{ inputs.AZURE_SEARCH_USE_INTEGRATED_VECTORIZATION }} From d80794e9e93cee5d93ef6d5fc5acf6fc69146310 Mon Sep 17 00:00:00 2001 From: Harmanpreet-Microsoft Date: Wed, 1 Apr 2026 15:19:44 +0530 Subject: [PATCH 6/9] fix: Rename log analytics workspace ID variable to use 'EXISTING' prefix across workflows and documentation --- .github/workflows/deploy-orchestrator.yml | 4 +-- .github/workflows/deploy-v2.yml | 26 ++++++++-------- .github/workflows/job-deploy-linux.yml | 36 +++++++++++------------ .github/workflows/job-deploy-windows.yml | 36 +++++++++++------------ .github/workflows/job-deploy.yml | 22 +++++++------- docs/re-use-log-analytics.md | 2 +- infra/main.parameters.json | 2 +- infra/main.waf.parameters.json | 2 +- 8 files changed, 65 insertions(+), 65 deletions(-) diff --git a/.github/workflows/deploy-orchestrator.yml b/.github/workflows/deploy-orchestrator.yml index 80a2928b0..bf9a9c93f 100644 --- a/.github/workflows/deploy-orchestrator.yml +++ b/.github/workflows/deploy-orchestrator.yml @@ -46,7 +46,7 @@ on: description: 'Trigger type (workflow_dispatch, pull_request, schedule)' required: true type: string - AZURE_ENV_LOG_ANALYTICS_WORKSPACE_RID: + AZURE_ENV_EXISTING_LOG_ANALYTICS_WORKSPACE_RID: description: 'Log Analytics Workspace ID (Optional)' required: false default: '' @@ -87,7 +87,7 @@ jobs: EXP: ${{ inputs.EXP }} existing_webapp_url: ${{ inputs.existing_webapp_url }} run_e2e_tests: ${{ inputs.run_e2e_tests }} - AZURE_ENV_LOG_ANALYTICS_WORKSPACE_RID: ${{ inputs.AZURE_ENV_LOG_ANALYTICS_WORKSPACE_RID }} + AZURE_ENV_EXISTING_LOG_ANALYTICS_WORKSPACE_RID: ${{ inputs.AZURE_ENV_EXISTING_LOG_ANALYTICS_WORKSPACE_RID }} cleanup_resources: ${{ inputs.cleanup_resources }} AZURE_SEARCH_USE_INTEGRATED_VECTORIZATION: ${{ inputs.AZURE_SEARCH_USE_INTEGRATED_VECTORIZATION }} AZURE_SEARCH_USE_SEMANTIC_SEARCH: ${{ inputs.AZURE_SEARCH_USE_SEMANTIC_SEARCH }} diff --git a/.github/workflows/deploy-v2.yml b/.github/workflows/deploy-v2.yml index a0f00c9d0..1003d3082 100644 --- a/.github/workflows/deploy-v2.yml +++ b/.github/workflows/deploy-v2.yml @@ -64,7 +64,7 @@ on: - 'GoldenPath-Testing' - 'Smoke-Testing' - 'None' - AZURE_ENV_LOG_ANALYTICS_WORKSPACE_RID: + AZURE_ENV_EXISTING_LOG_ANALYTICS_WORKSPACE_RID: description: 'Log Analytics Workspace ID (Optional)' required: false default: '' @@ -130,7 +130,7 @@ jobs: exp: ${{ steps.validate.outputs.exp }} cleanup_resources: ${{ steps.validate.outputs.cleanup_resources }} run_e2e_tests: ${{ steps.validate.outputs.run_e2e_tests }} - AZURE_ENV_LOG_ANALYTICS_WORKSPACE_RID: ${{ steps.validate.outputs.AZURE_ENV_LOG_ANALYTICS_WORKSPACE_RID }} + AZURE_ENV_EXISTING_LOG_ANALYTICS_WORKSPACE_RID: ${{ steps.validate.outputs.AZURE_ENV_EXISTING_LOG_ANALYTICS_WORKSPACE_RID }} azure_search_use_integrated_vectorization: ${{ steps.validate.outputs.azure_search_use_integrated_vectorization }} azure_search_use_semantic_search: ${{ steps.validate.outputs.azure_search_use_semantic_search }} use_advanced_image_processing: ${{ steps.validate.outputs.use_advanced_image_processing }} @@ -148,7 +148,7 @@ jobs: INPUT_EXP: ${{ github.event.inputs.EXP }} INPUT_CLEANUP_RESOURCES: ${{ github.event.inputs.cleanup_resources }} INPUT_RUN_E2E_TESTS: ${{ github.event.inputs.run_e2e_tests }} - INPUT_AZURE_ENV_LOG_ANALYTICS_WORKSPACE_RID: ${{ github.event.inputs.AZURE_ENV_LOG_ANALYTICS_WORKSPACE_RID }} + INPUT_AZURE_ENV_EXISTING_LOG_ANALYTICS_WORKSPACE_RID: ${{ github.event.inputs.AZURE_ENV_EXISTING_LOG_ANALYTICS_WORKSPACE_RID }} INPUT_AZURE_SEARCH_USE_INTEGRATED_VECTORIZATION: ${{ github.event.inputs.AZURE_SEARCH_USE_INTEGRATED_VECTORIZATION }} INPUT_AZURE_SEARCH_USE_SEMANTIC_SEARCH: ${{ github.event.inputs.AZURE_SEARCH_USE_SEMANTIC_SEARCH }} INPUT_USE_ADVANCED_IMAGE_PROCESSING: ${{ github.event.inputs.USE_ADVANCED_IMAGE_PROCESSING }} @@ -246,19 +246,19 @@ jobs: echo "✅ run_e2e_tests: '$TEST_OPTION' is valid" fi - # Validate AZURE_ENV_LOG_ANALYTICS_WORKSPACE_RID (optional, Azure Resource ID format) - if [[ -n "$INPUT_AZURE_ENV_LOG_ANALYTICS_WORKSPACE_RID" ]]; then - if [[ ! "$INPUT_AZURE_ENV_LOG_ANALYTICS_WORKSPACE_RID" =~ ^/subscriptions/[a-fA-F0-9-]+/[Rr]esource[Gg]roups/[^/]+/providers/[Mm]icrosoft\.[Oo]perational[Ii]nsights/[Ww]orkspaces/[^/]+$ ]]; then - echo "❌ ERROR: AZURE_ENV_LOG_ANALYTICS_WORKSPACE_RID is invalid. Must be a valid Azure Resource ID format:" + # Validate AZURE_ENV_EXISTING_LOG_ANALYTICS_WORKSPACE_RID (optional, Azure Resource ID format) + if [[ -n "$INPUT_AZURE_ENV_EXISTING_LOG_ANALYTICS_WORKSPACE_RID" ]]; then + if [[ ! "$INPUT_AZURE_ENV_EXISTING_LOG_ANALYTICS_WORKSPACE_RID" =~ ^/subscriptions/[a-fA-F0-9-]+/[Rr]esource[Gg]roups/[^/]+/providers/[Mm]icrosoft\.[Oo]perational[Ii]nsights/[Ww]orkspaces/[^/]+$ ]]; then + echo "❌ ERROR: AZURE_ENV_EXISTING_LOG_ANALYTICS_WORKSPACE_RID is invalid. Must be a valid Azure Resource ID format:" echo " /subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.OperationalInsights/workspaces/{workspaceName}" - echo " Got: '$INPUT_AZURE_ENV_LOG_ANALYTICS_WORKSPACE_RID'" - VALIDATION_ERRORS="${VALIDATION_ERRORS}| AZURE_ENV_LOG_ANALYTICS_WORKSPACE_RID | (invalid value) | Must be a valid Azure Resource ID format |\n" + echo " Got: '$INPUT_AZURE_ENV_EXISTING_LOG_ANALYTICS_WORKSPACE_RID'" + VALIDATION_ERRORS="${VALIDATION_ERRORS}| AZURE_ENV_EXISTING_LOG_ANALYTICS_WORKSPACE_RID | (invalid value) | Must be a valid Azure Resource ID format |\n" VALIDATION_FAILED=true else - echo "✅ AZURE_ENV_LOG_ANALYTICS_WORKSPACE_RID: Valid Resource ID format" + echo "✅ AZURE_ENV_EXISTING_LOG_ANALYTICS_WORKSPACE_RID: Valid Resource ID format" fi else - echo "✅ AZURE_ENV_LOG_ANALYTICS_WORKSPACE_RID: Not provided (optional)" + echo "✅ AZURE_ENV_EXISTING_LOG_ANALYTICS_WORKSPACE_RID: Not provided (optional)" fi # Validate AZURE_SEARCH_USE_INTEGRATED_VECTORIZATION (boolean string) @@ -364,7 +364,7 @@ jobs: echo "exp=$EXP_ENABLED" >> $GITHUB_OUTPUT echo "cleanup_resources=$CLEANUP_RESOURCES" >> $GITHUB_OUTPUT echo "run_e2e_tests=$TEST_OPTION" >> $GITHUB_OUTPUT - echo "AZURE_ENV_LOG_ANALYTICS_WORKSPACE_RID=$INPUT_AZURE_ENV_LOG_ANALYTICS_WORKSPACE_RID" >> $GITHUB_OUTPUT + echo "AZURE_ENV_EXISTING_LOG_ANALYTICS_WORKSPACE_RID=$INPUT_AZURE_ENV_EXISTING_LOG_ANALYTICS_WORKSPACE_RID" >> $GITHUB_OUTPUT echo "azure_search_use_integrated_vectorization=$INTEGRATED_VECTORIZATION" >> $GITHUB_OUTPUT echo "azure_search_use_semantic_search=$SEMANTIC_SEARCH" >> $GITHUB_OUTPUT echo "use_advanced_image_processing=$ADVANCED_IMAGE_PROCESSING" >> $GITHUB_OUTPUT @@ -381,7 +381,7 @@ jobs: EXP: ${{ needs.validate-inputs.outputs.exp == 'true' }} cleanup_resources: ${{ github.event_name != 'workflow_dispatch' || needs.validate-inputs.outputs.cleanup_resources == 'true' }} run_e2e_tests: ${{ needs.validate-inputs.outputs.run_e2e_tests || 'GoldenPath-Testing' }} - AZURE_ENV_LOG_ANALYTICS_WORKSPACE_RID: ${{ needs.validate-inputs.outputs.AZURE_ENV_LOG_ANALYTICS_WORKSPACE_RID || '' }} + AZURE_ENV_EXISTING_LOG_ANALYTICS_WORKSPACE_RID: ${{ needs.validate-inputs.outputs.AZURE_ENV_EXISTING_LOG_ANALYTICS_WORKSPACE_RID || '' }} existing_webapp_url: ${{ needs.validate-inputs.outputs.existing_webapp_url || '' }} existing_admin_app_url: ${{ needs.validate-inputs.outputs.existing_admin_app_url || '' }} trigger_type: ${{ github.event_name }} diff --git a/.github/workflows/job-deploy-linux.yml b/.github/workflows/job-deploy-linux.yml index abbf056d3..f79f58b79 100644 --- a/.github/workflows/job-deploy-linux.yml +++ b/.github/workflows/job-deploy-linux.yml @@ -25,7 +25,7 @@ on: required: false type: string default: 'false' - AZURE_ENV_LOG_ANALYTICS_WORKSPACE_RID: + AZURE_ENV_EXISTING_LOG_ANALYTICS_WORKSPACE_RID: required: false type: string AZURE_SEARCH_USE_INTEGRATED_VECTORIZATION: @@ -91,7 +91,7 @@ jobs: INPUT_IMAGE_TAG: ${{ inputs.IMAGE_TAG }} INPUT_EXP: ${{ inputs.EXP }} INPUT_WAF_ENABLED: ${{ inputs.WAF_ENABLED }} - INPUT_AZURE_ENV_LOG_ANALYTICS_WORKSPACE_RID: ${{ inputs.AZURE_ENV_LOG_ANALYTICS_WORKSPACE_RID }} + INPUT_AZURE_ENV_EXISTING_LOG_ANALYTICS_WORKSPACE_RID: ${{ inputs.AZURE_ENV_EXISTING_LOG_ANALYTICS_WORKSPACE_RID }} INPUT_AZURE_SEARCH_USE_INTEGRATED_VECTORIZATION: ${{ inputs.AZURE_SEARCH_USE_INTEGRATED_VECTORIZATION }} INPUT_AZURE_SEARCH_USE_SEMANTIC_SEARCH: ${{ inputs.AZURE_SEARCH_USE_SEMANTIC_SEARCH }} INPUT_USE_ADVANCED_IMAGE_PROCESSING: ${{ inputs.USE_ADVANCED_IMAGE_PROCESSING }} @@ -174,18 +174,18 @@ jobs: echo "✅ WAF_ENABLED: '$INPUT_WAF_ENABLED' is valid" fi - # Validate AZURE_ENV_LOG_ANALYTICS_WORKSPACE_RID (optional, Azure Resource ID format) - if [[ -n "$INPUT_AZURE_ENV_LOG_ANALYTICS_WORKSPACE_RID" ]]; then - if [[ ! "$INPUT_AZURE_ENV_LOG_ANALYTICS_WORKSPACE_RID" =~ ^/subscriptions/[a-fA-F0-9-]+/[Rr]esource[Gg]roups/[^/]+/providers/[Mm]icrosoft\.[Oo]perational[Ii]nsights/[Ww]orkspaces/[^/]+$ ]]; then - echo "❌ ERROR: AZURE_ENV_LOG_ANALYTICS_WORKSPACE_RID is invalid. Must be a valid Azure Resource ID format:" + # Validate AZURE_ENV_EXISTING_LOG_ANALYTICS_WORKSPACE_RID (optional, Azure Resource ID format) + if [[ -n "$INPUT_AZURE_ENV_EXISTING_LOG_ANALYTICS_WORKSPACE_RID" ]]; then + if [[ ! "$INPUT_AZURE_ENV_EXISTING_LOG_ANALYTICS_WORKSPACE_RID" =~ ^/subscriptions/[a-fA-F0-9-]+/[Rr]esource[Gg]roups/[^/]+/providers/[Mm]icrosoft\.[Oo]perational[Ii]nsights/[Ww]orkspaces/[^/]+$ ]]; then + echo "❌ ERROR: AZURE_ENV_EXISTING_LOG_ANALYTICS_WORKSPACE_RID is invalid. Must be a valid Azure Resource ID format:" echo " /subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.OperationalInsights/workspaces/{workspaceName}" - echo " Got: '$INPUT_AZURE_ENV_LOG_ANALYTICS_WORKSPACE_RID'" + echo " Got: '$INPUT_AZURE_ENV_EXISTING_LOG_ANALYTICS_WORKSPACE_RID'" VALIDATION_FAILED=true else - echo "✅ AZURE_ENV_LOG_ANALYTICS_WORKSPACE_RID: Valid Resource ID format" + echo "✅ AZURE_ENV_EXISTING_LOG_ANALYTICS_WORKSPACE_RID: Valid Resource ID format" fi else - echo "✅ AZURE_ENV_LOG_ANALYTICS_WORKSPACE_RID: Not provided (optional)" + echo "✅ AZURE_ENV_EXISTING_LOG_ANALYTICS_WORKSPACE_RID: Not provided (optional)" fi # Validate AZURE_SEARCH_USE_INTEGRATED_VECTORIZATION (boolean string) @@ -280,13 +280,13 @@ jobs: INPUT_AZURE_ENV_OPENAI_LOCATION: ${{ inputs.AZURE_ENV_OPENAI_LOCATION }} INPUT_RESOURCE_GROUP_NAME: ${{ inputs.RESOURCE_GROUP_NAME }} INPUT_EXP: ${{ inputs.EXP }} - INPUT_AZURE_ENV_LOG_ANALYTICS_WORKSPACE_RID: ${{ inputs.AZURE_ENV_LOG_ANALYTICS_WORKSPACE_RID }} + INPUT_AZURE_ENV_EXISTING_LOG_ANALYTICS_WORKSPACE_RID: ${{ inputs.AZURE_ENV_EXISTING_LOG_ANALYTICS_WORKSPACE_RID }} INPUT_AZURE_SEARCH_USE_INTEGRATED_VECTORIZATION: ${{ inputs.AZURE_SEARCH_USE_INTEGRATED_VECTORIZATION }} INPUT_AZURE_SEARCH_USE_SEMANTIC_SEARCH: ${{ inputs.AZURE_SEARCH_USE_SEMANTIC_SEARCH }} INPUT_USE_ADVANCED_IMAGE_PROCESSING: ${{ inputs.USE_ADVANCED_IMAGE_PROCESSING }} INPUT_DATABASE_TYPE: ${{ inputs.DATABASE_TYPE }} - EVENT_AZURE_ENV_LOG_ANALYTICS_WORKSPACE_RID: ${{ github.event.inputs.AZURE_ENV_LOG_ANALYTICS_WORKSPACE_RID }} - SECRET_AZURE_ENV_LOG_ANALYTICS_WORKSPACE_RID: ${{ secrets.AZURE_ENV_LOG_ANALYTICS_WORKSPACE_RID }} + EVENT_AZURE_ENV_EXISTING_LOG_ANALYTICS_WORKSPACE_RID: ${{ github.event.inputs.AZURE_ENV_EXISTING_LOG_ANALYTICS_WORKSPACE_RID }} + SECRET_AZURE_ENV_EXISTING_LOG_ANALYTICS_WORKSPACE_RID: ${{ secrets.AZURE_ENV_EXISTING_LOG_ANALYTICS_WORKSPACE_RID }} run: | set -e @@ -306,17 +306,17 @@ jobs: echo "✅ EXP ENABLED - Setting EXP parameters..." # Set EXP variables dynamically - if [[ -n "$EVENT_AZURE_ENV_LOG_ANALYTICS_WORKSPACE_RID" ]]; then - EXP_LOG_ANALYTICS_ID="$EVENT_AZURE_ENV_LOG_ANALYTICS_WORKSPACE_RID" + if [[ -n "$EVENT_AZURE_ENV_EXISTING_LOG_ANALYTICS_WORKSPACE_RID" ]]; then + EXP_LOG_ANALYTICS_ID="$EVENT_AZURE_ENV_EXISTING_LOG_ANALYTICS_WORKSPACE_RID" else - EXP_LOG_ANALYTICS_ID="$SECRET_AZURE_ENV_LOG_ANALYTICS_WORKSPACE_RID" + EXP_LOG_ANALYTICS_ID="$SECRET_AZURE_ENV_EXISTING_LOG_ANALYTICS_WORKSPACE_RID" fi - echo "AZURE_ENV_LOG_ANALYTICS_WORKSPACE_RID: $EXP_LOG_ANALYTICS_ID" - azd env set AZURE_ENV_LOG_ANALYTICS_WORKSPACE_RID="$EXP_LOG_ANALYTICS_ID" + echo "AZURE_ENV_EXISTING_LOG_ANALYTICS_WORKSPACE_RID: $EXP_LOG_ANALYTICS_ID" + azd env set AZURE_ENV_EXISTING_LOG_ANALYTICS_WORKSPACE_RID="$EXP_LOG_ANALYTICS_ID" else echo "❌ EXP DISABLED - Skipping EXP parameters" - if [[ -n "$EVENT_AZURE_ENV_LOG_ANALYTICS_WORKSPACE_RID" ]]; then + if [[ -n "$EVENT_AZURE_ENV_EXISTING_LOG_ANALYTICS_WORKSPACE_RID" ]]; then echo "⚠️ Warning: EXP parameter values provided but EXP is disabled. These values will be ignored." fi fi diff --git a/.github/workflows/job-deploy-windows.yml b/.github/workflows/job-deploy-windows.yml index 08b6f671d..c171fa3c5 100644 --- a/.github/workflows/job-deploy-windows.yml +++ b/.github/workflows/job-deploy-windows.yml @@ -25,7 +25,7 @@ on: required: false type: string default: 'false' - AZURE_ENV_LOG_ANALYTICS_WORKSPACE_RID: + AZURE_ENV_EXISTING_LOG_ANALYTICS_WORKSPACE_RID: required: false type: string AZURE_SEARCH_USE_INTEGRATED_VECTORIZATION: @@ -91,7 +91,7 @@ jobs: INPUT_IMAGE_TAG: ${{ inputs.IMAGE_TAG }} INPUT_EXP: ${{ inputs.EXP }} INPUT_WAF_ENABLED: ${{ inputs.WAF_ENABLED }} - INPUT_AZURE_ENV_LOG_ANALYTICS_WORKSPACE_RID: ${{ inputs.AZURE_ENV_LOG_ANALYTICS_WORKSPACE_RID }} + INPUT_AZURE_ENV_EXISTING_LOG_ANALYTICS_WORKSPACE_RID: ${{ inputs.AZURE_ENV_EXISTING_LOG_ANALYTICS_WORKSPACE_RID }} INPUT_AZURE_SEARCH_USE_INTEGRATED_VECTORIZATION: ${{ inputs.AZURE_SEARCH_USE_INTEGRATED_VECTORIZATION }} INPUT_AZURE_SEARCH_USE_SEMANTIC_SEARCH: ${{ inputs.AZURE_SEARCH_USE_SEMANTIC_SEARCH }} INPUT_USE_ADVANCED_IMAGE_PROCESSING: ${{ inputs.USE_ADVANCED_IMAGE_PROCESSING }} @@ -174,18 +174,18 @@ jobs: echo "✅ WAF_ENABLED: '$INPUT_WAF_ENABLED' is valid" fi - # Validate AZURE_ENV_LOG_ANALYTICS_WORKSPACE_RID (optional, Azure Resource ID format) - if [[ -n "$INPUT_AZURE_ENV_LOG_ANALYTICS_WORKSPACE_RID" ]]; then - if [[ ! "$INPUT_AZURE_ENV_LOG_ANALYTICS_WORKSPACE_RID" =~ ^/subscriptions/[a-fA-F0-9-]+/[Rr]esource[Gg]roups/[^/]+/providers/[Mm]icrosoft\.[Oo]perational[Ii]nsights/[Ww]orkspaces/[^/]+$ ]]; then - echo "❌ ERROR: AZURE_ENV_LOG_ANALYTICS_WORKSPACE_RID is invalid. Must be a valid Azure Resource ID format:" + # Validate AZURE_ENV_EXISTING_LOG_ANALYTICS_WORKSPACE_RID (optional, Azure Resource ID format) + if [[ -n "$INPUT_AZURE_ENV_EXISTING_LOG_ANALYTICS_WORKSPACE_RID" ]]; then + if [[ ! "$INPUT_AZURE_ENV_EXISTING_LOG_ANALYTICS_WORKSPACE_RID" =~ ^/subscriptions/[a-fA-F0-9-]+/[Rr]esource[Gg]roups/[^/]+/providers/[Mm]icrosoft\.[Oo]perational[Ii]nsights/[Ww]orkspaces/[^/]+$ ]]; then + echo "❌ ERROR: AZURE_ENV_EXISTING_LOG_ANALYTICS_WORKSPACE_RID is invalid. Must be a valid Azure Resource ID format:" echo " /subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.OperationalInsights/workspaces/{workspaceName}" - echo " Got: '$INPUT_AZURE_ENV_LOG_ANALYTICS_WORKSPACE_RID'" + echo " Got: '$INPUT_AZURE_ENV_EXISTING_LOG_ANALYTICS_WORKSPACE_RID'" VALIDATION_FAILED=true else - echo "✅ AZURE_ENV_LOG_ANALYTICS_WORKSPACE_RID: Valid Resource ID format" + echo "✅ AZURE_ENV_EXISTING_LOG_ANALYTICS_WORKSPACE_RID: Valid Resource ID format" fi else - echo "✅ AZURE_ENV_LOG_ANALYTICS_WORKSPACE_RID: Not provided (optional)" + echo "✅ AZURE_ENV_EXISTING_LOG_ANALYTICS_WORKSPACE_RID: Not provided (optional)" fi # Validate AZURE_SEARCH_USE_INTEGRATED_VECTORIZATION (boolean string) @@ -281,13 +281,13 @@ jobs: INPUT_AZURE_ENV_OPENAI_LOCATION: ${{ inputs.AZURE_ENV_OPENAI_LOCATION }} INPUT_RESOURCE_GROUP_NAME: ${{ inputs.RESOURCE_GROUP_NAME }} INPUT_EXP: ${{ inputs.EXP }} - INPUT_AZURE_ENV_LOG_ANALYTICS_WORKSPACE_RID: ${{ inputs.AZURE_ENV_LOG_ANALYTICS_WORKSPACE_RID }} + INPUT_AZURE_ENV_EXISTING_LOG_ANALYTICS_WORKSPACE_RID: ${{ inputs.AZURE_ENV_EXISTING_LOG_ANALYTICS_WORKSPACE_RID }} INPUT_AZURE_SEARCH_USE_INTEGRATED_VECTORIZATION: ${{ inputs.AZURE_SEARCH_USE_INTEGRATED_VECTORIZATION }} INPUT_AZURE_SEARCH_USE_SEMANTIC_SEARCH: ${{ inputs.AZURE_SEARCH_USE_SEMANTIC_SEARCH }} INPUT_USE_ADVANCED_IMAGE_PROCESSING: ${{ inputs.USE_ADVANCED_IMAGE_PROCESSING }} INPUT_DATABASE_TYPE: ${{ inputs.DATABASE_TYPE }} - EVENT_AZURE_ENV_LOG_ANALYTICS_WORKSPACE_RID: ${{ github.event.inputs.AZURE_ENV_LOG_ANALYTICS_WORKSPACE_RID }} - SECRET_AZURE_ENV_LOG_ANALYTICS_WORKSPACE_RID: ${{ secrets.AZURE_ENV_LOG_ANALYTICS_WORKSPACE_RID }} + EVENT_AZURE_ENV_EXISTING_LOG_ANALYTICS_WORKSPACE_RID: ${{ github.event.inputs.AZURE_ENV_EXISTING_LOG_ANALYTICS_WORKSPACE_RID }} + SECRET_AZURE_ENV_EXISTING_LOG_ANALYTICS_WORKSPACE_RID: ${{ secrets.AZURE_ENV_EXISTING_LOG_ANALYTICS_WORKSPACE_RID }} run: | $ErrorActionPreference = "Stop" @@ -307,17 +307,17 @@ jobs: Write-Host "✅ EXP ENABLED - Setting EXP parameters..." # Set EXP variables dynamically - if (-not [string]::IsNullOrEmpty($env:EVENT_AZURE_ENV_LOG_ANALYTICS_WORKSPACE_RID)) { - $ExpLogAnalyticsId = $env:EVENT_AZURE_ENV_LOG_ANALYTICS_WORKSPACE_RID + if (-not [string]::IsNullOrEmpty($env:EVENT_AZURE_ENV_EXISTING_LOG_ANALYTICS_WORKSPACE_RID)) { + $ExpLogAnalyticsId = $env:EVENT_AZURE_ENV_EXISTING_LOG_ANALYTICS_WORKSPACE_RID } else { - $ExpLogAnalyticsId = $env:SECRET_AZURE_ENV_LOG_ANALYTICS_WORKSPACE_RID + $ExpLogAnalyticsId = $env:SECRET_AZURE_ENV_EXISTING_LOG_ANALYTICS_WORKSPACE_RID } - Write-Host "AZURE_ENV_LOG_ANALYTICS_WORKSPACE_RID: $ExpLogAnalyticsId" - azd env set AZURE_ENV_LOG_ANALYTICS_WORKSPACE_RID="$ExpLogAnalyticsId" + Write-Host "AZURE_ENV_EXISTING_LOG_ANALYTICS_WORKSPACE_RID: $ExpLogAnalyticsId" + azd env set AZURE_ENV_EXISTING_LOG_ANALYTICS_WORKSPACE_RID="$ExpLogAnalyticsId" } else { Write-Host "❌ EXP DISABLED - Skipping EXP parameters" - if (-not [string]::IsNullOrEmpty($env:EVENT_AZURE_ENV_LOG_ANALYTICS_WORKSPACE_RID)) { + if (-not [string]::IsNullOrEmpty($env:EVENT_AZURE_ENV_EXISTING_LOG_ANALYTICS_WORKSPACE_RID)) { Write-Host "⚠️ Warning: EXP parameter values provided but EXP is disabled. These values will be ignored." } } diff --git a/.github/workflows/job-deploy.yml b/.github/workflows/job-deploy.yml index 641883ab1..7f2c7da89 100644 --- a/.github/workflows/job-deploy.yml +++ b/.github/workflows/job-deploy.yml @@ -26,7 +26,7 @@ on: required: false default: false type: boolean - AZURE_ENV_LOG_ANALYTICS_WORKSPACE_RID: + AZURE_ENV_EXISTING_LOG_ANALYTICS_WORKSPACE_RID: description: 'Log Analytics Workspace ID (Optional)' required: false default: '' @@ -139,7 +139,7 @@ jobs: INPUT_EXP: ${{ inputs.EXP }} INPUT_CLEANUP_RESOURCES: ${{ inputs.cleanup_resources }} INPUT_RUN_E2E_TESTS: ${{ inputs.run_e2e_tests }} - INPUT_AZURE_ENV_LOG_ANALYTICS_WORKSPACE_RID: ${{ inputs.AZURE_ENV_LOG_ANALYTICS_WORKSPACE_RID }} + INPUT_AZURE_ENV_EXISTING_LOG_ANALYTICS_WORKSPACE_RID: ${{ inputs.AZURE_ENV_EXISTING_LOG_ANALYTICS_WORKSPACE_RID }} INPUT_RG_TAGS: ${{ env.RG_TAGS }} INPUT_EXISTING_WEBAPP_URL: ${{ inputs.existing_webapp_url }} INPUT_AZURE_SEARCH_USE_INTEGRATED_VECTORIZATION: ${{ inputs.AZURE_SEARCH_USE_INTEGRATED_VECTORIZATION }} @@ -213,18 +213,18 @@ jobs: echo "✅ run_e2e_tests: Not provided (will use default 'GoldenPath-Testing')" fi - # Validate AZURE_ENV_LOG_ANALYTICS_WORKSPACE_RID (optional, Azure Resource ID format) - if [[ -n "$INPUT_AZURE_ENV_LOG_ANALYTICS_WORKSPACE_RID" ]]; then - if [[ ! "$INPUT_AZURE_ENV_LOG_ANALYTICS_WORKSPACE_RID" =~ ^/subscriptions/[a-fA-F0-9-]+/[Rr]esource[Gg]roups/[^/]+/providers/[Mm]icrosoft\.[Oo]perational[Ii]nsights/[Ww]orkspaces/[^/]+$ ]]; then - echo "❌ ERROR: AZURE_ENV_LOG_ANALYTICS_WORKSPACE_RID is invalid. Must be a valid Azure Resource ID format:" + # Validate AZURE_ENV_EXISTING_LOG_ANALYTICS_WORKSPACE_RID (optional, Azure Resource ID format) + if [[ -n "$INPUT_AZURE_ENV_EXISTING_LOG_ANALYTICS_WORKSPACE_RID" ]]; then + if [[ ! "$INPUT_AZURE_ENV_EXISTING_LOG_ANALYTICS_WORKSPACE_RID" =~ ^/subscriptions/[a-fA-F0-9-]+/[Rr]esource[Gg]roups/[^/]+/providers/[Mm]icrosoft\.[Oo]perational[Ii]nsights/[Ww]orkspaces/[^/]+$ ]]; then + echo "❌ ERROR: AZURE_ENV_EXISTING_LOG_ANALYTICS_WORKSPACE_RID is invalid. Must be a valid Azure Resource ID format:" echo " /subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.OperationalInsights/workspaces/{workspaceName}" - echo " Got: '$INPUT_AZURE_ENV_LOG_ANALYTICS_WORKSPACE_RID'" + echo " Got: '$INPUT_AZURE_ENV_EXISTING_LOG_ANALYTICS_WORKSPACE_RID'" VALIDATION_FAILED=true else - echo "✅ AZURE_ENV_LOG_ANALYTICS_WORKSPACE_RID: Valid Resource ID format" + echo "✅ AZURE_ENV_EXISTING_LOG_ANALYTICS_WORKSPACE_RID: Valid Resource ID format" fi else - echo "✅ AZURE_ENV_LOG_ANALYTICS_WORKSPACE_RID: Not provided (optional)" + echo "✅ AZURE_ENV_EXISTING_LOG_ANALYTICS_WORKSPACE_RID: Not provided (optional)" fi # Validate AZURE_SEARCH_USE_INTEGRATED_VECTORIZATION (boolean string) @@ -530,7 +530,7 @@ jobs: IMAGE_TAG: ${{ needs.azure-setup.outputs.IMAGE_TAG }} EXP: ${{ inputs.EXP || 'false' }} WAF_ENABLED: ${{ inputs.waf_enabled == true && 'true' || 'false' }} - AZURE_ENV_LOG_ANALYTICS_WORKSPACE_RID: ${{ inputs.AZURE_ENV_LOG_ANALYTICS_WORKSPACE_RID }} + AZURE_ENV_EXISTING_LOG_ANALYTICS_WORKSPACE_RID: ${{ inputs.AZURE_ENV_EXISTING_LOG_ANALYTICS_WORKSPACE_RID }} AZURE_SEARCH_USE_INTEGRATED_VECTORIZATION: ${{ inputs.AZURE_SEARCH_USE_INTEGRATED_VECTORIZATION }} AZURE_SEARCH_USE_SEMANTIC_SEARCH: ${{ inputs.AZURE_SEARCH_USE_SEMANTIC_SEARCH }} USE_ADVANCED_IMAGE_PROCESSING: ${{ inputs.USE_ADVANCED_IMAGE_PROCESSING }} @@ -550,7 +550,7 @@ jobs: IMAGE_TAG: ${{ needs.azure-setup.outputs.IMAGE_TAG }} EXP: ${{ inputs.EXP || 'false' }} WAF_ENABLED: ${{ inputs.waf_enabled == true && 'true' || 'false' }} - AZURE_ENV_LOG_ANALYTICS_WORKSPACE_RID: ${{ inputs.AZURE_ENV_LOG_ANALYTICS_WORKSPACE_RID }} + AZURE_ENV_EXISTING_LOG_ANALYTICS_WORKSPACE_RID: ${{ inputs.AZURE_ENV_EXISTING_LOG_ANALYTICS_WORKSPACE_RID }} AZURE_SEARCH_USE_INTEGRATED_VECTORIZATION: ${{ inputs.AZURE_SEARCH_USE_INTEGRATED_VECTORIZATION }} AZURE_SEARCH_USE_SEMANTIC_SEARCH: ${{ inputs.AZURE_SEARCH_USE_SEMANTIC_SEARCH }} USE_ADVANCED_IMAGE_PROCESSING: ${{ inputs.USE_ADVANCED_IMAGE_PROCESSING }} diff --git a/docs/re-use-log-analytics.md b/docs/re-use-log-analytics.md index a3b0a9f09..b96b26ea6 100644 --- a/docs/re-use-log-analytics.md +++ b/docs/re-use-log-analytics.md @@ -23,7 +23,7 @@ Copy Resource ID that is your Workspace ID ### 4. Set the Workspace ID in Your Environment Run the following command in your terminal ```bash -azd env set AZURE_ENV_LOG_ANALYTICS_WORKSPACE_RID '' +azd env set AZURE_ENV_EXISTING_LOG_ANALYTICS_WORKSPACE_RID '' ``` Replace `` with the value obtained from Step 3. diff --git a/infra/main.parameters.json b/infra/main.parameters.json index 6fa38bfb6..ad8fa7563 100644 --- a/infra/main.parameters.json +++ b/infra/main.parameters.json @@ -172,7 +172,7 @@ "value": "${AZURE_COMPUTER_VISION_VECTORIZE_IMAGE_MODEL_VERSION=2023-04-15}" }, "existingLogAnalyticsWorkspaceId": { - "value": "${AZURE_ENV_LOG_ANALYTICS_WORKSPACE_RID}" + "value": "${AZURE_ENV_EXISTING_LOG_ANALYTICS_WORKSPACE_RID}" }, "imageTag": { "value": "${AZURE_ENV_IMAGETAG=latest}" diff --git a/infra/main.waf.parameters.json b/infra/main.waf.parameters.json index 4a2b9d743..0ef6a8b7f 100644 --- a/infra/main.waf.parameters.json +++ b/infra/main.waf.parameters.json @@ -172,7 +172,7 @@ "value": "${AZURE_COMPUTER_VISION_VECTORIZE_IMAGE_MODEL_VERSION=2023-04-15}" }, "existingLogAnalyticsWorkspaceId": { - "value": "${AZURE_ENV_LOG_ANALYTICS_WORKSPACE_RID}" + "value": "${AZURE_ENV_EXISTING_LOG_ANALYTICS_WORKSPACE_RID}" }, "enableMonitoring": { "value": true From 35ec29c759981f3e0416cbe07c3425d22f2b5110 Mon Sep 17 00:00:00 2001 From: Harmanpreet-Microsoft Date: Fri, 3 Apr 2026 13:22:38 +0530 Subject: [PATCH 7/9] fix: Update imageTag parameter to use 'latest_waf' for consistency across configurations --- infra/main.parameters.json | 2 +- infra/main.waf.parameters.json | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/infra/main.parameters.json b/infra/main.parameters.json index ad8fa7563..ed4f5d898 100644 --- a/infra/main.parameters.json +++ b/infra/main.parameters.json @@ -175,7 +175,7 @@ "value": "${AZURE_ENV_EXISTING_LOG_ANALYTICS_WORKSPACE_RID}" }, "imageTag": { - "value": "${AZURE_ENV_IMAGETAG=latest}" + "value": "${AZURE_ENV_IMAGETAG=latest_waf}" } } } diff --git a/infra/main.waf.parameters.json b/infra/main.waf.parameters.json index 0ef6a8b7f..6f692110d 100644 --- a/infra/main.waf.parameters.json +++ b/infra/main.waf.parameters.json @@ -190,7 +190,7 @@ "value": "${ENABLE_PURGE_PROTECTION=false}" }, "enableTelemetry": { - "value": "${AZURE_ENV_ENABLE_TELEMETRY}" + "value": "${AZURE_ENV_ENABLE_TELEMETRY=true}" }, "tags": { "value": {} @@ -205,7 +205,7 @@ "value": "${AZURE_ENV_VM_ADMIN_PASSWORD}" }, "imageTag": { - "value": "${AZURE_ENV_IMAGETAG=latest}" + "value": "${AZURE_ENV_IMAGETAG=latest_waf}" } } } From 09bc9346c6ddd58ffd8ac3da697e25f3fc2b1965 Mon Sep 17 00:00:00 2001 From: Harmanpreet-Microsoft Date: Fri, 3 Apr 2026 13:52:48 +0530 Subject: [PATCH 8/9] fix: Update log analytics workspace secret variable to use 'AZURE_ENV_LOG_ANALYTICS_WORKSPACE_ID' for consistency --- .github/workflows/job-deploy-linux.yml | 2 +- .github/workflows/job-deploy-windows.yml | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/job-deploy-linux.yml b/.github/workflows/job-deploy-linux.yml index f79f58b79..fca18cf5e 100644 --- a/.github/workflows/job-deploy-linux.yml +++ b/.github/workflows/job-deploy-linux.yml @@ -286,7 +286,7 @@ jobs: INPUT_USE_ADVANCED_IMAGE_PROCESSING: ${{ inputs.USE_ADVANCED_IMAGE_PROCESSING }} INPUT_DATABASE_TYPE: ${{ inputs.DATABASE_TYPE }} EVENT_AZURE_ENV_EXISTING_LOG_ANALYTICS_WORKSPACE_RID: ${{ github.event.inputs.AZURE_ENV_EXISTING_LOG_ANALYTICS_WORKSPACE_RID }} - SECRET_AZURE_ENV_EXISTING_LOG_ANALYTICS_WORKSPACE_RID: ${{ secrets.AZURE_ENV_EXISTING_LOG_ANALYTICS_WORKSPACE_RID }} + SECRET_AZURE_ENV_EXISTING_LOG_ANALYTICS_WORKSPACE_RID: ${{ secrets. secrets.AZURE_ENV_LOG_ANALYTICS_WORKSPACE_ID }} run: | set -e diff --git a/.github/workflows/job-deploy-windows.yml b/.github/workflows/job-deploy-windows.yml index c171fa3c5..6502d3337 100644 --- a/.github/workflows/job-deploy-windows.yml +++ b/.github/workflows/job-deploy-windows.yml @@ -287,7 +287,7 @@ jobs: INPUT_USE_ADVANCED_IMAGE_PROCESSING: ${{ inputs.USE_ADVANCED_IMAGE_PROCESSING }} INPUT_DATABASE_TYPE: ${{ inputs.DATABASE_TYPE }} EVENT_AZURE_ENV_EXISTING_LOG_ANALYTICS_WORKSPACE_RID: ${{ github.event.inputs.AZURE_ENV_EXISTING_LOG_ANALYTICS_WORKSPACE_RID }} - SECRET_AZURE_ENV_EXISTING_LOG_ANALYTICS_WORKSPACE_RID: ${{ secrets.AZURE_ENV_EXISTING_LOG_ANALYTICS_WORKSPACE_RID }} + SECRET_AZURE_ENV_EXISTING_LOG_ANALYTICS_WORKSPACE_RID: ${{ secrets.AZURE_ENV_LOG_ANALYTICS_WORKSPACE_ID }} run: | $ErrorActionPreference = "Stop" From 82939f0debdc26bb9504acb0e1990e3f611fba09 Mon Sep 17 00:00:00 2001 From: Harmanpreet-Microsoft Date: Fri, 3 Apr 2026 13:54:40 +0530 Subject: [PATCH 9/9] fix: Remove redundant 'secrets.' prefix from log analytics workspace secret variable --- .github/workflows/job-deploy-linux.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/job-deploy-linux.yml b/.github/workflows/job-deploy-linux.yml index fca18cf5e..6df7942d3 100644 --- a/.github/workflows/job-deploy-linux.yml +++ b/.github/workflows/job-deploy-linux.yml @@ -286,7 +286,7 @@ jobs: INPUT_USE_ADVANCED_IMAGE_PROCESSING: ${{ inputs.USE_ADVANCED_IMAGE_PROCESSING }} INPUT_DATABASE_TYPE: ${{ inputs.DATABASE_TYPE }} EVENT_AZURE_ENV_EXISTING_LOG_ANALYTICS_WORKSPACE_RID: ${{ github.event.inputs.AZURE_ENV_EXISTING_LOG_ANALYTICS_WORKSPACE_RID }} - SECRET_AZURE_ENV_EXISTING_LOG_ANALYTICS_WORKSPACE_RID: ${{ secrets. secrets.AZURE_ENV_LOG_ANALYTICS_WORKSPACE_ID }} + SECRET_AZURE_ENV_EXISTING_LOG_ANALYTICS_WORKSPACE_RID: ${{ secrets.AZURE_ENV_LOG_ANALYTICS_WORKSPACE_ID }} run: | set -e