Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
3 changes: 1 addition & 2 deletions .azuredevops/azure-pipeline-infrastructure.yml
Original file line number Diff line number Diff line change
Expand Up @@ -29,8 +29,7 @@ parameters:
- name: tags
displayName: Resource Tags
type: object
default:
SecurityControl: 'Ignore'
default: {}
- name: enableMonitoring
displayName: Enable Monitoring
type: boolean
Expand Down
88 changes: 88 additions & 0 deletions .github/workflows/deploy-linux.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,88 @@
name: Deploy-Test-Cleanup (v2) Linux
on:
push:
branches:
- main
- dev
- demo
pull_request:
branches:
- dev
schedule:
- cron: '0 9,21 * * *' # Runs at 9:00 AM and 9:00 PM GMT
workflow_dispatch:
inputs:
azure_location:
description: 'Azure Location For Deployment'
required: false
default: 'australiaeast'
type: choice
options:
- 'australiaeast'
- 'centralus'
- 'eastasia'
- 'eastus2'
- 'japaneast'
- 'northeurope'
- 'southeastasia'
- 'uksouth'
resource_group_name:
description: 'Resource Group Name (Optional)'
required: false
default: ''
type: string

waf_enabled:
description: 'Enable WAF'
required: false
default: false
type: boolean
EXP:
description: 'Enable EXP'
required: false
default: false
type: boolean
build_docker_image:
description: 'Build And Push Docker Image (Optional)'
required: false
default: false
type: boolean

cleanup_resources:
description: 'Cleanup Deployed Resources'
required: false
default: false
type: boolean

AZURE_ENV_LOG_ANALYTICS_WORKSPACE_ID:
description: 'Log Analytics Workspace ID (Optional)'
required: false
default: ''
type: string
AZURE_EXISTING_AI_PROJECT_RESOURCE_ID:
description: 'AI Project Resource ID (Optional)'
required: false
default: ''
type: string
existing_webapp_url:
description: 'Existing WebApp URL (Skips Deployment)'
required: false
default: ''
type: string

jobs:
Run:
uses: ./.github/workflows/deploy-orchestrator.yml
with:
runner_os: ubuntu-latest
azure_location: ${{ github.event.inputs.azure_location || 'australiaeast' }}
resource_group_name: ${{ github.event.inputs.resource_group_name || '' }}
waf_enabled: ${{ github.event.inputs.waf_enabled == 'true' }}
EXP: ${{ github.event.inputs.EXP == 'true' }}
build_docker_image: ${{ github.event.inputs.build_docker_image == 'true' }}
cleanup_resources: ${{ github.event.inputs.cleanup_resources == 'true' }}
AZURE_ENV_LOG_ANALYTICS_WORKSPACE_ID: ${{ github.event.inputs.AZURE_ENV_LOG_ANALYTICS_WORKSPACE_ID || '' }}
AZURE_EXISTING_AI_PROJECT_RESOURCE_ID: ${{ github.event.inputs.AZURE_EXISTING_AI_PROJECT_RESOURCE_ID || '' }}
existing_webapp_url: ${{ github.event.inputs.existing_webapp_url || '' }}
trigger_type: ${{ github.event_name }}
secrets: inherit
119 changes: 119 additions & 0 deletions .github/workflows/deploy-orchestrator.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,119 @@
name: Deployment orchestrator

on:
workflow_call:
inputs:
runner_os:
description: 'Runner OS (ubuntu-latest or windows-latest)'
required: true
type: string
azure_location:
description: 'Azure Location For Deployment'
required: false
default: 'australiaeast'
type: string
resource_group_name:
description: 'Resource Group Name (Optional)'
required: false
default: ''
type: string
waf_enabled:
description: 'Enable WAF'
required: false
default: false
type: boolean
EXP:
description: 'Enable EXP'
required: false
default: false
type: boolean
build_docker_image:
description: 'Build And Push Docker Image (Optional)'
required: false
default: false
type: boolean
cleanup_resources:
description: 'Cleanup Deployed Resources'
required: false
default: false
type: boolean
AZURE_ENV_LOG_ANALYTICS_WORKSPACE_ID:
description: 'Log Analytics Workspace ID (Optional)'
required: false
default: ''
type: string
AZURE_EXISTING_AI_PROJECT_RESOURCE_ID:
description: 'AI Project Resource ID (Optional)'
required: false
default: ''
type: string
existing_webapp_url:
description: 'Existing Container WebApp URL (Skips Deployment)'
required: false
default: ''
type: string
trigger_type:
description: 'Trigger type (workflow_dispatch, pull_request, schedule)'
required: true
type: string

env:
AZURE_DEV_COLLECT_TELEMETRY: ${{ vars.AZURE_DEV_COLLECT_TELEMETRY }}

jobs:
docker-build:
uses: ./.github/workflows/job-docker-build.yml
with:
trigger_type: ${{ inputs.trigger_type }}
build_docker_image: ${{ inputs.build_docker_image }}
secrets: inherit

deploy:
if: "!cancelled() && (inputs.trigger_type != 'workflow_dispatch' || inputs.existing_webapp_url == '' || inputs.existing_webapp_url == null)"
needs: docker-build
uses: ./.github/workflows/job-deploy.yml
with:
trigger_type: ${{ inputs.trigger_type }}
runner_os: ${{ inputs.runner_os }}
azure_location: ${{ inputs.azure_location }}
resource_group_name: ${{ inputs.resource_group_name }}
waf_enabled: ${{ inputs.waf_enabled }}
EXP: ${{ inputs.EXP }}
build_docker_image: ${{ inputs.build_docker_image }}
existing_webapp_url: ${{ inputs.existing_webapp_url }}
AZURE_ENV_LOG_ANALYTICS_WORKSPACE_ID: ${{ inputs.AZURE_ENV_LOG_ANALYTICS_WORKSPACE_ID }}
AZURE_EXISTING_AI_PROJECT_RESOURCE_ID: ${{ inputs.AZURE_EXISTING_AI_PROJECT_RESOURCE_ID }}
docker_image_tag: ${{ needs.docker-build.outputs.IMAGE_TAG }}
cleanup_resources: ${{ inputs.cleanup_resources }}
secrets: inherit

send-notification:
if: "!cancelled()"
needs: [docker-build, deploy]
uses: ./.github/workflows/job-send-notification.yml
with:
trigger_type: ${{ inputs.trigger_type }}
waf_enabled: ${{ inputs.waf_enabled }}
EXP: ${{ inputs.EXP }}
existing_webapp_url: ${{ inputs.existing_webapp_url }}
deploy_result: ${{ needs.deploy.result }}
WEB_APPURL: ${{ needs.deploy.outputs.WEB_APPURL || inputs.existing_webapp_url }}
RESOURCE_GROUP_NAME: ${{ needs.deploy.outputs.RESOURCE_GROUP_NAME }}
QUOTA_FAILED: ${{ needs.deploy.outputs.QUOTA_FAILED }}
secrets: inherit

cleanup-deployment:
if: "!cancelled() && needs.deploy.result == 'success' && needs.deploy.outputs.RESOURCE_GROUP_NAME != '' && inputs.existing_webapp_url == '' && (inputs.trigger_type != 'workflow_dispatch' || inputs.cleanup_resources)"
needs: [docker-build, deploy]
uses: ./.github/workflows/job-cleanup-deployment.yml
with:
runner_os: ${{ inputs.runner_os }}
trigger_type: ${{ inputs.trigger_type }}
cleanup_resources: ${{ inputs.cleanup_resources }}
existing_webapp_url: ${{ inputs.existing_webapp_url }}
RESOURCE_GROUP_NAME: ${{ needs.deploy.outputs.RESOURCE_GROUP_NAME }}
AZURE_LOCATION: ${{ needs.deploy.outputs.AZURE_LOCATION }}
AZURE_ENV_OPENAI_LOCATION: ${{ needs.deploy.outputs.AZURE_ENV_OPENAI_LOCATION }}
ENV_NAME: ${{ needs.deploy.outputs.ENV_NAME }}
IMAGE_TAG: ${{ needs.deploy.outputs.IMAGE_TAG }}
secrets: inherit
88 changes: 88 additions & 0 deletions .github/workflows/deploy-windows.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,88 @@
name: Deploy-Test-Cleanup (v2) Windows
on:
# push:
# branches:
# - main
# - dev
# - demo
# pull_request:
# branches:
# - dev
# schedule:
# - cron: '0 9,21 * * *' # Runs at 9:00 AM and 9:00 PM GMT
workflow_dispatch:
inputs:
azure_location:
description: 'Azure Location For Deployment'
required: false
default: 'australiaeast'
type: choice
options:
- 'australiaeast'
- 'centralus'
- 'eastasia'
- 'eastus2'
- 'japaneast'
- 'northeurope'
- 'southeastasia'
- 'uksouth'
resource_group_name:
description: 'Resource Group Name (Optional)'
required: false
default: ''
type: string

waf_enabled:
description: 'Enable WAF'
required: false
default: false
type: boolean
EXP:
description: 'Enable EXP'
required: false
default: false
type: boolean
build_docker_image:
description: 'Build And Push Docker Image (Optional)'
required: false
default: false
type: boolean

cleanup_resources:
description: 'Cleanup Deployed Resources'
required: false
default: false
type: boolean

AZURE_ENV_LOG_ANALYTICS_WORKSPACE_ID:
description: 'Log Analytics Workspace ID (Optional)'
required: false
default: ''
type: string
AZURE_EXISTING_AI_PROJECT_RESOURCE_ID:
description: 'AI Project Resource ID (Optional)'
required: false
default: ''
type: string
existing_webapp_url:
description: 'Existing WebApp URL (Skips Deployment)'
required: false
default: ''
type: string

jobs:
Run:
uses: ./.github/workflows/deploy-orchestrator.yml
with:
runner_os: windows-latest
azure_location: ${{ github.event.inputs.azure_location || 'australiaeast' }}
resource_group_name: ${{ github.event.inputs.resource_group_name || '' }}
waf_enabled: ${{ github.event.inputs.waf_enabled == 'true' }}
EXP: ${{ github.event.inputs.EXP == 'true' }}
build_docker_image: ${{ github.event.inputs.build_docker_image == 'true' }}
cleanup_resources: ${{ github.event.inputs.cleanup_resources == 'true' }}
AZURE_ENV_LOG_ANALYTICS_WORKSPACE_ID: ${{ github.event.inputs.AZURE_ENV_LOG_ANALYTICS_WORKSPACE_ID || '' }}
AZURE_EXISTING_AI_PROJECT_RESOURCE_ID: ${{ github.event.inputs.AZURE_EXISTING_AI_PROJECT_RESOURCE_ID || '' }}
existing_webapp_url: ${{ github.event.inputs.existing_webapp_url || '' }}
trigger_type: ${{ github.event_name }}
secrets: inherit
Loading