Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
20 commits
Select commit Hold shift + click to select a range
547a73d
fix: update GPT model version to 2024-11-20 across configuration files
Ragini-Microsoft Jun 11, 2026
95cb1bf
fix: update link format for Existing Log Analytics Workspace ID in do…
Ragini-Microsoft Jun 11, 2026
f0712d3
fix: update roleDefinitionIdOrName for Storage Blob Data Contributor …
Ragini-Microsoft Jun 11, 2026
b4f17b5
Merge pull request #446 from microsoft/codemod-versionupgrade-1106
Roopan-Microsoft Jun 11, 2026
35d3325
Fix: Dependabot security packages
Vamshi-Microsoft Jun 12, 2026
ee3cca9
refactor: replace secrets with vars for ACR name in Docker workflows
Vamshi-Microsoft Jun 16, 2026
994a57a
Merge pull request #448 from microsoft/psl-refactor-docker-workflow
Roopan-Microsoft Jun 16, 2026
02a47a6
fix: remove werkzeug dependency from requirements
Vamshi-Microsoft Jun 17, 2026
28fd711
Merge pull request #447 from microsoft/psl-depandabotchanges
Roopan-Microsoft Jun 17, 2026
456f09a
fix upload bug
ShreyasW-Microsoft Jun 26, 2026
a694015
Merge pull request #459 from microsoft/main
Avijit-Microsoft Jun 27, 2026
7902c7b
fix test
ShreyasW-Microsoft Jun 29, 2026
77e21db
fix tests
ShreyasW-Microsoft Jun 29, 2026
2c83751
update azure.yaml to show github issue URL
NirajC3-Microsoft Jul 14, 2026
0b51ae8
Posix not required
NirajC3-Microsoft Jul 14, 2026
ca360eb
Merge pull request #470 from chaudhariniraj/dev
Roopan-Microsoft Jul 15, 2026
5916143
Merge pull request #457 from microsoft/psl-fix-upload-bug
Roopan-Microsoft Jul 15, 2026
6d8c72c
Merge branch 'main' into dev
Abdul-Microsoft Jul 15, 2026
90c3b51
reorder the deployment guide based on copilot review
Abdul-Microsoft Jul 15, 2026
111d7ff
Merge pull request #471 from Abdul-Microsoft/dev
Roopan-Microsoft Jul 16, 2026
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
4 changes: 1 addition & 3 deletions .github/workflows/deploy-orchestrator.yml
Original file line number Diff line number Diff line change
Expand Up @@ -72,10 +72,8 @@ env:

jobs:
docker-build:
if: inputs.trigger_type == 'workflow_dispatch' && inputs.build_docker_image == true
uses: ./.github/workflows/job-docker-build.yml
with:
trigger_type: ${{ inputs.trigger_type }}
build_docker_image: ${{ inputs.build_docker_image }}
secrets: inherit

deploy:
Expand Down
2 changes: 1 addition & 1 deletion .github/workflows/job-deploy-linux.yml
Original file line number Diff line number Diff line change
Expand Up @@ -263,7 +263,7 @@ jobs:
azd env set AZURE_ENV_IMAGE_TAG="$INPUT_IMAGE_TAG"

if [[ "$INPUT_BUILD_DOCKER_IMAGE" == "true" ]]; then
ACR_NAME="${{ secrets.ACR_TEST_LOGIN_SERVER }}"
ACR_NAME="${{ vars.ACR_TEST_LOGIN_SERVER }}"
azd env set AZURE_ENV_CONTAINER_REGISTRY_ENDPOINT="$ACR_NAME"
echo "Set ACR name to: $ACR_NAME"
else
Expand Down
2 changes: 1 addition & 1 deletion .github/workflows/job-deploy-windows.yml
Original file line number Diff line number Diff line change
Expand Up @@ -268,7 +268,7 @@ jobs:

# Set ACR name only when building Docker image
if ("$env:INPUT_BUILD_DOCKER_IMAGE" -eq "true") {
$ACR_NAME = "${{ secrets.ACR_TEST_LOGIN_SERVER }}"
$ACR_NAME = "${{ vars.ACR_TEST_LOGIN_SERVER }}"
azd env set AZURE_ENV_CONTAINER_REGISTRY_ENDPOINT="$ACR_NAME"
Write-Host "Set ACR name to: $ACR_NAME"
} else {
Expand Down
34 changes: 16 additions & 18 deletions .github/workflows/job-docker-build.yml
Original file line number Diff line number Diff line change
@@ -1,27 +1,21 @@
name: Docker Build Job
name: Build & Push Test Images (Feature Branch)
on:
workflow_call:
inputs:
trigger_type:
description: 'Trigger type (workflow_dispatch, pull_request, schedule)'
required: true
type: string
build_docker_image:
description: 'Build And Push Docker Image (Optional)'
required: false
default: false
type: boolean
outputs:
IMAGE_TAG:
description: "Generated Docker Image Tag"
value: ${{ jobs.docker-build.outputs.IMAGE_TAG }}
workflow_dispatch:

Comment on lines +8 to +9
permissions:
contents: read
id-token: write

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

jobs:
docker-build:
if: inputs.trigger_type == 'workflow_dispatch' && inputs.build_docker_image == true
runs-on: ubuntu-latest
environment: production
outputs:
Expand Down Expand Up @@ -55,7 +49,11 @@ jobs:
subscription-id: ${{ secrets.AZURE_SUBSCRIPTION_ID }}

- name: Login to Azure Container Registry
run: az acr login --name ${{ secrets.ACR_TEST_LOGIN_SERVER }}
shell: bash
run: |
# Extract registry name from login server (e.g., myacr.azurecr.io -> myacr)
ACR_NAME=$(echo "${{ vars.ACR_TEST_LOGIN_SERVER }}" | cut -d'.' -f1)
az acr login --name "$ACR_NAME"

- name: Build and Push Cod Mod backend Docker image
uses: docker/build-push-action@v7
Expand All @@ -66,8 +64,8 @@ jobs:
file: docker/Backend.Dockerfile
push: true
tags: |
${{ secrets.ACR_TEST_LOGIN_SERVER }}/cmsabackend:${{ steps.generate_docker_tag.outputs.IMAGE_TAG }}
${{ secrets.ACR_TEST_LOGIN_SERVER }}/cmsabackend:${{ steps.generate_docker_tag.outputs.IMAGE_TAG }}_${{ github.run_number }}
${{ vars.ACR_TEST_LOGIN_SERVER }}/cmsabackend:${{ steps.generate_docker_tag.outputs.IMAGE_TAG }}
${{ vars.ACR_TEST_LOGIN_SERVER }}/cmsabackend:${{ steps.generate_docker_tag.outputs.IMAGE_TAG }}_${{ github.run_number }}

- name: Build and Push Cod Mod frontend Docker image
uses: docker/build-push-action@v7
Expand All @@ -78,8 +76,8 @@ jobs:
file: docker/Frontend.Dockerfile
push: true
tags: |
${{ secrets.ACR_TEST_LOGIN_SERVER }}/cmsafrontend:${{ steps.generate_docker_tag.outputs.IMAGE_TAG }}
${{ secrets.ACR_TEST_LOGIN_SERVER }}/cmsafrontend:${{ steps.generate_docker_tag.outputs.IMAGE_TAG }}_${{ github.run_number }}
${{ vars.ACR_TEST_LOGIN_SERVER }}/cmsafrontend:${{ steps.generate_docker_tag.outputs.IMAGE_TAG }}
${{ vars.ACR_TEST_LOGIN_SERVER }}/cmsafrontend:${{ steps.generate_docker_tag.outputs.IMAGE_TAG }}_${{ github.run_number }}

- name: Verify Docker Image Build
shell: bash
Expand All @@ -91,7 +89,7 @@ jobs:
if: always()
shell: bash
run: |
ACR_NAME=$(echo "${{ secrets.ACR_TEST_LOGIN_SERVER }}")
ACR_NAME=$(echo "${{ vars.ACR_TEST_LOGIN_SERVER }}")
echo "## 🐳 Docker Build Job Summary" >> $GITHUB_STEP_SUMMARY
Comment on lines 91 to 93
echo "" >> $GITHUB_STEP_SUMMARY
echo "| Field | Value |" >> $GITHUB_STEP_SUMMARY
Expand Down
14 changes: 14 additions & 0 deletions azure.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,20 @@ parameters:
baseUrl:
type: string
default: 'https://raw.githubusercontent.com/microsoft/Modernize-your-code-solution-accelerator'

hooks:
preprovision:
windows:
run: |
Write-Host ""
Write-Host " ---------------------------------------------------------------------------------------------------" -ForegroundColor Yellow
Write-Host " Note: If deployment fails or you encounter an issue, please open an issue with the deployment logs." -ForegroundColor Yellow
Write-Host " https://github.com/microsoft/Modernize-your-code-solution-accelerator/issues" -ForegroundColor Cyan
Write-Host " ---------------------------------------------------------------------------------------------------" -ForegroundColor Yellow
Write-Host ""
shell: pwsh
interactive: true

deployment:
mode: Incremental
template: ./infra/main.bicep # Path to the main.bicep file inside the 'deployment' folder
Expand Down
19 changes: 9 additions & 10 deletions docs/DeploymentGuide.md
Original file line number Diff line number Diff line change
Expand Up @@ -279,6 +279,15 @@ azd config set provision.preflight off
```shell
azd up
```
**During deployment, you'll be prompted for:**
1. **Environment name** (e.g., "cmsaapp") - Must be 3-16 characters long, alphanumeric only
2. **Azure subscription** selection
3. **Azure region** - Select a region with available GPT model quota
4. **Resource group** selection (create new or use existing)

**Expected Duration:** 9-14 minutes for default configuration (includes remotely building and pushing the container images)

**⚠️ Deployment Issues:** If you encounter errors or timeouts, try a different region as there may be capacity constraints. For detailed error solutions, see our [Troubleshooting Guide](./TroubleShootingSteps.md).

## Step 5: Build and Push Container Images
### 5.1 Run Image Build Script
Expand All @@ -297,16 +306,6 @@ azd up
.\scripts\build_and_push_images.ps1
```

**During deployment, you'll be prompted for:**
1. **Environment name** (e.g., "cmsaapp") - Must be 3-16 characters long, alphanumeric only
2. **Azure subscription** selection
3. **Azure region** - Select a region with available GPT model quota
4. **Resource group** selection (create new or use existing)

**Expected Duration:** 9-14 minutes for default configuration (includes remotely building and pushing the container images)

**⚠️ Deployment Issues:** If you encounter errors or timeouts, try a different region as there may be capacity constraints. For detailed error solutions, see our [Troubleshooting Guide](./TroubleShootingSteps.md).

### 5.2 Get Application URL

After successful deployment:
Expand Down
4 changes: 2 additions & 2 deletions infra/main.bicep
Original file line number Diff line number Diff line change
Expand Up @@ -775,7 +775,7 @@ module aiServices 'modules/ai-foundry/aifoundry.bicep' = {
{
principalId: appIdentity.outputs.principalId
principalType: 'ServicePrincipal'
roleDefinitionIdOrName: 'Cognitive Services OpenAI Contributor'
roleDefinitionIdOrName: '5e0bd9bd-7b93-4f28-af87-19fc36ad61bd' // Cognitive Services OpenAI User
}
{
principalId: appIdentity.outputs.principalId
Expand Down Expand Up @@ -864,7 +864,7 @@ module storageAccount 'modules/storageAccount.bicep' = {
{
principalId: appIdentity.outputs.principalId
principalType: 'ServicePrincipal'
roleDefinitionIdOrName: 'Storage Blob Data Contributor'
roleDefinitionIdOrName: 'ba92f5b4-2d11-453d-a403-e96b0029c9fe' // Storage Blob Data Contributor
}
]
enableTelemetry: enableTelemetry
Expand Down
48 changes: 24 additions & 24 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.44.1.10279",
"templateHash": "4200460093633058559"
"version": "0.45.6.27763",
"templateHash": "2646851374670029839"
},
"name": "Modernize Your Code Solution Accelerator",
"description": "CSA CTO Gold Standard Solution Accelerator for Modernize Your Code. \r\n"
Expand Down Expand Up @@ -5087,8 +5087,8 @@
"metadata": {
"_generator": {
"name": "bicep",
"version": "0.44.1.10279",
"templateHash": "12666388833640590711"
"version": "0.45.6.27763",
"templateHash": "278403134034191131"
}
},
"definitions": {
Expand Down Expand Up @@ -13095,11 +13095,11 @@
},
"dependsOn": [
"applicationInsights",
"[format('avmPrivateDnsZones[{0}]', variables('dnsZoneIndex').agentSvc)]",
"[format('avmPrivateDnsZones[{0}]', variables('dnsZoneIndex').monitor)]",
"[format('avmPrivateDnsZones[{0}]', variables('dnsZoneIndex').storageBlob)]",
"[format('avmPrivateDnsZones[{0}]', variables('dnsZoneIndex').ods)]",
"[format('avmPrivateDnsZones[{0}]', variables('dnsZoneIndex').monitor)]",
"[format('avmPrivateDnsZones[{0}]', variables('dnsZoneIndex').oms)]",
"[format('avmPrivateDnsZones[{0}]', variables('dnsZoneIndex').storageBlob)]",
"[format('avmPrivateDnsZones[{0}]', variables('dnsZoneIndex').agentSvc)]",
"dataCollectionEndpoint",
"logAnalyticsWorkspace",
"virtualNetwork"
Expand Down Expand Up @@ -26155,7 +26155,7 @@
{
"principalId": "[reference('appIdentity').outputs.principalId.value]",
"principalType": "ServicePrincipal",
"roleDefinitionIdOrName": "Cognitive Services OpenAI Contributor"
"roleDefinitionIdOrName": "5e0bd9bd-7b93-4f28-af87-19fc36ad61bd"
},
{
"principalId": "[reference('appIdentity').outputs.principalId.value]",
Expand Down Expand Up @@ -26183,8 +26183,8 @@
"metadata": {
"_generator": {
"name": "bicep",
"version": "0.44.1.10279",
"templateHash": "7796390788683636674"
"version": "0.45.6.27763",
"templateHash": "17695503720766712143"
},
"name": "AI Services and Project Module",
"description": "This module creates an AI Services resource and an AI Foundry project within it. It supports private networking, OpenAI deployments, and role assignments."
Expand Down Expand Up @@ -27481,8 +27481,8 @@
"metadata": {
"_generator": {
"name": "bicep",
"version": "0.44.1.10279",
"templateHash": "15798298565583456780"
"version": "0.45.6.27763",
"templateHash": "5349372727764638433"
}
},
"definitions": {
Expand Down Expand Up @@ -29191,8 +29191,8 @@
"metadata": {
"_generator": {
"name": "bicep",
"version": "0.44.1.10279",
"templateHash": "13008301984486295222"
"version": "0.45.6.27763",
"templateHash": "992342334639050267"
}
},
"definitions": {
Expand Down Expand Up @@ -29406,8 +29406,8 @@
"metadata": {
"_generator": {
"name": "bicep",
"version": "0.44.1.10279",
"templateHash": "15798298565583456780"
"version": "0.45.6.27763",
"templateHash": "5349372727764638433"
}
},
"definitions": {
Expand Down Expand Up @@ -31116,8 +31116,8 @@
"metadata": {
"_generator": {
"name": "bicep",
"version": "0.44.1.10279",
"templateHash": "13008301984486295222"
"version": "0.45.6.27763",
"templateHash": "992342334639050267"
}
},
"definitions": {
Expand Down Expand Up @@ -32075,7 +32075,7 @@
{
"principalId": "[reference('appIdentity').outputs.principalId.value]",
"principalType": "ServicePrincipal",
"roleDefinitionIdOrName": "Storage Blob Data Contributor"
"roleDefinitionIdOrName": "ba92f5b4-2d11-453d-a403-e96b0029c9fe"
}
]
},
Expand All @@ -32090,8 +32090,8 @@
"metadata": {
"_generator": {
"name": "bicep",
"version": "0.44.1.10279",
"templateHash": "17237339939537137976"
"version": "0.45.6.27763",
"templateHash": "16329435452115246913"
}
},
"definitions": {
Expand Down Expand Up @@ -40499,8 +40499,8 @@
},
"dependsOn": [
"appIdentity",
"[format('avmPrivateDnsZones[{0}]', variables('dnsZoneIndex').storageFile)]",
"[format('avmPrivateDnsZones[{0}]', variables('dnsZoneIndex').storageBlob)]",
"[format('avmPrivateDnsZones[{0}]', variables('dnsZoneIndex').storageFile)]",
"logAnalyticsWorkspace",
"virtualNetwork"
]
Expand Down Expand Up @@ -40544,8 +40544,8 @@
"metadata": {
"_generator": {
"name": "bicep",
"version": "0.44.1.10279",
"templateHash": "8524856574515803596"
"version": "0.45.6.27763",
"templateHash": "16140682139384730655"
}
},
"definitions": {
Expand Down
4 changes: 2 additions & 2 deletions infra/main_custom.bicep
Original file line number Diff line number Diff line change
Expand Up @@ -687,7 +687,7 @@ module aiServices 'modules/ai-foundry/aifoundry.bicep' = {
{
principalId: appIdentity.outputs.principalId
principalType: 'ServicePrincipal'
roleDefinitionIdOrName: 'Cognitive Services OpenAI Contributor'
roleDefinitionIdOrName: '5e0bd9bd-7b93-4f28-af87-19fc36ad61bd' // Cognitive Services OpenAI User
}
{
principalId: appIdentity.outputs.principalId
Expand Down Expand Up @@ -776,7 +776,7 @@ module storageAccount 'modules/storageAccount.bicep' = {
{
principalId: appIdentity.outputs.principalId
principalType: 'ServicePrincipal'
roleDefinitionIdOrName: 'Storage Blob Data Contributor'
roleDefinitionIdOrName: 'ba92f5b4-2d11-453d-a403-e96b0029c9fe' // Storage Blob Data Contributor
}
]
enableTelemetry: enableTelemetry
Expand Down
Loading
Loading