Skip to content

Latest commit

 

History

History
91 lines (84 loc) · 9.86 KB

File metadata and controls

91 lines (84 loc) · 9.86 KB

Arcade-powered source-build implementation plan

To get each repo building with the new source-build sustainability plan, Arcade-Powered Source-Build, each repo will go through several stages. Some stages have dependencies on upstream repos, so this process will be completed in dependency order with some exceptions.

Below, the repo status is in a graph to show the dependencies and make it easy to tell which repos are ready to work on. There's also a table, for searchable and more detailed status. These will both be kept up to date.


source (img/implementation-plan-graph.dot)

Tier Repo Owner Tracking Issue Input intermediate packages available (Stage 1)
Local build infra merged
(Stage 2)
CI implemented
(Stage 3)
Artifacts greenlit
(Stage 4)
Prebuilt regressions blocked
sbrp source-build-reference-packages Dan Seefeldt ✔️ ✔️ ✔️ ✔️
Tools sourcelink Tomas Matousek ✔️ ✔️ ✔️ ✔️
Tools arcade Mark Wilkie ✔️ ✔️ ✔️ ✔️
1 application-insights1 ? ✔️ ✔️ ✔️ ✔️
1 cssparser1 ? ✔️ ✔️ ✔️ ✔️
1 humanizer1 ? ✔️ ✔️ ✔️ ✔️
1 netcorecli-fsc1 Chris Rummel ✔️ ✔️ ✔️ ✔️
1 newtonsoft-json1 Chris Rummel ✔️ ✔️ ✔️ ✔️
1 newtonsoft-json9011 Chris Rummel ✔️ ✔️ ✔️ ✔️
1 aspnet-xdt Vijay Ramakrishnan issue ✔️ ✔️ ✔️ ✔️
1 clicommandlineparser Sarah Oslund issue ✔️ ⏱ / ❗Blocked
1 command-line-api ? issue ✔️ ✔️ ✔️ ✔️
1 diagnostics Juan Hoyes issue ✔️ ✔️ CI issue
1 roslyn Fred Silberberg issue ✔️ ✔️ Patches issue
1 symreader Tomas Matousek issue ✔️ ✔️ ✔️ ✔️
1 test-templates ? issue ✔️ ✔️ ✔️ ✔️
1 xliff-tasks Mark Wilkie issue ✔️ ✔️ ✔️ ✔️
2 linker Dan Seefeldt issue ✔️ ✔️ ✔️ ✔️
2 msbuild Ben Villalobos issue PR / ❗Blocked
2 NuGet.Client Fernando Aguilar Reyes issue PR / ❗Blocked
2 runtime Jared Parsons issue
2 templating Vlada Shubina issue ✔️ ✔️ ✔️
3 roslyn-analyzers Jonathon Marolf issue ✔️ ✔️
4 aspnetcore John Luo issue ✔️ CI issue Patches issue
5 fsharp Brett Forsgren issue ✔️ Patches issue
5 sdk Sarah Oslund / Vijay Ramakrishnan(web) issue ✔️ CI issue Patches issue
5 vstest Jakub Jares issue Blocked
6 installer Sarah Oslund issue ✔️ CI issue Patches issue
Status Description
✔️ Complete
In progress
At Risk

1 — Source will be maintained in central dotnet/source-build repo. It is not feasible to add full arcade-powered source-build infrastructure in some cases.

Stage descriptions:

  • (1) Local build infra merged
    • (Source-build) Submit PR introducing local build infra. May include .patch files.
    • (Repo team) Review PR and merge.
      • Merging into main/master strongly preferred.
      • If a dev branch is created, the repo team must merge it into main/master before ending stage (3).
    • Exit criteria:
      • Local dev build works.
      • Source-build intermediate packages are produced.
        • Intermediate packages contain the same set of packages as the in-progress 6.0 branch or the 5.0 branch.
      • Prebuilts are reviewed (best effort basis).
        • It will be difficult to determine if all prebuilts are correct before we have the whole graph building.
        • Packages built earlier in the source-build graph should not be using external prebuilts if the source-build intermediates for those are ready.
      • If the target repo already has source-build CI, it is upgraded to ArPow.
    • After completing this step:
      • Log an issue in the target repo to remove source-build patches.
      • Log an issue in the target repo to enable source-build CI.
  • (2) CI implemented (PR + Official)
    • (Repo team) Submit PR adding source-build CI jobs and merge.
      • Let us know, and send us a link to an official build that includes the changes. We will start on (3).
    • Async (Repo team) Incorporate .patch files into repo.
      • High impact: if these patch files have conflicts, CI fails.
    • Exit criteria:
      • All source-build patches are removed.
      • Source-build CI in the target repo is green and runs on PRs and checkins.
  • (3) Artifacts greenlit for downstream usage
    • (Source-build) Validate "intermediate nupkg" artifact and logs.
    • (Source-build) Preliminary check for unexpected prebuilt usage.
    • (Source-build + repo team) Fix up problems if found.
    • Exit criteria:
      • CI is reviewed.
      • CI runs on release builds, checkins, and PRs.
      • Intermediate packages are produced and published to BAR.
      • Source-build team verifies that all expected packages are included in the intermediate packages.
  • (4) Prebuilt regressions blocked
    • (Source-build) Submit PR enabling prebuilt baseline enforcement.
      • Prebuilt binary usage is expected because this is a "production build", not a "tarball build".
      • Prebuilt usage baseline enforcement prevents prebuilt regression.
      • We will only do this once enforcement errors are actionable.
      • Exit criteria:
        • A prebuilt baseline is established with specific packages and versions (not wildcards).
        • New prebuilt detection is enabled in CI in the target repo.
    • (Repo team) Review PR and merge.