Skip to content

Commit c440078

Browse files
Refactor deployment workflows for Linux and Windows; consolidate outputs and enhance structure
1 parent aaaa4a0 commit c440078

3 files changed

Lines changed: 498 additions & 264 deletions

File tree

Lines changed: 205 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,205 @@
1+
name: Deploy Steps - Linux
2+
3+
on:
4+
workflow_call:
5+
inputs:
6+
ENV_NAME:
7+
required: true
8+
type: string
9+
AZURE_ENV_OPENAI_LOCATION:
10+
required: true
11+
type: string
12+
AZURE_LOCATION:
13+
required: true
14+
type: string
15+
RESOURCE_GROUP_NAME:
16+
required: true
17+
type: string
18+
IMAGE_TAG:
19+
required: true
20+
type: string
21+
BUILD_DOCKER_IMAGE:
22+
required: true
23+
type: string
24+
EXP:
25+
required: true
26+
type: string
27+
AZURE_ENV_LOG_ANALYTICS_WORKSPACE_ID:
28+
required: false
29+
type: string
30+
AZURE_EXISTING_AI_PROJECT_RESOURCE_ID:
31+
required: false
32+
type: string
33+
CONTAINER_API_APPURL:
34+
required: true
35+
type: string
36+
CONTAINER_API_APPNAME:
37+
required: true
38+
type: string
39+
CONTAINER_WEB_APPNAME:
40+
required: true
41+
type: string
42+
secrets:
43+
AZURE_CLIENT_ID:
44+
required: true
45+
AZURE_CLIENT_SECRET:
46+
required: true
47+
AZURE_TENANT_ID:
48+
required: true
49+
AZURE_SUBSCRIPTION_ID:
50+
required: true
51+
ACR_TEST_LOGIN_SERVER:
52+
required: true
53+
AZURE_ENV_LOG_ANALYTICS_WORKSPACE_ID:
54+
required: false
55+
AZURE_ENV_FOUNDRY_PROJECT_ID:
56+
required: false
57+
outputs:
58+
CONTAINER_WEB_APPURL:
59+
description: "Container Web App URL"
60+
value: ${{ jobs.deploy-linux.outputs.CONTAINER_WEB_APPURL }}
61+
invoice_schema_id:
62+
description: "Invoice Schema ID"
63+
value: ${{ jobs.deploy-linux.outputs.invoice_schema_id }}
64+
propertydamageclaimform_schema_id:
65+
description: "Property Damage Claim Form Schema ID"
66+
value: ${{ jobs.deploy-linux.outputs.propertydamageclaimform_schema_id }}
67+
68+
jobs:
69+
deploy-linux:
70+
runs-on: ubuntu-latest
71+
outputs:
72+
CONTAINER_WEB_APPURL: ${{ steps.get_output_linux.outputs.CONTAINER_WEB_APPURL }}
73+
invoice_schema_id: ${{ steps.register_linux.outputs.invoice_schema_id }}
74+
propertydamageclaimform_schema_id: ${{ steps.register_linux.outputs.propertylossdamageclaimform_schema_id }}
75+
steps:
76+
- name: Checkout Code
77+
uses: actions/checkout@v4
78+
79+
- name: Login to Azure
80+
shell: bash
81+
run: |
82+
az login --service-principal -u ${{ secrets.AZURE_CLIENT_ID }} -p ${{ secrets.AZURE_CLIENT_SECRET }} --tenant ${{ secrets.AZURE_TENANT_ID }}
83+
az account set --subscription ${{ secrets.AZURE_SUBSCRIPTION_ID }}
84+
85+
- name: Deploy using azd up and extract values (Linux)
86+
id: get_output_linux
87+
shell: bash
88+
run: |
89+
set -e
90+
echo "Starting azd deployment..."
91+
echo "EXP: ${{ inputs.EXP }}"
92+
echo "Using Docker Image Tag: ${{ inputs.IMAGE_TAG }}"
93+
94+
# Install azd (Azure Developer CLI)
95+
curl -fsSL https://aka.ms/install-azd.sh | bash
96+
97+
# Generate current timestamp in desired format: YYYY-MM-DDTHH:MM:SS.SSSSSSSZ
98+
current_date=$(date -u +"%Y-%m-%dT%H:%M:%S.%7NZ")
99+
100+
echo "Creating environment..."
101+
azd env new ${{ inputs.ENV_NAME }} --no-prompt
102+
echo "Environment created: ${{ inputs.ENV_NAME }}"
103+
104+
echo "Setting default subscription..."
105+
azd config set defaults.subscription ${{ secrets.AZURE_SUBSCRIPTION_ID }}
106+
107+
# Set additional parameters
108+
azd env set AZURE_SUBSCRIPTION_ID="${{ secrets.AZURE_SUBSCRIPTION_ID }}"
109+
azd env set AZURE_ENV_AI_DEPLOYMENTS_LOCATION="${{ inputs.AZURE_ENV_OPENAI_LOCATION }}"
110+
azd env set AZURE_LOCATION="${{ inputs.AZURE_LOCATION }}"
111+
azd env set AZURE_RESOURCE_GROUP="${{ inputs.RESOURCE_GROUP_NAME }}"
112+
azd env set AZURE_ENV_CONTAINER_IMAGE_TAG="${{ inputs.IMAGE_TAG }}"
113+
114+
if [[ "${{ inputs.BUILD_DOCKER_IMAGE }}" == "true" ]]; then
115+
ACR_NAME=$(echo "${{ secrets.ACR_TEST_LOGIN_SERVER }}")
116+
azd env set AZURE_ENV_CONTAINER_REGISTRY_ENDPOINT="$ACR_NAME"
117+
echo "Set ACR name to: $ACR_NAME"
118+
else
119+
echo "Skipping ACR name configuration (using existing image)"
120+
fi
121+
122+
if [[ "${{ inputs.EXP }}" == "true" ]]; then
123+
echo "✅ EXP ENABLED - Setting EXP parameters..."
124+
125+
if [[ -n "${{ inputs.AZURE_ENV_LOG_ANALYTICS_WORKSPACE_ID }}" ]]; then
126+
EXP_LOG_ANALYTICS_ID="${{ inputs.AZURE_ENV_LOG_ANALYTICS_WORKSPACE_ID }}"
127+
else
128+
EXP_LOG_ANALYTICS_ID="${{ secrets.AZURE_ENV_LOG_ANALYTICS_WORKSPACE_ID }}"
129+
fi
130+
131+
if [[ -n "${{ inputs.AZURE_EXISTING_AI_PROJECT_RESOURCE_ID }}" ]]; then
132+
EXP_AI_PROJECT_ID="${{ inputs.AZURE_EXISTING_AI_PROJECT_RESOURCE_ID }}"
133+
else
134+
EXP_AI_PROJECT_ID="${{ secrets.AZURE_ENV_FOUNDRY_PROJECT_ID }}"
135+
fi
136+
137+
echo "AZURE_ENV_LOG_ANALYTICS_WORKSPACE_ID: $EXP_LOG_ANALYTICS_ID"
138+
echo "AZURE_ENV_FOUNDRY_PROJECT_ID: $EXP_AI_PROJECT_ID"
139+
azd env set AZURE_ENV_LOG_ANALYTICS_WORKSPACE_ID="$EXP_LOG_ANALYTICS_ID"
140+
azd env set AZURE_ENV_FOUNDRY_PROJECT_ID="$EXP_AI_PROJECT_ID"
141+
else
142+
echo "❌ EXP DISABLED - Skipping EXP parameters"
143+
fi
144+
145+
azd up --no-prompt
146+
147+
echo "✅ Deployment succeeded."
148+
echo "$DEPLOY_OUTPUT"
149+
150+
echo "Extracting deployment outputs..."
151+
DEPLOY_OUTPUT=$(azd env get-values --output json)
152+
echo "Deployment output: $DEPLOY_OUTPUT"
153+
154+
if [[ -z "$DEPLOY_OUTPUT" ]]; then
155+
echo "Error: Deployment output is empty. Please check the deployment logs."
156+
exit 1
157+
fi
158+
159+
export CONTAINER_API_APPURL="https://$(echo "$DEPLOY_OUTPUT" | jq -r '.CONTAINER_API_APP_FQDN // empty')"
160+
echo "CONTAINER_API_APPURL=$CONTAINER_API_APPURL" >> $GITHUB_ENV
161+
162+
export CONTAINER_API_APPNAME=$(echo "$DEPLOY_OUTPUT" | jq -r '.CONTAINER_API_APP_NAME // empty')
163+
echo "CONTAINER_API_APPNAME=$CONTAINER_API_APPNAME" >> $GITHUB_ENV
164+
165+
export CONTAINER_WEB_APPURL="https://$(echo "$DEPLOY_OUTPUT" | jq -r '.CONTAINER_WEB_APP_FQDN // empty')"
166+
echo "CONTAINER_WEB_APPURL=$CONTAINER_WEB_APPURL" >> $GITHUB_ENV
167+
echo "CONTAINER_WEB_APPURL=$CONTAINER_WEB_APPURL" >> $GITHUB_OUTPUT
168+
169+
export CONTAINER_WEB_APPNAME=$(echo "$DEPLOY_OUTPUT" | jq -r '.CONTAINER_WEB_APP_NAME // empty')
170+
echo "CONTAINER_WEB_APPNAME=$CONTAINER_WEB_APPNAME" >> $GITHUB_ENV
171+
172+
- name: Register schemas (Linux)
173+
id: register_linux
174+
shell: bash
175+
run: |
176+
echo "Registering schemas..."
177+
sleep 40
178+
179+
cd src/ContentProcessorAPI/samples/schemas
180+
chmod +x ./register_schema.sh
181+
./register_schema.sh ${{ inputs.CONTAINER_API_APPURL }}/schemavault/ schema_info_sh.json
182+
183+
- name: Upload sample invoice and claim data (Linux)
184+
shell: bash
185+
run: |
186+
echo "Uploading sample data..."
187+
cd src/ContentProcessorAPI/samples
188+
chmod +x ./upload_files.sh
189+
./upload_files.sh ${{ inputs.CONTAINER_API_APPURL }}/contentprocessor/submit ./invoices '${{ steps.register_linux.outputs.invoice_schema_id }}'
190+
./upload_files.sh ${{ inputs.CONTAINER_API_APPURL }}/contentprocessor/submit ./propertyclaims '${{ steps.register_linux.outputs.propertylossdamageclaimform_schema_id }}'
191+
192+
- name: Disable Auth in Web App
193+
shell: bash
194+
run: |
195+
az containerapp update --name ${{ inputs.CONTAINER_WEB_APPNAME }} \
196+
--resource-group ${{ inputs.RESOURCE_GROUP_NAME }} \
197+
--set-env-vars APP_AUTH_ENABLED=false
198+
199+
- name: Disable Auth in API App
200+
shell: bash
201+
run: |
202+
sleep 30
203+
az containerapp update --name ${{ inputs.CONTAINER_API_APPNAME }} \
204+
--resource-group ${{ inputs.RESOURCE_GROUP_NAME }} \
205+
--set-env-vars APP_AUTH_ENABLED=false

0 commit comments

Comments
 (0)