Skip to content

Commit 7168a54

Browse files
[main] Update common Docker engineering infrastructure with latest (#1139)
1 parent 744732d commit 7168a54

13 files changed

+139
-47
lines changed

eng/common/templates/jobs/build-images.yml

Lines changed: 12 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -88,30 +88,36 @@ jobs:
8888
condition: eq(variables.imageBuilderBuildArgs, '')
8989
displayName: Initialize Image Builder Build Args
9090
- powershell: |
91+
New-Item -Path $(imageInfoHostDir) -ItemType Directory -Force
92+
9193
# Reference the existing imageBuilderBuildArgs variable as an environment variable rather than injecting it directly
9294
# with the $(imageBuilderBuildArgs) syntax. This is to avoid issues where the string may contain single quotes $ chars
9395
# which really mess up assigning to a variable. It would require assigning the string with single quotes but also needing
9496
# to escape the single quotes that are in the string which would need to be done outside the context of PowerShell. Since
9597
# all we need is for that value to be in a PowerShell variable, we can get that by the fact that AzDO automatically creates
9698
# the environment variable for us.
97-
New-Item -Path $(imageInfoHostDir) -ItemType Directory -Force
9899
$imageBuilderBuildArgs = "$env:IMAGEBUILDERBUILDARGS $(imageBuilder.queueArgs) --image-info-output-path $(imageInfoContainerDir)/$(legName)-image-info.json"
99100
if ($env:SYSTEM_TEAMPROJECT -eq "${{ parameters.internalProjectName }}" -and $env:BUILD_REASON -ne "PullRequest") {
100-
$imageBuilderBuildArgs = "$imageBuilderBuildArgs --registry-override $(acr.server) --repo-prefix $(stagingRepoPrefix) --source-repo-prefix $(mirrorRepoPrefix) --push"
101+
$imageBuilderBuildArgs = "$imageBuilderBuildArgs --registry-override $(acr-staging.server) --repo-prefix $(stagingRepoPrefix) --source-repo-prefix $(mirrorRepoPrefix) --push"
102+
}
103+
104+
if ($env:SYSTEM_TEAMPROJECT -eq "${{ parameters.publicProjectName }}" -and ${env:PUBLIC-MIRROR_SERVER} -ne "") {
105+
$imageBuilderBuildArgs = "$imageBuilderBuildArgs --base-override-regex '^(?!mcr\.microsoft\.com)' --base-override-sub '$(public-mirror.server)/'"
101106
}
102107
103108
# If the pipeline isn't configured to disable the cache and a build variable hasn't been set to disable the cache
104109
if ("$(pipelineDisabledCache)" -ne "true" -and $env:NOCACHE -ne "true") {
105110
$imageBuilderBuildArgs = "$imageBuilderBuildArgs --image-info-source-path $(versionsBasePath)$(imageInfoVersionsPath)"
106111
}
107112
113+
echo "imageBuilderBuildArgs: $imageBuilderBuildArgs"
108114
echo "##vso[task.setvariable variable=imageBuilderBuildArgs]$imageBuilderBuildArgs"
109115
displayName: Set Image Builder Build Args
110116
- template: /eng/common/templates/steps/run-imagebuilder.yml@self
111117
parameters:
112118
name: BuildImages
113119
displayName: Build Images
114-
serviceConnection: $(acr.serviceConnectionName)
120+
serviceConnection: $(acr-staging.serviceConnectionName)
115121
internalProjectName: ${{ parameters.internalProjectName }}
116122
dockerClientOS: ${{ parameters.dockerClientOS }}
117123
args: >
@@ -124,8 +130,8 @@ jobs:
124130
--retry
125131
--source-repo $(publicGitRepoUri)
126132
--digests-out-var 'builtImages'
127-
--acr-subscription '$(acr.subscription)'
128-
--acr-resource-group '$(acr.resourceGroup)'
133+
--acr-subscription '$(acr-staging.subscription)'
134+
--acr-resource-group '$(acr-staging.resourceGroup)'
129135
$(manifestVariables)
130136
$(imageBuilderBuildArgs)
131137
- template: /eng/common/templates/steps/publish-artifact.yml@self
@@ -172,7 +178,7 @@ jobs:
172178
# Manifest tool docs: https://eng.ms/docs/cloud-ai-platform/devdiv/one-engineering-system-1es/1es-docs/secure-supply-chain/custom-sbom-generation-workflows
173179
$images -Split ',' | ForEach-Object {
174180
echo "Generating SBOM for $_";
175-
$formattedImageName = $_.Replace('$(acr.server)/$(stagingRepoPrefix)', "").Replace('/', '_').Replace(':', '_');
181+
$formattedImageName = $_.Replace('$(acr-staging.server)/$(stagingRepoPrefix)', "").Replace('/', '_').Replace(':', '_');
176182
$sbomChildDir = "$(sbomDirectory)/$formattedImageName";
177183
New-Item -Type Directory -Path $sbomChildDir > $null;
178184
& $dotnetPath "$manifestToolDllPath" `
Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,30 @@
1+
parameters:
2+
- name: name
3+
type: string
4+
default: null
5+
- name: pool
6+
type: object
7+
default: {}
8+
- name: customInitSteps
9+
type: stepList
10+
default: []
11+
- name: additionalOptions
12+
type: string
13+
default: ''
14+
- name: continueOnError
15+
type: string
16+
default: false
17+
18+
jobs:
19+
- template: /eng/common/templates/jobs/copy-base-images.yml@self
20+
parameters:
21+
name: ${{ parameters.name }}
22+
pool: ${{ parameters.pool }}
23+
customInitSteps: ${{ parameters.customInitSteps }}
24+
additionalOptions: ${{ parameters.additionalOptions }}
25+
acr:
26+
server: $(acr-staging.server)
27+
serviceConnection: $(acr-staging.serviceConnectionName)
28+
subscription: $(acr-staging.subscription)
29+
resourceGroup: $(acr-staging.resourceGroup)
30+
repoPrefix: $(mirrorRepoPrefix)
Lines changed: 28 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,28 @@
11
parameters:
2-
name: null
3-
pool: {}
4-
additionalOptions: null
5-
publicProjectName: null
6-
internalProjectName: null
7-
customInitSteps: []
2+
- name: name
3+
type: string
4+
default: null
5+
- name: pool
6+
type: object
7+
default: {}
8+
- name: acr
9+
type: object
10+
default: null
11+
- name: repoPrefix
12+
type: string
13+
default: null
14+
- name: customInitSteps
15+
type: stepList
16+
default: []
17+
- name: additionalOptions
18+
type: string
19+
default: ''
20+
- name: continueOnError
21+
type: string
22+
default: false
23+
- name: forceDryRun
24+
type: boolean
25+
default: false
826

927
jobs:
1028
- job: ${{ parameters.name }}
@@ -14,7 +32,8 @@ jobs:
1432
- ${{ parameters.customInitSteps }}
1533
- template: /eng/common/templates/steps/copy-base-images.yml@self
1634
parameters:
35+
acr: ${{ parameters.acr }}
36+
repoPrefix: ${{ parameters.repoPrefix }}
1737
additionalOptions: ${{ parameters.additionalOptions }}
18-
publicProjectName: ${{ parameters.publicProjectName }}
19-
internalProjectName: ${{ parameters.internalProjectName }}
20-
continueOnError: true
38+
continueOnError: ${{ parameters.continueOnError }}
39+
forceDryRun: ${{ parameters.forceDryRun }}

eng/common/templates/jobs/publish.yml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -74,6 +74,7 @@ jobs:
7474
'$(acr.subscription)'
7575
'$(acr.resourceGroup)'
7676
'$(stagingRepoPrefix)'
77+
'$(acr-staging.server)'
7778
--os-type '*'
7879
--architecture '*'
7980
--repo-prefix '$(publishRepoPrefix)'

eng/common/templates/stages/build-test-publish-repo.yml

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -64,13 +64,11 @@ stages:
6464
echo "##vso[task.setvariable variable=osVersions]"
6565
echo "##vso[task.setvariable variable=architecture]"
6666
displayName: Initialize Test Variables
67-
- template: /eng/common/templates/jobs/copy-base-images.yml@self
67+
- template: /eng/common/templates/jobs/copy-base-images-staging.yml@self
6868
parameters:
6969
name: CopyBaseImages
7070
pool: ${{ parameters.linuxAmd64Pool }}
7171
additionalOptions: "--manifest '$(manifest)' $(imageBuilder.pathArgs) $(manifestVariables)"
72-
publicProjectName: ${{ parameters.publicProjectName }}
73-
internalProjectName: ${{ parameters.internalProjectName }}
7472
customInitSteps: ${{ parameters.customCopyBaseImagesInitSteps }}
7573
- template: /eng/common/templates/jobs/generate-matrix.yml@self
7674
parameters:
Lines changed: 8 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,21 +1,25 @@
11
parameters:
22
repo: null
3+
subscription: null
4+
resourceGroup: null
5+
acr: null
36
action: null
47
age: null
58
customArgs: ""
9+
serviceConnection: null
610
internalProjectName: null
711
steps:
812
- template: /eng/common/templates/steps/run-imagebuilder.yml@self
913
parameters:
1014
displayName: Clean ACR Images - ${{ parameters.repo }}
11-
serviceConnection: $(acr.serviceConnectionName)
15+
serviceConnection: ${{ parameters.serviceConnection }}
1216
internalProjectName: ${{ parameters.internalProjectName }}
1317
args: >
1418
cleanAcrImages
1519
${{ parameters.repo }}
16-
$(acr.subscription)
17-
$(acr.resourceGroup)
18-
$(acr.server)
20+
${{ parameters.subscription }}
21+
${{ parameters.resourceGroup }}
22+
${{ parameters.acr }}
1923
--action ${{ parameters.action }}
2024
--age ${{ parameters.age }}
2125
${{ parameters.customArgs }}
Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
parameters:
2+
- name: additionalOptions
3+
type: string
4+
default: null
5+
- name: continueOnError
6+
type: string
7+
default: false
8+
9+
steps:
10+
- template: /eng/common/templates/steps/copy-base-images.yml@self
11+
parameters:
12+
additionalOptions: ${{ parameters.additionalOptions }}
13+
continueOnError: ${{ parameters.continueOnError }}
14+
repoPrefix: $(mirrorRepoPrefix)
15+
acr:
16+
resourceGroup: $(acr-staging.resourceGroup)
17+
server: $(acr-staging.server)
18+
serviceConnection: $(acr-staging.serviceConnectionName)
19+
subscription: $(acr-staging.subscription)

eng/common/templates/steps/copy-base-images.yml

Lines changed: 27 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -1,29 +1,44 @@
11
parameters:
2-
additionalOptions: null
3-
publicProjectName: null
4-
internalProjectName: null
5-
continueOnError: false
2+
- name: acr
3+
type: object
4+
default:
5+
server: ""
6+
serviceConnection: ""
7+
subscription: ""
8+
resourceGroup: ""
9+
- name: repoPrefix
10+
type: string
11+
default: null
12+
- name: additionalOptions
13+
type: string
14+
default: ""
15+
- name: continueOnError
16+
type: string
17+
default: false
18+
- name: forceDryRun
19+
type: boolean
20+
default: false
621

722
steps:
8-
- ${{ if or(eq(variables['System.TeamProject'], parameters.publicProjectName), eq(variables['Build.Reason'], 'PullRequest')) }}:
9-
- template: /eng/common/templates/steps/set-dry-run.yml@self
23+
- ${{ if or(eq(parameters.forceDryRun, true), eq(variables['System.TeamProject'], 'public'), eq(variables['Build.Reason'], 'PullRequest')) }}:
24+
- script: echo "##vso[task.setvariable variable=dryRunArg]--dry-run"
1025
- template: /eng/common/templates/steps/run-imagebuilder.yml@self
1126
parameters:
1227
displayName: Copy Base Images
13-
serviceConnection: $(acr.serviceConnectionName)
28+
serviceConnection: '${{ parameters.acr.serviceConnection }}'
1429
continueOnError: ${{ parameters.continueOnError }}
15-
internalProjectName: ${{ parameters.internalProjectName }}
30+
internalProjectName: 'internal'
1631
# Use environment variable to reference $(dryRunArg). Since $(dryRunArg) might be undefined,
1732
# PowerShell will treat the Azure Pipelines variable macro syntax as a command and throw an
1833
# error
1934
args: >
2035
copyBaseImages
21-
'$(acr.subscription)'
22-
'$(acr.resourceGroup)'
36+
'${{ parameters.acr.subscription }}'
37+
'${{ parameters.acr.resourceGroup }}'
2338
$(dockerHubRegistryCreds)
2439
$(customCopyBaseImagesArgs)
25-
--repo-prefix $(mirrorRepoPrefix)
26-
--registry-override '$(acr.server)'
40+
--repo-prefix '${{ parameters.repoPrefix }}'
41+
--registry-override '${{ parameters.acr.server }}'
2742
--os-type 'linux'
2843
--architecture '*'
2944
$env:DRYRUNARG

eng/common/templates/steps/test-images-linux-client.yml

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,7 @@ steps:
2222
optionalTestArgs="$optionalTestArgs -TestCategories pre-build"
2323
else
2424
if [ "${{ variables['System.TeamProject'] }}" == "${{ parameters.internalProjectName }}" ] && [ "${{ variables['Build.Reason'] }}" != "PullRequest" ]; then
25-
optionalTestArgs="$optionalTestArgs -PullImages -Registry $(acr.server) -RepoPrefix $(stagingRepoPrefix) -ImageInfoPath $(artifactsPath)/image-info.json"
25+
optionalTestArgs="$optionalTestArgs -PullImages -Registry $(acr-staging.server) -RepoPrefix $(stagingRepoPrefix) -ImageInfoPath $(artifactsPath)/image-info.json"
2626
fi
2727
if [ "$REPOTESTARGS" != "" ]; then
2828
optionalTestArgs="$optionalTestArgs $REPOTESTARGS"
@@ -45,13 +45,13 @@ steps:
4545
- template: /eng/common/templates/steps/run-pwsh-with-auth.yml@self
4646
parameters:
4747
displayName: Docker login
48-
serviceConnection: $(acr.serviceConnectionName)
48+
serviceConnection: $(acr-staging.serviceConnectionName)
4949
condition: and(succeeded(), ${{ parameters.condition }})
5050
command: >
5151
$azLoginArgs = '--service-principal --tenant $env:AZURE_TENANT_ID -u $env:AZURE_CLIENT_ID --federated-token $env:AZURE_FEDERATED_TOKEN';
5252
docker exec -e AZURE_TENANT_ID=$env:tenantId -e AZURE_CLIENT_ID=$env:servicePrincipalId -e AZURE_FEDERATED_TOKEN=$env:idToken $(testRunner.container) pwsh
5353
-File $(engCommonRelativePath)/Invoke-WithRetry.ps1
54-
"az login $azLoginArgs; az acr login -n $(acr.server)"
54+
"az login $azLoginArgs; az acr login -n $(acr-staging.server)"
5555
- ${{ if eq(parameters.preBuildValidation, 'false') }}:
5656
- template: /eng/common/templates/steps/download-build-artifact.yml@self
5757
parameters:
@@ -73,7 +73,7 @@ steps:
7373
displayName: Test Images
7474
condition: and(succeeded(), ${{ parameters.condition }})
7575
- ${{ if and(eq(variables['System.TeamProject'], parameters.internalProjectName), ne(variables['Build.Reason'], 'PullRequest')) }}:
76-
- script: docker exec $(testRunner.container) docker logout $(acr.server)
76+
- script: docker exec $(testRunner.container) docker logout $(acr-staging.server)
7777
displayName: Docker logout
7878
condition: and(always(), ${{ parameters.condition }})
7979
continueOnError: true

eng/common/templates/steps/test-images-windows-client.yml

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -13,17 +13,17 @@ steps:
1313
- template: /eng/common/templates/steps/run-pwsh-with-auth.yml@self
1414
parameters:
1515
displayName: Docker login
16-
serviceConnection: $(acr.serviceConnectionName)
16+
serviceConnection: $(acr-staging.serviceConnectionName)
1717
dockerClientOS: windows
1818
condition: and(succeeded(), ${{ parameters.condition }})
1919
command: >
2020
az login --service-principal --tenant $env:tenantId -u $env:servicePrincipalId --federated-token $env:idToken;
21-
$accessToken = $(az acr login -n $(acr.server) --expose-token --query accessToken --output tsv);
22-
docker login $(acr.server) -u 00000000-0000-0000-0000-000000000000 -p $accessToken
21+
$accessToken = $(az acr login -n $(acr-staging.server) --expose-token --query accessToken --output tsv);
22+
docker login $(acr-staging.server) -u 00000000-0000-0000-0000-000000000000 -p $accessToken
2323
- ${{ parameters.customInitSteps }}
2424
- powershell: |
2525
if ("${{ variables['System.TeamProject'] }}" -eq "${{ parameters.internalProjectName }}" -and "${{ variables['Build.Reason'] }}" -ne "PullRequest") {
26-
$optionalTestArgs="$optionalTestArgs -PullImages -Registry $env:ACR_SERVER -RepoPrefix $env:STAGINGREPOPREFIX -ImageInfoPath $(artifactsPath)/image-info.json"
26+
$optionalTestArgs="$optionalTestArgs -PullImages -Registry ${env:ACR-STAGING_SERVER} -RepoPrefix $env:STAGINGREPOPREFIX -ImageInfoPath $(artifactsPath)/image-info.json"
2727
}
2828
if ($env:REPOTESTARGS) {
2929
$optionalTestArgs += " $env:REPOTESTARGS"
@@ -50,7 +50,7 @@ steps:
5050
displayName: Test Images
5151
condition: and(succeeded(), ${{ parameters.condition }})
5252
- ${{ if and(eq(variables['System.TeamProject'], parameters.internalProjectName), ne(variables['Build.Reason'], 'PullRequest')) }}:
53-
- script: docker logout $(acr.server)
53+
- script: docker logout $(acr-staging.server)
5454
displayName: Docker logout
5555
condition: and(always(), ${{ parameters.condition }})
5656
continueOnError: true

0 commit comments

Comments
 (0)