Open
Description
Describe the bug
We broke an ordering contract with the ComputeContainerConfig target that the VSCode Docker Tools were depending on - see microsoft/vscode-docker#4558 for details.
The gist is that before p3, you could call ComputeContainerConfig and get all of the data about a container. But some of that data may var per-RID, so in p3 we broke it out into RID-specific Targets that would fire before each RID-specific container. This is problematic for debug tooling. We need to make sure that for single-RID use cases at least the runtime execution data can be computed before ComputeContainerConfig.
Today, single-RID:
graph TD
PublishContainer[PublishContainer] --> ContainerVerifySDKVersion[_ContainerVerifySDKVersion]
PublishContainer --> ComputeContainerConfig[ComputeContainerConfig]
PublishContainer --> CheckContainersPackage[_CheckContainersPackage]
PublishContainer --> PublishSingleContainer[_PublishSingleContainer]
ComputeContainerConfig --> ComputeBaseImage[ComputeContainerBaseImage]
PublishSingleContainer --> ComputeContainerExecutionArgs[_ComputeContainerExecutionArgs]
PublishSingleContainer --> CreateNewImage[CreateNewImage]
Today, multi-RID:
graph TD
PublishContainer[PublishContainer] --> ContainerVerifySDKVersion[_ContainerVerifySDKVersion]
PublishContainer --> ComputeContainerConfig[ComputeContainerConfig]
PublishContainer --> CheckContainersPackage[_CheckContainersPackage]
PublishContainer --> PublishMultiArchContainers[_PublishMultiArchContainers]
ComputeContainerConfig --> ComputeBaseImage[ComputeContainerBaseImage]
PublishMultiArchContainers --> ForEachRID{For each RID}
ForEachRID --> |Per RID| PublishSingleContainer[_PublishSingleContainer]
PublishSingleContainer --> ComputeContainerExecutionArgs[_ComputeContainerExecutionArgs]
PublishSingleContainer --> CreateNewImage[CreateNewImage Task]
PublishMultiArchContainers --> ParseItems[_ParseItemsForPublishingSingleContainer]
PublishMultiArchContainers --> CreateImageIndex[CreateImageIndex Task]
Proposed, single-RID:
graph TD
PublishContainer[PublishContainer] --> ContainerVerifySDKVersion[_ContainerVerifySDKVersion]
PublishContainer --> ComputeContainerConfig[ComputeContainerConfig]
PublishContainer --> CheckContainersPackage[_CheckContainersPackage]
PublishContainer --> PublishSingleContainer[_PublishSingleContainer]
ComputeContainerConfig --> ComputeBaseImage[ComputeContainerBaseImage]
ComputeContainerConfig --> ComputeContainerExecutionArgs[_ComputeContainerExecutionArgs]
PublishSingleContainer --> CreateNewImage[CreateNewImage]