From 9f95bdf8af497985bf4512a00861f63274563ae6 Mon Sep 17 00:00:00 2001 From: Dinah Xiaoman G <116714259+DinahK-2SO@users.noreply.github.com> Date: Wed, 10 Jun 2026 22:56:17 +0800 Subject: [PATCH 1/2] Fix break on Foundation PR builds: restore original build behavior by making downloading-latest-package opt-in (#6555) * Fix Foundation PR builds: make latest-nightly VSIX download opt-in * Disambiguate by-branch nightly download step name --- .../WindowsAppSDK-BuildVSIX-Steps.yml | 67 ++++++++++++------- ...DK-VSIXTemplates-BuildValidation-Stage.yml | 1 + 2 files changed, 42 insertions(+), 26 deletions(-) diff --git a/build/AzurePipelinesTemplates/WindowsAppSDK-BuildVSIX-Steps.yml b/build/AzurePipelinesTemplates/WindowsAppSDK-BuildVSIX-Steps.yml index 55b8a0675c..82ee2c295d 100644 --- a/build/AzurePipelinesTemplates/WindowsAppSDK-BuildVSIX-Steps.yml +++ b/build/AzurePipelinesTemplates/WindowsAppSDK-BuildVSIX-Steps.yml @@ -25,11 +25,17 @@ parameters: type: boolean default: true - name: NightlyBranchName - # Branch (in the Aggregator pipeline's repo) to pull the latest Windows App SDK - # nuget from when UseCurrentBuild is false. The Aggregator nightly runs daily on - # 'main', so default there. Override if the active publishing branch changes. + # Branch to pull the latest nightly nuget from (only when + # UseLatestNightlyFromBranch is true). The Aggregator nightly runs on 'main'. type: string default: 'refs/heads/main' +- name: UseLatestNightlyFromBranch + # false (default): download a pinned nightly via $(LatestOfficialBuildID), + # matching the Foundation VSIX stage (gated on a non-empty build id). + # true: pull the latest run from NightlyBranchName instead, for the Templates + # PR pipeline, which has no pinned build id at queue time. + type: boolean + default: false steps: - ${{ if eq(parameters.UseCurrentBuild, 'true') }}: @@ -39,29 +45,38 @@ steps: artifactName: 'WindowsAppSDK_Nuget_And_MSIX' targetPath: '$(System.ArtifactsDirectory)' - ${{ else }}: - ### - # This step downloads the WindowsAppSDK NuGet package from the Aggregator nightly - # pipeline (identified by the OfficialPipelineID variable) for use in building the - # VSIX. We pull the latest run from NightlyBranchName rather than a pinned - # LatestOfficialBuildID so PR build-validation runs always get a fresh package without - # needing a build id supplied at queue time. - # - # The nightly runs commonly finish as PartiallySucceeded (some downstream test/SDL - # stages are not green) even though the packaging stage produced the artifact, so - # both allowPartiallySucceededBuilds and allowFailedBuilds must be true -- the task - # requires the pair to be set together to consider non-succeeded runs. - - task: DownloadPipelineArtifact@2 - displayName: 'Download WindowsAppSDK From Latest Nightly' - inputs: - artifactName: 'WindowsAppSDK_Nuget_And_MSIX' - targetPath: '$(System.ArtifactsDirectory)' - source: 'specific' - project: $(System.TeamProjectId) - pipeline: $(OfficialPipelineID) - runVersion: 'latestFromBranch' - runBranch: '${{ parameters.NightlyBranchName }}' - allowPartiallySucceededBuilds: true - allowFailedBuilds: true + - ${{ if eq(parameters.UseLatestNightlyFromBranch, 'true') }}: + ### + # Templates PR path: grab the latest nightly from NightlyBranchName since no + # build id is pinned at queue time. Nightlies often end PartiallySucceeded + # (downstream test/SDL not green) yet still produce the artifact, so both + # allow* flags are required as a pair to accept non-succeeded runs. + - task: DownloadPipelineArtifact@2 + displayName: 'Download WindowsAppSDK From Latest Nightly (by branch)' + inputs: + artifactName: 'WindowsAppSDK_Nuget_And_MSIX' + targetPath: '$(System.ArtifactsDirectory)' + source: 'specific' + project: $(System.TeamProjectId) + pipeline: $(OfficialPipelineID) + runVersion: 'latestFromBranch' + runBranch: '${{ parameters.NightlyBranchName }}' + allowPartiallySucceededBuilds: true + allowFailedBuilds: true + - ${{ else }}: + ### + # Default path (Foundation VSIX stage): download the pinned nightly named by + # $(LatestOfficialBuildID). The consuming stage is gated on a non-empty id, + # so it is skipped when no valid nightly is available. + - task: DownloadPipelineArtifact@2 + displayName: 'Download WindowsAppSDK From Latest Nightly' + inputs: + artifactName: 'WindowsAppSDK_Nuget_And_MSIX' + targetPath: '$(System.ArtifactsDirectory)' + source: 'specific' + project: $(System.TeamProjectId) + pipeline: $(OfficialPipelineID) + pipelineId: $(LatestOfficialBuildID) - task: PowerShell@2 name: ExtractWindowsAppSDKVersion diff --git a/build/AzurePipelinesTemplates/WindowsAppSDK-VSIXTemplates-BuildValidation-Stage.yml b/build/AzurePipelinesTemplates/WindowsAppSDK-VSIXTemplates-BuildValidation-Stage.yml index b922e8de27..47a765ef35 100644 --- a/build/AzurePipelinesTemplates/WindowsAppSDK-VSIXTemplates-BuildValidation-Stage.yml +++ b/build/AzurePipelinesTemplates/WindowsAppSDK-VSIXTemplates-BuildValidation-Stage.yml @@ -74,6 +74,7 @@ stages: runStaticAnalysis: false PublishSymbols: false UseCurrentBuild: false + UseLatestNightlyFromBranch: true IsOfficial: false OptionalVSIXVersion: '$(OptionalVSIXVersion)' From 78ae54d762e7a0345b509fbb62be83c94381cdea Mon Sep 17 00:00:00 2001 From: Lauren Ciha Date: Wed, 10 Jun 2026 17:00:46 -0700 Subject: [PATCH 2/2] Bump to latest majors (#6550) --- .github/workflows/build.yml | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 81f5ac070a..d7dae361a8 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -16,13 +16,13 @@ jobs: steps: - name: checkout project - uses: actions/checkout@v2 + uses: actions/checkout@v6 - name: setup msbuild - uses: microsoft/setup-msbuild@v1 + uses: microsoft/setup-msbuild@v3 - name: setup nuget - uses: NuGet/setup-nuget@v1.0.2 + uses: NuGet/setup-nuget@v4 - name: restore project packages run: nuget restore WindowsAppRuntime.sln