Skip to content

Commit 85ca3dc

Browse files
Prajwal-MicrosoftPriyanka-MicrosoftRoopan-MicrosoftAbdul-MicrosoftPrasanjeet-Microsoft
authored
feat: Down merge from main to dev (#240)
* updated model capacity to minimum 100 * Add principalType 'ServicePrincipal' to role assignments in Bicep modules * update mainjson file * removed text embedding condition * add reuse guide for existing Azure AI Foundry project * remove redundant replica settings for container and API apps in deployment workflow * disable private networking in deployment parameters * normalize secondary location value to lowercase in deployment parameters * fix: correct casing for SOLUTION_NAME in deployment output extraction * refactor: remove unused SOLUTION_NAME output and related steps in deployment workflow * fix: prepend https to CONTAINER_WEB_APPURL in deployment output extraction --------- Co-authored-by: Priyanka-Microsoft <v-prisinghal@microsoft.com> Co-authored-by: Roopan-Microsoft <168007406+Roopan-Microsoft@users.noreply.github.com> Co-authored-by: Abdul-Microsoft <v-amujeebta@microsoft.com> Co-authored-by: Prasanjeet-Microsoft <v-singhprasa@microsoft.com> Co-authored-by: Vinay Sharma <v-vinayshar@microsoft.com>
1 parent 06b2f12 commit 85ca3dc

11 files changed

Lines changed: 103 additions & 79 deletions

File tree

.github/workflows/deploy.yml

Lines changed: 3 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,6 @@ jobs:
1616
propertydamageclaimform_schema_id: ${{ steps.register.outputs.propertylossdamageclaimform_schema_id }}
1717
RESOURCE_GROUP_NAME: ${{ steps.generate_rg_name.outputs.RESOURCE_GROUP_NAME }}
1818
CONTAINER_WEB_APPURL: ${{ steps.get_output.outputs.CONTAINER_WEB_APPURL }}
19-
SOLUTION_NAME: ${{ steps.get_output.outputs.SOLUTION_NAME }}
2019
DEPLOYMENT_SUCCESS: ${{ steps.deployment_status.outputs.SUCCESS }}
2120
AI_SERVICES_NAME: ${{ steps.get_ai_services_name.outputs.AI_SERVICES_NAME }}
2221
KEYVAULTS: ${{ steps.list_keyvaults.outputs.KEYVAULTS }}
@@ -143,18 +142,13 @@ jobs:
143142
--template-file infra/main.json \
144143
--parameters \
145144
environmentName="${{ env.ENVIRONMENT_NAME }}" \
146-
secondaryLocation="EastUs2" \
145+
enablePrivateNetworking="false" \
146+
secondaryLocation="eastus2" \
147147
contentUnderstandingLocation="WestUS" \
148148
deploymentType="GlobalStandard" \
149149
gptModelName="gpt-4o" \
150150
gptModelVersion="2024-08-06" \
151151
gptDeploymentCapacity="30" \
152-
minReplicaContainerApp="1" \
153-
maxReplicaContainerApp="1" \
154-
minReplicaContainerApi="1" \
155-
maxReplicaContainerApi="1" \
156-
minReplicaContainerWeb="1" \
157-
maxReplicaContainerWeb="1" \
158152
aiDeploymentsLocation="${{ env.AZURE_LOCATION }}" \
159153
--query "properties.outputs" -o json); then
160154
echo "❌ Deployment failed. See logs above."
@@ -171,18 +165,13 @@ jobs:
171165
export CONTAINER_API_APPNAME=$(echo "$DEPLOY_OUTPUT" | jq -r '.containeR_API_APP_NAME.value')
172166
echo "CONTAINER_API_APPNAME=$CONTAINER_API_APPNAME" >> $GITHUB_ENV
173167
174-
export CONTAINER_WEB_APPURL=$(echo "$DEPLOY_OUTPUT" | jq -r '.containeR_WEB_APP_FQDN.value')
168+
export CONTAINER_WEB_APPURL="https://$(echo "$DEPLOY_OUTPUT" | jq -r '.containeR_WEB_APP_FQDN.value')"
175169
echo "CONTAINER_WEB_APPURL=$CONTAINER_WEB_APPURL" >> $GITHUB_ENV
176170
echo "CONTAINER_WEB_APPURL=$CONTAINER_WEB_APPURL" >> $GITHUB_OUTPUT
177171
178172
export CONTAINER_WEB_APPNAME=$(echo "$DEPLOY_OUTPUT" | jq -r '.containeR_WEB_APP_NAME.value')
179173
echo "CONTAINER_WEB_APPNAME=$CONTAINER_WEB_APPNAME" >> $GITHUB_ENV
180174
181-
export SOLUTION_NAME=$(echo "$DEPLOY_OUTPUT" | jq -r '.solutioN_NAME.value')
182-
echo "SOLUTION_NAME=$SOLUTION_NAME" >> $GITHUB_ENV
183-
echo "SOLUTION_NAME=$SOLUTION_NAME" >> $GITHUB_OUTPUT
184-
185-
186175
- name: Register schemas
187176
id: register
188177
run: |
@@ -290,7 +279,6 @@ jobs:
290279
with:
291280
CP_WEB_URL: ${{ needs.deploy.outputs.CONTAINER_WEB_APPURL }}
292281
CP_RG: ${{ needs.deploy.outputs.RESOURCE_GROUP_NAME }}
293-
CP_CONTAINERAPP_PREFIX: ${{ format('ca-{0}', needs.deploy.outputs.SOLUTION_NAME ) }}
294282
secrets: inherit
295283

296284
cleanup:

.github/workflows/test-automation.yml

Lines changed: 1 addition & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -9,14 +9,10 @@ on:
99
CP_RG:
1010
required: true
1111
type: string
12-
CP_CONTAINERAPP_PREFIX:
13-
required: true
14-
type: string
1512

1613
env:
1714
url: ${{ inputs.CP_WEB_URL }}
1815
CP_RG: ${{ inputs.CP_RG }}
19-
CP_CONTAINERAPP_PREFIX: ${{ inputs.CP_CONTAINERAPP_PREFIX }}
2016
accelerator_name: "Content Processing"
2117

2218

@@ -38,16 +34,6 @@ jobs:
3834
az login --service-principal -u ${{ secrets.AZURE_MAINTENANCE_CLIENT_ID }} -p ${{ secrets.AZURE_MAINTENANCE_CLIENT_SECRET }} --tenant ${{ secrets.AZURE_TENANT_ID }}
3935
az account set --subscription ${{ secrets.AZURE_MAINTENANCE_SUBSCRIPTION_ID }}
4036
41-
- name: Start Container App
42-
id: start-container-app
43-
uses: azure/cli@v2
44-
with:
45-
azcliversion: 'latest'
46-
inlineScript: |
47-
az rest -m post -u "/subscriptions/${{ secrets.AZURE_MAINTENANCE_SUBSCRIPTION_ID }}/resourceGroups/${{ env.CP_RG }}/providers/Microsoft.App/containerApps/${{ env.CP_CONTAINERAPP_PREFIX }}-app/start?api-version=2025-01-01"
48-
az rest -m post -u "/subscriptions/${{ secrets.AZURE_MAINTENANCE_SUBSCRIPTION_ID }}/resourceGroups/${{ env.CP_RG }}/providers/Microsoft.App/containerApps/${{ env.CP_CONTAINERAPP_PREFIX }}-api/start?api-version=2025-01-01"
49-
az rest -m post -u "/subscriptions/${{ secrets.AZURE_MAINTENANCE_SUBSCRIPTION_ID }}/resourceGroups/${{ env.CP_RG }}/providers/Microsoft.App/containerApps/${{ env.CP_CONTAINERAPP_PREFIX }}-web/start?api-version=2025-01-01"
50-
5137
- name: Install dependencies
5238
run: |
5339
python -m pip install --upgrade pip
@@ -159,15 +145,4 @@ jobs:
159145
# Send the notification
160146
curl -X POST "${{ secrets.EMAILNOTIFICATION_LOGICAPP_URL_TA }}" \
161147
-H "Content-Type: application/json" \
162-
-d "$EMAIL_BODY" || echo "Failed to send notification"
163-
164-
- name: Stop Container App
165-
if: always()
166-
uses: azure/cli@v2
167-
with:
168-
azcliversion: 'latest'
169-
inlineScript: |
170-
az rest -m post -u "/subscriptions/${{ secrets.AZURE_MAINTENANCE_SUBSCRIPTION_ID }}/resourceGroups/${{ env.CP_RG }}/providers/Microsoft.App/containerApps/${{ env.CP_CONTAINERAPP_PREFIX }}-app/stop?api-version=2025-01-01"
171-
az rest -m post -u "/subscriptions/${{ secrets.AZURE_MAINTENANCE_SUBSCRIPTION_ID }}/resourceGroups/${{ env.CP_RG }}/providers/Microsoft.App/containerApps/${{ env.CP_CONTAINERAPP_PREFIX }}-api/stop?api-version=2025-01-01"
172-
az rest -m post -u "/subscriptions/${{ secrets.AZURE_MAINTENANCE_SUBSCRIPTION_ID }}/resourceGroups/${{ env.CP_RG }}/providers/Microsoft.App/containerApps/${{ env.CP_CONTAINERAPP_PREFIX }}-web/stop?api-version=2025-01-01"
173-
az logout
148+
-d "$EMAIL_BODY" || echo "Failed to send notification"

docs/DeploymentGuide.md

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -124,6 +124,7 @@ When you start the deployment, most parameters will have **default values**, but
124124
| **Use Local Build** | Boolean flag to determine if local container builds should be used. | false |
125125
| **Image Tag** | Image version for deployment (allowed values: `latest`, `dev`, `hotfix`). | latest |
126126
| **Existing Log Analytics Workspace** | To reuse an existing Log Analytics Workspace ID instead of creating a new one. | *(none)* |
127+
| **Existing Azure AI Foundry Project** | To reuse an existing Azure AI Foundry Project ID instead of creating a new one. | *(none)* |
127128

128129

129130
</details>
@@ -148,6 +149,14 @@ To adjust quota settings, follow these [steps](./AzureGPTQuotaSettings.md).
148149

149150
</details>
150151

152+
<details>
153+
154+
<summary><b>Reusing an Existing Azure AI Foundry Project</b></summary>
155+
156+
Guide to get your [Existing Project ID](/docs/re-use-foundry-project.md)
157+
158+
</details>
159+
151160
### Deploying with AZD
152161

153162
Once you've opened the project in [Codespaces](#github-codespaces), [Dev Containers](#vs-code-dev-containers), or [locally](#local-environment), you can deploy it to Azure by following these steps:
331 KB
Loading
94.9 KB
Loading
196 KB
Loading

docs/quota_check.md

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
## Check Quota Availability Before Deployment
22

33
Before deploying the accelerator, **ensure sufficient quota availability** for the required model.
4-
> **For Global Standard | GPT-4o - the capacity to at least 30K tokens for optimal performance.**
4+
> **For Global Standard | GPT-4o - the capacity to at least 100K tokens for optimal performance.**
55
66
### Login if you have not done so already
77
```
@@ -11,7 +11,7 @@ azd auth login
1111

1212
### 📌 Default Models & Capacities:
1313
```
14-
gpt-4o:30
14+
gpt-4o:100
1515
```
1616
### 📌 Default Regions:
1717
```
@@ -37,19 +37,19 @@ eastus, uksouth, eastus2, northcentralus, swedencentral, westus, westus2, southc
3737
```
3838
✔️ Check specific model(s) in default regions:
3939
```
40-
./quota_check_params.sh --models gpt-4o:30
40+
./quota_check_params.sh --models gpt-4o:100
4141
```
4242
✔️ Check default models in specific region(s):
4343
```
4444
./quota_check_params.sh --regions eastus,westus
4545
```
4646
✔️ Passing Both models and regions:
4747
```
48-
./quota_check_params.sh --models gpt-4o:30 --regions eastus,westus2
48+
./quota_check_params.sh --models gpt-4o:100 --regions eastus,westus2
4949
```
5050
✔️ All parameters combined:
5151
```
52-
./quota_check_params.sh --models gpt-4:30 --regions eastus,westus --verbose
52+
./quota_check_params.sh --models gpt-4:100 --regions eastus,westus --verbose
5353
```
5454

5555
### **Sample Output**

docs/re-use-foundry-project.md

Lines changed: 44 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,44 @@
1+
[← Back to *DEPLOYMENT* guide](/docs/DeploymentGuide.md#deployment-options--steps)
2+
3+
# Reusing an Existing Azure AI Foundry Project
4+
To configure your environment to use an existing Azure AI Foundry Project, follow these steps:
5+
---
6+
### 1. Go to Azure Portal
7+
Go to https://portal.azure.com
8+
9+
### 2. Search for Azure AI Foundry
10+
In the search bar at the top, type "Azure AI Foundry" and click on it. Then select the Foundry service instance where your project exists.
11+
12+
![alt text](../docs/images/re_use_foundry_project/azure_ai_foundry_list.png)
13+
14+
### 3. Navigate to Projects under Resource Management
15+
On the left sidebar of the Foundry service blade:
16+
17+
- Expand the Resource Management section
18+
- Click on Projects (this refers to the active Foundry project tied to the service)
19+
20+
### 4. Click on the Project
21+
From the Projects view: Click on the project name to open its details
22+
23+
Note: You will see only one project listed here, as each Foundry service maps to a single project in this accelerator
24+
25+
![alt text](../docs/images/re_use_foundry_project/navigate_to_projects.png)
26+
27+
### 5. Copy Resource ID
28+
In the left-hand menu of the project blade:
29+
30+
- Click on Properties under Resource Management
31+
- Locate the Resource ID field
32+
- Click on the copy icon next to the Resource ID value
33+
34+
![alt text](../docs/images/re_use_foundry_project/project_resource_id.png)
35+
36+
### 6. Set the Foundry Project Resource ID in Your Environment
37+
Run the following command in your terminal
38+
```bash
39+
azd env set AZURE_ENV_FOUNDRY_PROJECT_ID '<Existing Foundry Project Resource ID>'
40+
```
41+
Replace `<Existing Foundry Project Resource ID>` with the value obtained from Step 5.
42+
43+
### 7. Continue Deployment
44+
Proceed with the next steps in the [deployment guide](/docs/DeploymentGuide.md#deployment-options--steps).

infra/main.bicep

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -446,6 +446,7 @@ module avmKeyVault './modules/key-vault.bicep' = {
446446
{
447447
principalId: avmManagedIdentity.outputs.principalId
448448
roleDefinitionIdOrName: 'Key Vault Administrator'
449+
principalType: 'ServicePrincipal'
449450
}
450451
]
451452
enablePurgeProtection: false
@@ -502,6 +503,7 @@ module avmStorageAccount 'br/public:avm/res/storage/storage-account:0.20.0' = {
502503
{
503504
principalId: avmManagedIdentity.outputs.principalId
504505
roleDefinitionIdOrName: 'Storage Blob Data Contributor'
506+
principalType: 'ServicePrincipal'
505507
}
506508
{
507509
roleDefinitionIdOrName: 'Storage Blob Data Contributor'
@@ -597,6 +599,7 @@ module avmAiServices 'modules/account/main.bicep' = {
597599
{
598600
principalId: avmManagedIdentity.outputs.principalId
599601
roleDefinitionIdOrName: '8e3af657-a8ff-443c-a75c-2fe8c4bcb635' // Owner role
602+
principalType: 'ServicePrincipal'
600603
}
601604
{
602605
principalId: avmContainerApp.outputs.systemAssignedMIPrincipalId!
@@ -1096,14 +1099,17 @@ module avmAppConfig 'br/public:avm/res/app-configuration/configuration-store:0.6
10961099
{
10971100
principalId: avmContainerApp.outputs.?systemAssignedMIPrincipalId!
10981101
roleDefinitionIdOrName: 'App Configuration Data Reader'
1102+
principalType: 'ServicePrincipal'
10991103
}
11001104
{
11011105
principalId: avmContainerApp_API.outputs.?systemAssignedMIPrincipalId!
11021106
roleDefinitionIdOrName: 'App Configuration Data Reader'
1107+
principalType: 'ServicePrincipal'
11031108
}
11041109
{
11051110
principalId: avmContainerApp_Web.outputs.?systemAssignedMIPrincipalId!
11061111
roleDefinitionIdOrName: 'App Configuration Data Reader'
1112+
principalType: 'ServicePrincipal'
11071113
}
11081114
]
11091115
keyValues: [

0 commit comments

Comments
 (0)