All breaking changes and new features in eng/docker-tools will be documented in this file.
- Issue: #2002
Manifest lists are now created during Post_Build instead of during Publish. They are copied to the publish registry via ACR import along with the platform images, rather than being recreated from scratch during publish.
- Issue: #2029
cg-build-projects.yml now accepts skipDotNetInstall (boolean, default false) and
initSteps (stepList, default []) parameters. Setting skipDotNetInstall: true skips
the built-in SDK installation. Setting initSteps will execute those custom steps
at the beginning of the job.
setup-service-connections.yml has been removed. Azure DevOps no longer
issues OIDC tokens for service connections referenced in a separate stage.
Service connections are now referenced per-job via
reference-service-connections.yml.
How to update:
- Remove any
serviceConnectionsparameters passed to1es-official.ymlor1es-unofficial.yml- they are no longer accepted. - Remove any calls to
setup-service-connections.ymlfrom stage templates. - Non-registry service connections (e.g., kusto, marStatus) should be passed
via
additionalServiceConnectionsto the job templates that need them.
- Pull request: #1997
The PreBuildValidation job condition now checks the new preBuildTestScriptPath variable instead of testScriptPath.
This allows repos to independently control whether pre-build validation runs, without affecting functional tests.
The new variable defaults to $(testScriptPath), so existing repos that have pre-build tests are not affected.
Repos that do not have pre-build tests can set preBuildTestScriptPath to "" to skip the job entirely.
- Pull request: #2011
The PreBuildValidation job now uses preBuildTestScriptPath for test execution instead of testScriptPath.
Previously, the job condition was gated on preBuildTestScriptPath but the test execution step still used testScriptPath,
which meant PreBuildValidation could not be enabled independently when testScriptPath was empty.
Repos that do not have pre-build tests can set preBuildTestScriptPath to "" to skip the job entirely.
Authentication details (serviceConnection, resourceGroup, subscription) have been moved from individual registry endpoints into a centralized RegistryAuthentication list.
This fixes an issue where ACR authentication could fail when multiple service connections existed for the same registry.
Before: Each registry endpoint embedded its own authentication:
publishConfig:
BuildRegistry:
server: $(acr.server)
repoPrefix: "my-prefix/"
resourceGroup: $(resourceGroup)
subscription: $(subscription)
serviceConnection:
name: $(serviceConnectionName)
id: $(serviceConnection.id)
clientId: $(serviceConnection.clientId)
tenantId: $(tenant)
PublishRegistry:
server: $(acr.server)
repoPrefix: "publish/"
resourceGroup: $(resourceGroup)
subscription: $(subscription)
serviceConnection:
name: $(publishServiceConnectionName)
id: $(publishServiceConnection.id)
clientId: $(publishServiceConnection.clientId)
tenantId: $(tenant)After: Registry endpoints only contain server and repoPrefix. Authentication is centralized:
publishConfig:
BuildRegistry:
server: $(acr.server)
repoPrefix: "my-prefix/"
PublishRegistry:
server: $(acr.server)
repoPrefix: "publish/"
RegistryAuthentication:
- server: $(acr.server)
resourceGroup: $(resourceGroup)
subscription: $(subscription)
serviceConnection:
name: $(serviceConnectionName)
id: $(serviceConnection.id)
clientId: $(serviceConnection.clientId)
tenantId: $(tenant)How to update:
- Update any publishConfig parameters to match the new structure.
- Multiple registries can share authentication. If two registries use the same ACR server, only one entry is needed in
RegistryAuthentication. - The new structure should match ImageBuilder's Configuration Model.
- Multiple registries can share authentication. If two registries use the same ACR server, only one entry is needed in
- Update service connection setup (if using
setup-service-connections.yml):- The template now supports looking up service connections from
publishConfig.RegistryAuthentication - Use the new
usesRegistriesparameter to specify which registries need auth setup:- template: eng/docker-tools/templates/stages/setup-service-connections.yml parameters: publishConfig: ${{ variables.publishConfig }} usesRegistries: - $(buildRegistry.server) - $(publishRegistry.server)
- The template now supports looking up service connections from