From 39b1ee7447be13e04b13c441943faa2677d8dbe0 Mon Sep 17 00:00:00 2001 From: Ray Chen Date: Wed, 18 Mar 2026 15:59:52 -0700 Subject: [PATCH 1/2] Fail fast when no packages selected for manual release build When manually triggering a release pipeline, if no release_* parameters are checked, the pipeline would run through expensive build and signing steps before eventually failing at Create-APIReview.ps1. This is common since 112 of 156 service CI files have all release parameters defaulting to false. Add a compile-time validation step as the first step of the Build job that immediately fails with a clear error message when all three conditions are met: internal project, manual trigger, and no release artifacts selected. The step is not injected for PR, CI push, or scheduled builds. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> --- eng/pipelines/templates/jobs/ci.yml | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/eng/pipelines/templates/jobs/ci.yml b/eng/pipelines/templates/jobs/ci.yml index 95233db735c1..13c5472e3d7e 100644 --- a/eng/pipelines/templates/jobs/ci.yml +++ b/eng/pipelines/templates/jobs/ci.yml @@ -100,6 +100,14 @@ jobs: os: linux steps: + # Fail fast if this is a manual release build but no packages were selected. + # When manually triggering the pipeline, at least one release_* parameter must be checked. + - ${{ if and(eq(variables['System.TeamProject'], 'internal'), eq(variables['Build.Reason'], 'Manual'), eq(length(parameters.ReleaseArtifacts), 0)) }}: + - pwsh: | + Write-Host "##[error]No packages selected for release. When manually queuing this pipeline, please select at least one package by checking the appropriate release_* parameter(s)." + exit 1 + displayName: 'Validate: at least one package is selected for release' + # Skip sparse checkout for the `azure-sdk-for--pr` private mirrored repositories # as we require the GitHub service connection to be loaded. - ${{ if not(contains(variables['Build.DefinitionName'], 'java-pr')) }}: From 975805190d2fd691d8ecdc04d34317d07974d07e Mon Sep 17 00:00:00 2001 From: Ray Chen Date: Wed, 18 Mar 2026 16:11:15 -0700 Subject: [PATCH 2/2] Updated output msg --- eng/pipelines/templates/jobs/ci.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/eng/pipelines/templates/jobs/ci.yml b/eng/pipelines/templates/jobs/ci.yml index 13c5472e3d7e..5cd09c9a6571 100644 --- a/eng/pipelines/templates/jobs/ci.yml +++ b/eng/pipelines/templates/jobs/ci.yml @@ -104,7 +104,7 @@ jobs: # When manually triggering the pipeline, at least one release_* parameter must be checked. - ${{ if and(eq(variables['System.TeamProject'], 'internal'), eq(variables['Build.Reason'], 'Manual'), eq(length(parameters.ReleaseArtifacts), 0)) }}: - pwsh: | - Write-Host "##[error]No packages selected for release. When manually queuing this pipeline, please select at least one package by checking the appropriate release_* parameter(s)." + Write-Host "##[error]No packages selected for release. When manually queuing this pipeline, please select at least one package by checking the appropriate package-name parameter(s)." exit 1 displayName: 'Validate: at least one package is selected for release'