Skip to content

Commit a17ad83

Browse files
Merge pull request #4 from Vamshi-Microsoft/vk-deploymentSplit
Vk deployment split
2 parents aaaa4a0 + 97dbafc commit a17ad83

3 files changed

Lines changed: 536 additions & 299 deletions

File tree

Lines changed: 244 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,244 @@
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+
secrets:
34+
AZURE_CLIENT_ID:
35+
required: true
36+
AZURE_CLIENT_SECRET:
37+
required: true
38+
AZURE_TENANT_ID:
39+
required: true
40+
AZURE_SUBSCRIPTION_ID:
41+
required: true
42+
ACR_TEST_LOGIN_SERVER:
43+
required: true
44+
AZURE_ENV_LOG_ANALYTICS_WORKSPACE_ID:
45+
required: false
46+
AZURE_ENV_FOUNDRY_PROJECT_ID:
47+
required: false
48+
outputs:
49+
CONTAINER_WEB_APPURL:
50+
description: "Container Web App URL"
51+
value: ${{ jobs.deploy-linux.outputs.CONTAINER_WEB_APPURL }}
52+
invoice_schema_id:
53+
description: "Invoice Schema ID"
54+
value: ${{ jobs.deploy-linux.outputs.invoice_schema_id }}
55+
propertydamageclaimform_schema_id:
56+
description: "Property Damage Claim Form Schema ID"
57+
value: ${{ jobs.deploy-linux.outputs.propertydamageclaimform_schema_id }}
58+
59+
jobs:
60+
deploy-linux:
61+
runs-on: ubuntu-latest
62+
outputs:
63+
CONTAINER_WEB_APPURL: ${{ steps.get_output_linux.outputs.CONTAINER_WEB_APPURL }}
64+
invoice_schema_id: ${{ steps.register_linux.outputs.invoice_schema_id }}
65+
propertydamageclaimform_schema_id: ${{ steps.register_linux.outputs.propertylossdamageclaimform_schema_id }}
66+
steps:
67+
- name: Checkout Code
68+
uses: actions/checkout@v4
69+
70+
- name: Setup Azure CLI
71+
shell: bash
72+
run: |
73+
curl -sL https://aka.ms/InstallAzureCLIDeb | sudo bash
74+
75+
- name: Setup Azure Developer CLI (Linux)
76+
if: runner.os == 'Linux'
77+
shell: bash
78+
run: |
79+
curl -fsSL https://aka.ms/install-azd.sh | sudo bash
80+
azd version
81+
82+
- name: Login to AZD
83+
id: login-azure
84+
shell: bash
85+
run: |
86+
az login --service-principal -u ${{ secrets.AZURE_CLIENT_ID }} -p ${{ secrets.AZURE_CLIENT_SECRET }} --tenant ${{ secrets.AZURE_TENANT_ID }}
87+
az account set --subscription ${{ secrets.AZURE_SUBSCRIPTION_ID }}
88+
azd auth login --client-id ${{ secrets.AZURE_CLIENT_ID }} --client-secret ${{ secrets.AZURE_CLIENT_SECRET }} --tenant-id ${{ secrets.AZURE_TENANT_ID }}
89+
90+
- name: Deploy using azd up and extract values (Linux)
91+
id: get_output_linux
92+
shell: bash
93+
run: |
94+
set -e
95+
echo "Starting azd deployment..."
96+
echo "EXP: ${{ inputs.EXP }}"
97+
echo "Using Docker Image Tag: ${{ inputs.IMAGE_TAG }}"
98+
99+
# Install azd (Azure Developer CLI)
100+
curl -fsSL https://aka.ms/install-azd.sh | bash
101+
102+
# Generate current timestamp in desired format: YYYY-MM-DDTHH:MM:SS.SSSSSSSZ
103+
current_date=$(date -u +"%Y-%m-%dT%H:%M:%S.%7NZ")
104+
105+
echo "Creating environment..."
106+
azd env new ${{ inputs.ENV_NAME }} --no-prompt
107+
echo "Environment created: ${{ inputs.ENV_NAME }}"
108+
109+
echo "Setting default subscription..."
110+
azd config set defaults.subscription ${{ secrets.AZURE_SUBSCRIPTION_ID }}
111+
112+
# Set additional parameters
113+
azd env set AZURE_SUBSCRIPTION_ID="${{ secrets.AZURE_SUBSCRIPTION_ID }}"
114+
azd env set AZURE_ENV_AI_DEPLOYMENTS_LOCATION="${{ inputs.AZURE_ENV_OPENAI_LOCATION }}"
115+
azd env set AZURE_LOCATION="${{ inputs.AZURE_LOCATION }}"
116+
azd env set AZURE_RESOURCE_GROUP="${{ inputs.RESOURCE_GROUP_NAME }}"
117+
azd env set AZURE_ENV_CONTAINER_IMAGE_TAG="${{ inputs.IMAGE_TAG }}"
118+
119+
if [[ "${{ inputs.BUILD_DOCKER_IMAGE }}" == "true" ]]; then
120+
ACR_NAME=$(echo "${{ secrets.ACR_TEST_LOGIN_SERVER }}")
121+
azd env set AZURE_ENV_CONTAINER_REGISTRY_ENDPOINT="$ACR_NAME"
122+
echo "Set ACR name to: $ACR_NAME"
123+
else
124+
echo "Skipping ACR name configuration (using existing image)"
125+
fi
126+
127+
if [[ "${{ inputs.EXP }}" == "true" ]]; then
128+
echo "✅ EXP ENABLED - Setting EXP parameters..."
129+
130+
if [[ -n "${{ inputs.AZURE_ENV_LOG_ANALYTICS_WORKSPACE_ID }}" ]]; then
131+
EXP_LOG_ANALYTICS_ID="${{ inputs.AZURE_ENV_LOG_ANALYTICS_WORKSPACE_ID }}"
132+
else
133+
EXP_LOG_ANALYTICS_ID="${{ secrets.AZURE_ENV_LOG_ANALYTICS_WORKSPACE_ID }}"
134+
fi
135+
136+
if [[ -n "${{ inputs.AZURE_EXISTING_AI_PROJECT_RESOURCE_ID }}" ]]; then
137+
EXP_AI_PROJECT_ID="${{ inputs.AZURE_EXISTING_AI_PROJECT_RESOURCE_ID }}"
138+
else
139+
EXP_AI_PROJECT_ID="${{ secrets.AZURE_ENV_FOUNDRY_PROJECT_ID }}"
140+
fi
141+
142+
echo "AZURE_ENV_LOG_ANALYTICS_WORKSPACE_ID: $EXP_LOG_ANALYTICS_ID"
143+
echo "AZURE_ENV_FOUNDRY_PROJECT_ID: $EXP_AI_PROJECT_ID"
144+
azd env set AZURE_ENV_LOG_ANALYTICS_WORKSPACE_ID="$EXP_LOG_ANALYTICS_ID"
145+
azd env set AZURE_ENV_FOUNDRY_PROJECT_ID="$EXP_AI_PROJECT_ID"
146+
else
147+
echo "❌ EXP DISABLED - Skipping EXP parameters"
148+
fi
149+
150+
azd up --no-prompt
151+
152+
echo "✅ Deployment succeeded."
153+
echo "$DEPLOY_OUTPUT"
154+
155+
echo "Extracting deployment outputs..."
156+
DEPLOY_OUTPUT=$(azd env get-values --output json)
157+
echo "Deployment output: $DEPLOY_OUTPUT"
158+
159+
if [[ -z "$DEPLOY_OUTPUT" ]]; then
160+
echo "Error: Deployment output is empty. Please check the deployment logs."
161+
exit 1
162+
fi
163+
164+
export CONTAINER_API_APPURL="https://$(echo "$DEPLOY_OUTPUT" | jq -r '.CONTAINER_API_APP_FQDN // empty')"
165+
echo "CONTAINER_API_APPURL=$CONTAINER_API_APPURL" >> $GITHUB_ENV
166+
167+
export CONTAINER_API_APPNAME=$(echo "$DEPLOY_OUTPUT" | jq -r '.CONTAINER_API_APP_NAME // empty')
168+
echo "CONTAINER_API_APPNAME=$CONTAINER_API_APPNAME" >> $GITHUB_ENV
169+
170+
export CONTAINER_WEB_APPURL="https://$(echo "$DEPLOY_OUTPUT" | jq -r '.CONTAINER_WEB_APP_FQDN // empty')"
171+
echo "CONTAINER_WEB_APPURL=$CONTAINER_WEB_APPURL" >> $GITHUB_ENV
172+
echo "CONTAINER_WEB_APPURL=$CONTAINER_WEB_APPURL" >> $GITHUB_OUTPUT
173+
174+
export CONTAINER_WEB_APPNAME=$(echo "$DEPLOY_OUTPUT" | jq -r '.CONTAINER_WEB_APP_NAME // empty')
175+
echo "CONTAINER_WEB_APPNAME=$CONTAINER_WEB_APPNAME" >> $GITHUB_ENV
176+
177+
- name: Register schemas (Linux)
178+
id: register_linux
179+
shell: bash
180+
run: |
181+
echo "Registering schemas..."
182+
sleep 40
183+
184+
cd src/ContentProcessorAPI/samples/schemas
185+
chmod +x ./register_schema.sh
186+
./register_schema.sh ${{ env.CONTAINER_API_APPURL }}/schemavault/ schema_info_sh.json
187+
188+
- name: Upload sample invoice and claim data (Linux)
189+
shell: bash
190+
run: |
191+
echo "Uploading sample data..."
192+
cd src/ContentProcessorAPI/samples
193+
chmod +x ./upload_files.sh
194+
./upload_files.sh ${{ env.CONTAINER_API_APPURL }}/contentprocessor/submit ./invoices '${{ steps.register_linux.outputs.invoice_schema_id }}'
195+
./upload_files.sh ${{ env.CONTAINER_API_APPURL }}/contentprocessor/submit ./propertyclaims '${{ steps.register_linux.outputs.propertylossdamageclaimform_schema_id }}'
196+
197+
- name: Disable Auth in Web App
198+
shell: bash
199+
run: |
200+
az containerapp update --name ${{ env.CONTAINER_WEB_APPNAME }} \
201+
--resource-group ${{ inputs.RESOURCE_GROUP_NAME }} \
202+
--set-env-vars APP_AUTH_ENABLED=false
203+
204+
- name: Disable Auth in API App
205+
shell: bash
206+
run: |
207+
sleep 30
208+
az containerapp update --name ${{ env.CONTAINER_API_APPNAME }} \
209+
--resource-group ${{ inputs.RESOURCE_GROUP_NAME }} \
210+
--set-env-vars APP_AUTH_ENABLED=false
211+
212+
- name: Generate Deployment Summary
213+
if: always()
214+
shell: bash
215+
run: |
216+
echo "## 🚀 Deploy Job Summary (Linux)" >> $GITHUB_STEP_SUMMARY
217+
echo "" >> $GITHUB_STEP_SUMMARY
218+
echo "| Field | Value |" >> $GITHUB_STEP_SUMMARY
219+
echo "|-------|--------|" >> $GITHUB_STEP_SUMMARY
220+
echo "| **Job Status** | ${{ job.status == 'success' && '✅ Success' || '❌ Failed' }} |" >> $GITHUB_STEP_SUMMARY
221+
echo "| **Resource Group** | \`${{ inputs.RESOURCE_GROUP_NAME }}\` |" >> $GITHUB_STEP_SUMMARY
222+
echo "| **Azure Region (Infrastructure)** | \`${{ inputs.AZURE_LOCATION }}\` |" >> $GITHUB_STEP_SUMMARY
223+
echo "| **Azure OpenAI Region** | \`${{ inputs.AZURE_ENV_OPENAI_LOCATION }}\` |" >> $GITHUB_STEP_SUMMARY
224+
echo "| **Docker Image Tag** | \`${{ inputs.IMAGE_TAG }}\` |" >> $GITHUB_STEP_SUMMARY
225+
echo "| **Environment Name** | \`${{ inputs.ENV_NAME }}\` |" >> $GITHUB_STEP_SUMMARY
226+
echo "" >> $GITHUB_STEP_SUMMARY
227+
if [[ "${{ job.status }}" == "success" ]]; then
228+
echo "### ✅ Deployment Details" >> $GITHUB_STEP_SUMMARY
229+
echo "- **Container Web App URL**: [${{ env.CONTAINER_WEB_APPURL }}](${{ env.CONTAINER_WEB_APPURL }})" >> $GITHUB_STEP_SUMMARY
230+
echo "- **Container API App URL**: [${{ env.CONTAINER_API_APPURL }}](${{ env.CONTAINER_API_APPURL }})" >> $GITHUB_STEP_SUMMARY
231+
echo "- Successfully deployed to Azure with all resources configured" >> $GITHUB_STEP_SUMMARY
232+
echo "- Schemas registered and sample data uploaded successfully" >> $GITHUB_STEP_SUMMARY
233+
else
234+
echo "### ❌ Deployment Failed" >> $GITHUB_STEP_SUMMARY
235+
echo "- Deployment process encountered an error" >> $GITHUB_STEP_SUMMARY
236+
echo "- Check the deployment steps above for detailed error information" >> $GITHUB_STEP_SUMMARY
237+
fi
238+
239+
- name: Logout from Azure
240+
if: always()
241+
shell: bash
242+
run: |
243+
az logout || true
244+
echo "Logged out from Azure."

0 commit comments

Comments
 (0)