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.

…se pipelines (PowerShell#27795)

Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com>
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