Skip to content

Commit beb58d8

Browse files
authored
Separate custom init steps from job-specific init steps (#1954)
## Summary Fix Windows PR validation failing because ImageBuilder is not pulled. The breaking behavior was added in #1947. Job-specific init steps (customBuildInitSteps, customGenerateMatrixInitSteps, etc.) were being merged into customInitSteps before being passed to init-common.yml. This caused init-imagebuilder.yml to skip the default ImageBuilder pull when any job-specific steps were provided, since it checks if customInitSteps is non-empty. ## Changes - Add separate parameters for job-specific init steps in job templates: - `customBuildInitSteps` in build-images.yml - `customCopyBaseImagesInitSteps` in copy-base-images.yml - `customGenerateMatrixInitSteps` in generate-matrix.yml - Update build-and-test.yml to pass these parameters separately instead of merging them - Add clarifying comments to distinguish the two types of init steps ## Testing Testing via dotnet/dotnet-docker#7016
1 parent 68fcd4c commit beb58d8

5 files changed

Lines changed: 50 additions & 31 deletions

File tree

eng/docker-tools/templates/jobs/build-images.yml

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,12 @@ parameters:
44
matrix: {}
55
dockerClientOS: null
66
buildJobTimeout: 60
7+
# Custom steps to set up ImageBuilder instead of pulling from MCR (e.g., bootstrap from source).
8+
# Runs before ImageBuilder pull. If non-empty, skips the default ImageBuilder pull.
79
customInitSteps: []
10+
# Custom steps that run after ImageBuilder is set up but before the build starts.
11+
# Use for build-specific initialization (e.g., setting variables, additional setup).
12+
customBuildInitSteps: []
813
publishConfig: null
914
versionsRepoRef: ""
1015
noCache: false
@@ -36,6 +41,7 @@ jobs:
3641
versionsRepoRef: ${{ parameters.versionsRepoRef }}
3742
cleanupDocker: true
3843
customInitSteps: ${{ parameters.customInitSteps }}
44+
- ${{ parameters.customBuildInitSteps }}
3945
- template: /eng/docker-tools/templates/steps/set-image-info-path-var.yml@self
4046
parameters:
4147
publicSourceBranch: $(publicSourceBranch)

eng/docker-tools/templates/jobs/copy-base-images-staging.yml

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,9 +8,15 @@ parameters:
88
- name: publishConfig
99
type: object
1010
default: null
11+
# Custom steps to set up ImageBuilder instead of pulling from MCR (e.g., bootstrap from source).
12+
# Runs before ImageBuilder pull. If non-empty, skips the default ImageBuilder pull.
1113
- name: customInitSteps
1214
type: stepList
1315
default: []
16+
# Custom steps that run after ImageBuilder is set up but before copy-base-images runs.
17+
- name: customCopyBaseImagesInitSteps
18+
type: stepList
19+
default: []
1420
- name: additionalOptions
1521
type: string
1622
default: ''
@@ -28,6 +34,7 @@ jobs:
2834
pool: ${{ parameters.pool }}
2935
publishConfig: ${{ parameters.publishConfig }}
3036
customInitSteps: ${{ parameters.customInitSteps }}
37+
customCopyBaseImagesInitSteps: ${{ parameters.customCopyBaseImagesInitSteps }}
3138
additionalOptions: ${{ parameters.additionalOptions }}
3239
acr: ${{ parameters.publishConfig.InternalMirrorRegistry }}
3340
versionsRepoRef: ${{ parameters.versionsRepoRef }}

eng/docker-tools/templates/jobs/copy-base-images.yml

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11,9 +11,15 @@ parameters:
1111
- name: acr
1212
type: object
1313
default: null
14+
# Custom steps to set up ImageBuilder instead of pulling from MCR (e.g., bootstrap from source).
15+
# Runs before ImageBuilder pull. If non-empty, skips the default ImageBuilder pull.
1416
- name: customInitSteps
1517
type: stepList
1618
default: []
19+
# Custom steps that run after ImageBuilder is set up but before copy-base-images runs.
20+
- name: customCopyBaseImagesInitSteps
21+
type: stepList
22+
default: []
1723
- name: additionalOptions
1824
type: string
1925
default: ''
@@ -37,6 +43,7 @@ jobs:
3743
publishConfig: ${{ parameters.publishConfig }}
3844
customInitSteps: ${{ parameters.customInitSteps }}
3945
versionsRepoRef: ${{ parameters.versionsRepoRef }}
46+
- ${{ parameters.customCopyBaseImagesInitSteps }}
4047
- template: /eng/docker-tools/templates/steps/copy-base-images.yml@self
4148
parameters:
4249
acr: ${{ parameters.acr }}

eng/docker-tools/templates/jobs/generate-matrix.yml

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,11 @@ parameters:
77
internalProjectName: null
88
noCache: false
99
publishConfig: null
10+
# Custom steps to set up ImageBuilder instead of pulling from MCR (e.g., bootstrap from source).
11+
# Runs before ImageBuilder pull. If non-empty, skips the default ImageBuilder pull.
1012
customInitSteps: []
13+
# Custom steps that run after ImageBuilder is set up but before matrix generation runs.
14+
customGenerateMatrixInitSteps: []
1115
versionsRepoRef: ""
1216
sourceBuildPipelineRunId: ""
1317

@@ -21,6 +25,7 @@ jobs:
2125
publishConfig: ${{ parameters.publishConfig }}
2226
versionsRepoRef: ${{ parameters.versionsRepoRef }}
2327
customInitSteps: ${{ parameters.customInitSteps }}
28+
- ${{ parameters.customGenerateMatrixInitSteps }}
2429
- template: /eng/docker-tools/templates/steps/retain-build.yml@self
2530
- template: /eng/docker-tools/templates/steps/validate-branch.yml@self
2631
parameters:

eng/docker-tools/templates/stages/build-and-test.yml

Lines changed: 25 additions & 31 deletions
Original file line numberDiff line numberDiff line change
@@ -5,9 +5,13 @@ parameters:
55
testMatrixCustomBuildLegGroupArgs: ""
66
customCopyBaseImagesInitSteps: []
77
customGenerateMatrixInitSteps: []
8+
# Custom steps to set up ImageBuilder instead of pulling from MCR (e.g., bootstrap from source).
9+
# Runs before ImageBuilder pull. If non-empty, skips the default ImageBuilder pull.
10+
customInitSteps: []
11+
# Custom steps that run after ImageBuilder is set up but before the build starts.
12+
# Use for build-specific initialization (e.g., setting variables, additional setup).
813
customBuildInitSteps: []
914
customTestInitSteps: []
10-
customInitSteps: []
1115
sourceBuildPipelineRunId: ""
1216

1317
linuxAmdBuildJobTimeout: 60
@@ -78,9 +82,8 @@ stages:
7882
publishConfig: ${{ parameters.publishConfig }}
7983
pool: ${{ parameters.linuxAmd64Pool }}
8084
additionalOptions: "--manifest '$(manifest)' $(imageBuilder.pathArgs) $(manifestVariables)"
81-
customInitSteps:
82-
- ${{ parameters.customInitSteps }}
83-
- ${{ parameters.customCopyBaseImagesInitSteps }}
85+
customInitSteps: ${{ parameters.customInitSteps }}
86+
customCopyBaseImagesInitSteps: ${{ parameters.customCopyBaseImagesInitSteps }}
8487
versionsRepoRef: ${{ parameters.versionsRepoRef }}
8588

8689
- template: /eng/docker-tools/templates/jobs/generate-matrix.yml@self
@@ -92,9 +95,8 @@ stages:
9295
internalProjectName: ${{ parameters.internalProjectName }}
9396
noCache: ${{ parameters.noCache }}
9497
publishConfig: ${{ parameters.publishConfig }}
95-
customInitSteps:
96-
- ${{ parameters.customInitSteps }}
97-
- ${{ parameters.customGenerateMatrixInitSteps }}
98+
customInitSteps: ${{ parameters.customInitSteps }}
99+
customGenerateMatrixInitSteps: ${{ parameters.customGenerateMatrixInitSteps }}
98100
versionsRepoRef: ${{ parameters.versionsRepoRef }}
99101

100102
- template: /eng/docker-tools/templates/jobs/build-images.yml@self
@@ -105,9 +107,8 @@ stages:
105107
dockerClientOS: linux
106108
buildJobTimeout: ${{ parameters.linuxAmdBuildJobTimeout }}
107109
versionsRepoRef: ${{ parameters.versionsRepoRef }}
108-
customInitSteps:
109-
- ${{ parameters.customInitSteps }}
110-
- ${{ parameters.customBuildInitSteps }}
110+
customInitSteps: ${{ parameters.customInitSteps }}
111+
customBuildInitSteps: ${{ parameters.customBuildInitSteps }}
111112
noCache: ${{ parameters.noCache }}
112113
publishConfig: ${{ parameters.publishConfig }}
113114
internalProjectName: ${{ parameters.internalProjectName }}
@@ -121,9 +122,8 @@ stages:
121122
dockerClientOS: linux
122123
buildJobTimeout: ${{ parameters.linuxArmBuildJobTimeout }}
123124
versionsRepoRef: ${{ parameters.versionsRepoRef }}
124-
customInitSteps:
125-
- ${{ parameters.customInitSteps }}
126-
- ${{ parameters.customBuildInitSteps }}
125+
customInitSteps: ${{ parameters.customInitSteps }}
126+
customBuildInitSteps: ${{ parameters.customBuildInitSteps }}
127127
noCache: ${{ parameters.noCache }}
128128
publishConfig: ${{ parameters.publishConfig }}
129129
internalProjectName: ${{ parameters.internalProjectName }}
@@ -137,9 +137,8 @@ stages:
137137
dockerClientOS: linux
138138
buildJobTimeout: ${{ parameters.linuxArmBuildJobTimeout }}
139139
versionsRepoRef: ${{ parameters.versionsRepoRef }}
140-
customInitSteps:
141-
- ${{ parameters.customInitSteps }}
142-
- ${{ parameters.customBuildInitSteps }}
140+
customInitSteps: ${{ parameters.customInitSteps }}
141+
customBuildInitSteps: ${{ parameters.customBuildInitSteps }}
143142
noCache: ${{ parameters.noCache }}
144143
publishConfig: ${{ parameters.publishConfig }}
145144
internalProjectName: ${{ parameters.internalProjectName }}
@@ -153,9 +152,8 @@ stages:
153152
dockerClientOS: windows
154153
buildJobTimeout: ${{ parameters.windowsAmdBuildJobTimeout }}
155154
versionsRepoRef: ${{ parameters.versionsRepoRef }}
156-
customInitSteps:
157-
- ${{ parameters.customInitSteps }}
158-
- ${{ parameters.customBuildInitSteps }}
155+
customInitSteps: ${{ parameters.customInitSteps }}
156+
customBuildInitSteps: ${{ parameters.customBuildInitSteps }}
159157
noCache: ${{ parameters.noCache }}
160158
publishConfig: ${{ parameters.publishConfig }}
161159
internalProjectName: ${{ parameters.internalProjectName }}
@@ -169,9 +167,8 @@ stages:
169167
dockerClientOS: windows
170168
buildJobTimeout: ${{ parameters.windowsAmdBuildJobTimeout }}
171169
versionsRepoRef: ${{ parameters.versionsRepoRef }}
172-
customInitSteps:
173-
- ${{ parameters.customInitSteps }}
174-
- ${{ parameters.customBuildInitSteps }}
170+
customInitSteps: ${{ parameters.customInitSteps }}
171+
customBuildInitSteps: ${{ parameters.customBuildInitSteps }}
175172
noCache: ${{ parameters.noCache }}
176173
publishConfig: ${{ parameters.publishConfig }}
177174
internalProjectName: ${{ parameters.internalProjectName }}
@@ -185,9 +182,8 @@ stages:
185182
dockerClientOS: windows
186183
buildJobTimeout: ${{ parameters.windowsAmdBuildJobTimeout }}
187184
versionsRepoRef: ${{ parameters.versionsRepoRef }}
188-
customInitSteps:
189-
- ${{ parameters.customInitSteps }}
190-
- ${{ parameters.customBuildInitSteps }}
185+
customInitSteps: ${{ parameters.customInitSteps }}
186+
customBuildInitSteps: ${{ parameters.customBuildInitSteps }}
191187
noCache: ${{ parameters.noCache }}
192188
publishConfig: ${{ parameters.publishConfig }}
193189
internalProjectName: ${{ parameters.internalProjectName }}
@@ -201,9 +197,8 @@ stages:
201197
dockerClientOS: windows
202198
buildJobTimeout: ${{ parameters.windowsAmdBuildJobTimeout }}
203199
versionsRepoRef: ${{ parameters.versionsRepoRef }}
204-
customInitSteps:
205-
- ${{ parameters.customInitSteps }}
206-
- ${{ parameters.customBuildInitSteps }}
200+
customInitSteps: ${{ parameters.customInitSteps }}
201+
customBuildInitSteps: ${{ parameters.customBuildInitSteps }}
207202
noCache: ${{ parameters.noCache }}
208203
publishConfig: ${{ parameters.publishConfig }}
209204
internalProjectName: ${{ parameters.internalProjectName }}
@@ -251,9 +246,8 @@ stages:
251246
isTestStage: true
252247
internalProjectName: ${{ parameters.internalProjectName }}
253248
publicProjectName: ${{ parameters.publicProjectName }}
254-
customInitSteps:
255-
- ${{ parameters.customInitSteps }}
256-
- ${{ parameters.customGenerateMatrixInitSteps }}
249+
customInitSteps: ${{ parameters.customInitSteps }}
250+
customGenerateMatrixInitSteps: ${{ parameters.customGenerateMatrixInitSteps }}
257251
sourceBuildPipelineRunId: ${{ parameters.sourceBuildPipelineRunId }}
258252
versionsRepoRef: ${{ parameters.versionsRepoRef }}
259253
- template: /eng/docker-tools/templates/jobs/test-images-linux-client.yml@self

0 commit comments

Comments
 (0)