Skip to content

[release/v7.5.11] Use .NET SDK and NuGet feed early access for build, package and release pipelines - #27909

Merged
Aditya Patwardhan (adityapatwardhan) merged 2 commits into
PowerShell:release/v7.5.11from
adityapatwardhan:backport/release/v7.5.11/27795-9f7470700
Aug 31, 2026
Merged

Aditya Patwardhan (adityapatwardhan) merged 2 commits into
PowerShell:release/v7.5.11from
adityapatwardhan:backport/release/v7.5.11/27795-9f7470700

Conversation

@adityapatwardhan

Copy link
Copy Markdown
Member

Backport of #27795 to release/v7.5.11

Triggered by Aditya Patwardhan (@adityapatwardhan) on behalf of Aditya Patwardhan (@adityapatwardhan)

Original CL Label: CL-BuildPackaging

/cc @PowerShell/powershell-maintainers

Impact

REQUIRED: Choose either Tooling Impact or Customer Impact (or both). At least one checkbox must be selected.

Tooling Impact

  • Required tooling change
  • Optional tooling change (include reasoning)

Backports the early-access .NET SDK, runtime, and NuGet feed support required by the PowerShell build, package, and release pipelines.

Customer Impact

  • Customer reported
  • Found internally

Regression

REQUIRED: Check exactly one box.

  • Yes
  • No

This is not a regression.

Testing

Cherry-pick completed without conflicts. Verified build.psm1 parses successfully with no conflict markers, the worktree is clean, and git diff --check passes against upstream/release/v7.5.11. The original change was validated on master; release pipeline CI will provide the authoritative end-to-end validation.

Risk

REQUIRED: Check exactly one box.

  • High
  • Medium
  • Low

High risk because this changes official and non-official build, package, and release pipelines across platforms. The change is already merged on master, the backport applied cleanly, and static whitespace and PowerShell syntax checks passed.

Copilot AI lite review requested due to automatic review settings August 31, 2026 22:00
@adityapatwardhan Aditya Patwardhan (adityapatwardhan) added the CL-BuildPackaging Indicates that a PR should be marked as a build or packaging change in the Change Log label Aug 31, 2026
@azure-pipelines

Copy link
Copy Markdown
Azure Pipelines:
There may be pipelines that require an authorized user to comment /azp run to run.

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Backport that adds “early access” .NET SDK/runtime + NuGet feed support to the release/v7.5.11 build/packaging/release Azure Pipelines, including a new pre-stage to download early-access SDK artifacts and plumbing of IsEarlyAccess/feed/version parameters through templates.

Changes:

  • Adds early-access queue-time parameters (IsEarlyAccess, EarlyAccessFeed, DOTNET_*_VERSION) to official/non-official pipelines and stage templates.
  • Introduces a dedicated early-access .NET download job/template and updates install-dotnet.yml to optionally install from the downloaded artifact by architecture/RID.
  • Extends build.psm1 with early-access NuGet config selection and a helper to download early-access .NET SDK archives.

Reviewed changes

Copilot reviewed 24 out of 24 changed files in this pull request and generated 6 comments.

Show a summary per file
File Description
build.psm1 Adds EarlyAccess option to Switch-PSNugetConfig and introduces Get-DotnetEarlyAccess helper for downloading SDK archives.
.pipelines/templates/windows-hosted-build.yml Threads a dotnetArch RID into install-dotnet.yml for Windows hosted builds.
.pipelines/templates/variables/PowerShell-Packages-Variables.yml Adds early-access parameters/variables for packages pipelines.
.pipelines/templates/variables/PowerShell-Coordinated_Packages-Variables.yml Adds early-access parameters/variables for coordinated packages pipelines.
.pipelines/templates/testartifacts.yml Ensures install-dotnet.yml is invoked with explicit architecture for test artifacts jobs.
.pipelines/templates/stages/PowerShell-Release-Stages.yml Adds early-access download stage and propagates early-access parameters into validation stages/jobs.
.pipelines/templates/stages/PowerShell-Packages-Stages.yml Adds EarlyDotnet stage and hooks all packaging stages to depend on it.
.pipelines/templates/stages/PowerShell-Coordinated_Packages-Stages.yml Propagates early-access variables and adds conditional early-access download template usage.
.pipelines/templates/release-validate-sdk.yml Adds early-access parameters/vars and switches dotnet feed source based on early-access selection.
.pipelines/templates/release-validate-globaltools.yml Adds early-access parameters and ensures dotnet install is parameterized by RID.
.pipelines/templates/release-validate-fxdpackages.yml Adds early-access parameters and ensures dotnet install is parameterized by RID.
.pipelines/templates/packaging/windows/package.yml Threads dotnetArch into install-dotnet.yml for Windows packaging build.
.pipelines/templates/mac.yml Threads dotnetArch into install-dotnet.yml for macOS template builds.
.pipelines/templates/linux.yml Threads dotnetArch into install-dotnet.yml for Linux template builds.
.pipelines/templates/linux-package-build.yml Threads dotnetArch into install-dotnet.yml for Linux packaging builds.
.pipelines/templates/install-dotnet.yml Adds architecture parameter and early-access install path from pipeline artifact.
.pipelines/templates/insert-nuget-config-azfeed.yml Switches to EarlyAccess NuGet config when enabled and sets up Azure Artifacts credential provider token.
.pipelines/templates/downloadDotnetEarlyAccess.yml New template that downloads early-access .NET SDK archives and uploads them as a pipeline artifact.
.pipelines/PowerShell-Release-Official.yml Adds early-access queue-time parameters and passes them into release stages template.
.pipelines/PowerShell-Packages-Official.yml Adds early-access queue-time parameters and passes them into packages stages template.
.pipelines/PowerShell-Coordinated_Packages-Official.yml Adds early-access queue-time parameters and passes them into coordinated packages stages template.
.pipelines/NonOfficial/PowerShell-Release-NonOfficial.yml Adds early-access queue-time parameters and passes them into non-official release stages template.
.pipelines/NonOfficial/PowerShell-Packages-NonOfficial.yml Adds early-access queue-time parameters and passes them into non-official packages stages template.
.pipelines/NonOfficial/PowerShell-Coordinated_Packages-NonOfficial.yml Adds early-access queue-time parameters and passes them into non-official coordinated packages stages template.

💡 Add a code-review agent skill for context-aware, tailored reviews. Learn more in the docs.

Comment on lines +39 to +43
- task: DownloadPipelineArtifact@2
displayName: "Download dotnet-packages artifact"
condition: eq(variables['ISEARLYACCESS'], 'true')
inputs:
artifactName: 'dotnet-packages'
Comment on lines +96 to +100
workingDirectory: $(RepoRoot)
displayName: Install dotnet early access
condition: eq(variables['ISEARLYACCESS'], 'true')
env:
ob_restore_phase: ${{ parameters.ob_restore_phase }}
Comment on lines +83 to +95
$dotnetExe = if ($IsWindows) {
"$dotnetLocation\dotnet.exe"
} else {
"$dotnetLocation/dotnet"
}
if (-not (Test-Path $dotnetExe)) {
throw "dotnet executable not found at $dotnetExe"
}
Get-ChildItem -Path $dotnetLocation -Recurse
& $dotnetExe --info
Comment thread build.psm1
'net8' { 'https://pkgs.dev.azure.com/powershell-rel/PowerShell/_packaging/powershell-net-8-early-access/nuget/v3/index.json' }
'net9' { 'https://pkgs.dev.azure.com/powershell-rel/PowerShell/_packaging/powershell-net-9-early-access/nuget/v3/index.json' }
'net10' { 'https://pkgs.dev.azure.com/powershell-rel/PowerShell/_packaging/powershell-net-10-early-access/nuget/v3/index.json' }
default { throw "Unknown early access feed URL: $earlyAccess" }
Comment thread build.psm1
Comment on lines +2589 to +2591
[Parameter(Mandatory)]
[string]$DOTNET_PRIVATE_SAS
)
Comment on lines +91 to +93
condition: eq(variables['ISEARLYACCESS'], 'true')
env:
ob_restore_phase: ${{ parameters.ob_restore_phase }}
@adityapatwardhan
Aditya Patwardhan (adityapatwardhan) merged commit d1962e7 into PowerShell:release/v7.5.11 Aug 31, 2026
39 checks passed
@adityapatwardhan
Aditya Patwardhan (adityapatwardhan) deleted the backport/release/v7.5.11/27795-9f7470700 branch August 31, 2026 22:46
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

CL-BuildPackaging Indicates that a PR should be marked as a build or packaging change in the Change Log

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants