Skip to content

Commit 2d51afd

Browse files
author
Pavel Purma
committed
Move copy stage to Build pre-init step
1 parent dd76040 commit 2d51afd

11 files changed

Lines changed: 33 additions & 28 deletions

eng/Stage-EngCommon.ps1

Lines changed: 0 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -6,36 +6,13 @@ param(
66
Set-StrictMode -Version Latest
77
$ErrorActionPreference = 'Stop'
88

9-
function Write-FolderStructure {
10-
param(
11-
[Parameter(Mandatory)]
12-
[string]$Path,
13-
14-
[ValidateRange(0, 10)]
15-
[int]$Depth = 2
16-
)
17-
18-
$resolvedPath = (Resolve-Path -LiteralPath $Path).Path
19-
Write-Host "Folder structure for: $resolvedPath"
20-
21-
Get-ChildItem -LiteralPath $resolvedPath -Recurse -Depth $Depth |
22-
ForEach-Object {
23-
$relativePath = [System.IO.Path]::GetRelativePath($resolvedPath, $_.FullName)
24-
$suffix = if ($_.PSIsContainer) { [System.IO.Path]::DirectorySeparatorChar } else { '' }
25-
Write-Host " $relativePath$suffix"
26-
}
27-
}
28-
299
$repoRoot = Split-Path $PSScriptRoot -Parent
3010
$source = Join-Path $PSScriptRoot 'common'
3111
$dockerfiles = Get-ChildItem (Join-Path $repoRoot 'src') -Filter Dockerfile -File -Recurse |
3212
Where-Object {
3313
Select-String -LiteralPath $_.FullName -Pattern '^\s*COPY\s+eng/common/' -Quiet
3414
}
3515

36-
Write-Host "RepoRoot: $repoRoot"
37-
Write-FolderStructure -Path $repoRoot
38-
3916
foreach ($dockerfile in $dockerfiles) {
4017
Write-Host "Processing Dockerfile: $($dockerfile.FullName)"
4118
$engDirectory = Join-Path $dockerfile.Directory.FullName 'eng'
@@ -49,8 +26,6 @@ foreach ($dockerfile in $dockerfiles) {
4926
Write-Host " - Destination for eng/common: $destination"
5027
New-Item -Path $engDirectory -ItemType Directory -Force | Out-Null
5128
Copy-Item -LiteralPath $source -Destination $engDirectory -Recurse -Force
52-
Write-Host " - Destination folder structure:"
53-
Write-FolderStructure -Path $destination
5429
Write-Host ""
5530
}
5631
}

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

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,8 @@ parameters:
1010
# Custom steps that run after ImageBuilder is set up but before the build starts.
1111
# Use for build-specific initialization (e.g., setting variables, additional setup).
1212
customBuildInitSteps: []
13+
# Custom steps that modify repository content before it is copied into the ImageBuilder image.
14+
customPreImageBuilderBuildSteps: []
1315
publishConfig: null
1416
versionsRepoRef: ""
1517
noCache: false
@@ -41,6 +43,7 @@ jobs:
4143
versionsRepoRef: ${{ parameters.versionsRepoRef }}
4244
cleanupDocker: true
4345
customInitSteps: ${{ parameters.customInitSteps }}
46+
customPreImageBuilderBuildSteps: ${{ parameters.customPreImageBuilderBuildSteps }}
4447
- ${{ parameters.customBuildInitSteps }}
4548
- template: /eng/docker-tools/templates/steps/reference-service-connections.yml@self
4649
parameters:

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

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,8 @@ parameters:
1313
# Custom steps that run after ImageBuilder is set up but before the build starts.
1414
# Use for build-specific initialization (e.g., setting variables, additional setup).
1515
customBuildInitSteps: []
16+
# Custom steps that modify repository content before it is copied into the ImageBuilder image.
17+
customPreImageBuilderBuildSteps: []
1618
customTestInitSteps: []
1719
sourceBuildPipelineRunId: ""
1820
# When true, the Post-Build stage runs even if the Build stage failed (succeededOrFailed).
@@ -113,6 +115,7 @@ stages:
113115
versionsRepoRef: ${{ parameters.versionsRepoRef }}
114116
customInitSteps: ${{ parameters.customInitSteps }}
115117
customBuildInitSteps: ${{ parameters.customBuildInitSteps }}
118+
customPreImageBuilderBuildSteps: ${{ parameters.customPreImageBuilderBuildSteps }}
116119
noCache: ${{ parameters.noCache }}
117120
publishConfig: ${{ parameters.publishConfig }}
118121
internalProjectName: ${{ parameters.internalProjectName }}
@@ -128,6 +131,7 @@ stages:
128131
versionsRepoRef: ${{ parameters.versionsRepoRef }}
129132
customInitSteps: ${{ parameters.customInitSteps }}
130133
customBuildInitSteps: ${{ parameters.customBuildInitSteps }}
134+
customPreImageBuilderBuildSteps: ${{ parameters.customPreImageBuilderBuildSteps }}
131135
noCache: ${{ parameters.noCache }}
132136
publishConfig: ${{ parameters.publishConfig }}
133137
internalProjectName: ${{ parameters.internalProjectName }}
@@ -143,6 +147,7 @@ stages:
143147
versionsRepoRef: ${{ parameters.versionsRepoRef }}
144148
customInitSteps: ${{ parameters.customInitSteps }}
145149
customBuildInitSteps: ${{ parameters.customBuildInitSteps }}
150+
customPreImageBuilderBuildSteps: ${{ parameters.customPreImageBuilderBuildSteps }}
146151
noCache: ${{ parameters.noCache }}
147152
publishConfig: ${{ parameters.publishConfig }}
148153
internalProjectName: ${{ parameters.internalProjectName }}
@@ -158,6 +163,7 @@ stages:
158163
versionsRepoRef: ${{ parameters.versionsRepoRef }}
159164
customInitSteps: ${{ parameters.customInitSteps }}
160165
customBuildInitSteps: ${{ parameters.customBuildInitSteps }}
166+
customPreImageBuilderBuildSteps: ${{ parameters.customPreImageBuilderBuildSteps }}
161167
noCache: ${{ parameters.noCache }}
162168
publishConfig: ${{ parameters.publishConfig }}
163169
internalProjectName: ${{ parameters.internalProjectName }}
@@ -173,6 +179,7 @@ stages:
173179
versionsRepoRef: ${{ parameters.versionsRepoRef }}
174180
customInitSteps: ${{ parameters.customInitSteps }}
175181
customBuildInitSteps: ${{ parameters.customBuildInitSteps }}
182+
customPreImageBuilderBuildSteps: ${{ parameters.customPreImageBuilderBuildSteps }}
176183
noCache: ${{ parameters.noCache }}
177184
publishConfig: ${{ parameters.publishConfig }}
178185
internalProjectName: ${{ parameters.internalProjectName }}
@@ -188,6 +195,7 @@ stages:
188195
versionsRepoRef: ${{ parameters.versionsRepoRef }}
189196
customInitSteps: ${{ parameters.customInitSteps }}
190197
customBuildInitSteps: ${{ parameters.customBuildInitSteps }}
198+
customPreImageBuilderBuildSteps: ${{ parameters.customPreImageBuilderBuildSteps }}
191199
noCache: ${{ parameters.noCache }}
192200
publishConfig: ${{ parameters.publishConfig }}
193201
internalProjectName: ${{ parameters.internalProjectName }}
@@ -203,6 +211,7 @@ stages:
203211
versionsRepoRef: ${{ parameters.versionsRepoRef }}
204212
customInitSteps: ${{ parameters.customInitSteps }}
205213
customBuildInitSteps: ${{ parameters.customBuildInitSteps }}
214+
customPreImageBuilderBuildSteps: ${{ parameters.customPreImageBuilderBuildSteps }}
206215
noCache: ${{ parameters.noCache }}
207216
publishConfig: ${{ parameters.publishConfig }}
208217
internalProjectName: ${{ parameters.internalProjectName }}

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

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -29,6 +29,7 @@ parameters:
2929
linuxArmBuildJobTimeout: 60
3030
windowsAmdBuildJobTimeout: 60
3131
customBuildInitSteps: []
32+
customPreImageBuilderBuildSteps: []
3233

3334
# Test parameters
3435
testMatrixType: platformVersionedOs
@@ -58,6 +59,7 @@ stages:
5859
testMatrixCustomBuildLegGroupArgs: ${{ parameters.testMatrixCustomBuildLegGroupArgs }}
5960
customCopyBaseImagesInitSteps: ${{ parameters.customCopyBaseImagesInitSteps}}
6061
customBuildInitSteps: ${{ parameters.customBuildInitSteps }}
62+
customPreImageBuilderBuildSteps: ${{ parameters.customPreImageBuilderBuildSteps }}
6163
customInitSteps: ${{ parameters.customInitSteps }}
6264
customTestInitSteps: ${{ parameters.customTestInitSteps }}
6365
windowsAmdBuildJobTimeout: ${{ parameters.windowsAmdBuildJobTimeout }}

eng/docker-tools/templates/stages/dotnet/build-test-publish-repo.yml

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,7 @@ parameters:
2121
linuxArmBuildJobTimeout: 60
2222
windowsAmdBuildJobTimeout: 60
2323
customBuildInitSteps: []
24+
customPreImageBuilderBuildSteps: []
2425

2526
# Test parameters
2627
testMatrixType: platformVersionedOs
@@ -60,6 +61,7 @@ stages:
6061
linuxArmBuildJobTimeout: ${{ parameters.linuxArmBuildJobTimeout }}
6162
windowsAmdBuildJobTimeout: ${{ parameters.windowsAmdBuildJobTimeout }}
6263
customBuildInitSteps: ${{ parameters.customBuildInitSteps }}
64+
customPreImageBuilderBuildSteps: ${{ parameters.customPreImageBuilderBuildSteps }}
6365
customInitSteps: ${{ parameters.customInitSteps }}
6466
# Test
6567
sourceBuildPipelineRunId: ${{ parameters.sourceBuildPipelineRunId }}

eng/docker-tools/templates/steps/init-common.yml

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -34,6 +34,11 @@ parameters:
3434
type: stepList
3535
default: []
3636

37+
# Custom steps that modify repository content before it is copied into the ImageBuilder image.
38+
- name: customPreImageBuilderBuildSteps
39+
type: stepList
40+
default: []
41+
3742
# Registry and authentication configuration for publishing images.
3843
# Contains server URLs, repo prefixes, subscriptions, and resource groups.
3944
# When null, build/publish steps that require registry access will be skipped.
@@ -245,3 +250,4 @@ steps:
245250
publishConfig: ${{ parameters.publishConfig }}
246251
condition: ${{ parameters.condition }}
247252
customInitSteps: ${{ parameters.customInitSteps }}
253+
customPreImageBuilderBuildSteps: ${{ parameters.customPreImageBuilderBuildSteps }}

eng/docker-tools/templates/steps/init-imagebuilder.yml

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,10 @@ parameters:
2121
type: stepList
2222
default: []
2323

24+
- name: customPreImageBuilderBuildSteps
25+
type: stepList
26+
default: []
27+
2428
steps:
2529
# Custom ImageBuilder setup (e.g., bootstrap from source)
2630
- ${{ if gt(length(parameters.customInitSteps), 0) }}:
@@ -67,6 +71,7 @@ steps:
6771
# The withrepo image layers the checked-out repository into the ImageBuilder
6872
# container at /repo, so ImageBuilder can access manifests and Dockerfiles
6973
- ${{ if eq(parameters.dockerClientOS, 'linux') }}:
74+
- ${{ parameters.customPreImageBuilderBuildSteps }}
7075
- script: >-
7176
docker build
7277
-t $(imageNames.imageBuilder.withrepo)

eng/pipelines/dotnet-buildtools-prereqs-eng.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -36,7 +36,7 @@ stages:
3636
versionsRepoRef: VersionsRepo
3737
linuxAmdBuildJobTimeout: 360
3838
linuxArmBuildJobTimeout: 300
39-
customBuildInitSteps:
39+
customPreImageBuilderBuildSteps:
4040
- powershell: $(Build.SourcesDirectory)/dotnet-buildtools-prereqs-docker/eng/Stage-EngCommon.ps1
4141
displayName: Copy eng/common to build dirs
4242
condition: eq(variables['Agent.OS'], 'Linux')

eng/pipelines/dotnet-buildtools-prereqs-pr.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -30,7 +30,7 @@ stages:
3030
name: NetCore-Public-XL
3131
demands: ImageOverride -equals build.ubuntu.2204.amd64.open
3232
os: linux
33-
customBuildInitSteps:
33+
customPreImageBuilderBuildSteps:
3434
- powershell: $(Build.SourcesDirectory)/dotnet-buildtools-prereqs-docker/eng/Stage-EngCommon.ps1
3535
displayName: Copy eng/common to build dirs
3636
condition: eq(variables['Agent.OS'], 'Linux')

eng/pipelines/stages/build-test-publish-repo.yml

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@ parameters:
77
linuxAmdBuildJobTimeout: 60
88
linuxArmBuildJobTimeout: 60
99
customBuildInitSteps: []
10+
customPreImageBuilderBuildSteps: []
1011
customCopyBaseImagesInitSteps: []
1112
linuxAmd64Pool: ''
1213
versionsRepoRef: null
@@ -32,5 +33,6 @@ stages:
3233
linuxArmBuildJobTimeout: ${{ parameters.linuxArmBuildJobTimeout }}
3334

3435
customBuildInitSteps: ${{ parameters.customBuildInitSteps }}
36+
customPreImageBuilderBuildSteps: ${{ parameters.customPreImageBuilderBuildSteps }}
3537
customCopyBaseImagesInitSteps: ${{ parameters.customCopyBaseImagesInitSteps }}
3638
additionalServiceConnections: ${{ parameters.additionalServiceConnections }}

0 commit comments

Comments
 (0)