parameters: additionalBuildArguments: '' steps: - checkout: self fetchDepth: 1 submodules: true clean: true - task: UseDotNet@2 displayName: 'Use .NET 7 SDK' inputs: packageType: sdk version: '7.x' - task: PowerShell@2 displayName: Verify XAML formatting inputs: filePath: '$(build.sourcesdirectory)\.pipelines\applyXamlStyling.ps1' arguments: -Passive pwsh: true - task: PowerShell@2 displayName: Verify Nuget package versions for PowerToys.sln inputs: filePath: '$(build.sourcesdirectory)\.pipelines\verifyNugetPackages.ps1' arguments: -solution '$(build.sourcesdirectory)\PowerToys.sln' pwsh: true - task: PowerShell@2 displayName: Verify Arm64 configuration for PowerToys.sln inputs: filePath: '$(build.sourcesdirectory)\.pipelines\verifyArm64Configuration.ps1' arguments: -solution '$(build.sourcesdirectory)\PowerToys.sln' pwsh: true - task: PowerShell@2 displayName: Verify Arm64 configuration for BugReportTool.sln inputs: filePath: '$(build.sourcesdirectory)\.pipelines\verifyArm64Configuration.ps1' arguments: -solution '$(build.sourcesdirectory)\tools\BugReportTool\BugReportTool.sln' pwsh: true - task: PowerShell@2 displayName: Verify Arm64 configuration for WebcamReportTool.sln inputs: filePath: '$(build.sourcesdirectory)\.pipelines\verifyArm64Configuration.ps1' arguments: -solution '$(build.sourcesdirectory)\tools\WebcamReportTool\WebcamReportTool.sln' pwsh: true - task: PowerShell@2 displayName: Verify Arm64 configuration for StylesReportTool.sln inputs: filePath: '$(build.sourcesdirectory)\.pipelines\verifyArm64Configuration.ps1' arguments: -solution '$(build.sourcesdirectory)\tools\StylesReportTool\StylesReportTool.sln' pwsh: true - task: PowerShell@2 displayName: Verify Arm64 configuration for PowerToysSetup.sln inputs: filePath: '$(build.sourcesdirectory)\.pipelines\verifyArm64Configuration.ps1' arguments: -solution '$(build.sourcesdirectory)\installer\PowerToysSetup.sln' pwsh: true - task: UseDotNet@2 displayName: 'Use .NET 8 SDK' inputs: packageType: sdk version: '8.x' includePreviewVersions: true - task: VisualStudioTestPlatformInstaller@1 displayName: Ensure VSTest Platform - task: VSBuild@1 displayName: 'Build PowerToys.sln' inputs: solution: '**\PowerToys.sln' vsVersion: 17.0 platform: '$(BuildPlatform)' configuration: '$(BuildConfiguration)' msbuildArgs: -restore ${{ parameters.additionalBuildArguments }} maximumCpuCount: true - task: VSBuild@1 displayName: 'Build BugReportTool.sln' inputs: solution: '**\BugReportTool.sln' vsVersion: 17.0 platform: '$(BuildPlatform)' configuration: '$(BuildConfiguration)' msbuildArgs: -restore ${{ parameters.additionalBuildArguments }} maximumCpuCount: true - task: VSBuild@1 displayName: 'Build WebcamReportTool.sln' inputs: solution: '**\WebcamReportTool.sln' vsVersion: 17.0 platform: '$(BuildPlatform)' configuration: '$(BuildConfiguration)' msbuildArgs: -restore ${{ parameters.additionalBuildArguments }} maximumCpuCount: true - task: VSBuild@1 displayName: 'Build StylesReportTool.sln' inputs: solution: '**\StylesReportTool.sln' vsVersion: 17.0 platform: '$(BuildPlatform)' configuration: '$(BuildConfiguration)' msbuildArgs: -restore ${{ parameters.additionalBuildArguments }} maximumCpuCount: true - task: PowerShell@2 displayName: Download and install WiX 3.14 development build inputs: targetType: filePath filePath: '$(build.sourcesdirectory)\.pipelines\installWiX.ps1' - task: VSBuild@1 displayName: 'Build PowerToys per-machine MSI' inputs: solution: '**\installer\PowerToysSetup.sln' vsVersion: 17.0 platform: '$(BuildPlatform)' configuration: '$(BuildConfiguration)' msbuildArgs: /t:PowerToysInstaller -restore ${{ parameters.additionalBuildArguments }} maximumCpuCount: true - task: VSBuild@1 displayName: 'Build PowerToys per-machine Bootstrapper' inputs: solution: '**\installer\PowerToysSetup.sln' vsVersion: 17.0 platform: '$(BuildPlatform)' configuration: '$(BuildConfiguration)' msbuildArgs: /t:PowerToysBootstrapper ${{ parameters.additionalBuildArguments }} clean: false maximumCpuCount: true - task: PowerShell@2 displayName: Clean installer dir before building per-user installer inputs: targetType: inline script: git clean -xfd -e *exe -- .\installer\ pwsh: true - task: VSBuild@1 displayName: 'Build PowerToys per-user MSI' inputs: solution: '**\installer\PowerToysSetup.sln' vsVersion: 17.0 platform: '$(BuildPlatform)' configuration: '$(BuildConfiguration)' msbuildArgs: /t:PowerToysInstaller -restore ${{ parameters.additionalBuildArguments }} /p:PerUser=true maximumCpuCount: true - task: VSBuild@1 displayName: 'Build PowerToys per-user Bootstrapper' inputs: solution: '**\installer\PowerToysSetup.sln' vsVersion: 17.0 platform: '$(BuildPlatform)' configuration: '$(BuildConfiguration)' msbuildArgs: /t:PowerToysBootstrapper ${{ parameters.additionalBuildArguments }} /p:PerUser=true clean: false maximumCpuCount: true # Check if deps.json files don't reference different dll versions. - task: PowerShell@2 displayName: Audit deps.json files for all applications inputs: filePath: '$(build.sourcesdirectory)\.pipelines\verifyDepsJsonLibraryVersions.ps1' arguments: -targetDir '$(build.sourcesdirectory)\$(BuildPlatform)\$(BuildConfiguration)' pwsh: true # Check if asset files on the main application paths are playing nice and avoiding basic conflicts. - task: PowerShell@2 displayName: Audit base applications path asset conflicts inputs: filePath: '$(build.sourcesdirectory)\.pipelines\verifyPossibleAssetConflicts.ps1' arguments: -targetDir '$(build.sourcesdirectory)\$(BuildPlatform)\$(BuildConfiguration)' pwsh: true - task: PowerShell@2 displayName: Audit WinAppSDK applications path asset conflicts inputs: filePath: '$(build.sourcesdirectory)\.pipelines\verifyPossibleAssetConflicts.ps1' arguments: -targetDir '$(build.sourcesdirectory)\$(BuildPlatform)\$(BuildConfiguration)\WinUI3Apps' pwsh: true # directly not doing WinAppDriver testing - task: VSTest@2 displayName: 'MS Tests' condition: ne(variables['BuildPlatform'], 'arm64') # No arm64 agents to run the tests. inputs: platform: '$(BuildPlatform)' configuration: '$(BuildConfiguration)' testSelector: 'testAssemblies' testAssemblyVer2: | **\UnitTests-GcodeThumbnailProvider.dll **\UnitTests-StlThumbnailProvider.dll **\UnitTests-PdfThumbnailProvider.dll **\Settings.UI.UnitTests.dll **\UnitTests-GcodePreviewHandler.dll **\UnitTests-PdfPreviewHandler.dll **\UnitTests-PreviewHandlerCommon.dll **\Microsoft.PowerToys.Run.Plugin.Registry.UnitTests.dll **\UnitTest-ColorPickerUI.dll **\Microsoft.Interop.Tests.dll **\ImageResizer.Test.dll **\Community.PowerToys.Run.Plugin.UnitConverter.UnitTest.dll **\Community.PowerToys.Run.Plugin.ValueGenerator.UnitTests.dll **\Microsoft.Plugin.Folder.UnitTests.dll **\Microsoft.Plugin.Program.UnitTests.dll **\Microsoft.PowerToys.Run.Plugin.Calculator.UnitTest.dll **\Microsoft.Plugin.Uri.UnitTests.dll **\Wox.Test.dll **\Microsoft.PowerToys.Run.Plugin.System.UnitTests.dll **\Microsoft.PowerToys.Run.Plugin.TimeDate.UnitTests.dll **\Microsoft.Plugin.WindowsTerminal.UnitTests.dll **\Microsoft.Plugin.WindowWalker.UnitTests.dll **\PreviewPaneUnitTests.dll **\UnitTests-SvgThumbnailProvider.dll **\UnitTests-SvgPreviewHandler.dll **\PowerToys.Hosts.Tests.dll **\MouseJumpUI.UnitTests.dll !**\obj\** !**\ref\** # Native dlls - task: VSTest@2 condition: ne(variables['BuildPlatform'],'arm64') # No arm64 agents to run the tests. displayName: 'Native Tests' inputs: platform: '$(BuildPlatform)' configuration: '$(BuildConfiguration)' testSelector: 'testAssemblies' testAssemblyVer2: | **\KeyboardManagerEngineTest.dll **\KeyboardManagerEditorTest.dll **\UnitTests-CommonLib.dll **\PowerRenameUnitTests.dll **\powerpreviewTest.dll **\UnitTests-FancyZones.dll !**\obj\** - task: PowerShell@2 displayName: Trigger dotnet welcome message so that it does not cause errors on other scripts inputs: targetType: 'inline' script: | dotnet list $(build.sourcesdirectory)\src\common\Common.UI\Common.UI.csproj package - task: PowerShell@2 displayName: Verify Notice.md and Nuget packages match inputs: filePath: '$(build.sourcesdirectory)\.pipelines\verifyNoticeMdAgainstNugetPackages.ps1' arguments: -path '$(build.sourcesdirectory)\' pwsh: true