Skip to content
Draft
Show file tree
Hide file tree
Changes from 3 commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 0 additions & 1 deletion .github/workflows/ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -133,7 +133,6 @@ jobs:
--template-file infra/main.bicep \
--parameters solutionName=${{env.SOLUTION_PREFIX}} \
--parameters location=${{ env.AZURE_LOCATION }} \
--parameters aiDeploymentLocation=${{ env.AZURE_LOCATION }} \
--parameters azureAiServiceLocation=${{ env.AZURE_LOCATION }} \
--parameters createdBy="pipeline" \

Expand Down
20 changes: 9 additions & 11 deletions .github/workflows/job-deploy-linux.yml
Original file line number Diff line number Diff line change
Expand Up @@ -237,9 +237,7 @@ jobs:

# Set additional parameters
azd env set AZURE_SUBSCRIPTION_ID="${{ secrets.AZURE_SUBSCRIPTION_ID }}"
azd env set AZURE_AI_SERVICE_LOCATION="$AZURE_ENV_OPENAI_LOCATION"
azd env set AZURE_AI_DEPLOYMENT_LOCATION="$AZURE_ENV_OPENAI_LOCATION"
azd env set AZURE_AI_SERVICE_LOCATION="$AZURE_ENV_OPENAI_LOCATION"
azd env set AZURE_ENV_AI_SERVICE_LOCATION="$AZURE_ENV_OPENAI_LOCATION"
azd env set AZURE_LOCATION="$AZURE_LOCATION"
azd env set AZURE_RESOURCE_GROUP="$RESOURCE_GROUP_NAME"
azd env set AZURE_ENV_IMAGETAG="$IMAGE_TAG"
Expand All @@ -249,9 +247,9 @@ jobs:
# Extract ACR name from login server and set as environment variable
ACR_NAME=$(echo "${{ secrets.ACR_TEST_LOGIN_SERVER }}")
azd env set AZURE_CONTAINER_REGISTRY_HOST="$ACR_NAME"
echo "Set ACR name to: $ACR_NAME"
echo "Set ACR host to: $ACR_NAME"
else
echo "Skipping ACR name configuration (using existing image)"
echo "Skipping ACR endpoint configuration (using existing image)"
fi

if [[ "$EXP" == "true" ]]; then
Expand All @@ -261,19 +259,19 @@ jobs:
if [[ -n "$AZURE_ENV_LOG_ANALYTICS_WORKSPACE_ID_INPUT" ]]; then
EXP_LOG_ANALYTICS_ID="$AZURE_ENV_LOG_ANALYTICS_WORKSPACE_ID_INPUT"
else
EXP_LOG_ANALYTICS_ID="${{ secrets.AZURE_ENV_LOG_ANALYTICS_WORKSPACE_ID }}"
EXP_LOG_ANALYTICS_ID="${{ secrets.AZURE_ENV_LOG_ANALYTICS_WORKSPACE_RID }}"
fi

if [[ -n "$AZURE_EXISTING_AI_PROJECT_RESOURCE_ID_INPUT" ]]; then
EXP_AI_PROJECT_ID="$AZURE_EXISTING_AI_PROJECT_RESOURCE_ID_INPUT"
else
EXP_AI_PROJECT_ID="${{ secrets.AZURE_EXISTING_AI_PROJECT_RESOURCE_ID }}"
EXP_AI_PROJECT_ID="${{ secrets.AZURE_ENV_FOUNDRY_PROJECT_RID }}"
Copy link

Copilot AI Mar 23, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The EXP parameter selection still reads from the old input/env names (AZURE_ENV_LOG_ANALYTICS_WORKSPACE_ID_INPUT and AZURE_EXISTING_AI_PROJECT_RESOURCE_ID_INPUT) while the workflow now sets AZURE_ENV_LOG_ANALYTICS_WORKSPACE_RID / AZURE_ENV_FOUNDRY_PROJECT_RID into the azd environment. This undermines the parameter-name standardization and can break callers that switch to the new names. Consider renaming the workflow_call inputs and the intermediate variables to the new *_RID names and updating the validation/warning logic accordingly (keeping backwards-compat mapping only if needed).

Copilot uses AI. Check for mistakes.
fi

echo "AZURE_ENV_LOG_ANALYTICS_WORKSPACE_ID: $EXP_LOG_ANALYTICS_ID"
echo "AZURE_EXISTING_AI_PROJECT_RESOURCE_ID: $EXP_AI_PROJECT_ID"
azd env set AZURE_ENV_LOG_ANALYTICS_WORKSPACE_ID="$EXP_LOG_ANALYTICS_ID"
azd env set AZURE_EXISTING_AI_PROJECT_RESOURCE_ID="$EXP_AI_PROJECT_ID"
echo "AZURE_ENV_LOG_ANALYTICS_WORKSPACE_RID: $EXP_LOG_ANALYTICS_ID"
echo "AZURE_ENV_FOUNDRY_PROJECT_RID: $EXP_AI_PROJECT_ID"
azd env set AZURE_ENV_LOG_ANALYTICS_WORKSPACE_RID="$EXP_LOG_ANALYTICS_ID"
azd env set AZURE_ENV_FOUNDRY_PROJECT_RID="$EXP_AI_PROJECT_ID"
else
echo "❌ EXP DISABLED - Skipping EXP parameters"
if [[ -n "$AZURE_ENV_LOG_ANALYTICS_WORKSPACE_ID_INPUT" ]] || [[ -n "$AZURE_EXISTING_AI_PROJECT_RESOURCE_ID_INPUT" ]]; then
Expand Down
20 changes: 9 additions & 11 deletions .github/workflows/job-deploy-windows.yml
Original file line number Diff line number Diff line change
Expand Up @@ -238,9 +238,7 @@ jobs:

# Set additional parameters
azd env set AZURE_SUBSCRIPTION_ID="${{ secrets.AZURE_SUBSCRIPTION_ID }}"
azd env set AZURE_AI_SERVICE_LOCATION="$env:AZURE_ENV_OPENAI_LOCATION"
azd env set AZURE_AI_DEPLOYMENT_LOCATION="$env:AZURE_ENV_OPENAI_LOCATION"
azd env set AZURE_AI_SERVICE_LOCATION="$env:AZURE_ENV_OPENAI_LOCATION"
azd env set AZURE_ENV_AI_SERVICE_LOCATION="$env:AZURE_ENV_OPENAI_LOCATION"
azd env set AZURE_LOCATION="$env:AZURE_LOCATION"
azd env set AZURE_RESOURCE_GROUP="$env:RESOURCE_GROUP_NAME"
azd env set AZURE_ENV_IMAGETAG="$env:IMAGE_TAG"
Expand All @@ -249,9 +247,9 @@ jobs:
if ($env:BUILD_DOCKER_IMAGE -eq "true") {
$ACR_NAME = "${{ secrets.ACR_TEST_LOGIN_SERVER }}"
azd env set AZURE_CONTAINER_REGISTRY_HOST="$ACR_NAME"
Write-Host "Set ACR name to: $ACR_NAME"
Write-Host "Set ACR host to: $ACR_NAME"
} else {
Write-Host "Skipping ACR name configuration (using existing image)"
Write-Host "Skipping ACR endpoint configuration (using existing image)"
}

if ($env:EXP -eq "true") {
Expand All @@ -261,19 +259,19 @@ jobs:
if ($env:AZURE_ENV_LOG_ANALYTICS_WORKSPACE_ID -ne "") {
$EXP_LOG_ANALYTICS_ID = $env:AZURE_ENV_LOG_ANALYTICS_WORKSPACE_ID
} else {
$EXP_LOG_ANALYTICS_ID = "${{ secrets.AZURE_ENV_LOG_ANALYTICS_WORKSPACE_ID }}"
$EXP_LOG_ANALYTICS_ID = "${{ secrets.AZURE_ENV_LOG_ANALYTICS_WORKSPACE_RID }}"
}

if ($env:AZURE_EXISTING_AI_PROJECT_RESOURCE_ID -ne "") {
$EXP_AI_PROJECT_ID = $env:AZURE_EXISTING_AI_PROJECT_RESOURCE_ID
} else {
$EXP_AI_PROJECT_ID = "${{ secrets.AZURE_EXISTING_AI_PROJECT_RESOURCE_ID }}"
$EXP_AI_PROJECT_ID = "${{ secrets.AZURE_ENV_FOUNDRY_PROJECT_RID }}"
Copy link

Copilot AI Mar 23, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The EXP parameter selection still checks $env:AZURE_ENV_LOG_ANALYTICS_WORKSPACE_ID and $env:AZURE_EXISTING_AI_PROJECT_RESOURCE_ID, but the workflow now writes AZURE_ENV_LOG_ANALYTICS_WORKSPACE_RID / AZURE_ENV_FOUNDRY_PROJECT_RID into the azd environment. To fully standardize and avoid breaking callers that move to the new names, rename the workflow_call inputs and the env var references here to the new *_RID names (and update the validation block earlier in the file to match).

Copilot uses AI. Check for mistakes.
}

Write-Host "AZURE_ENV_LOG_ANALYTICS_WORKSPACE_ID: $EXP_LOG_ANALYTICS_ID"
Write-Host "AZURE_EXISTING_AI_PROJECT_RESOURCE_ID: $EXP_AI_PROJECT_ID"
azd env set AZURE_ENV_LOG_ANALYTICS_WORKSPACE_ID="$EXP_LOG_ANALYTICS_ID"
azd env set AZURE_EXISTING_AI_PROJECT_RESOURCE_ID="$EXP_AI_PROJECT_ID"
Write-Host "AZURE_ENV_LOG_ANALYTICS_WORKSPACE_RID: $EXP_LOG_ANALYTICS_ID"
Write-Host "AZURE_ENV_FOUNDRY_PROJECT_RID: $EXP_AI_PROJECT_ID"
azd env set AZURE_ENV_LOG_ANALYTICS_WORKSPACE_RID="$EXP_LOG_ANALYTICS_ID"
azd env set AZURE_ENV_FOUNDRY_PROJECT_RID="$EXP_AI_PROJECT_ID"
} else {
Write-Host "❌ EXP DISABLED - Skipping EXP parameters"
}
Expand Down
13 changes: 7 additions & 6 deletions docs/CustomizingAzdParameters.md
Original file line number Diff line number Diff line change
Expand Up @@ -10,13 +10,14 @@ By default this template will use the environment name as the prefix to prevent
| ------------------------------- | ------- | ----------------------- | ------------------------------------------------------------------------------------- |
| `AZURE_ENV_NAME` | string | `conmig` | Sets the environment name prefix for all Azure resources. |
| `AZURE_LOCATION` | string | `westus` | Sets the location/region for all Azure resources. |
| `AZURE_SECONDARY_LOCATION` | string | `eastus2` | Specifies a secondary Azure region. |
| `AZURE_CONTAINER_REGISTRY_HOST` | string | `myregistry.azurecr.io` | Specifies the container registry from which to pull app container images. |
| `AZURE_AI_DEPLOYMENT_LOCATION` | string | `eastus2` | Specifies alternative location for AI model resources. |
| `AZURE_CONTAINER_REGISTRY_HOST` | string | `myregistry.azurecr.io` | Specifies the container registry host from which to pull app container images. |
| `AZURE_ENV_AI_SERVICE_LOCATION` | string | `eastus2` | Specifies the Azure region for AI services (OpenAI/AI Foundry). |
| `AZURE_AI_DEPLOYMENT_TYPE` | string | `GlobalStandard` | Defines the model deployment type (allowed values: `Standard`, `GlobalStandard`). |
| `AZURE_AI_MODEL_NAME` | string | `o3` | Specifies the `o` model name. |
| `AZURE_AI_MODEL_VERSION` | string | `2025-04-16` | Specifies the `o` model version. |
| `AZURE_AI_MODEL_CAPACITY` | integer | `200` | Sets the model capacity (choose based on your subscription's available `o` capacity). |
| `AZURE_AI_MODEL_NAME` | string | `o3` | Specifies the AI model name. |
| `AZURE_AI_MODEL_VERSION` | string | `2025-04-16` | Specifies the AI model version. |
| `AZURE_AI_MODEL_CAPACITY` | integer | `200` | Sets the model capacity (choose based on your subscription's available capacity). |
| `AZURE_ENV_LOG_ANALYTICS_WORKSPACE_RID` | string | `` | Optional. Resource ID of an existing Log Analytics workspace to use. |
| `AZURE_ENV_FOUNDRY_PROJECT_RID` | string | `` | Optional. Resource ID of an existing AI Foundry project to use. |
Comment on lines +13 to +20
Copy link

Copilot AI Mar 23, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The markdown table formatting is a bit inconsistent in the updated rows (uneven spacing in the AZURE_CONTAINER_REGISTRY_HOST and AZURE_ENV_AI_SERVICE_LOCATION entries, and the new rows have empty example values that don’t illustrate the expected Resource ID format). Consider normalizing spacing and providing representative example Resource IDs for the *_RID parameters to make the documentation clearer.

Copilot uses AI. Check for mistakes.
| `AZURE_ENV_VM_ADMIN_USERNAME` | string | `` | The administrator username for the virtual machine. |
| `AZURE_ENV_VM_ADMIN_PASSWORD` | string | `` | The administrator password for the virtual machine. |
| `AZURE_ENV_IMAGETAG` | string | `latest` | Specifies the container image tag to use for deployment. |
Expand Down
2 changes: 1 addition & 1 deletion docs/re-use-foundry-project.md
Original file line number Diff line number Diff line change
Expand Up @@ -36,7 +36,7 @@ In the left-hand menu of the project blade:
### 6. Set the Foundry Project Resource ID in Your Environment
Run the following command in your terminal
```bash
azd env set AZURE_EXISTING_AI_PROJECT_RESOURCE_ID '<Existing Foundry Project Resource ID>'
azd env set AZURE_ENV_FOUNDRY_PROJECT_RID '<Existing Foundry Project Resource ID>'
```
Replace `<Existing Foundry Project Resource ID>` with the value obtained from Step 5.

Expand Down
2 changes: 1 addition & 1 deletion docs/re-use-log-analytics.md
Original file line number Diff line number Diff line change
Expand Up @@ -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 '<Existing Log Analytics Workspace Id>'
azd env set AZURE_ENV_LOG_ANALYTICS_WORKSPACE_RID '<Existing Log Analytics Workspace Id>'
Copy link

Copilot AI Mar 23, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This now sets AZURE_ENV_LOG_ANALYTICS_WORKSPACE_RID, but the placeholder still says "Workspace Id". To reduce confusion (since this value must be an Azure Resource ID), consider updating the placeholder (and nearby wording, if applicable) to consistently say "Resource ID".

Copilot uses AI. Check for mistakes.
```
Replace `<Existing Log Analytics Workspace Id>` with the value obtained from Step 3.

Expand Down
17 changes: 1 addition & 16 deletions infra/main.bicep
Original file line number Diff line number Diff line change
Expand Up @@ -39,22 +39,7 @@ var solutionLocation = empty(location) ? resourceGroup().location : location
@description('Required. Azure region for AI services (OpenAI/AI Foundry). Must be a region that supports o3 model deployment.')
param azureAiServiceLocation string

@allowed([
'australiaeast'
'eastus'
'eastus2'
'francecentral'
'japaneast'
'norwayeast'
'southindia'
'swedencentral'
'uksouth'
'westus'
'westus3'
])
@description('Required. Azure region for AI model deployment. Should match azureAiServiceLocation for optimal performance.')
#disable-next-line no-unused-params
param aiDeploymentLocation string = azureAiServiceLocation


@description('Optional. The host (excluding https://) of an existing container registry. This is the `loginServer` when using Azure Container Registry.')
param containerRegistryHost string = 'containermigrationacr.azurecr.io'
Expand Down
36 changes: 8 additions & 28 deletions infra/main.json
Original file line number Diff line number Diff line change
Expand Up @@ -5,8 +5,8 @@
"metadata": {
"_generator": {
"name": "bicep",
"version": "0.40.2.10011",
"templateHash": "46164870636097653"
"version": "0.41.2.15936",
"templateHash": "14235802001827059391"
}
},
"parameters": {
Expand Down Expand Up @@ -61,26 +61,6 @@
"description": "Required. Azure region for AI services (OpenAI/AI Foundry). Must be a region that supports o3 model deployment."
}
},
"aiDeploymentLocation": {
"type": "string",
"defaultValue": "[parameters('azureAiServiceLocation')]",
"allowedValues": [
"australiaeast",
"eastus",
"eastus2",
"francecentral",
"japaneast",
"norwayeast",
"southindia",
"swedencentral",
"uksouth",
"westus",
"westus3"
],
"metadata": {
"description": "Required. Azure region for AI model deployment. Should match azureAiServiceLocation for optimal performance."
}
},
"containerRegistryHost": {
"type": "string",
"defaultValue": "containermigrationacr.azurecr.io",
Expand Down Expand Up @@ -4698,8 +4678,8 @@
"metadata": {
"_generator": {
"name": "bicep",
"version": "0.40.2.10011",
"templateHash": "13184395339364197836"
"version": "0.41.2.15936",
"templateHash": "10681183203421948888"
}
},
"definitions": {
Expand Down Expand Up @@ -30068,8 +30048,8 @@
"metadata": {
"_generator": {
"name": "bicep",
"version": "0.40.2.10011",
"templateHash": "8742987061721021759"
"version": "0.41.2.15936",
"templateHash": "8365054813170845685"
}
},
"definitions": {
Expand Down Expand Up @@ -52099,9 +52079,9 @@
},
"dependsOn": [
"appIdentity",
"[format('avmPrivateDnsZones[{0}]', variables('dnsZoneIndex').cognitiveServices)]",
"[format('avmPrivateDnsZones[{0}]', variables('dnsZoneIndex').aiServices)]",
"[format('avmPrivateDnsZones[{0}]', variables('dnsZoneIndex').openAI)]",
"[format('avmPrivateDnsZones[{0}]', variables('dnsZoneIndex').aiServices)]",
"[format('avmPrivateDnsZones[{0}]', variables('dnsZoneIndex').cognitiveServices)]",
"virtualNetwork"
]
},
Expand Down
20 changes: 4 additions & 16 deletions infra/main.parameters.json
Original file line number Diff line number Diff line change
Expand Up @@ -8,20 +8,11 @@
"location": {
"value": "${AZURE_LOCATION}"
},
"secondaryLocation": {
"value": "${AZURE_SECONDARY_LOCATION}"
},
"containerRegistryHost": {
"value": "${AZURE_CONTAINER_REGISTRY_HOST}"
},
"azureAiServiceLocation": {
"value": "${AZURE_AI_SERVICE_LOCATION}"
},
"aiDeploymentLocation": {
"value": "${AZURE_AI_DEPLOYMENT_LOCATION}"
},
"azureAiServiceLocation": {
"value": "${AZURE_AI_SERVICE_LOCATION}"
"value": "${AZURE_ENV_AI_SERVICE_LOCATION}"
},
"aiDeploymentType": {
"value": "${AZURE_AI_DEPLOYMENT_TYPE}"
Expand All @@ -35,14 +26,11 @@
"aiModelCapacity": {
"value": "${AZURE_AI_MODEL_CAPACITY}"
},
"enableTelemetry": {
"value": true
},
"existingLogAnalyticsWorkspaceId": {
"value": "${AZURE_ENV_LOG_ANALYTICS_WORKSPACE_ID}"
"value": "${AZURE_ENV_LOG_ANALYTICS_WORKSPACE_RID}"
},
"existingFoundryProjectResourceId":{
"value": "${AZURE_EXISTING_AI_PROJECT_RESOURCE_ID}"
"existingFoundryProjectResourceId": {
"value": "${AZURE_ENV_FOUNDRY_PROJECT_RID}"
},
"vmAdminUsername": {
"value": "${AZURE_ENV_VM_ADMIN_USERNAME}"
Expand Down
17 changes: 4 additions & 13 deletions infra/main.waf.parameters.json
Original file line number Diff line number Diff line change
Expand Up @@ -8,20 +8,11 @@
"location": {
"value": "${AZURE_LOCATION}"
},
"secondaryLocation": {
"value": "${AZURE_SECONDARY_LOCATION}"
},
"containerRegistryHost": {
"value": "${AZURE_CONTAINER_REGISTRY_HOST}"
},
"azureAiServiceLocation": {
"value": "${AZURE_AI_SERVICE_LOCATION}"
},
"aiDeploymentLocation": {
"value": "${AZURE_AI_DEPLOYMENT_LOCATION}"
},
"azureAiServiceLocation": {
"value": "${AZURE_AI_SERVICE_LOCATION}"
"value": "${AZURE_ENV_AI_SERVICE_LOCATION}"
},
"aiDeploymentType": {
"value": "${AZURE_AI_DEPLOYMENT_TYPE}"
Expand Down Expand Up @@ -54,10 +45,10 @@
"value": "${AZURE_ENV_VM_ADMIN_PASSWORD}"
},
"existingLogAnalyticsWorkspaceId": {
"value": "${AZURE_ENV_LOG_ANALYTICS_WORKSPACE_ID}"
"value": "${AZURE_ENV_LOG_ANALYTICS_WORKSPACE_RID}"
},
"existingFoundryProjectResourceId":{
"value": "${AZURE_EXISTING_AI_PROJECT_RESOURCE_ID}"
"existingFoundryProjectResourceId": {
"value": "${AZURE_ENV_FOUNDRY_PROJECT_RID}"
},
"imageTag": {
"value": "${AZURE_ENV_IMAGETAG}"
Expand Down
Loading