Decouple release completion from symbol upload failures
- Dominant language
- C#
- Stars
- 135
- Forks
- 260
- Avg merge
- 3d 1h
- Merged PRs (30d)
- 143
Description
## Background
In the azure-sdk-for-net release template `eng/pipelines/templates/stages/archetype-net-release.yml`, the `UploadSymbols` job runs after `PublishPackage`. The same job performs symbol upload first and then invokes `create-apireview.yml` with `MarkPackageAsShipped: true`, followed by `mark-release-completion.yml`.
## Problem
Symbol upload can time out or fail after the NuGet package has already been successfully published. Because API review shipping and release-plan completion are later steps in the same job, they never run. The package is publicly released while release tracking remains incomplete and requires manual repair/retry. This is an example failure run:
https://dev.azure.com/azure-sdk/internal/_build/results?buildId=6659241&view=logs&s=26d9c524-b70f-5d62-3bc4-23fffd3dd47b&j=8e387adc-a38e-55fa-3203-6fe8248ec245
## Proposal
Add a separate normal agent job after `PublishPackage` for release finalization, before `UploadSymbols`. Move `create-apireview.yml` and `mark-release-completion.yml` into it. The job should sparse-checkout repository scripts and download the unsigned package artifact containing `PackageInfo`. Have `UploadSymbols` run separately after finalization, or make finalization and symbols parallel dependencies of `PublishPackage` if symbol upload must not be blocked by finalization failures. State preferred sequence: PublishPackage -> FinalizeRelease -> UploadSymbols.
## Expected behavior
Once package publication succeeds, API review is marked shipped and release-plan completion is attempted independently of symbol upload reliability. Symbol failures remain visible and retryable but cannot leave an already-published package unmarked.
## Implementation considerations
Preserve existing skip variables/conditions; ensure FinalizeRelease only starts after successful PublishPackage; ensure source paths and PackageInfo artifact are available; remove moved steps and no-longer-needed unsigned artifact download from UploadSymbols if symbols do not use it.
Contributor guide
Research direction
Start in eng/pipelines/templates/stages/archetype-net-release.yml and trace the existing PublishPackage, UploadSymbols, create-apireview.yml, and mark-release-completion.yml steps. Verify how the unsigned package and PackageInfo artifact are obtained, then confirm the pipeline preserves skip conditions and runs PublishPackage, FinalizeRelease, and UploadSymbols in the requested sequence; validate with a release pipeline run or its checks.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- azure
- Domain
- build-system, devops, release
- Issue type
- Refactor
- Difficulty
- 4/5
- Estimated time
- 3-5 days
- Activity status
- Active
- Clarity
- Clearly specified
- Newbie friendliness
- 70/100