Skip to content

Add a fleet CI / Azure Pipelines template rewriter to the migration tool #1792

Description

@danielmeza

Description

The migration tool converts a legacy .nfproj project to SDK-style (dotnet nano migrate, including the fleet command across many repos), but it does not update each repo's CI to build the converted project. The library-migration spec describes a CI / Azure Pipelines template rewriter as part of the converter (the tooling spec captures this as the second half of component C8). Today a migrated lib-* repo still has a pipeline that runs nuget restore + MSBuild.exe and only understands .nfproj, so its CI breaks or no longer matches the SDK-style project after migration.

How to solve the problem

Add a CI template rewriter, runnable as part of (or alongside) the fleet command, that updates each migrated repo's pipeline to the SDK-style toolchain:

  • Rewrite the Azure DevOps pipeline (and any related CI config) from nuget restore + MSBuild.exe to dotnet build / dotnet pack / dotnet test.
  • Preserve repo-specific settings (signing, versioning via Nerdbank.GitVersioning, publish steps) and only change what the SDK-style build requires.
  • Keep it idempotent and reentrant, consistent with the converter.

Acceptance: after migration, a lib-* repo's pipeline builds, packs, and tests the SDK-style project on CI without manual edits; re-running the rewriter is a no-op.

Describe alternatives you've considered

  • Hand-edit each repo's CI during the fleet rollout. Does not scale to 100+ repos and is error-prone.
  • Ship a single shared pipeline template repos reference. Reasonable long-term, but still requires a per-repo rewrite step to adopt; this issue can emit either an inline rewrite or a reference to a shared template.

Additional context

Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions