PowerToys/.pipelines
Dustin L. Howett ad1f20408c
Rewrite the entire Azure DevOps build system (#34984)
This pull request rewrites the entire Azure DevOps build system.

The guiding principles behind this rewrite are:

- No pipeline definitions should contain steps (or tasks) directly.
- All jobs should be in template files.
- Any set of steps that is reused across multiple jobs must be in
  template files.
- All artifact names can be customized (via a property called
  `artifactStem` on all templates that produce or consume artifacts).
- No compilation happens outside of the "Build" phase, to consolidate
  the production and indexing of PDBs.
- All step and job templates are named with `step` or `job` _first_,
  which disambiguates them in the templates directory.
- Most jobs can be run on different `pool`s, so that we can put
  expensive jobs on expensive build agents and cheap jobs on cheap
  build agents. Some jobs handle pool selection on their own, however.

Our original build pipelines used the `VSBuild` task _all over the
place._ This resulted in PowerToys being built in myriad ways, different
for every pipeline. There was an attempt at standardization early on,
where `ci.yml` consumed jobs and steps templates... but when
`release.yml` was added, all of that went out the window.

It's the same story as Terminal (https://github.com/microsoft/terminal/pull/15808).

The new pipelines are consistent and focus on a small, well-defined set
of jobs:

- `job-build-project`
    - This is the big one!
    - Takes a list of build configurations and platforms.
    - Produces an artifact named `build-PLATFORM-CONFIG` for the entire
      matrix of possibilities.
    - Builds all of the installers.
    - Optionally signs the output (all of the output).
    - Admittedly has a lot going on.
- `job-test-project`
    - Takes **one** build config and **one** platform.
    - Consumes `build-PLATFORM-CONFIG`
    - Selects its own pools (hardcoded) because it knows about
      architectures and must choose the right agent arch.
    - Runs tests (directly on the build agent).
- `job-publish-symbols-using-symbolrequestprod-api`
    - Consumes `**/*.pdb` from all prior build phases.
    - Uploads all PDBs in one artifact to Azure DevOps
    - Uses Microsoft's internal symbol publication REST API to submit
      stripped symbols to MSDL for public consumption.

Finally, this pull request has some additional benefits:

- Symbols are published to the private and public feeds at the same
  time, in the same step. They should be available in the public symbol
  server for public folks to debug against!
- We have all the underpinnings necessary to run tests on ARM64 build
  agents.
    - Right now, `ScreenResolutionUtility` is broken
    - I had to introduce a custom version of `UseDotNet` which would
      install the right architecture (🤦); see https://github.com/microsoft/azure-pipelines-tasks/issues/20300.
- All dotnet and nuget versioning is consolidated into a small set of
  step templates.
- This will provide a great place for us to handle versioning changes
  later, since all versioning happens in one place.
2024-09-25 09:23:58 -07:00
..
loc Switch to TouchdownBuildTask v3, which supports SNI cert auth (#32721) 2024-05-03 12:28:49 -07:00
v2 Rewrite the entire Azure DevOps build system (#34984) 2024-09-25 09:23:58 -07:00
applyXamlStyling.ps1 [Build]Fully enable XamlStyler (#31505) 2024-02-27 17:16:11 +00:00
CIPolicy.xml Add a new YAML release pipeline to replace the old CDPx one (#15039) 2021-12-17 18:15:31 -08:00
ESRPSigning_abstracted_utils_dll.json [Hosts][EnvVar][RegPreview]improve nuget packages (#32697) 2024-05-03 15:27:13 +01:00
ESRPSigning_core.json [Workspaces] Handle admin windows repositioning. (#34965) 2024-09-25 11:13:38 +02:00
ESRPSigning_DSC.json [DSC] Implement Microsoft.PowerToys.Configure DSCResource & winget support (#30918) 2024-04-02 00:09:47 +01:00
ESRPSigning_installer.json [installer] Support per-user installation (#24087) 2023-03-31 12:23:57 +02:00
ESRPSigning_vcm.json [General]Reduce installer size by flattening application paths (#27451) 2023-07-20 00:12:46 +01:00
InstallWinAppDriver.ps1 [FancyZones]UI testing that works in CI (#29453) 2024-03-22 12:10:10 +00:00
installWiX.ps1 [Deps]Update WiX to 3.14.1 (#32082) 2024-03-26 15:37:40 +00:00
packages.config [CDPx] update to use telemetry nuget package v2 (#3087) 2020-05-16 19:48:41 +02:00
release-nuget.config [Build]Centralize .NET NuGet Package Versions (#23727) 2023-02-13 17:10:33 +00:00
tsa.json build: fix the TSA configuration (#35023) 2024-09-23 14:25:16 -05:00
verifyAndSetLatestVCToolsVersion.ps1 [ci]Point VCToolsVersion to latest VC.CRT version instead of VC.Redist version (#31212) 2024-01-31 14:58:59 +00:00
verifyArm64Configuration.ps1 [Hosts][EnvVar][RegPreview]improve nuget packages (#32697) 2024-05-03 15:27:13 +01:00
verifyDepsJsonLibraryVersions.ps1 Bump cswinrt and ignore PowerToys dlls in verifyDepsJsonLibraryVersions.ps1 (#34297) 2024-08-14 18:07:43 +02:00
verifyNoticeMdAgainstNugetPackages.ps1 [Settings]New Landing Page Experimentation (#22365) 2023-02-15 02:38:53 +00:00
verifyNugetPackages.ps1 Fail build when nugets aren't consolidated (#22233) 2022-11-24 20:45:51 +01:00
verifyPossibleAssetConflicts.ps1 [General]Reduce installer size by flattening application paths (#27451) 2023-07-20 00:12:46 +01:00
versionAndSignCheck.ps1 [EnvVar][Hosts][RegPrev]Decouple and refactor to make it "packable" as nuget package (#32604) 2024-04-26 18:41:44 +01:00
versionSetting.ps1 [ContextMenu Packages] Prefix identity and app id with Microsoft.PowerToys (#20881) 2022-09-28 12:40:11 +02:00