Skip to content

Commit 21d495c

Browse files
Merge pull request #3 from Vamshi-Microsoft/v2-windows
V2 windows
2 parents d45e1a2 + 8e22fa5 commit 21d495c

File tree

2 files changed

+85
-104
lines changed

2 files changed

+85
-104
lines changed

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

Lines changed: 78 additions & 104 deletions
Original file line numberDiff line numberDiff line change
@@ -86,6 +86,7 @@ env:
8686
CLEANUP_RESOURCES: ${{ github.event_name == 'workflow_dispatch' && (github.event.inputs.cleanup_resources || true) || true }}
8787
RUN_E2E_TESTS: ${{ github.event_name == 'workflow_dispatch' && (github.event.inputs.run_e2e_tests || 'GoldenPath-Testing') || 'GoldenPath-Testing' }}
8888
BUILD_DOCKER_IMAGE: ${{ github.event_name == 'workflow_dispatch' && (github.event.inputs.build_docker_image || false) || false }}
89+
AZURE_DEV_COLLECT_TELEMETRY: ${{ vars.AZURE_DEV_COLLECT_TELEMETRY }}
8990

9091
jobs:
9192
docker-build:
@@ -281,16 +282,17 @@ jobs:
281282
run: |
282283
# Azure CLI is pre-installed on Windows GitHub runners
283284
az --version # Verify installation
284-
285-
- name: Try setup-azd action
285+
286+
- name: Setup Azure Developer CLI
286287
uses: Azure/setup-azd@v2
287288

288289
- name: Login to Azure
290+
id: login-azure
289291
shell: bash
290292
run: |
291293
az login --service-principal -u ${{ secrets.AZURE_CLIENT_ID }} -p ${{ secrets.AZURE_CLIENT_SECRET }} --tenant ${{ secrets.AZURE_TENANT_ID }}
292-
az account set --subscription ${{ secrets.AZURE_SUBSCRIPTION_ID }}
293-
294+
azd auth login --client-id ${{ secrets.AZURE_CLIENT_ID }} --client-secret ${{ secrets.AZURE_CLIENT_SECRET }} --tenant-id ${{ secrets.AZURE_TENANT_ID }}
295+
294296
- name: Run Quota Check
295297
id: quota-check
296298
shell: bash
@@ -467,114 +469,111 @@ jobs:
467469
468470
- name: Deploy using azd up and extract values (${{ github.event.inputs.waf_enabled == 'true' && 'WAF' || 'Non-WAF' }}+${{ (github.event.inputs.EXP == 'true' || github.event.inputs.AZURE_ENV_LOG_ANALYTICS_WORKSPACE_ID != '' || github.event.inputs.AZURE_EXISTING_AI_PROJECT_RESOURCE_ID != '') && 'EXP' || 'Non-EXP' }})
469471
id: get_output
470-
shell: bash
472+
shell: pwsh
471473
run: |
472-
set -e
473-
echo "Starting azd deployment..."
474-
echo "WAF Enabled: ${{ env.WAF_ENABLED }}"
475-
echo "EXP: ${{ env.EXP }}"
476-
echo "Using Docker Image Tag: ${{ steps.determine_image_tag.outputs.IMAGE_TAG }}"
474+
$ErrorActionPreference = "Stop"
475+
Write-Host "Starting azd deployment..."
476+
Write-Host "WAF Enabled: ${{ env.WAF_ENABLED }}"
477+
Write-Host "EXP: ${{ env.EXP }}"
478+
Write-Host "Using Docker Image Tag: ${{ steps.determine_image_tag.outputs.IMAGE_TAG }}"
477479
478480
# Generate current timestamp in desired format: YYYY-MM-DDTHH:MM:SS.SSSSSSSZ
479-
current_date=$(date -u +"%Y-%m-%dT%H:%M:%S.0000000Z")
481+
$current_date = (Get-Date).ToUniversalTime().ToString("yyyy-MM-ddTHH:mm:ss.0000000Z")
480482
481-
echo "Creating environment..."
482-
azd env new $ENV_NAME --no-prompt
483-
echo "Environment created: $ENV_NAME"
483+
Write-Host "Creating environment..."
484+
azd env new $env:ENV_NAME --no-prompt
485+
Write-Host "Environment created: $env:ENV_NAME"
484486
485-
echo "Setting default subscription..."
487+
Write-Host "Setting default subscription..."
486488
azd config set defaults.subscription ${{ secrets.AZURE_SUBSCRIPTION_ID }}
487489
488490
# Set additional parameters
489491
azd env set AZURE_SUBSCRIPTION_ID="${{ secrets.AZURE_SUBSCRIPTION_ID }}"
490-
azd env set AZURE_ENV_AI_DEPLOYMENTS_LOCATION="$AZURE_ENV_OPENAI_LOCATION"
491-
azd env set AZURE_LOCATION="$AZURE_LOCATION"
492-
azd env set AZURE_RESOURCE_GROUP="$RESOURCE_GROUP_NAME"
492+
azd env set AZURE_ENV_AI_DEPLOYMENTS_LOCATION="$env:AZURE_ENV_OPENAI_LOCATION"
493+
azd env set AZURE_LOCATION="$env:AZURE_LOCATION"
494+
azd env set AZURE_RESOURCE_GROUP="$env:RESOURCE_GROUP_NAME"
493495
azd env set AZURE_ENV_CONTAINER_IMAGE_TAG="${{ steps.determine_image_tag.outputs.IMAGE_TAG }}"
494496
azd env set AZURE_DEV_COLLECT_TELEMETRY="${{ vars.AZURE_DEV_COLLECT_TELEMETRY }}"
495497
# Set ACR name only when building Docker image
496-
if [[ "${{ env.BUILD_DOCKER_IMAGE }}" == "true" ]]; then
498+
if ("${{ env.BUILD_DOCKER_IMAGE }}" -eq "true") {
497499
# Extract ACR name from login server and set as environment variable
498-
ACR_NAME=$(echo "${{ secrets.ACR_TEST_LOGIN_SERVER }}" )
500+
$ACR_NAME = "${{ secrets.ACR_TEST_LOGIN_SERVER }}"
499501
azd env set AZURE_ENV_CONTAINER_REGISTRY_ENDPOINT="$ACR_NAME"
500-
echo "Set ACR name to: $ACR_NAME"
501-
else
502-
echo "Skipping ACR name configuration (using existing image)"
503-
fi
502+
Write-Host "Set ACR name to: $ACR_NAME"
503+
} else {
504+
Write-Host "Skipping ACR name configuration (using existing image)"
505+
}
504506
505-
if [[ "${{ env.EXP }}" == "true" ]]; then
506-
echo "✅ EXP ENABLED - Setting EXP parameters..."
507+
if ("${{ env.EXP }}" -eq "true") {
508+
Write-Host "✅ EXP ENABLED - Setting EXP parameters..."
507509
508510
# Set EXP variables dynamically
509-
if [[ -n "${{ github.event.inputs.AZURE_ENV_LOG_ANALYTICS_WORKSPACE_ID }}" ]]; then
510-
EXP_LOG_ANALYTICS_ID="${{ github.event.inputs.AZURE_ENV_LOG_ANALYTICS_WORKSPACE_ID }}"
511-
else
512-
EXP_LOG_ANALYTICS_ID="${{ secrets.AZURE_ENV_LOG_ANALYTICS_WORKSPACE_ID }}"
513-
fi
511+
if ("${{ github.event.inputs.AZURE_ENV_LOG_ANALYTICS_WORKSPACE_ID }}" -ne "") {
512+
$EXP_LOG_ANALYTICS_ID = "${{ github.event.inputs.AZURE_ENV_LOG_ANALYTICS_WORKSPACE_ID }}"
513+
} else {
514+
$EXP_LOG_ANALYTICS_ID = "${{ secrets.AZURE_ENV_LOG_ANALYTICS_WORKSPACE_ID }}"
515+
}
514516
515-
if [[ -n "${{ github.event.inputs.AZURE_EXISTING_AI_PROJECT_RESOURCE_ID }}" ]]; then
516-
EXP_AI_PROJECT_ID="${{ github.event.inputs.AZURE_EXISTING_AI_PROJECT_RESOURCE_ID }}"
517-
else
518-
EXP_AI_PROJECT_ID="${{ secrets.AZURE_ENV_FOUNDRY_PROJECT_ID }}"
519-
fi
517+
if ("${{ github.event.inputs.AZURE_EXISTING_AI_PROJECT_RESOURCE_ID }}" -ne "") {
518+
$EXP_AI_PROJECT_ID = "${{ github.event.inputs.AZURE_EXISTING_AI_PROJECT_RESOURCE_ID }}"
519+
} else {
520+
$EXP_AI_PROJECT_ID = "${{ secrets.AZURE_ENV_FOUNDRY_PROJECT_ID }}"
521+
}
520522
521-
echo "AZURE_ENV_LOG_ANALYTICS_WORKSPACE_ID: $EXP_LOG_ANALYTICS_ID"
522-
echo "AZURE_ENV_FOUNDRY_PROJECT_ID: $EXP_AI_PROJECT_ID"
523+
Write-Host "AZURE_ENV_LOG_ANALYTICS_WORKSPACE_ID: $EXP_LOG_ANALYTICS_ID"
524+
Write-Host "AZURE_ENV_FOUNDRY_PROJECT_ID: $EXP_AI_PROJECT_ID"
523525
azd env set AZURE_ENV_LOG_ANALYTICS_WORKSPACE_ID="$EXP_LOG_ANALYTICS_ID"
524526
azd env set AZURE_ENV_FOUNDRY_PROJECT_ID="$EXP_AI_PROJECT_ID"
525-
else
526-
echo "❌ EXP DISABLED - Skipping EXP parameters"
527-
fi
527+
} else {
528+
Write-Host "❌ EXP DISABLED - Skipping EXP parameters"
529+
}
528530
529531
# Deploy using azd up
530532
azd up --no-prompt
531533
532-
echo "✅ Deployment succeeded."
533-
echo "$DEPLOY_OUTPUT"
534+
Write-Host "✅ Deployment succeeded."
534535
535536
# Get deployment outputs using azd
536-
echo "Extracting deployment outputs..."
537-
DEPLOY_OUTPUT=$(azd env get-values --output json)
538-
echo "Deployment output: $DEPLOY_OUTPUT"
537+
Write-Host "Extracting deployment outputs..."
538+
$DEPLOY_OUTPUT = azd env get-values --output json | ConvertFrom-Json
539+
Write-Host "Deployment output: $($DEPLOY_OUTPUT | ConvertTo-Json -Depth 10)"
539540
540-
if [[ -z "$DEPLOY_OUTPUT" ]]; then
541-
echo "Error: Deployment output is empty. Please check the deployment logs."
541+
if (-not $DEPLOY_OUTPUT) {
542+
Write-Host "Error: Deployment output is empty. Please check the deployment logs."
542543
exit 1
543-
fi
544+
}
544545
545546
# Export variables only after successful deploy
546-
export CONTAINER_API_APPURL="https://$(echo "$DEPLOY_OUTPUT" | jq -r '.CONTAINER_API_APP_FQDN // empty')"
547-
echo "CONTAINER_API_APPURL=$CONTAINER_API_APPURL" >> $GITHUB_ENV
547+
$CONTAINER_API_APPURL = "https://$($DEPLOY_OUTPUT.CONTAINER_API_APP_FQDN)"
548+
"CONTAINER_API_APPURL=$CONTAINER_API_APPURL" | Out-File -FilePath $env:GITHUB_ENV -Encoding utf8 -Append
548549
549-
export CONTAINER_API_APPNAME=$(echo "$DEPLOY_OUTPUT" | jq -r '.CONTAINER_API_APP_NAME // empty')
550-
echo "CONTAINER_API_APPNAME=$CONTAINER_API_APPNAME" >> $GITHUB_ENV
550+
$CONTAINER_API_APPNAME = $DEPLOY_OUTPUT.CONTAINER_API_APP_NAME
551+
"CONTAINER_API_APPNAME=$CONTAINER_API_APPNAME" | Out-File -FilePath $env:GITHUB_ENV -Encoding utf8 -Append
551552
552-
export CONTAINER_WEB_APPURL="https://$(echo "$DEPLOY_OUTPUT" | jq -r '.CONTAINER_WEB_APP_FQDN // empty')"
553-
echo "CONTAINER_WEB_APPURL=$CONTAINER_WEB_APPURL" >> $GITHUB_ENV
554-
echo "CONTAINER_WEB_APPURL=$CONTAINER_WEB_APPURL" >> $GITHUB_OUTPUT
553+
$CONTAINER_WEB_APPURL = "https://$($DEPLOY_OUTPUT.CONTAINER_WEB_APP_FQDN)"
554+
"CONTAINER_WEB_APPURL=$CONTAINER_WEB_APPURL" | Out-File -FilePath $env:GITHUB_ENV -Encoding utf8 -Append
555+
"CONTAINER_WEB_APPURL=$CONTAINER_WEB_APPURL" | Out-File -FilePath $env:GITHUB_OUTPUT -Encoding utf8 -Append
555556
556-
export CONTAINER_WEB_APPNAME=$(echo "$DEPLOY_OUTPUT" | jq -r '.CONTAINER_WEB_APP_NAME // empty')
557-
echo "CONTAINER_WEB_APPNAME=$CONTAINER_WEB_APPNAME" >> $GITHUB_ENV
557+
$CONTAINER_WEB_APPNAME = $DEPLOY_OUTPUT.CONTAINER_WEB_APP_NAME
558+
"CONTAINER_WEB_APPNAME=$CONTAINER_WEB_APPNAME" | Out-File -FilePath $env:GITHUB_ENV -Encoding utf8 -Append
558559
559560
- name: Register schemas
560561
id: register
561-
shell: bash
562+
shell: pwsh
562563
run: |
563-
echo "Registering schemas..."
564-
sleep 40 # Wait for the API to be ready
564+
Write-Host "Registering schemas..."
565+
Start-Sleep -Seconds 40 # Wait for the API to be ready
565566
566-
cd src/ContentProcessorAPI/samples/schemas
567-
chmod +x ./register_schema.sh
568-
./register_schema.sh ${{ env.CONTAINER_API_APPURL }}/schemavault/ schema_info_sh.json
567+
Set-Location src/ContentProcessorAPI/samples/schemas
568+
& .\register_schema.ps1 "${{ env.CONTAINER_API_APPURL }}/schemavault/" "schema_info_sh.json"
569569
570570
- name: Upload sample invoice and claim data
571-
shell: bash
571+
shell: pwsh
572572
run: |
573-
echo "Uploading sample data..."
574-
cd src/ContentProcessorAPI/samples
575-
chmod +x ./upload_files.sh
576-
./upload_files.sh ${{ env.CONTAINER_API_APPURL }}/contentprocessor/submit ./invoices '${{ steps.register.outputs.invoice_schema_id }}'
577-
./upload_files.sh ${{ env.CONTAINER_API_APPURL }}/contentprocessor/submit ./propertyclaims '${{ steps.register.outputs.propertylossdamageclaimform_schema_id }}'
573+
Write-Host "Uploading sample data..."
574+
Set-Location src/ContentProcessorAPI/samples
575+
& .\upload_files.ps1 "${{ env.CONTAINER_API_APPURL }}/contentprocessor/submit" ".\invoices" "${{ steps.register.outputs.invoice_schema_id }}"
576+
& .\upload_files.ps1 "${{ env.CONTAINER_API_APPURL }}/contentprocessor/submit" ".\propertyclaims" "${{ steps.register.outputs.propertylossdamageclaimform_schema_id }}"
578577
579578
580579
- name: Disable Auth in Web App
@@ -642,7 +641,7 @@ jobs:
642641
send-notification:
643642
if: always()
644643
needs: [docker-build, deploy, e2e-test]
645-
runs-on: windows-latest
644+
runs-on: ubuntu-latest
646645
env:
647646
accelerator_name: "Content Processing"
648647
steps:
@@ -802,19 +801,15 @@ jobs:
802801
if: always() && needs.deploy.result == 'success' && needs.deploy.outputs.RESOURCE_GROUP_NAME != '' && github.event.inputs.existing_webapp_url == '' && (github.event_name != 'workflow_dispatch' || github.event.inputs.cleanup_resources == 'true' || github.event.inputs.cleanup_resources == null)
803802
needs: [docker-build, deploy, e2e-test]
804803
runs-on: windows-latest
804+
continue-on-error: true
805805
env:
806806
RESOURCE_GROUP_NAME: ${{ needs.deploy.outputs.RESOURCE_GROUP_NAME }}
807807
AZURE_LOCATION: ${{ needs.deploy.outputs.AZURE_LOCATION }}
808808
AZURE_ENV_OPENAI_LOCATION: ${{ needs.deploy.outputs.AZURE_ENV_OPENAI_LOCATION }}
809809
ENV_NAME: ${{ needs.deploy.outputs.ENV_NAME }}
810810
IMAGE_TAG: ${{ needs.deploy.outputs.IMAGE_TAG }}
811+
AZURE_DEV_COLLECT_TELEMETRY: ${{ vars.AZURE_DEV_COLLECT_TELEMETRY }}
811812
steps:
812-
- name: Checkout Code
813-
uses: actions/checkout@v4
814-
815-
- name: Install Azure Developer CLI
816-
uses: Azure/setup-azd@v1.0.0
817-
818813
- name: Setup Azure CLI
819814
shell: bash
820815
run: |
@@ -826,9 +821,9 @@ jobs:
826821
run: |
827822
az login --service-principal -u ${{ secrets.AZURE_CLIENT_ID }} -p ${{ secrets.AZURE_CLIENT_SECRET }} --tenant ${{ secrets.AZURE_TENANT_ID }}
828823
az account set --subscription ${{ secrets.AZURE_SUBSCRIPTION_ID }}
829-
830824
- name: Delete Resource Group Directly (Optimized Cleanup)
831825
shell: bash
826+
id: delete_rg
832827
run: |
833828
set -e
834829
echo "🗑️ Starting optimized resource cleanup..."
@@ -843,33 +838,14 @@ jobs:
843838
--yes \
844839
--no-wait
845840
846-
echo "✅ Resource group deletion initiated (running asynchronously)"
841+
echo "✅ Resource group deletion initiated"
847842
echo "Note: Resources will be cleaned up in the background"
848-
849-
- name: Cleanup azd Environment State
850-
if: always()
851-
shell: bash
852-
run: |
853-
set -e
854-
echo "🧹 Cleaning up local azd environment state..."
855-
856-
# Remove local azd environment to prevent state conflicts
857-
if azd env list | grep -q "${{ env.ENV_NAME }}"; then
858-
echo "Removing azd environment: ${{ env.ENV_NAME }}"
859-
azd env select ${{ env.ENV_NAME }} || true
860-
# Just remove the local state, resources already deleted
861-
rm -rf ~/.azd/environments/${{ env.ENV_NAME }} || true
862-
echo "✅ Local azd environment cleaned up"
863-
else
864-
echo "Environment ${{ env.ENV_NAME }} not found locally"
865-
fi
866843
867844
- name: Logout from Azure
868845
if: always()
869846
shell: bash
870847
run: |
871-
azd auth logout
872-
az logout || echo "Warning: Failed to logout from Azure CLI"
848+
az logout
873849
echo "Logged out from Azure."
874850
875851
- name: Generate Cleanup Job Summary
@@ -880,16 +856,14 @@ jobs:
880856
echo "" >> $GITHUB_STEP_SUMMARY
881857
echo "| Field | Value |" >> $GITHUB_STEP_SUMMARY
882858
echo "|-------|--------|" >> $GITHUB_STEP_SUMMARY
883-
echo "| **Job Status** | ${{ job.status == 'success' && '✅ Success' || '❌ Failed' }} |" >> $GITHUB_STEP_SUMMARY
859+
echo "| **Resouce Group deletion Status** | ${{ steps.delete_rg.outcome == 'success' && '✅ Success' || '❌ Failed' }} |" >> $GITHUB_STEP_SUMMARY
884860
echo "| **Resource Group** | \`${{ env.RESOURCE_GROUP_NAME }}\` |" >> $GITHUB_STEP_SUMMARY
885861
echo "| **Azure Region (Infrastructure)** | \`${{ env.AZURE_LOCATION }}\` |" >> $GITHUB_STEP_SUMMARY
886862
echo "| **Azure OpenAI Region** | \`${{ env.AZURE_ENV_OPENAI_LOCATION }}\` |" >> $GITHUB_STEP_SUMMARY
887-
echo "| **Docker Image Tag** | \`${{ env.IMAGE_TAG }}\` |" >> $GITHUB_STEP_SUMMARY
888863
echo "" >> $GITHUB_STEP_SUMMARY
889-
if [[ "${{ job.status }}" == "success" ]]; then
864+
if [[ "${{ steps.delete_rg.outcome }}" == "success" ]]; then
890865
echo "### ✅ Cleanup Details" >> $GITHUB_STEP_SUMMARY
891-
echo "- Successfully initiated resource group deletion" >> $GITHUB_STEP_SUMMARY
892-
echo "- Resource group \`${{ env.RESOURCE_GROUP_NAME }}\` and all associated resources are being deleted asynchronously" >> $GITHUB_STEP_SUMMARY
866+
echo "- Successfully initiated deletion for Resource Group \`${{ env.RESOURCE_GROUP_NAME }}\`" >> $GITHUB_STEP_SUMMARY
893867
echo "" >> $GITHUB_STEP_SUMMARY
894868
else
895869
echo "### ❌ Cleanup Failed" >> $GITHUB_STEP_SUMMARY

src/ContentProcessorAPI/samples/schemas/register_schema.ps1

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -86,6 +86,13 @@ foreach ($entry in $schemaEntries) {
8686
$id = $responseJson.Id
8787
$desc = $responseJson.Description
8888
Write-Output "$desc's Schema Id - $id"
89+
90+
# Set GitHub Actions output if GITHUB_OUTPUT environment variable exists
91+
if ($env:GITHUB_OUTPUT) {
92+
# Create a safe variable name from the class name (lowercase, alphanumeric and underscores only)
93+
$safeName = $className.ToLower() -replace '[^a-z0-9_]', ''
94+
"${safeName}_schema_id=$id" | Out-File -FilePath $env:GITHUB_OUTPUT -Encoding utf8 -Append
95+
}
8996
}
9097
else {
9198
Write-Error "Failed to upload '$schemaFile'. HTTP Status: $httpStatusCode"

0 commit comments

Comments
 (0)