Background: #1658
Microsoft.DotNet.VersionTools used to be part of Arcade, but it will no longer recieve any updates. Furthermore, it has bugs that will not be fixed (dotnet/dotnet-docker#5397, etc.).
Furthermore, while Microsoft.DotNet.VersionTools.Automation provides wrappers/abstractions over some basic Git and Azure DevOps automation tasks, they are still rather primitive. As an automation author, you still need to author your own automation logic.
Proposal: Create a new shared library, Microsoft.DotNet.DockerTools.Automation with the following features:
- Use one common abstraction over GitHub and Azure DevOps
- Declarative/desired state style interface
- Handle common scenarios/edge cases with automated PRs, configurable:
- PR already exists: force push or add another commit on top?
- PR is out of date: rebase, merge, or update?
- Foreign commits: add more commits on top, or stop and leave a comment?
- etc.
Scope: This library would be used in this repo as well as in dotnet/docker's update-dependencies tool.
Alternatives considered: Update-dependencies currently uses DarcLib, from arcade-services. It provides some basic Git wrapper primitives. However, it does not have a higher-level API that makes understanding and writing automation easy - its automation is highly tailored towards building the .NET product itself. Additionally, its automation libraries are coupled in the same package with the .NET BAR and Maestro libraries, which are not needed in ImageBuilder.
Background: #1658
Microsoft.DotNet.VersionToolsused to be part of Arcade, but it will no longer recieve any updates. Furthermore, it has bugs that will not be fixed (dotnet/dotnet-docker#5397, etc.).Furthermore, while
Microsoft.DotNet.VersionTools.Automationprovides wrappers/abstractions over some basic Git and Azure DevOps automation tasks, they are still rather primitive. As an automation author, you still need to author your own automation logic.Proposal: Create a new shared library,
Microsoft.DotNet.DockerTools.Automationwith the following features:Scope: This library would be used in this repo as well as in dotnet/docker's update-dependencies tool.
Alternatives considered: Update-dependencies currently uses DarcLib, from arcade-services. It provides some basic Git wrapper primitives. However, it does not have a higher-level API that makes understanding and writing automation easy - its automation is highly tailored towards building the .NET product itself. Additionally, its automation libraries are coupled in the same package with the .NET BAR and Maestro libraries, which are not needed in ImageBuilder.