dotnet / dotnet/arcade-services

Modernize dependency and version file handling in Maestro

Open
#4,891 2 comments 0 reactions 0 assignees View on GitHub
Dominant language
C#
Stars
86
Forks
86
Avg merge
1d 8h
Merged PRs (30d)
35

Description

## Context

Flowing dependencies means updating several files:
- `eng/Version.Details.xml`
- `eng/Versions.props`
- `global.json`
- `NuGet.config`
- `.config/dotnet-tools.json`

This system has been in place since 2019 or longer and several new features around declaring dependency versions have been introduced such as [Central Package Management](https://learn.microsoft.com/en-us/nuget/consume-packages/central-package-management) or [Package Source Mapping](https://learn.microsoft.com/en-us/nuget/consume-packages/package-source-mapping).

It is time to incorporate support for these features into Maestro and modernize the process.

Firstly, we need a design on how Maestro will handle `CPM` with regards to existing `Versions.props` - some repos use both and include `Versions.props` in `Directory.Packages.props` and then use the variables. But maybe that is not necessary.

Secondly, there are also further requirements around managing `Versions.props`:
- Today, `Versions.props` contain both properties updated by automation that match dependencies declared in `Versions.Details.xml`. However, these files are often also manually managed by people and contain custom logic, variables and other things. It would be good to split this file into one which is purely managed by automation (Maestro) and the user-defined one.
- Further, not all items from `Version.Details.xml` necessarily need a property in `Versions.props`. Sometimes, it's enough to have the version in `Versions.Details.xml` and in `Directory.Packages.props`. We shouldn't force creation of properties in `Versions.props` when those are not required.

## Goals

- Gather requirements and design how a modern approach to dependency declaration should look like.
- Implement the support for CPM, PSM and for quality of life improvements around version file handling (e.g. split files, do not force properties, ...).
- Make sure the system is backward compatible.

Contributor guide

No contributing guide indexed for this repository

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.