Skip to content

Commit c6f291d

Browse files
Enhance Deployment Pipeline
1 parent 9dceb61 commit c6f291d

12 files changed

+557
-233
lines changed

.github/workflows/deploy-linux.yml

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,9 @@
11
name: Deploy-Test-Cleanup Linux
22
on:
3+
push:
4+
branches:
5+
- main
6+
- dev
37
workflow_dispatch:
48
inputs:
59
azure_location:
@@ -61,7 +65,7 @@ on:
6165
default: ''
6266
type: string
6367
existing_webapp_url:
64-
description: 'Existing Container WebApp URL (Skips Deployment)'
68+
description: 'Existing WebApp URL (Skips Deployment)'
6569
required: false
6670
default: ''
6771
type: string
@@ -74,7 +78,7 @@ jobs:
7478
azure_location: ${{ github.event.inputs.azure_location || 'australiaeast' }}
7579
resource_group_name: ${{ github.event.inputs.resource_group_name || '' }}
7680
waf_enabled: ${{ github.event.inputs.waf_enabled == 'true' }}
77-
EXP: ${{ github.event.inputs.EXP == 'true' }}
81+
exp: ${{ github.event.inputs.exp == 'true' }}
7882
build_docker_image: ${{ github.event.inputs.build_docker_image == 'true' }}
7983
cleanup_resources: ${{ github.event.inputs.cleanup_resources == 'true' }}
8084
run_e2e_tests: ${{ github.event.inputs.run_e2e_tests || 'GoldenPath-Testing' }}
Lines changed: 24 additions & 65 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
name: Deployment orchestrator v2
1+
name: Deployment orchestrator
22

33
on:
44
workflow_call:
@@ -53,42 +53,14 @@ on:
5353
default: ''
5454
type: string
5555
existing_webapp_url:
56-
description: 'Existing Container WebApp URL (Skips Deployment)'
56+
description: 'Existing WebApp URL (Skips Deployment)'
5757
required: false
5858
default: ''
5959
type: string
6060
trigger_type:
6161
description: 'Trigger type (workflow_dispatch, pull_request, schedule)'
6262
required: true
6363
type: string
64-
secrets:
65-
AZURE_CLIENT_ID:
66-
required: true
67-
AZURE_CLIENT_SECRET:
68-
required: true
69-
AZURE_TENANT_ID:
70-
required: true
71-
AZURE_SUBSCRIPTION_ID:
72-
required: true
73-
ACR_TEST_LOGIN_SERVER:
74-
required: true
75-
ACR_TEST_USERNAME:
76-
required: true
77-
ACR_TEST_PASSWORD:
78-
required: true
79-
AZURE_ENV_LOG_ANALYTICS_WORKSPACE_ID:
80-
required: false
81-
AZURE_ENV_FOUNDRY_PROJECT_ID:
82-
required: false
83-
EMAILNOTIFICATION_LOGICAPP_URL_TA:
84-
required: false
85-
outputs:
86-
CONTAINER_WEB_APPURL:
87-
description: "Container Web App URL"
88-
value: ${{ jobs.deploy.outputs.CONTAINER_WEB_APPURL }}
89-
RESOURCE_GROUP_NAME:
90-
description: "Resource Group Name"
91-
value: ${{ jobs.deploy.outputs.RESOURCE_GROUP_NAME }}
9264

9365
env:
9466
AZURE_DEV_COLLECT_TELEMETRY: ${{ vars.AZURE_DEV_COLLECT_TELEMETRY }}
@@ -99,10 +71,7 @@ jobs:
9971
with:
10072
trigger_type: ${{ inputs.trigger_type }}
10173
build_docker_image: ${{ inputs.build_docker_image }}
102-
secrets:
103-
ACR_TEST_LOGIN_SERVER: ${{ secrets.ACR_TEST_LOGIN_SERVER }}
104-
ACR_TEST_USERNAME: ${{ secrets.ACR_TEST_USERNAME }}
105-
ACR_TEST_PASSWORD: ${{ secrets.ACR_TEST_PASSWORD }}
74+
secrets: inherit
10675

10776
deploy:
10877
if: always() && (inputs.trigger_type != 'workflow_dispatch' || inputs.existing_webapp_url == '' || inputs.existing_webapp_url == null)
@@ -114,28 +83,23 @@ jobs:
11483
azure_location: ${{ inputs.azure_location }}
11584
resource_group_name: ${{ inputs.resource_group_name }}
11685
waf_enabled: ${{ inputs.waf_enabled }}
117-
EXP: ${{ inputs.exp }}
86+
exp: ${{ inputs.exp }}
11887
build_docker_image: ${{ inputs.build_docker_image }}
11988
existing_webapp_url: ${{ inputs.existing_webapp_url }}
12089
azure_env_log_anlytics_workspace_id: ${{ inputs.azure_env_log_anlytics_workspace_id }}
12190
azure_existing_ai_project_resource_id: ${{ inputs.azure_existing_ai_project_resource_id }}
12291
docker_image_tag: ${{ needs.docker-build.outputs.IMAGE_TAG }}
123-
secrets:
124-
AZURE_CLIENT_ID: ${{ secrets.AZURE_CLIENT_ID }}
125-
AZURE_CLIENT_SECRET: ${{ secrets.AZURE_CLIENT_SECRET }}
126-
AZURE_TENANT_ID: ${{ secrets.AZURE_TENANT_ID }}
127-
AZURE_SUBSCRIPTION_ID: ${{ secrets.AZURE_SUBSCRIPTION_ID }}
128-
ACR_TEST_LOGIN_SERVER: ${{ secrets.ACR_TEST_LOGIN_SERVER }}
129-
AZURE_ENV_LOG_ANALYTICS_WORKSPACE_ID: ${{ secrets.azure_env_log_anlytics_workspace_id }}
130-
AZURE_ENV_FOUNDRY_PROJECT_ID: ${{ secrets.AZURE_ENV_FOUNDRY_PROJECT_ID }}
92+
run_e2e_tests: ${{ inputs.run_e2e_tests }}
93+
cleanup_resources: ${{ inputs.cleanup_resources }}
94+
secrets: inherit
13195

13296
e2e-test:
133-
if: always() && ((needs.deploy.result == 'success' && needs.deploy.outputs.CONTAINER_WEB_APPURL != '') || (inputs.existing_webapp_url != '' && inputs.existing_webapp_url != null)) && (inputs.trigger_type != 'workflow_dispatch' || (inputs.run_e2e_tests != 'None' && inputs.run_e2e_tests != '' && inputs.run_e2e_tests != null))
97+
if: always() && ((needs.deploy.result == 'success' && needs.deploy.outputs.WEB_APP_URL != '') || (inputs.existing_webapp_url != '' && inputs.existing_webapp_url != null)) && (inputs.trigger_type != 'workflow_dispatch' || (inputs.run_e2e_tests != 'None' && inputs.run_e2e_tests != '' && inputs.run_e2e_tests != null))
13498
needs: [docker-build, deploy]
13599
uses: ./.github/workflows/job-test-automation.yml
136100
with:
137-
KMGENERIC_URL: ${{ needs.deploy.outputs.CONTAINER_WEB_APPURL || inputs.existing_webapp_url }}
138-
KMGENERIC_URL_API: ${{ needs.deploy.outputs.CONTAINER_WEB_APPURL || inputs.existing_webapp_url }}
101+
KMGENERIC_URL: ${{ needs.deploy.outputs.WEB_APP_URL || inputs.existing_webapp_url }}
102+
KMGENERIC_URL_API: ${{ needs.deploy.outputs.API_APP_URL || inputs.existing_webapp_url }}
139103
TEST_SUITE: ${{ inputs.trigger_type == 'workflow_dispatch' && inputs.run_e2e_tests || 'GoldenPath-Testing' }}
140104
secrets: inherit
141105

@@ -146,35 +110,30 @@ jobs:
146110
with:
147111
trigger_type: ${{ inputs.trigger_type }}
148112
waf_enabled: ${{ inputs.waf_enabled }}
149-
EXP: ${{ inputs.exp }}
113+
exp: ${{ inputs.exp }}
150114
run_e2e_tests: ${{ inputs.run_e2e_tests }}
151115
existing_webapp_url: ${{ inputs.existing_webapp_url }}
152116
deploy_result: ${{ needs.deploy.result }}
153117
e2e_test_result: ${{ needs.e2e-test.result }}
154-
CONTAINER_WEB_APPURL: ${{ needs.deploy.outputs.CONTAINER_WEB_APPURL }}
155-
RESOURCE_GROUP_NAME: ${{ needs.deploy.outputs.RESOURCE_GROUP_NAME }}
156-
QUOTA_FAILED: ${{ needs.deploy.outputs.QUOTA_FAILED }}
157-
TEST_SUCCESS: ${{ needs.e2e-test.outputs.TEST_SUCCESS }}
158-
TEST_REPORT_URL: ${{ needs.e2e-test.outputs.TEST_REPORT_URL }}
159-
secrets:
160-
EMAILNOTIFICATION_LOGICAPP_URL_TA: ${{ secrets.EMAILNOTIFICATION_LOGICAPP_URL_TA }}
118+
web_app_url: ${{ needs.deploy.outputs.WEB_APP_URL }}
119+
resource_group_name: ${{ needs.deploy.outputs.RESOURCE_GROUP_NAME }}
120+
quota_failed: ${{ needs.deploy.outputs.QUOTA_FAILED }}
121+
test_success: ${{ needs.e2e-test.outputs.TEST_SUCCESS }}
122+
test_report_url: ${{ needs.e2e-test.outputs.TEST_REPORT_URL }}
123+
secrets: inherit
161124

162125
cleanup-deployment:
163-
if: always() && needs.deploy.result == 'success' && needs.deploy.outputs.RESOURCE_GROUP_NAME != '' && inputs.existing_webapp_url == '' && (inputs.trigger_type != 'workflow_dispatch' || inputs.cleanup_resources == true || inputs.cleanup_resources == null)
126+
if: always() && needs.deploy.result == 'success' && needs.deploy.outputs.RESOURCE_GROUP_NAME != '' && inputs.existing_webapp_url == '' && (inputs.trigger_type != 'workflow_dispatch' || inputs.cleanup_resources)
164127
needs: [docker-build, deploy, e2e-test]
165128
uses: ./.github/workflows/job-cleanup-resources.yml
166129
with:
167130
runner_os: ${{ inputs.runner_os }}
168131
trigger_type: ${{ inputs.trigger_type }}
169132
cleanup_resources: ${{ inputs.cleanup_resources }}
170133
existing_webapp_url: ${{ inputs.existing_webapp_url }}
171-
RESOURCE_GROUP_NAME: ${{ needs.deploy.outputs.RESOURCE_GROUP_NAME }}
172-
AZURE_LOCATION: ${{ needs.deploy.outputs.AZURE_LOCATION }}
173-
AZURE_ENV_OPENAI_LOCATION: ${{ needs.deploy.outputs.AZURE_ENV_OPENAI_LOCATION }}
174-
ENV_NAME: ${{ needs.deploy.outputs.ENV_NAME }}
175-
IMAGE_TAG: ${{ needs.deploy.outputs.IMAGE_TAG }}
176-
secrets:
177-
AZURE_CLIENT_ID: ${{ secrets.AZURE_CLIENT_ID }}
178-
AZURE_CLIENT_SECRET: ${{ secrets.AZURE_CLIENT_SECRET }}
179-
AZURE_TENANT_ID: ${{ secrets.AZURE_TENANT_ID }}
180-
AZURE_SUBSCRIPTION_ID: ${{ secrets.AZURE_SUBSCRIPTION_ID }}
134+
resource_group_name: ${{ needs.deploy.outputs.RESOURCE_GROUP_NAME }}
135+
azure_location: ${{ needs.deploy.outputs.AZURE_LOCATION }}
136+
azure_env_openai_location: ${{ needs.deploy.outputs.AZURE_ENV_OPENAI_LOCATION }}
137+
env_name: ${{ needs.deploy.outputs.ENV_NAME }}
138+
image_tag: ${{ needs.deploy.outputs.IMAGE_TAG }}
139+
secrets: inherit

.github/workflows/deploy-windows.yml

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,9 @@
11
name: Deploy-Test-Cleanup Windows
22
on:
3+
push:
4+
branches:
5+
- main
6+
- dev
37
workflow_dispatch:
48
inputs:
59
azure_location:
@@ -61,7 +65,7 @@ on:
6165
default: ''
6266
type: string
6367
existing_webapp_url:
64-
description: 'Existing Container WebApp URL (Skips Deployment)'
68+
description: 'Existing WebApp URL (Skips Deployment)'
6569
required: false
6670
default: ''
6771
type: string
@@ -74,7 +78,7 @@ jobs:
7478
azure_location: ${{ github.event.inputs.azure_location || 'australiaeast' }}
7579
resource_group_name: ${{ github.event.inputs.resource_group_name || '' }}
7680
waf_enabled: ${{ github.event.inputs.waf_enabled == 'true' }}
77-
EXP: ${{ github.event.inputs.exp == 'true' }}
81+
exp: ${{ github.event.inputs.exp == 'true' }}
7882
build_docker_image: ${{ github.event.inputs.build_docker_image == 'true' }}
7983
cleanup_resources: ${{ github.event.inputs.cleanup_resources == 'true' }}
8084
run_e2e_tests: ${{ github.event.inputs.run_e2e_tests || 'GoldenPath-Testing' }}

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

Lines changed: 27 additions & 61 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
name: Deploy Job v2
1+
name: Deploy Job
22

33
on:
44
workflow_call:
@@ -47,7 +47,7 @@ on:
4747
default: 'GoldenPath-Testing'
4848
type: string
4949
existing_webapp_url:
50-
description: 'Existing Container WebApp URL (Skips Deployment)'
50+
description: 'Existing WebApp URL (Skips Deployment)'
5151
required: false
5252
default: ''
5353
type: string
@@ -66,34 +66,16 @@ on:
6666
required: false
6767
default: ''
6868
type: string
69-
secrets:
70-
AZURE_CLIENT_ID:
71-
required: true
72-
AZURE_CLIENT_SECRET:
73-
required: true
74-
AZURE_TENANT_ID:
75-
required: true
76-
AZURE_SUBSCRIPTION_ID:
77-
required: true
78-
ACR_TEST_LOGIN_SERVER:
79-
required: true
80-
AZURE_ENV_LOG_ANALYTICS_WORKSPACE_ID:
81-
required: false
82-
AZURE_ENV_FOUNDRY_PROJECT_ID:
83-
required: false
8469
outputs:
85-
invoice_schema_id:
86-
description: "Invoice Schema ID"
87-
value: ${{ jobs.deploy-linux.outputs.invoice_schema_id || jobs.deploy-windows.outputs.invoice_schema_id }}
88-
propertydamageclaimform_schema_id:
89-
description: "Property Damage Claim Form Schema ID"
90-
value: ${{ jobs.deploy-linux.outputs.propertydamageclaimform_schema_id || jobs.deploy-windows.outputs.propertydamageclaimform_schema_id }}
9170
RESOURCE_GROUP_NAME:
9271
description: "Resource Group Name"
9372
value: ${{ jobs.azure-setup.outputs.RESOURCE_GROUP_NAME }}
94-
CONTAINER_WEB_APPURL:
95-
description: "Container Web App URL"
96-
value: ${{ jobs.deploy-linux.outputs.CONTAINER_WEB_APPURL || jobs.deploy-windows.outputs.CONTAINER_WEB_APPURL }}
73+
WEB_APP_URL:
74+
description: "Web App URL"
75+
value: ${{ jobs.deploy-linux.outputs.WEB_APP_URL || jobs.deploy-windows.outputs.WEB_APP_URL }}
76+
API_APP_URL:
77+
description: "API App URL"
78+
value: ${{ jobs.deploy-linux.outputs.API_APP_URL || jobs.deploy-windows.outputs.API_APP_URL }}
9779
ENV_NAME:
9880
description: "Environment Name"
9981
value: ${{ jobs.azure-setup.outputs.ENV_NAME }}
@@ -112,10 +94,11 @@ on:
11294

11395
env:
11496
GPT_MIN_CAPACITY: 100
97+
TEXT_EMBEDDING_MIN_CAPACITY: 80
11598
BRANCH_NAME: ${{ github.event.workflow_run.head_branch || github.head_ref || github.ref_name }}
11699
WAF_ENABLED: ${{ inputs.trigger_type == 'workflow_dispatch' && (inputs.waf_enabled || false) || false }}
117100
EXP: ${{ inputs.trigger_type == 'workflow_dispatch' && (inputs.exp || false) || false }}
118-
CLEANUP_RESOURCES: ${{ inputs.trigger_type == 'workflow_dispatch' && (inputs.cleanup_resources || true) || true }}
101+
CLEANUP_RESOURCES: ${{ inputs.trigger_type != 'workflow_dispatch' || inputs.cleanup_resources }}
119102
RUN_E2E_TESTS: ${{ inputs.trigger_type == 'workflow_dispatch' && (inputs.run_e2e_tests || 'GoldenPath-Testing') || 'GoldenPath-Testing' }}
120103
BUILD_DOCKER_IMAGE: ${{ inputs.trigger_type == 'workflow_dispatch' && (inputs.build_docker_image || false) || false }}
121104

@@ -155,6 +138,11 @@ jobs:
155138
- name: Checkout Code
156139
uses: actions/checkout@v4
157140

141+
- name: Setup Azure CLI
142+
run: |
143+
curl -sL https://aka.ms/InstallAzureCLIDeb | sudo bash
144+
az --version
145+
158146
- name: Login to Azure
159147
shell: bash
160148
run: |
@@ -170,29 +158,25 @@ jobs:
170158
export AZURE_CLIENT_SECRET=${{ secrets.AZURE_CLIENT_SECRET }}
171159
export AZURE_SUBSCRIPTION_ID="${{ secrets.AZURE_SUBSCRIPTION_ID }}"
172160
export GPT_MIN_CAPACITY=${{ env.GPT_MIN_CAPACITY }}
161+
export TEXT_EMBEDDING_MIN_CAPACITY=${{ env.TEXT_EMBEDDING_MIN_CAPACITY }}
173162
export AZURE_REGIONS="${{ vars.AZURE_REGIONS }}"
174163
175-
chmod +x infra/scripts/checkquota.sh
176-
if ! infra/scripts/checkquota.sh; then
177-
if grep -q "No region with sufficient quota found" infra/scripts/checkquota.sh; then
164+
chmod +x infra/scripts/checkquota_km.sh
165+
if ! infra/scripts/checkquota_km.sh; then
166+
if grep -q "No region with sufficient quota found" infra/scripts/checkquota_km.sh; then
178167
echo "QUOTA_FAILED=true" >> $GITHUB_ENV
179168
fi
180169
exit 1
181170
fi
182-
183-
- name: Set Quota Failure Output
184-
id: quota_failure_output
185-
if: env.QUOTA_FAILED == 'true'
186-
shell: bash
187-
run: |
188-
echo "QUOTA_FAILED=true" >> $GITHUB_OUTPUT
189-
echo "Quota check failed - will notify via separate notification job"
190171
191172
- name: Fail Pipeline if Quota Check Fails
192173
if: env.QUOTA_FAILED == 'true'
193174
shell: bash
194175
run: exit 1
195-
176+
177+
- name: Install Bicep CLI
178+
run: az bicep install
179+
196180
- name: Set Deployment Region
197181
id: set_region
198182
shell: bash
@@ -222,17 +206,13 @@ jobs:
222206
echo "RESOURCE_GROUP_NAME=${{ inputs.resource_group_name }}" >> $GITHUB_ENV
223207
else
224208
echo "Generating a unique resource group name..."
225-
ACCL_NAME="cp" # Account name as specified
209+
ACCL_NAME="kmgeneric" # Account name as specified
226210
SHORT_UUID=$(uuidgen | cut -d'-' -f1)
227211
UNIQUE_RG_NAME="arg-${ACCL_NAME}-${SHORT_UUID}"
228212
echo "RESOURCE_GROUP_NAME=${UNIQUE_RG_NAME}" >> $GITHUB_ENV
229213
echo "Generated RESOURCE_GROUP_NAME: ${UNIQUE_RG_NAME}"
230214
fi
231215
232-
- name: Install Bicep CLI
233-
shell: bash
234-
run: az bicep install
235-
236216
- name: Check and Create Resource Group
237217
id: check_create_rg
238218
shell: bash
@@ -255,7 +235,7 @@ jobs:
255235
shell: bash
256236
run: |
257237
set -e
258-
COMMON_PART="psldg"
238+
COMMON_PART="pslkmg"
259239
TIMESTAMP=$(date +%s)
260240
UPDATED_TIMESTAMP=$(echo $TIMESTAMP | tail -c 6)
261241
UNIQUE_SOLUTION_PREFIX="${COMMON_PART}${UPDATED_TIMESTAMP}"
@@ -365,14 +345,7 @@ jobs:
365345
WAF_ENABLED: ${{ inputs.waf_enabled == true && 'true' || 'false' }}
366346
AZURE_ENV_LOG_ANALYTICS_WORKSPACE_ID: ${{ inputs.azure_env_log_anlytics_workspace_id }}
367347
AZURE_EXISTING_AI_PROJECT_RESOURCE_ID: ${{ inputs.azure_existing_ai_project_resource_id }}
368-
secrets:
369-
AZURE_CLIENT_ID: ${{ secrets.AZURE_CLIENT_ID }}
370-
AZURE_CLIENT_SECRET: ${{ secrets.AZURE_CLIENT_SECRET }}
371-
AZURE_TENANT_ID: ${{ secrets.AZURE_TENANT_ID }}
372-
AZURE_SUBSCRIPTION_ID: ${{ secrets.AZURE_SUBSCRIPTION_ID }}
373-
ACR_TEST_LOGIN_SERVER: ${{ secrets.ACR_TEST_LOGIN_SERVER }}
374-
AZURE_ENV_LOG_ANALYTICS_WORKSPACE_ID: ${{ secrets.AZURE_ENV_LOG_ANALYTICS_WORKSPACE_ID }}
375-
AZURE_ENV_FOUNDRY_PROJECT_ID: ${{ secrets.AZURE_ENV_FOUNDRY_PROJECT_ID }}
348+
secrets: inherit
376349

377350
deploy-windows:
378351
name: Deploy on Windows
@@ -390,11 +363,4 @@ jobs:
390363
WAF_ENABLED: ${{ inputs.waf_enabled == true && 'true' || 'false' }}
391364
AZURE_ENV_LOG_ANALYTICS_WORKSPACE_ID: ${{ inputs.azure_env_log_anlytics_workspace_id }}
392365
AZURE_EXISTING_AI_PROJECT_RESOURCE_ID: ${{ inputs.azure_existing_ai_project_resource_id }}
393-
secrets:
394-
AZURE_CLIENT_ID: ${{ secrets.AZURE_CLIENT_ID }}
395-
AZURE_CLIENT_SECRET: ${{ secrets.AZURE_CLIENT_SECRET }}
396-
AZURE_TENANT_ID: ${{ secrets.AZURE_TENANT_ID }}
397-
AZURE_SUBSCRIPTION_ID: ${{ secrets.AZURE_SUBSCRIPTION_ID }}
398-
ACR_TEST_LOGIN_SERVER: ${{ secrets.ACR_TEST_LOGIN_SERVER }}
399-
AZURE_ENV_LOG_ANALYTICS_WORKSPACE_ID: ${{ secrets.AZURE_ENV_LOG_ANALYTICS_WORKSPACE_ID }}
400-
AZURE_ENV_FOUNDRY_PROJECT_ID: ${{ secrets.AZURE_ENV_FOUNDRY_PROJECT_ID }}
366+
secrets: inherit

0 commit comments

Comments
 (0)