Skip to content

Commit 822a458

Browse files
chore: dev to main merge
2 parents bcdb280 + f12ed0e commit 822a458

16 files changed

Lines changed: 1495 additions & 1752 deletions

.github/workflows/deploy-orchestrator.yml

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -77,10 +77,8 @@ env:
7777

7878
jobs:
7979
docker-build:
80+
if: inputs.trigger_type == 'workflow_dispatch' && inputs.build_docker_image == true
8081
uses: ./.github/workflows/job-docker-build.yml
81-
with:
82-
trigger_type: ${{ inputs.trigger_type }}
83-
build_docker_image: ${{ inputs.build_docker_image }}
8482
secrets: inherit
8583

8684
deploy:

.github/workflows/job-deploy-linux.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -264,7 +264,7 @@ jobs:
264264
# Set ACR name only when building Docker image
265265
if [[ "$BUILD_DOCKER_IMAGE" == "true" ]]; then
266266
# Extract ACR name from login server and set as environment variable
267-
AZURE_ENV_CONTAINER_REGISTRY_NAME=$(echo "${{ secrets.ACR_TEST_LOGIN_SERVER }}" | cut -d'.' -f1)
267+
AZURE_ENV_CONTAINER_REGISTRY_NAME=$(echo "${{ vars.ACR_TEST_LOGIN_SERVER }}" | cut -d'.' -f1)
268268
azd env set AZURE_ENV_CONTAINER_REGISTRY_NAME="$AZURE_ENV_CONTAINER_REGISTRY_NAME"
269269
echo "Set ACR name to: $AZURE_ENV_CONTAINER_REGISTRY_NAME"
270270
else

.github/workflows/job-deploy-windows.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -267,7 +267,7 @@ jobs:
267267
# Set ACR name only when building Docker image
268268
if ($env:BUILD_DOCKER_IMAGE -eq "true") {
269269
# Extract ACR name from login server (e.g., myacr.azurecr.io -> myacr)
270-
$AZURE_ENV_CONTAINER_REGISTRY_NAME = ("${{ secrets.ACR_TEST_LOGIN_SERVER }}").Split('.')[0]
270+
$AZURE_ENV_CONTAINER_REGISTRY_NAME = ("${{ vars.ACR_TEST_LOGIN_SERVER }}").Split('.')[0]
271271
azd env set AZURE_ENV_CONTAINER_REGISTRY_NAME="$AZURE_ENV_CONTAINER_REGISTRY_NAME"
272272
Write-Host "Set ACR name to: $AZURE_ENV_CONTAINER_REGISTRY_NAME"
273273
} else {

.github/workflows/job-deploy.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -100,7 +100,7 @@ on:
100100
value: ${{ jobs.azure-setup.outputs.QUOTA_FAILED || 'false' }}
101101

102102
env:
103-
GPT_MIN_CAPACITY: 150
103+
GPT_MIN_CAPACITY: 50
104104
IMAGE_MODEL_MIN_CAPACITY: 1
105105
BRANCH_NAME: ${{ github.event.workflow_run.head_branch || github.head_ref || github.ref_name }}
106106
WAF_ENABLED: ${{ inputs.trigger_type == 'workflow_dispatch' && (inputs.waf_enabled || false) || false }}

.github/workflows/job-docker-build.yml

Lines changed: 15 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -1,28 +1,22 @@
1-
name: Docker Build Job
1+
name: Build & Push Test Images (Feature Branch)
22

33
on:
44
workflow_call:
5-
inputs:
6-
trigger_type:
7-
description: 'Trigger type (workflow_dispatch, pull_request, schedule)'
8-
required: true
9-
type: string
10-
build_docker_image:
11-
description: 'Build And Push Docker Image (Optional)'
12-
required: false
13-
default: false
14-
type: boolean
155
outputs:
166
AZURE_ENV_IMAGE_TAG:
177
description: "Generated Docker Image Tag"
188
value: ${{ jobs.docker-build.outputs.AZURE_ENV_IMAGE_TAG }}
9+
workflow_dispatch:
10+
11+
permissions:
12+
contents: read
13+
id-token: write
1914

2015
env:
2116
BRANCH_NAME: ${{ github.event.workflow_run.head_branch || github.head_ref || github.ref_name }}
2217

2318
jobs:
2419
docker-build:
25-
if: inputs.trigger_type == 'workflow_dispatch' && inputs.build_docker_image == true
2620
runs-on: ubuntu-latest
2721
environment: production
2822
outputs:
@@ -57,7 +51,10 @@ jobs:
5751

5852
- name: Log in to Azure Container Registry
5953
shell: bash
60-
run: az acr login --name ${{ secrets.ACR_TEST_LOGIN_SERVER }}
54+
run: |
55+
# Extract registry name from login server (e.g., myacr.azurecr.io -> myacr)
56+
ACR_NAME=$(echo "${{ vars.ACR_TEST_LOGIN_SERVER }}" | cut -d'.' -f1)
57+
az acr login --name "$ACR_NAME"
6158
6259
- name: Build and Push Docker Image for Frontend Server
6360
id: build_push_frontend
@@ -69,8 +66,8 @@ jobs:
6966
file: ./src/App/WebApp.Dockerfile
7067
push: true
7168
tags: |
72-
${{ secrets.ACR_TEST_LOGIN_SERVER }}/content-gen-app:${{ steps.generate_docker_tag.outputs.AZURE_ENV_IMAGE_TAG }}
73-
${{ secrets.ACR_TEST_LOGIN_SERVER }}/content-gen-app:${{ steps.generate_docker_tag.outputs.AZURE_ENV_IMAGE_TAG }}_${{ github.run_number }}
69+
${{ vars.ACR_TEST_LOGIN_SERVER }}/content-gen-app:${{ steps.generate_docker_tag.outputs.AZURE_ENV_IMAGE_TAG }}
70+
${{ vars.ACR_TEST_LOGIN_SERVER }}/content-gen-app:${{ steps.generate_docker_tag.outputs.AZURE_ENV_IMAGE_TAG }}_${{ github.run_number }}
7471
7572
- name: Build and Push Docker Image for Backend Server
7673
id: build_push_backend
@@ -82,8 +79,8 @@ jobs:
8279
file: ./src/backend/ApiApp.Dockerfile
8380
push: true
8481
tags: |
85-
${{ secrets.ACR_TEST_LOGIN_SERVER }}/content-gen-api:${{ steps.generate_docker_tag.outputs.AZURE_ENV_IMAGE_TAG }}
86-
${{ secrets.ACR_TEST_LOGIN_SERVER }}/content-gen-api:${{ steps.generate_docker_tag.outputs.AZURE_ENV_IMAGE_TAG }}_${{ github.run_number }}
82+
${{ vars.ACR_TEST_LOGIN_SERVER }}/content-gen-api:${{ steps.generate_docker_tag.outputs.AZURE_ENV_IMAGE_TAG }}
83+
${{ vars.ACR_TEST_LOGIN_SERVER }}/content-gen-api:${{ steps.generate_docker_tag.outputs.AZURE_ENV_IMAGE_TAG }}_${{ github.run_number }}
8784
8885
- name: Verify Docker Image Build
8986
shell: bash
@@ -95,7 +92,7 @@ jobs:
9592
if: always()
9693
shell: bash
9794
run: |
98-
AZURE_ENV_CONTAINER_REGISTRY_SERVER=$(echo "${{ secrets.ACR_TEST_LOGIN_SERVER }}")
95+
AZURE_ENV_CONTAINER_REGISTRY_SERVER=$(echo "${{ vars.ACR_TEST_LOGIN_SERVER }}")
9996
echo "## 🐳 Docker Build Job Summary" >> $GITHUB_STEP_SUMMARY
10097
echo "" >> $GITHUB_STEP_SUMMARY
10198
echo "| Field | Value |" >> $GITHUB_STEP_SUMMARY

docs/CustomizingAzdParameters.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@ By default this template will use the environment name as the prefix to prevent
1414
| `AZURE_ENV_GPT_MODEL_NAME` | string | `gpt-5.1` | Specifies the GPT model name to deploy. |
1515
| `AZURE_ENV_GPT_MODEL_VERSION` | string | `2025-11-13` | Sets the GPT model version. |
1616
| `AZURE_ENV_MODEL_DEPLOYMENT_TYPE` | string | `GlobalStandard` | Defines the model deployment type (allowed: `Standard`, `GlobalStandard`). |
17-
| `AZURE_ENV_GPT_MODEL_CAPACITY` | integer | `150` | Sets the GPT model token capacity (minimum: `10`). |
17+
| `AZURE_ENV_GPT_MODEL_CAPACITY` | integer | `50` | Sets the GPT model token capacity (minimum: `10`). |
1818
| `AZURE_ENV_IMAGE_MODEL_NAME` | string | `gpt-image-1-mini` | Image model to deploy (allowed: `gpt-image-1-mini`, `gpt-image-1.5`, `none`). |
1919
| `AZURE_ENV_IMAGE_MODEL_CAPACITY` | integer | `1` | Sets the image model deployment capacity in RPM (minimum: `1`). |
2020
| `AZURE_ENV_OPENAI_API_VERSION` | string | `2025-01-01-preview` | Specifies the API version for Azure OpenAI service. |

docs/DEPLOYMENT.md

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -139,7 +139,7 @@ When you start the deployment, most parameters will have **default values**, but
139139
| **GPT Model** | Choose from **gpt-4, gpt-4o, gpt-4o-mini, gpt-5.1**. | gpt-5.1 |
140140
| **GPT Model Version** | The version of the selected GPT model. | 2025-11-13 |
141141
| **OpenAI API Version** | The Azure OpenAI API version to use. | 2025-01-01-preview |
142-
| **GPT Model Deployment Capacity** | Configure capacity for **GPT models** (in thousands). | 150k |
142+
| **GPT Model Deployment Capacity** | Configure capacity for **GPT models** (in thousands). | 50k |
143143
| **Image Model** | Choose from **gpt-image-1-mini, gpt-image-1.5** | gpt-image-1-mini |
144144
| **Image Tag** | Docker image tag to deploy. Common values: `latest`, `dev`, `hotfix`. | latest |
145145
| **Existing Log Analytics Workspace** | To reuse an existing Log Analytics Workspace ID. | *(empty)* |
@@ -150,7 +150,7 @@ When you start the deployment, most parameters will have **default values**, but
150150
<details>
151151
<summary><b>[Optional] Quota Recommendations</b></summary>
152152

153-
By default, the **GPT-5.1 model capacity** in deployment is set to **150k tokens**, so we recommend updating the following:
153+
By default, the **GPT-5.1 model capacity** in deployment is set to **50k tokens**, so we recommend updating the following:
154154

155155
> **For GPT-5.1 - increase the capacity post-deployment for optimal performance if required.**
156156

docs/QuotaCheck.md

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22

33
Before deploying the Content Generation Solution Accelerator, **ensure sufficient quota availability** for the required models.
44

5-
> **For Global Standard | GPT-5.1 - ensure capacity to at least 150 tokens post-deployment for optimal performance.**
5+
> **For Global Standard | GPT-5.1 - ensure capacity to at least 50 tokens post-deployment for optimal performance.**
66
77
> **For Global Standard | GPT-Image-1-mini - ensure capacity to at least 1 RPM (Requests Per Minute) for image generation.**
88
@@ -15,7 +15,7 @@ az login
1515

1616
### 📌 Default Models & Capacities:
1717
```
18-
gpt-5.1:150,gpt-image-1-mini:1
18+
gpt-5.1:50,gpt-image-1-mini:1
1919
```
2020
**Note:** GPT-5.1 capacity is in tokens, GPT-Image-1-mini capacity is in RPM (Requests Per Minute).
2121
### 📌 Default Regions:
@@ -42,19 +42,19 @@ australiaeast, centralus, eastasia, eastus, eastus2, japaneast, northeurope, sou
4242
```
4343
✔️ Check specific model(s) in default regions:
4444
```
45-
./quota_check_params.sh --models gpt-5.1:150,gpt-image-1-mini:1
45+
./quota_check_params.sh --models gpt-5.1:50,gpt-image-1-mini:1
4646
```
4747
✔️ Check default models in specific region(s):
4848
```
4949
./quota_check_params.sh --regions eastus,swedencentral
5050
```
5151
✔️ Passing Both models and regions:
5252
```
53-
./quota_check_params.sh --models gpt-5.1:150,gpt-image-1-mini:1 --regions eastus,swedencentral
53+
./quota_check_params.sh --models gpt-5.1:50,gpt-image-1-mini:1 --regions eastus,swedencentral
5454
```
5555
✔️ All parameters combined:
5656
```
57-
./quota_check_params.sh --models gpt-5.1:150,gpt-image-1-mini:1 --regions eastus,swedencentral --verbose
57+
./quota_check_params.sh --models gpt-5.1:50,gpt-image-1-mini:1 --regions eastus,swedencentral --verbose
5858
```
5959

6060
### **Sample Output**

infra/main.bicep

Lines changed: 10 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -56,7 +56,7 @@ param secondaryLocation string = 'uksouth'
5656
azd: {
5757
type: 'location'
5858
usageName: [
59-
'OpenAI.GlobalStandard.gpt-5.1,150'
59+
'OpenAI.GlobalStandard.gpt-5.1,50'
6060
'OpenAI.GlobalStandard.gpt-image-1-mini,1'
6161
]
6262
}
@@ -92,7 +92,7 @@ param azureOpenaiAPIVersion string = '2025-01-01-preview'
9292

9393
@minValue(10)
9494
@description('Optional. AI model deployment token capacity.')
95-
param gptModelCapacity int = 150
95+
param gptModelCapacity int = 50
9696

9797
@minValue(1)
9898
@description('Optional. Image model deployment capacity (RPM).')
@@ -675,6 +675,11 @@ module aiServicesPrivateEndpoint 'br/public:avm/res/network/private-endpoint:0.1
675675
]
676676
}
677677
}
678+
dependsOn: [
679+
aiFoundryAiServices
680+
virtualNetwork
681+
avmPrivateDnsZones
682+
]
678683
}
679684

680685
module aiFoundryAiServicesProject 'modules/ai-project.bicep' = if (!useExistingAiFoundryAiProject) {
@@ -750,12 +755,12 @@ module aiSearch 'br/public:avm/res/search/search-service:0.12.0' = {
750755
roleAssignments: [
751756
{
752757
principalId: userAssignedIdentity.outputs.principalId
753-
roleDefinitionIdOrName: 'Search Index Data Contributor'
758+
roleDefinitionIdOrName: '8ebe5a00-799e-43f5-93ac-243d3dce84a7' // Search Index Data Contributor
754759
principalType: 'ServicePrincipal'
755760
}
756761
{
757762
principalId: userAssignedIdentity.outputs.principalId
758-
roleDefinitionIdOrName: 'Search Service Contributor'
763+
roleDefinitionIdOrName: '7ca78c08-252a-4471-8644-bb5ff32d4ba0' // Search Service Contributor
759764
principalType: 'ServicePrincipal'
760765
}
761766
]
@@ -802,7 +807,7 @@ module storageAccount 'br/public:avm/res/storage/storage-account:0.32.0' = {
802807
roleAssignments: [
803808
{
804809
principalId: userAssignedIdentity.outputs.principalId
805-
roleDefinitionIdOrName: 'Storage Blob Data Contributor'
810+
roleDefinitionIdOrName: 'ba92f5b4-2d11-453d-a403-e96b0029c9fe' // Storage Blob Data Contributor
806811
principalType: 'ServicePrincipal'
807812
}
808813
]

infra/main.json

Lines changed: 22 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -5,8 +5,8 @@
55
"metadata": {
66
"_generator": {
77
"name": "bicep",
8-
"version": "0.43.8.12551",
9-
"templateHash": "11476101976733556609"
8+
"version": "0.44.1.10279",
9+
"templateHash": "6689866125639874285"
1010
},
1111
"name": "Intelligent Content Generation Accelerator",
1212
"description": "Solution Accelerator for multimodal marketing content generation using Microsoft Agent Framework.\n"
@@ -79,7 +79,7 @@
7979
"azd": {
8080
"type": "location",
8181
"usageName": [
82-
"OpenAI.GlobalStandard.gpt-5.1,150",
82+
"OpenAI.GlobalStandard.gpt-5.1,50",
8383
"OpenAI.GlobalStandard.gpt-image-1-mini,1"
8484
]
8585
},
@@ -134,7 +134,7 @@
134134
},
135135
"gptModelCapacity": {
136136
"type": "int",
137-
"defaultValue": 150,
137+
"defaultValue": 50,
138138
"minValue": 10,
139139
"metadata": {
140140
"description": "Optional. AI model deployment token capacity."
@@ -4849,8 +4849,8 @@
48494849
"metadata": {
48504850
"_generator": {
48514851
"name": "bicep",
4852-
"version": "0.43.8.12551",
4853-
"templateHash": "10553796402276006272"
4852+
"version": "0.44.1.10279",
4853+
"templateHash": "6557649947950257832"
48544854
}
48554855
},
48564856
"parameters": {
@@ -26158,8 +26158,7 @@
2615826158
},
2615926159
"dependsOn": [
2616026160
"aiFoundryAiServices",
26161-
"[format('avmPrivateDnsZones[{0}]', variables('dnsZoneIndex').openAI)]",
26162-
"[format('avmPrivateDnsZones[{0}]', variables('dnsZoneIndex').cognitiveServices)]",
26161+
"avmPrivateDnsZones",
2616326162
"virtualNetwork"
2616426163
]
2616526164
},
@@ -26199,8 +26198,8 @@
2619926198
"metadata": {
2620026199
"_generator": {
2620126200
"name": "bicep",
26202-
"version": "0.43.8.12551",
26203-
"templateHash": "10492947109706449236"
26201+
"version": "0.44.1.10279",
26202+
"templateHash": "10687287011543111358"
2620426203
}
2620526204
},
2620626205
"parameters": {
@@ -26337,8 +26336,8 @@
2633726336
"metadata": {
2633826337
"_generator": {
2633926338
"name": "bicep",
26340-
"version": "0.43.8.12551",
26341-
"templateHash": "11951897391539128934"
26339+
"version": "0.44.1.10279",
26340+
"templateHash": "11714054478009335704"
2634226341
}
2634326342
},
2634426343
"parameters": {
@@ -26461,8 +26460,8 @@
2646126460
"metadata": {
2646226461
"_generator": {
2646326462
"name": "bicep",
26464-
"version": "0.43.8.12551",
26465-
"templateHash": "12839007615076660968"
26463+
"version": "0.44.1.10279",
26464+
"templateHash": "15628220945119743042"
2646626465
}
2646726466
},
2646826467
"parameters": {
@@ -26568,12 +26567,12 @@
2656826567
"value": [
2656926568
{
2657026569
"principalId": "[reference('userAssignedIdentity').outputs.principalId.value]",
26571-
"roleDefinitionIdOrName": "Search Index Data Contributor",
26570+
"roleDefinitionIdOrName": "8ebe5a00-799e-43f5-93ac-243d3dce84a7",
2657226571
"principalType": "ServicePrincipal"
2657326572
},
2657426573
{
2657526574
"principalId": "[reference('userAssignedIdentity').outputs.principalId.value]",
26576-
"roleDefinitionIdOrName": "Search Service Contributor",
26575+
"roleDefinitionIdOrName": "7ca78c08-252a-4471-8644-bb5ff32d4ba0",
2657726576
"principalType": "ServicePrincipal"
2657826577
}
2657926578
]
@@ -28682,7 +28681,7 @@
2868228681
"value": [
2868328682
{
2868428683
"principalId": "[reference('userAssignedIdentity').outputs.principalId.value]",
28685-
"roleDefinitionIdOrName": "Storage Blob Data Contributor",
28684+
"roleDefinitionIdOrName": "ba92f5b4-2d11-453d-a403-e96b0029c9fe",
2868628685
"principalType": "ServicePrincipal"
2868728686
}
2868828687
]
@@ -43605,8 +43604,8 @@
4360543604
"metadata": {
4360643605
"_generator": {
4360743606
"name": "bicep",
43608-
"version": "0.43.8.12551",
43609-
"templateHash": "1750084008268987068"
43607+
"version": "0.44.1.10279",
43608+
"templateHash": "5713718252926392689"
4361043609
}
4361143610
},
4361243611
"definitions": {
@@ -44644,8 +44643,8 @@
4464444643
"metadata": {
4464544644
"_generator": {
4464644645
"name": "bicep",
44647-
"version": "0.43.8.12551",
44648-
"templateHash": "3262149826084752172"
44646+
"version": "0.44.1.10279",
44647+
"templateHash": "2616621918371988230"
4464944648
},
4465044649
"name": "Site App Settings",
4465144650
"description": "This module deploys a Site App Setting."
@@ -45693,8 +45692,8 @@
4569345692
"metadata": {
4569445693
"_generator": {
4569545694
"name": "bicep",
45696-
"version": "0.43.8.12551",
45697-
"templateHash": "4497918681275542632"
45695+
"version": "0.44.1.10279",
45696+
"templateHash": "3218681246740688998"
4569845697
}
4569945698
},
4570045699
"parameters": {

0 commit comments

Comments
 (0)