Skip to content

Conversation

@cheenamalhotra
Copy link
Member

@cheenamalhotra cheenamalhotra commented Nov 13, 2025

Description

Adds a manual, parameter‑gated release stage to the signing pipeline enabling:

  • Internal or public NuGet publish (publishDestination)
  • Dry run preview (dryRun)
  • Optional symbol publishing (MDS only)
  • Human approval checklist (destination, preview, dry run, symbols, version, product)

Next Steps:

  • Run Dryrun and Approval workflow to validate changes ensuring configuration is up-to-date.
  • Make an attempt to publish MDS packages to internal feed.
  • Validate workflows for all 3 packages: MDS, MSS, AKV

Investigate:

  • Can symbols be published using the same "compound-publish-symbols-step" for AKV and MSS packages?

@cheenamalhotra cheenamalhotra requested a review from a team as a code owner November 13, 2025 00:29
Copilot AI review requested due to automatic review settings November 13, 2025 00:29
Copy link
Contributor

Copilot AI left a comment

Choose a reason for hiding this comment

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

Pull Request Overview

This PR adds a manual release stage to the OneBranch signing pipeline, enabling controlled NuGet package publishing with approval gates. The implementation supports both internal and public publishing destinations, includes dry-run capability for testing, and integrates symbol publishing for the MDS product.

Key Changes:

  • Adds manual release parameters (destination, dry run, product) to the signing pipeline
  • Implements approval workflow with human validation before package publication
  • Creates templated release infrastructure supporting multiple products (MDS, MSS, AKV)

Reviewed Changes

Copilot reviewed 8 out of 8 changed files in this pull request and generated 5 comments.

Show a summary per file
File Description
eng/pipelines/dotnet-sqlclient-signing-pipeline.yml Adds release parameters and invokes new release-stage template
eng/pipelines/common/templates/stages/release-stage.yml Defines manual release stage with approval and publish jobs
eng/pipelines/common/templates/jobs/approval-job.yml Implements manual validation job with release checklist
eng/pipelines/common/templates/jobs/publish-packages-job.yml Orchestrates package download and conditional publishing to internal/public feeds
eng/pipelines/common/templates/steps/publish-internal-feed-step.yml Handles internal feed publishing with dry-run support
eng/pipelines/common/templates/steps/publish-public-nuget-step.yml Handles NuGet.org publishing with dry-run support
eng/pipelines/common/templates/steps/list-packages-step.yml Lists packages for verification before publishing
eng/pipelines/common/templates/steps/publish-symbols-step.yml Updates symbol publishing to use boolean type and add AKV product support

Copilot AI review requested due to automatic review settings November 13, 2025 05:01
Copy link
Contributor

Copilot AI left a comment

Choose a reason for hiding this comment

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

Pull Request Overview

Copilot reviewed 7 out of 7 changed files in this pull request and generated 10 comments.

@paulmedynski paulmedynski self-assigned this Nov 13, 2025
Copilot AI review requested due to automatic review settings December 11, 2025 07:24
Copy link
Contributor

Copilot AI left a comment

Choose a reason for hiding this comment

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

Pull request overview

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

Copilot AI review requested due to automatic review settings December 11, 2025 07:39
Copy link
Contributor

Copilot AI left a comment

Choose a reason for hiding this comment

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

Pull request overview

Copilot reviewed 8 out of 8 changed files in this pull request and generated 11 comments.

Copilot AI review requested due to automatic review settings December 11, 2025 08:00
@cheenamalhotra cheenamalhotra added this to the 7.0.0-preview4 milestone Dec 11, 2025
Copy link
Contributor

Copilot AI left a comment

Choose a reason for hiding this comment

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

Pull request overview

Copilot reviewed 8 out of 8 changed files in this pull request and generated 7 comments.

Copilot AI review requested due to automatic review settings December 11, 2025 08:34
Copy link
Contributor

Copilot AI left a comment

Choose a reason for hiding this comment

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

Pull request overview

Copilot reviewed 8 out of 8 changed files in this pull request and generated 2 comments.

Copy link
Contributor

Copilot AI left a comment

Choose a reason for hiding this comment

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

Pull request overview

Copilot reviewed 8 out of 8 changed files in this pull request and generated 9 comments.

paulmedynski
paulmedynski previously approved these changes Dec 23, 2025
Copy link
Contributor

Copilot AI left a comment

Choose a reason for hiding this comment

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

Pull request overview

Copilot reviewed 8 out of 8 changed files in this pull request and generated 5 comments.

echo "3 Cancelled; The request was cancelled"
- powershell: 'Write-Host "##vso[task.setvariable variable=ArtifactServices.Symbol.AccountName;]${{parameters.SymAccount}}"'
displayName: "Update Symbol.AccountName with ${{parameters.SymAccount}}"
condition: and(succeeded(), eq(parameters.publishSymbols, true))
Copy link

Copilot AI Jan 5, 2026

Choose a reason for hiding this comment

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

The parameter type for publishSymbols has been changed from 'string' to 'boolean', which is the correct type for a boolean flag. However, the condition on line 79 should be updated to use the boolean comparison syntax. Change 'eq(parameters.publishSymbols, true)' instead of comparing to the string 'true'.

Copilot uses AI. Check for mistakes.
parameters:
dryRun: ${{ parameters.dryRun }}
publicNuGetSource: ${{ parameters.publicNuGetSource }}
packagesGlob: ${{ variables.targetDownloadPath }}/*.nupkg
Copy link

Copilot AI Jan 5, 2026

Choose a reason for hiding this comment

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

Same issue as line 83 - the variable targetDownloadPath should be referenced using runtime syntax $(targetDownloadPath) instead of template syntax ${{ variables.targetDownloadPath }}.

Copilot uses AI. Check for mistakes.
inputs:
displayName: Publish to Internal Feed
pwsh: true
filePath: /tools/scripts/publishPackagesToFeed.ps1
Copy link

Copilot AI Jan 5, 2026

Choose a reason for hiding this comment

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

The filePath references '/tools/scripts/publishPackagesToFeed.ps1', but the actual script file created in this PR is named 'publishPackagesToAzDOFeed.ps1'. This path mismatch will cause the task to fail. Update the path to match the actual script filename.

Suggested change
filePath: /tools/scripts/publishPackagesToFeed.ps1
filePath: /tools/scripts/publishPackagesToAzDOFeed.ps1

Copilot uses AI. Check for mistakes.
targetPath: ${{ variables.targetDownloadPath }}
- script: |
echo "NuGet Package Version: ${{ parameters.nugetPackageVersion }}"
echo "Downloaded signed packages to: ${{ variables.targetDownloadPath }}"
Copy link

Copilot AI Jan 5, 2026

Choose a reason for hiding this comment

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

Same issue as line 83 - the variable targetDownloadPath should be referenced using runtime syntax $(targetDownloadPath) instead of template syntax ${{ variables.targetDownloadPath }}.

Copilot uses AI. Check for mistakes.
parameters:
dryRun: ${{ parameters.dryRun }}
internalFeedSource: ${{ parameters.internalFeedSource }}
packagesGlob: ${{ variables.targetDownloadPath }}/*.nupkg
Copy link

Copilot AI Jan 5, 2026

Choose a reason for hiding this comment

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

Same issue as line 83 - the variable targetDownloadPath should be referenced using runtime syntax $(targetDownloadPath) instead of template syntax ${{ variables.targetDownloadPath }}.

Copilot uses AI. Check for mistakes.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants