docker-tools icon indicating copy to clipboard operation
docker-tools copied to clipboard

Document known edge cases for infrastructure operating on Manifest and ImageArtifactDetails

Open lbussell opened this issue 1 year ago • 2 comments

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:

  1. Adding images
  2. Removing images
  3. Adding tags
  4. Removing tags
  5. All images cached
  6. No images cached
  7. Retry when the command failed
  8. Retry when a previous pipeline step failed
  9. Retry when a subsequent pipeline step failed (meaning - commands should be idempotent)
  10. ImageInfo is updated mid-publish
  11. 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.

lbussell avatar Nov 11 '24 20:11 lbussell

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

lbussell avatar Nov 11 '24 20:11 lbussell

[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.

lbussell avatar Nov 18 '24 19:11 lbussell