Skip to content

Commit c50cd4d

Browse files
committed
Stage eng/common in Docker build contexts
Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com> Copilot-Session: bbbb249d-8b99-4e6e-a3c8-5597ef63a4a2
1 parent 98f658a commit c50cd4d

13 files changed

Lines changed: 55 additions & 75 deletions

File tree

.gitignore

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -27,3 +27,6 @@ artifacts/
2727

2828
# ImageBuilder directory
2929
.Microsoft.DotNet.ImageBuilder
30+
31+
# eng/common copies staged into Docker build contexts
32+
src/**/eng/common/

build.ps1

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,13 @@ Set-StrictMode -Version Latest
1111
$ErrorActionPreference = 'Stop'
1212
pushd $PSScriptRoot
1313
try {
14-
./eng/docker-tools/build.ps1 -Paths $Paths -OptionalImageBuilderArgs $OptionalImageBuilderArgs
14+
./eng/Stage-EngCommon.ps1
15+
try {
16+
./eng/docker-tools/build.ps1 -Paths $Paths -OptionalImageBuilderArgs $OptionalImageBuilderArgs
17+
}
18+
finally {
19+
./eng/Stage-EngCommon.ps1 -Clean
20+
}
1521
}
1622
finally {
1723
popd

eng/Stage-EngCommon.ps1

Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,29 @@
1+
[CmdletBinding()]
2+
param(
3+
[switch]$Clean
4+
)
5+
6+
Set-StrictMode -Version Latest
7+
$ErrorActionPreference = 'Stop'
8+
9+
$repoRoot = Split-Path $PSScriptRoot -Parent
10+
$source = Join-Path $PSScriptRoot 'common'
11+
$dockerfiles = Get-ChildItem (Join-Path $repoRoot 'src') -Filter Dockerfile -File -Recurse |
12+
Where-Object {
13+
Select-String -LiteralPath $_.FullName -Pattern '^\s*COPY\s+eng/common/' -Quiet
14+
}
15+
16+
foreach ($dockerfile in $dockerfiles) {
17+
$engDirectory = Join-Path $dockerfile.Directory.FullName 'eng'
18+
$destination = Join-Path $engDirectory 'common'
19+
20+
if (Test-Path -LiteralPath $destination) {
21+
Remove-Item -LiteralPath $destination -Recurse -Force
22+
}
23+
24+
if (-not $Clean) {
25+
New-Item -Path $engDirectory -ItemType Directory -Force | Out-Null
26+
Copy-Item -LiteralPath $source -Destination $engDirectory -Recurse -Force
27+
Write-Host "Staged eng/common next to $($dockerfile.FullName)"
28+
}
29+
}

eng/cross-scripts.Dockerfile

Lines changed: 0 additions & 10 deletions
This file was deleted.

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

Lines changed: 10 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -24,18 +24,22 @@ stages:
2424
name: NetCore1ESPool-Internal-XL
2525
image: build.ubuntu.2204.amd64
2626
os: linux
27-
${{ if eq(variables['System.TeamProject'], 'internal') }}:
28-
customCopyBaseImagesInitSteps:
27+
customBuildInitSteps:
28+
- powershell: ./eng/Stage-EngCommon.ps1
29+
displayName: Stage eng/common in Docker build contexts
30+
condition: eq(variables['Agent.OS'], 'Linux')
31+
- ${{ if eq(variables['System.TeamProject'], 'internal') }}:
32+
- template: /eng/pipelines/steps/pip-authenticate.yml@self
2933
- template: /eng/pipelines/steps/set-base-image-override-options.yml@self
3034
parameters:
31-
variableName: customCopyBaseImagesArgs
35+
variableName: imageBuilderBuildArgs
3236
dockerfileOs: (centos|debian)
3337
baseOverrideRegistry: $(overrideRegistry) # Comes from DotNet-Docker-Common variable group
34-
customBuildInitSteps:
35-
- template: /eng/pipelines/steps/pip-authenticate.yml@self
38+
${{ if eq(variables['System.TeamProject'], 'internal') }}:
39+
customCopyBaseImagesInitSteps:
3640
- template: /eng/pipelines/steps/set-base-image-override-options.yml@self
3741
parameters:
38-
variableName: imageBuilderBuildArgs
42+
variableName: customCopyBaseImagesArgs
3943
dockerfileOs: (centos|debian)
4044
baseOverrideRegistry: $(overrideRegistry) # Comes from DotNet-Docker-Common variable group
4145
# Force all images to be rebuilt when triggered by the schedule

src/azurelinux/3.0/net10.0/crossdeps-builder/amd64/Dockerfile

Lines changed: 1 addition & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,3 @@
1-
# Arcade rootfs cross-build scripts, provided as a separate image so they can be copied
2-
# in without requiring the repo root as the Docker build context. See eng/cross-scripts.Dockerfile.
3-
FROM mcr.microsoft.com/dotnet-buildtools/prereqs:cross-scripts-amd64 AS cross-scripts
4-
51
FROM mcr.microsoft.com/azurelinux/base/core:3.0
62

73
ARG PIP_INDEX_URL
@@ -136,7 +132,7 @@ RUN \
136132
ENV PATH="/opt/llvm/bin:$PATH"
137133

138134
# Copy arcade scripts used to build rootfs
139-
COPY --from=cross-scripts /eng/common/cross/ /scripts/eng/common/cross/
135+
COPY eng/common/cross/ /scripts/eng/common/cross/
140136

141137
# Clear PIP_INDEX_URL since it contains a short-lived token that should not persist in the final image
142138
ENV PIP_INDEX_URL=

src/azurelinux/3.0/net11.0/crossdeps-builder/amd64/Dockerfile

Lines changed: 1 addition & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,3 @@
1-
# Arcade rootfs cross-build scripts, provided as a separate image so they can be copied
2-
# in without requiring the repo root as the Docker build context. See eng/cross-scripts.Dockerfile.
3-
FROM mcr.microsoft.com/dotnet-buildtools/prereqs:cross-scripts-amd64 AS cross-scripts
4-
51
FROM mcr.microsoft.com/azurelinux/base/core:3.0
62

73
ARG PIP_INDEX_URL
@@ -133,7 +129,7 @@ RUN \
133129
ENV PATH="/opt/llvm/bin:$PATH"
134130

135131
# Copy arcade scripts used to build rootfs
136-
COPY --from=cross-scripts /eng/common/cross/ /scripts/eng/common/cross/
132+
COPY eng/common/cross/ /scripts/eng/common/cross/
137133

138134
# Clear PIP_INDEX_URL since it contains a short-lived token that should not persist in the final image
139135
ENV PIP_INDEX_URL=

src/azurelinux/3.0/net8.0/crossdeps-builder/amd64/Dockerfile

Lines changed: 1 addition & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,3 @@
1-
# Arcade rootfs cross-build scripts, provided as a separate image so they can be copied
2-
# in without requiring the repo root as the Docker build context. See eng/cross-scripts.Dockerfile.
3-
FROM mcr.microsoft.com/dotnet-buildtools/prereqs:cross-scripts-amd64 AS cross-scripts
4-
51
FROM mcr.microsoft.com/azurelinux/base/core:3.0
62

73
ARG PIP_INDEX_URL
@@ -120,7 +116,7 @@ RUN \
120116
ENV PATH="/opt/llvm/bin:$PATH"
121117

122118
# Copy arcade scripts used to build rootfs
123-
COPY --from=cross-scripts /eng/common/cross/ /scripts/eng/common/cross/
119+
COPY eng/common/cross/ /scripts/eng/common/cross/
124120

125121
# Clear PIP_INDEX_URL since it contains a short-lived token that should not persist in the final image
126122
ENV PIP_INDEX_URL=

src/azurelinux/3.0/net9.0/crossdeps-builder/amd64/Dockerfile

Lines changed: 1 addition & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,3 @@
1-
# Arcade rootfs cross-build scripts, provided as a separate image so they can be copied
2-
# in without requiring the repo root as the Docker build context. See eng/cross-scripts.Dockerfile.
3-
FROM mcr.microsoft.com/dotnet-buildtools/prereqs:cross-scripts-amd64 AS cross-scripts
4-
51
FROM mcr.microsoft.com/azurelinux/base/core:3.0
62

73
ARG PIP_INDEX_URL
@@ -120,7 +116,7 @@ RUN \
120116
ENV PATH="/opt/llvm/bin:$PATH"
121117

122118
# Copy arcade scripts used to build rootfs
123-
COPY --from=cross-scripts /eng/common/cross/ /scripts/eng/common/cross/
119+
COPY eng/common/cross/ /scripts/eng/common/cross/
124120

125121
# Clear PIP_INDEX_URL since it contains a short-lived token that should not persist in the final image
126122
ENV PIP_INDEX_URL=

src/azurelinux/4.0/net11.0/crossdeps-builder/amd64/Dockerfile

Lines changed: 1 addition & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,3 @@
1-
# Arcade rootfs cross-build scripts, provided as a separate image so they can be copied
2-
# in without requiring the repo root as the Docker build context. See eng/cross-scripts.Dockerfile.
3-
FROM mcr.microsoft.com/dotnet-buildtools/prereqs:cross-scripts-amd64 AS cross-scripts
4-
51
FROM mcr.microsoft.com/azurelinux-beta/base/core:4.0
62

73
ARG PIP_INDEX_URL
@@ -136,7 +132,7 @@ RUN \
136132
ENV PATH="/opt/llvm/bin:$PATH"
137133

138134
# Copy arcade scripts used to build rootfs
139-
COPY --from=cross-scripts /eng/common/cross/ /scripts/eng/common/cross/
135+
COPY eng/common/cross/ /scripts/eng/common/cross/
140136

141137
# Clear PIP_INDEX_URL since it contains a short-lived token that should not persist in the final image
142138
ENV PIP_INDEX_URL=

0 commit comments

Comments
 (0)