Skip to content

Commit 55e73c5

Browse files
[main] Update common Docker engineering infrastructure with latest (#1310)
1 parent 6807232 commit 55e73c5

3 files changed

Lines changed: 55 additions & 2 deletions

File tree

eng/docker-tools/CHANGELOG.md

Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,36 @@ All breaking changes and new features in `eng/docker-tools` will be documented i
44

55
---
66

7+
## 2026-06-11: Configurable per-registry referrer-lookup rate limit
8+
9+
- Issue: [#2141](https://github.com/dotnet/docker-tools/issues/2141)
10+
11+
ImageBuilder now rate limits only OCI referrer lookups (the ACR
12+
`/v2/<repo>/referrers/<digest>` endpoint), instead of throttling and bounding the concurrency of all
13+
ACR operations. All other ACR operations rely on the standard HTTP retry behavior, which retries on
14+
HTTP 429 and respects `Retry-After` headers. This significantly speeds up image copying during
15+
publishing.
16+
17+
The referrer-lookup limit defaults to 250 requests per 60-second window and can be configured per
18+
registry via an optional `referrerRequestsPerMinute` field on each `RegistryAuthentication` entry in
19+
`publishConfig`:
20+
21+
```yaml
22+
RegistryAuthentication:
23+
- server: $(acr.server)
24+
resourceGroup: $(acr.resourceGroup)
25+
subscription: $(acr.subscription)
26+
referrerRequestsPerMinute: 1000
27+
serviceConnection:
28+
name: $(publish.serviceConnectionName)
29+
...
30+
```
31+
32+
This field is optional; when omitted, the 250/60s default is used. No action is required for
33+
existing configurations.
34+
35+
---
36+
737
## 2026-04-02: Extra Docker build options can be passed through ImageBuilder
838

939
- Pull request: [#2063](https://github.com/dotnet/docker-tools/pull/2063)

eng/docker-tools/DEV-GUIDE.md

Lines changed: 24 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -143,6 +143,7 @@ Build Stage
143143
144144
Post_Build Stage
145145
├── Merge image info files
146+
├── Create multi-arch manifests
146147
└── Consolidate SBOMs
147148
148149
@@ -191,13 +192,35 @@ Common patterns:
191192
- `"publish"` - Publish only (when re-running a failed publish from a previous build)
192193
- `"build,test,sign,publish"` - Full pipeline
193194
194-
**Note:** The `Post_Build` stage is implicitly included whenever `build` is in the stages list. You don't need to specify it separately—it automatically runs after Build to merge image info files and consolidate SBOMs.
195+
**Note:** The `Post_Build` stage is implicitly included whenever `build` is in the stages list. You don't need to specify it separately—it automatically runs after Build to merge image info files, create and validate multi-arch manifests, and consolidate SBOMs.
195196

196197
The stages variable is useful for:
197198
- Re-running just the publish stage after fixing a transient failure
198199
- Skipping tests during initial development
199200
- Running isolated stages for debugging
200201

202+
### Decoupling build OS from the base image OS
203+
204+
By default, a platform's `osVersion` represents the base image OS version, but also determines what
205+
build leg an image is built in. This can cause problems when build image and base image don't match
206+
up. For example, building a .NET app on Windows Server 2025 and copying the artifacts into a
207+
Windows Server 2019 base image won't work, because the build matrix generation will attempt to
208+
build the image on the Server 2019 build leg (which can't run Server 2025 images).
209+
210+
To fix this, set the optional `buildOsVersion` field in order to override only the OS used in the
211+
build matrix generation. Here is an example of building a Windows Server 2019 image using Windows
212+
Server 2025:
213+
214+
```jsonc
215+
{
216+
// ...
217+
"os": "windows",
218+
"osVersion": "windowsservercore-ltsc2019",
219+
"buildOsVersion": "windowsservercore-ltsc2025"
220+
// ...
221+
}
222+
```
223+
201224
### Image Info Files: The Build's Memory
202225

203226
Image info files (defined by [`ImageArtifactDetails`](https://github.com/dotnet/docker-tools/blob/main/src/ImageBuilder/Models/Image/ImageArtifactDetails.cs)) are the mechanism that tracks what was built:

eng/docker-tools/templates/variables/docker-images.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
variables:
2-
imageNames.imageBuilderName: mcr.microsoft.com/dotnet-buildtools/image-builder:2986591
2+
imageNames.imageBuilderName: mcr.microsoft.com/dotnet-buildtools/image-builder:3002630
33
imageNames.imageBuilder: $(imageNames.imageBuilderName)
44
imageNames.imageBuilder.withrepo: imagebuilder-withrepo:$(Build.BuildId)-$(System.JobId)
55
imageNames.testRunner: mcr.microsoft.com/dotnet-buildtools/prereqs:azurelinux3.0-docker-testrunner

0 commit comments

Comments
 (0)