Document known edge cases for infrastructure operating on Manifest and ImageArtifactDetails
Context: https://github.com/dotnet/docker-tools/issues/1493#issuecomment-2468542699
We should have some infrastructure or documentation that details the common edge cases that new ImageBuilder features need to test against. Some examples include:
- Adding images
- Removing images
- Adding tags
- Removing tags
- All images cached
- No images cached
- Retry when the command failed
- Retry when a previous pipeline step failed
- Retry when a subsequent pipeline step failed (meaning - commands should be idempotent)
- ImageInfo is updated mid-publish
- Partial version update (e.g. SDK-only release)
This documentation should guide future implementation of tests. For the next feature we implement, we may find it useful to add some common definitions of test data for these scenarios.
Documentation should go in README.md, src/Microsoft.DotNet.ImageBuilder/README.md, or a new CONTRIBUTING.md file.
Prior bugs that we should take into account (that we are trying to avoid in the future):
Matrix trimming:
- https://github.com/dotnet/docker-tools/issues/1493
- https://github.com/dotnet/docker-tools/issues/1481
- https://github.com/dotnet/docker-tools/issues/1476
Lifecycle annotations:
- https://github.com/dotnet/docker-tools/issues/1484
- https://github.com/dotnet/docker-tools/issues/1470
- https://github.com/dotnet/docker-tools/issues/1433
- https://github.com/dotnet/docker-tools/issues/1417
[Triage] Documentation is a good low-cost first step here. The long term aspiration should be to have a library of test "scenarios" covering cases like these, which we can share between many commands. That would also make the documentation obsolete and we could focus on maintaining and expanding the library of test cases shared between commands.