Skip to content

Commit 4d26b41

Browse files
committed
Adds critical build flag
1 parent 6a99659 commit 4d26b41

File tree

4 files changed

+152
-30
lines changed

4 files changed

+152
-30
lines changed

build/ci-pipeline.yml

Lines changed: 32 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,20 @@
1-
# DESCRIPTION:
2-
# Builds, tests, and packages the solution for the main branch.
1+
# DESCRIPTION:
2+
# Builds, tests, and packages the solution for the main branch.
33

44
name: $(SourceBranchName)-$(Date:yyyyMMdd)$(Rev:-r)
55
trigger: none
66

7+
parameters:
8+
- name: buildCriticalOnly
9+
displayName: 'Build Critical Versions Only (skip R4B/R5)'
10+
type: boolean
11+
default: false
12+
713
variables:
814
- template: ci-variables.yml
915
- template: build-variables.yml
16+
- name: buildCriticalOnly
17+
value: ${{ parameters.buildCriticalOnly }}
1018

1119
stages:
1220
# *********************** Setup ***********************
@@ -124,17 +132,18 @@ stages:
124132
steps:
125133
- template: ./jobs/analyze.yml
126134

127-
- stage: DockerBuild
135+
- stage: DockerBuild
128136
displayName: 'Build images'
129137
dependsOn:
130138
- UpdateVersion
131139
variables:
132140
assemblySemFileVer: $[stageDependencies.UpdateVersion.Semver.outputs['SetVariablesFromGitVersion.assemblySemFileVer']]
133141
jobs:
134142
- template: ./jobs/docker-build-all.yml
135-
parameters:
143+
parameters:
136144
tag: $(ImageTag)
137145
buildPlatform: $(publicDockerImagePlatforms)
146+
buildCriticalOnly: ${{ parameters.buildCriticalOnly }}
138147

139148
# *********************** Stu3 ***********************
140149
- stage: redeployStu3
@@ -217,30 +226,33 @@ stages:
217226
# *********************** R4B ***********************
218227
- stage: redeployR4B
219228
displayName: 'Redeploy R4B CosmosDB Site'
229+
condition: eq(variables.buildCriticalOnly, false)
220230
dependsOn:
221231
- DockerBuild
222232
jobs:
223233
- template: ./jobs/redeploy-webapp.yml
224-
parameters:
234+
parameters:
225235
version: R4B
226236
webAppName: $(DeploymentEnvironmentNameR4B)
227237
subscription: $(ConnectedServiceName)
228238
imageTag: $(ImageTag)
229239

230240
- stage: redeployR4BSql
231241
displayName: 'Redeploy R4B SQL Site'
242+
condition: eq(variables.buildCriticalOnly, false)
232243
dependsOn:
233244
- DockerBuild
234245
jobs:
235246
- template: ./jobs/redeploy-webapp.yml
236-
parameters:
247+
parameters:
237248
version: R4B
238249
webAppName: $(DeploymentEnvironmentNameR4BSql)
239250
subscription: $(ConnectedServiceName)
240251
imageTag: $(ImageTag)
241252

242253
- stage: testR4B
243254
displayName: 'Run R4B Tests'
255+
condition: eq(variables.buildCriticalOnly, false)
244256
dependsOn:
245257
- BuildArtifacts
246258
- redeployR4B
@@ -256,30 +268,33 @@ stages:
256268
# *********************** R5 ***********************
257269
- stage: redeployR5
258270
displayName: 'Redeploy R5 CosmosDB Site'
271+
condition: eq(variables.buildCriticalOnly, false)
259272
dependsOn:
260273
- DockerBuild
261274
jobs:
262275
- template: ./jobs/redeploy-webapp.yml
263-
parameters:
276+
parameters:
264277
version: R5
265278
webAppName: $(DeploymentEnvironmentNameR5)
266279
subscription: $(ConnectedServiceName)
267280
imageTag: $(ImageTag)
268281

269282
- stage: redeployR5Sql
270283
displayName: 'Redeploy R5 SQL Site'
284+
condition: eq(variables.buildCriticalOnly, false)
271285
dependsOn:
272286
- DockerBuild
273287
jobs:
274288
- template: ./jobs/redeploy-webapp.yml
275-
parameters:
289+
parameters:
276290
version: R5
277291
webAppName: $(DeploymentEnvironmentNameR5Sql)
278292
subscription: $(ConnectedServiceName)
279293
imageTag: $(ImageTag)
280294

281295
- stage: testR5
282296
displayName: 'Run R5 Tests'
297+
condition: eq(variables.buildCriticalOnly, false)
283298
dependsOn:
284299
- BuildArtifacts
285300
- redeployR5
@@ -313,6 +328,15 @@ stages:
313328
# *********************** Finalize ***********************
314329
- stage: DockerAddTag
315330
displayName: 'Docker add main tag'
331+
# Run only if all required tests succeed (all 4 when buildCriticalOnly=false, only Stu3/R4 when buildCriticalOnly=true)
332+
condition: |
333+
and(
334+
succeeded(),
335+
or(
336+
and(eq(variables.buildCriticalOnly, false), succeeded('testStu3'), succeeded('testR4'), succeeded('testR4B'), succeeded('testR5')),
337+
and(eq(variables.buildCriticalOnly, true), succeeded('testStu3'), succeeded('testR4'))
338+
)
339+
)
316340
dependsOn:
317341
- testStu3
318342
- testR4

build/jobs/docker-build-all.yml

Lines changed: 18 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -1,33 +1,38 @@
1-
# DESCRIPTION:
1+
# DESCRIPTION:
22
# Builds and pushes images for all supported FHIR versions
33

44
parameters:
55
- name: tag
66
type: string
77
- name: buildPlatform
88
type: string
9+
- name: buildCriticalOnly
10+
type: boolean
11+
default: false
912

1013
jobs:
1114
- template: docker-build-push.yml
12-
parameters:
15+
parameters:
1316
version: "R4"
1417
tag: ${{parameters.tag}}
1518
buildPlatform: ${{parameters.buildPlatform}}
1619

17-
- template: docker-build-push.yml
18-
parameters:
19-
version: "R4B"
20-
tag: ${{parameters.tag}}
21-
buildPlatform: ${{parameters.buildPlatform}}
20+
- ${{ if eq(parameters.buildCriticalOnly, false) }}:
21+
- template: docker-build-push.yml
22+
parameters:
23+
version: "R4B"
24+
tag: ${{parameters.tag}}
25+
buildPlatform: ${{parameters.buildPlatform}}
2226

2327
- template: docker-build-push.yml
24-
parameters:
28+
parameters:
2529
version: "Stu3"
2630
tag: ${{parameters.tag}}
2731
buildPlatform: ${{parameters.buildPlatform}}
2832

29-
- template: docker-build-push.yml
30-
parameters:
31-
version: "R5"
32-
tag: ${{parameters.tag}}
33-
buildPlatform: ${{parameters.buildPlatform}}
33+
- ${{ if eq(parameters.buildCriticalOnly, false) }}:
34+
- template: docker-build-push.yml
35+
parameters:
36+
version: "R5"
37+
tag: ${{parameters.tag}}
38+
buildPlatform: ${{parameters.buildPlatform}}

build/pr-pipeline.yml

Lines changed: 32 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,19 @@
1-
# DESCRIPTION:
2-
# Builds, tests, and packages the solution for all PR requests.
1+
# DESCRIPTION:
2+
# Builds, tests, and packages the solution for all PR requests.
33

44
trigger: none
55

6+
parameters:
7+
- name: buildCriticalOnly
8+
displayName: 'Build Critical Versions Only (skip R4B/R5)'
9+
type: boolean
10+
default: false
11+
612
variables:
713
- template: pr-variables.yml
814
- template: build-variables.yml
15+
- name: buildCriticalOnly
16+
value: ${{ parameters.buildCriticalOnly }}
917

1018
stages:
1119
- stage: UpdateVersion
@@ -95,17 +103,18 @@ stages:
95103
steps:
96104
- template: ./jobs/analyze.yml
97105

98-
- stage: DockerBuild
106+
- stage: DockerBuild
99107
displayName: 'Build images'
100108
dependsOn:
101109
- UpdateVersion
102110
variables:
103111
assemblySemFileVer: $[stageDependencies.UpdateVersion.Semver.outputs['SetVariablesFromGitVersion.assemblySemFileVer']]
104112
jobs:
105113
- template: ./jobs/docker-build-all.yml
106-
parameters:
114+
parameters:
107115
tag: $(ImageTag)
108116
buildPlatform: $(testDockerImagePlatforms)
117+
buildCriticalOnly: ${{ parameters.buildCriticalOnly }}
109118

110119
- stage: provisionEnvironment
111120
displayName: Provision Environment
@@ -284,13 +293,14 @@ stages:
284293

285294
- stage: deployR4B
286295
displayName: 'Deploy R4B CosmosDB Site'
296+
condition: eq(variables.buildCriticalOnly, false)
287297
dependsOn:
288298
- DockerBuild
289299
- setupEnvironment
290300
- createNsp
291301
jobs:
292302
- template: ./jobs/provision-deploy.yml
293-
parameters:
303+
parameters:
294304
version: R4B
295305
webAppName: $(DeploymentEnvironmentNameR4B)
296306
appServicePlanName: '$(appServicePlanName)-cosmos'
@@ -303,13 +313,14 @@ stages:
303313

304314
- stage: deployR4BSql
305315
displayName: 'Deploy R4B SQL Site'
316+
condition: eq(variables.buildCriticalOnly, false)
306317
dependsOn:
307318
- DockerBuild
308319
- setupEnvironment
309320
- deploySqlServer
310321
jobs:
311322
- template: ./jobs/provision-deploy.yml
312-
parameters:
323+
parameters:
313324
version: R4B
314325
sql: true
315326
webAppName: $(DeploymentEnvironmentNameR4BSql)
@@ -326,13 +337,14 @@ stages:
326337

327338
- stage: deployR5
328339
displayName: 'Deploy R5 CosmosDB Site'
340+
condition: eq(variables.buildCriticalOnly, false)
329341
dependsOn:
330342
- DockerBuild
331343
- setupEnvironment
332344
- createNsp
333345
jobs:
334346
- template: ./jobs/provision-deploy.yml
335-
parameters:
347+
parameters:
336348
version: R5
337349
webAppName: $(DeploymentEnvironmentNameR5)
338350
appServicePlanName: '$(appServicePlanName)-cosmos'
@@ -345,13 +357,14 @@ stages:
345357

346358
- stage: deployR5Sql
347359
displayName: 'Deploy R5 SQL Site'
360+
condition: eq(variables.buildCriticalOnly, false)
348361
dependsOn:
349362
- DockerBuild
350363
- setupEnvironment
351364
- deploySqlServer
352365
jobs:
353366
- template: ./jobs/provision-deploy.yml
354-
parameters:
367+
parameters:
355368
version: R5
356369
sql: true
357370
webAppName: $(DeploymentEnvironmentNameR5Sql)
@@ -398,6 +411,7 @@ stages:
398411

399412
- stage: testR4B
400413
displayName: 'Run R4B Tests'
414+
condition: eq(variables.buildCriticalOnly, false)
401415
dependsOn:
402416
- BuildArtifacts
403417
- setupEnvironment
@@ -413,6 +427,7 @@ stages:
413427

414428
- stage: testR5
415429
displayName: 'Run R5 Tests'
430+
condition: eq(variables.buildCriticalOnly, false)
416431
dependsOn:
417432
- BuildArtifacts
418433
- setupEnvironment
@@ -446,12 +461,20 @@ stages:
446461

447462
- stage: cleanup
448463
displayName: 'Cleanup Azure Environment'
464+
# Run only if all required tests succeed (all 4 when buildCriticalOnly=false, only Stu3/R4 when buildCriticalOnly=true)
465+
condition: |
466+
and(
467+
succeeded(),
468+
or(
469+
and(eq(variables.buildCriticalOnly, false), eq(dependencies.testStu3.result, 'Succeeded'), eq(dependencies.testR4.result, 'Succeeded'), eq(dependencies.testR4B.result, 'Succeeded'), eq(dependencies.testR5.result, 'Succeeded')),
470+
and(eq(variables.buildCriticalOnly, true), eq(dependencies.testStu3.result, 'Succeeded'), eq(dependencies.testR4.result, 'Succeeded'))
471+
)
472+
)
449473
dependsOn:
450474
- testStu3
451475
- testR4
452476
- testR4B
453477
- testR5
454-
condition: succeeded()
455478
jobs:
456479
- template: ./jobs/cleanup.yml
457480

0 commit comments

Comments
 (0)