1+ name : Deployment orchestrator
2+
3+ on :
4+ workflow_call :
5+ inputs :
6+ runner_os :
7+ description : ' Runner OS (ubuntu-latest or windows-latest)'
8+ required : true
9+ type : string
10+ azure_location :
11+ description : ' Azure Location For Deployment'
12+ required : false
13+ default : ' australiaeast'
14+ type : string
15+ resource_group_name :
16+ description : ' Resource Group Name (Optional)'
17+ required : false
18+ default : ' '
19+ type : string
20+ waf_enabled :
21+ description : ' Enable WAF'
22+ required : false
23+ default : false
24+ type : boolean
25+ exp :
26+ description : ' Enable EXP'
27+ required : false
28+ default : false
29+ type : boolean
30+ build_docker_image :
31+ description : ' Build And Push Docker Image (Optional)'
32+ required : false
33+ default : false
34+ type : boolean
35+ cleanup_resources :
36+ description : ' Cleanup Deployed Resources'
37+ required : false
38+ default : false
39+ type : boolean
40+ run_e2e_tests :
41+ description : ' Run End-to-End Tests'
42+ required : false
43+ default : ' GoldenPath-Testing'
44+ type : string
45+ azure_env_log_anlytics_workspace_id :
46+ description : ' Log Analytics Workspace ID (Optional)'
47+ required : false
48+ default : ' '
49+ type : string
50+ azure_existing_ai_project_resource_id :
51+ description : ' AI Project Resource ID (Optional)'
52+ required : false
53+ default : ' '
54+ type : string
55+ existing_webapp_url :
56+ description : ' Existing WebApp URL (Skips Deployment)'
57+ required : false
58+ default : ' '
59+ type : string
60+ trigger_type :
61+ description : ' Trigger type (workflow_dispatch, pull_request, schedule)'
62+ required : true
63+ type : string
64+
65+ env :
66+ AZURE_DEV_COLLECT_TELEMETRY : ${{ vars.AZURE_DEV_COLLECT_TELEMETRY }}
67+
68+ jobs :
69+ docker-build :
70+ uses : ./.github/workflows/job-docker-build.yml
71+ with :
72+ trigger_type : ${{ inputs.trigger_type }}
73+ build_docker_image : ${{ inputs.build_docker_image }}
74+ secrets : inherit
75+
76+ deploy :
77+ if : always() && (inputs.trigger_type != 'workflow_dispatch' || inputs.existing_webapp_url == '' || inputs.existing_webapp_url == null)
78+ needs : docker-build
79+ uses : ./.github/workflows/job-azure-deploy.yml
80+ with :
81+ trigger_type : ${{ inputs.trigger_type }}
82+ runner_os : ${{ inputs.runner_os }}
83+ azure_location : ${{ inputs.azure_location }}
84+ resource_group_name : ${{ inputs.resource_group_name }}
85+ waf_enabled : ${{ inputs.waf_enabled }}
86+ exp : ${{ inputs.exp }}
87+ build_docker_image : ${{ inputs.build_docker_image }}
88+ existing_webapp_url : ${{ inputs.existing_webapp_url }}
89+ azure_env_log_anlytics_workspace_id : ${{ inputs.azure_env_log_anlytics_workspace_id }}
90+ azure_existing_ai_project_resource_id : ${{ inputs.azure_existing_ai_project_resource_id }}
91+ docker_image_tag : ${{ needs.docker-build.outputs.IMAGE_TAG }}
92+ run_e2e_tests : ${{ inputs.run_e2e_tests }}
93+ cleanup_resources : ${{ inputs.cleanup_resources }}
94+ secrets : inherit
95+
96+ e2e-test :
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))
98+ needs : [docker-build, deploy]
99+ uses : ./.github/workflows/job-test-automation.yml
100+ with :
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 }}
103+ TEST_SUITE : ${{ inputs.trigger_type == 'workflow_dispatch' && inputs.run_e2e_tests || 'GoldenPath-Testing' }}
104+ secrets : inherit
105+
106+ send-notification :
107+ if : always()
108+ needs : [docker-build, deploy, e2e-test]
109+ uses : ./.github/workflows/job-send-notifications.yml
110+ with :
111+ trigger_type : ${{ inputs.trigger_type }}
112+ waf_enabled : ${{ inputs.waf_enabled }}
113+ exp : ${{ inputs.exp }}
114+ run_e2e_tests : ${{ inputs.run_e2e_tests }}
115+ existing_webapp_url : ${{ inputs.existing_webapp_url }}
116+ deploy_result : ${{ needs.deploy.result }}
117+ e2e_test_result : ${{ needs.e2e-test.result }}
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
124+
125+ cleanup-deployment :
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)
127+ needs : [docker-build, deploy, e2e-test]
128+ uses : ./.github/workflows/job-cleanup-resources.yml
129+ with :
130+ runner_os : ${{ inputs.runner_os }}
131+ trigger_type : ${{ inputs.trigger_type }}
132+ cleanup_resources : ${{ inputs.cleanup_resources }}
133+ existing_webapp_url : ${{ inputs.existing_webapp_url }}
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
0 commit comments