Skip to content

Create a new shared library for Git, GitHub, and Azure DevOps automation #2152

@lbussell

Description

@lbussell

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.

Metadata

Metadata

Assignees

No fields configured for Feature.

Projects

Status
In Progress

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions