-
Notifications
You must be signed in to change notification settings - Fork 2
Expand file tree
/
Copy pathtask_azure_sql_scaling_preprod.yaml
More file actions
104 lines (94 loc) · 3.59 KB
/
task_azure_sql_scaling_preprod.yaml
File metadata and controls
104 lines (94 loc) · 3.59 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
---
name: $(Build.SourceBranchName)-$(Date:yyyyMMdd)_$(Rev:r)
trigger: none
pr: none
pool:
name: private-pool-prod-uks
schedules:
- cron: "0 7 * * *" # Run at 7:00 AM UTC
displayName: 'Scale_Peak'
branches:
include:
- main
always: true
- cron: "0 17 * * *" # Run at 5:00 PM UTC
displayName: 'Scale_OffPeak'
branches:
include:
- main
always: true
resources:
repositories:
- repository: dtos-devops-templates
type: github
name: NHSDigital/dtos-devops-templates
ref: 5603d4113500a7df3d7320e675fef9598c3aac65
endpoint: NHSDigital
parameters:
- name: manualOverride
displayName: Manual Override
type: string
default: 'false'
values:
- 'false'
- 'Scale_Peak'
- 'Scale_OffPeak'
- name: Sku_Peak
displayName: Peak SKU
type: string
default: 'S12'
- name: Sku_OffPeak
displayName: Off-Peak SKU
type: string
default: 'S9'
variables:
- group: PRE_core_backend
stages:
- stage: ScaleDatabase
jobs:
- job: SetVariablesJob
displayName: Set Environment-Specific Variables
steps:
- task: Bash@3
displayName: Set Environment-Specific Variables
name: SetVariables
inputs:
targetType: inline
script: |
echo "##vso[task.setvariable variable=resourceGroupName;isOutput=true]rg-cohman-$(ENVIRONMENT_SHORT)-uks"
echo "##vso[task.setvariable variable=serverName;isOutput=true]sqlsvr-cohman-$(ENVIRONMENT_SHORT)-uks"
echo "##vso[task.setvariable variable=databaseName;isOutput=true]DToSDB"
- job: ScaleUpDatabaseJob
displayName: 'Azure CLI - Scale Up'
condition: and(succeeded(), or(eq(variables['Build.CronSchedule.DisplayName'], 'Scale_Peak'), eq('${{ parameters.manualOverride }}', 'Scale_Peak')))
dependsOn: SetVariablesJob
variables:
resourceGroupName: $[ dependencies.SetVariablesJob.outputs['SetVariables.resourceGroupName'] ]
serverName: $[ dependencies.SetVariablesJob.outputs['SetVariables.serverName'] ]
databaseName: $[ dependencies.SetVariablesJob.outputs['SetVariables.databaseName'] ]
steps:
- template: .azuredevops/templates/steps/azure_sql_scale.yaml@dtos-devops-templates
parameters:
serviceConnection: $(SERVICE_CONNECTION)
subscriptionId: $(TF_VAR_TARGET_SUBSCRIPTION_ID)
resourceGroupName: $(resourceGroupName)
serverName: $(serverName)
databaseName: $(databaseName)
sku: ${{ parameters.Sku_Peak }}
- job: ScaleDownDatabaseJob
displayName: 'Azure CLI - Scale Down'
condition: and(succeeded(), or(eq(variables['Build.CronSchedule.DisplayName'], 'Scale_OffPeak'), eq('${{ parameters.manualOverride }}', 'Scale_OffPeak')))
dependsOn: SetVariablesJob
variables:
resourceGroupName: $[ dependencies.SetVariablesJob.outputs['SetVariables.resourceGroupName'] ]
serverName: $[ dependencies.SetVariablesJob.outputs['SetVariables.serverName'] ]
databaseName: $[ dependencies.SetVariablesJob.outputs['SetVariables.databaseName'] ]
steps:
- template: .azuredevops/templates/steps/azure_sql_scale.yaml@dtos-devops-templates
parameters:
serviceConnection: $(SERVICE_CONNECTION)
subscriptionId: $(TF_VAR_TARGET_SUBSCRIPTION_ID)
resourceGroupName: $(resourceGroupName)
serverName: $(serverName)
databaseName: $(databaseName)
sku: ${{ parameters.Sku_OffPeak }}