[Release 6.1] OneBranch Governed Release templates#4230
[Release 6.1] OneBranch Governed Release templates#4230cheenamalhotra merged 25 commits intorelease/6.1from
Conversation
… variables in use.
…rs.visualstudio.com/ADO.Net/_git/dotnet-sqlclient into dev/cheena/6.1-gov-templates
…rs.visualstudio.com/ADO.Net/_git/dotnet-sqlclient into dev/cheena/6.1-gov-templates
…rs.visualstudio.com/ADO.Net/_git/dotnet-sqlclient into dev/cheena/6.1-gov-templates
…rs.visualstudio.com/ADO.Net/_git/dotnet-sqlclient into dev/cheena/6.1-gov-templates
…rs.visualstudio.com/ADO.Net/_git/dotnet-sqlclient into dev/cheena/6.1-gov-templates
…rs.visualstudio.com/ADO.Net/_git/dotnet-sqlclient into dev/cheena/6.1-gov-templates
…rs.visualstudio.com/ADO.Net/_git/dotnet-sqlclient into dev/cheena/6.1-gov-templates
…rs.visualstudio.com/ADO.Net/_git/dotnet-sqlclient into dev/cheena/6.1-gov-templates
…rs.visualstudio.com/ADO.Net/_git/dotnet-sqlclient into dev/cheena/6.1-gov-templates
Co-authored-by: Copilot <copilot@github.com>
Co-authored-by: Copilot <copilot@github.com>
There was a problem hiding this comment.
Pull request overview
Migrates the release/6.1 Azure DevOps OneBranch pipelines to Governed Templates v2, consolidating variables/templates and introducing new official/non-official pipeline entrypoints plus an on-demand NuGet release stage.
Changes:
- Adds new governed-template-based OneBranch pipelines for official and non-official builds.
- Consolidates and relocates variable/step/job templates under
eng/pipelines/onebranch/. - Updates signing/symbol publishing wiring and bumps SDK tooling (
global.json, default .NET runtime install).
Reviewed changes
Copilot reviewed 22 out of 33 changed files in this pull request and generated 5 comments.
Show a summary per file
| File | Description |
|---|---|
| global.json | Bumps pinned .NET SDK patch version. |
| eng/pipelines/variables/onebranch-variables.yml | Removes legacy variable file (replaced by OneBranch-scoped variables). |
| eng/pipelines/variables/esrp-signing-variables.yml | Removes legacy ESRP signing variable group include (moved to consolidated variables). |
| eng/pipelines/variables/common-variables.yml | Removes legacy common variables (replaced by OneBranch-scoped variables). |
| eng/pipelines/variables/akv-official-variables.yml | Removes AKV-specific legacy variables (moved to consolidated variables). |
| eng/pipelines/steps/install-dotnet.yml | Changes default runtime installation to include .NET 10. |
| eng/pipelines/steps/compound-esrp-code-signing-step.yml | Removes older compound ESRP signing step template. |
| eng/pipelines/onebranch/variables/variables.yml | New OneBranch variables entry template. |
| eng/pipelines/onebranch/variables/build-variables.yml | New OneBranch build variable aggregation template. |
| eng/pipelines/onebranch/variables/common-variables.yml | New consolidated variables (versions, symbols, ESRP, paths). |
| eng/pipelines/onebranch/variables/mds-variables.yml | Adds MDS variable group include for release-related values. |
| eng/pipelines/onebranch/variables/mds-validation-variables.yml | Adds validation variables for signed package verification. |
| eng/pipelines/onebranch/steps/script-output-environment-variables-step.yml | Adds env-dump helper step. |
| eng/pipelines/onebranch/steps/roslyn-analyzers-akv-step.yml | Fixes repo-root variable usage for AKV analyzer build step. |
| eng/pipelines/onebranch/steps/publish-symbols-step.yml | Updates symbols publishing to use variable-driven subscription/project identifiers. |
| eng/pipelines/onebranch/steps/esrp-code-signing-step.yml | Updates ESRP steps (task versions, variable wiring). |
| eng/pipelines/onebranch/steps/copy-dlls-for-test-step.yml | Adds step to stage DLLs/PDBs for downstream SDL validation tasks. |
| eng/pipelines/onebranch/steps/compound-publish-symbols-step.yml | Adds a reusable symbol publish/upload compound step. |
| eng/pipelines/onebranch/steps/compound-nuget-pack-step.yml | Adds a reusable NuGet pack compound step. |
| eng/pipelines/onebranch/steps/compound-extract-akv-apiscan-files-step.yml | Adds step to extract AKV binaries for ApiScan inputs. |
| eng/pipelines/onebranch/steps/compound-build-akv-step.yml | Updates AKV build step to use consolidated repo-root variable naming. |
| eng/pipelines/onebranch/steps/code-analyze-step.yml | Adds code analysis step wrapper (Roslyn analyzers + Code Inspector). |
| eng/pipelines/onebranch/steps/build-all-configurations-signed-dlls-step.yml | Adds build step to produce signed DLLs across configurations. |
| eng/pipelines/onebranch/sqlclient-official.yml | New governed-template official pipeline definition (build/validate/add-ons/release). |
| eng/pipelines/onebranch/sqlclient-non-official.yml | New governed-template non-official pipeline definition. |
| eng/pipelines/onebranch/jobs/validate-signed-package-job.yml | Updates job template paths and gates signature verification by “official build” flag. |
| eng/pipelines/onebranch/jobs/publish-nuget-package-job.yml | Adds reusable job template for gated NuGet publishing. |
| eng/pipelines/onebranch/jobs/build-signed-package-job.yml | Rewires build job to new steps/variables and gates signing to official builds. |
| eng/pipelines/onebranch/jobs/build-akv-official-job.yml | Rewires AKV job to new steps/variables and gates signing to official builds. |
| eng/pipelines/libraries/common-variables.yml | Removes legacy variables file superseded by OneBranch equivalents. |
| eng/pipelines/dotnet-sqlclient-signing-pipeline.yml | Removes older governed-template pipeline entrypoint (superseded). |
| eng/pipelines/common/templates/jobs/run-tests-package-reference-job.yml | Removes legacy job template (pipeline restructure). |
| eng/pipelines/akv-official-pipeline.yml | Removes legacy AKV pipeline entrypoint (superseded). |
Comments suppressed due to low confidence (6)
eng/pipelines/onebranch/steps/esrp-code-signing-step.yml:127
- There is an extra nested
inputs:key under theEsrpCodeSigning@6task (pkg signing). This makes the YAML invalid for the task inputs and will cause the pipeline to fail to parse/run. Remove the strayinputs:line so the inputs map is defined once.
eng/pipelines/onebranch/jobs/build-akv-official-job.yml:72 - The defaults for
symbolsPublishProjectName,symbolsPublishServer, andsymbolsPublishTokenUrireference$(SymbolsPublishProjectName),$(SymbolsPublishServer), and$(SymbolsPublishTokenUri), but the shared variables/group only defines the suffixed variants (e.g.,SymbolsPublishProjectNameSqlClient,SymbolsPublishServerProd/Ppe,SymbolsPublishTokenUriProd/Ppeineng/pipelines/onebranch/variables/common-variables.yml). As-is, these will expand to empty unless additional variables exist externally. Update these defaults (or make the parameters required) to use the actual variable names.
eng/pipelines/onebranch/steps/esrp-code-signing-step.yml:23 ESRPConnectedServiceNamedefaults to$(SigningESRPConnectedServiceName), but the repo’s signing variable name isSigningEsrpConnectedServiceName(seeeng/pipelines/onebranch/variables/common-variables.yml). As-is, the ESRP tasks will get an empty service connection name and fail. Rename this default to the correct variable name (or make it a required parameter).
eng/pipelines/onebranch/steps/esrp-code-signing-step.yml:56- For DLL signing,
FolderPathis set to${{ parameters.sourceRoot }}(defaults to$(REPOROOT)), so ESRP malware scanning/signing will recurse over the whole repo (including sources and any incidental .dll files), rather than just the build output. Consider changing the default to the build output folder (e.g.,$(Build.SourcesDirectory)\artifacts\...) and/or require callers to pass an explicit output path to avoid signing unintended binaries and reduce runtime.
eng/pipelines/onebranch/jobs/build-akv-official-job.yml:138 - This template still uses
$(ARTIFACT_PATH)as the NuGet packoutputDirectory, butARTIFACT_PATHis no longer defined anywhere in the repo after the variable template consolidation. This will resolve to empty and likely break packaging/publishing. Use$(artifactDirectory)(defined ineng/pipelines/onebranch/variables/common-variables.yml) or reintroduce anARTIFACT_PATHalias in the shared variables template.
eng/pipelines/onebranch/steps/publish-symbols-step.yml:68 - This template’s
publishSymbolsparameter is a string and the conditions useeq(parameters.publishSymbols, 'true'), but upstream callers pass a boolean. In template expressionseq(true, 'true')is false, so symbol publishing can be skipped even when enabled. Consider changingpublishSymbolstotype: booleanand updating the conditions to compare againsttrue(or consistently pass a lowercase string).
Co-authored-by: Copilot <copilot@github.com>
There was a problem hiding this comment.
Pull request overview
Copilot reviewed 22 out of 33 changed files in this pull request and generated 1 comment.
Comments suppressed due to low confidence (3)
eng/pipelines/onebranch/jobs/build-signed-package-job.yml:62
- This call to
esrp-code-signing-step.ymldoesn’t passsourceRoot, so the step will use its default ($(REPOROOT)) as the signingFolderPathfor*.dll. That will scan/sign all DLLs under the repo instead of just the build output. Pass the build output/bin folder explicitly (or update the step’s default to the build output directory).
eng/pipelines/onebranch/steps/publish-symbols-step.yml:68 PublishSymbols@2inputSymbolsProductis being set to$(SymbolsPublishProjectNameSqlClient), which appears to be the symbols publishing project name (used later for the REST calls), not the product/package name.SymbolsProductshould remain the actual product identifier (e.g.,Microsoft.Data.SqlClient) or be parameterized separately from the project name.
eng/pipelines/onebranch/steps/esrp-code-signing-step.yml:127EsrpCodeSigning@6task has an invalid YAML structure here:inputs:is duplicated (inputs:nested underinputs:), which will fail template expansion / pipeline parsing. Remove the extrainputs:line so the task has a singleinputsmapping.
paulmedynski
left a comment
There was a problem hiding this comment.
This is a good transitional PR to get us on modern OneBranch pipelines. I still think we should bring all of the modern build/pipeline work from main back here eventually.
Rather than make a bunch of comments and go back and forth, I will push a commit to tidy a few things up. I will approve after that commit appears.
mdaigle
left a comment
There was a problem hiding this comment.
Can you link some pipeline runs that I can look through?
Co-authored-by: Copilot <copilot@github.com>
c50a58e
There was a problem hiding this comment.
Pull request overview
Copilot reviewed 38 out of 46 changed files in this pull request and generated 2 comments.
Comments suppressed due to low confidence (4)
eng/pipelines/onebranch/jobs/build-akv-official-job.yml:96
$(ARTIFACT_PATH)is referenced forob_outputDirectorybut that variable is not defined anywhere in the repo (it used to come from the removed variable templates). This will resolve to an empty string and can break artifact staging/upload. Use an existing variable like$(artifactDirectory)(defined in/eng/pipelines/onebranch/variables/common-variables.yml) or defineARTIFACT_PATHin the consolidated variables template.
eng/pipelines/onebranch/steps/esrp-code-signing-step.yml:127- There is a duplicated
inputs:key under theEsrpCodeSigningtask (pkg branch). This makes the YAML invalid and will prevent the pipeline from running. Remove the extrainputs:line so the task has a singleinputsmapping.
eng/pipelines/onebranch/jobs/build-signed-package-job.yml:83 publishSymbolsis a boolean parameter in this job template, but/eng/pipelines/onebranch/steps/publish-symbols-step.ymldeclarespublishSymbolsas a string and checkseq(parameters.publishSymbols, 'true'). Passing a boolean here risks the condition never matching (e.g., boolean → 'True' vs 'true'). Consider aligning types by making the step template parameter boolean and usingeq(..., true), or pass'true'/'false'strings explicitly.
eng/pipelines/onebranch/jobs/build-akv-official-job.yml:138outputDirectory: '$(ARTIFACT_PATH)'referencesARTIFACT_PATH, which is not defined anywhere in the repo after the variables consolidation. This likely causes NuGet pack output to go to an unintended location. Consider switching to$(artifactDirectory)(or another defined output variable) or reintroducingARTIFACT_PATHin the onebranch common variables template.
Description
Migrates the official and non-official OneBranch pipelines to use Governed Templates (
v2/OneBranch.Official.CrossPlat.yml/v2/OneBranch.NonOfficial.CrossPlat.yml), consolidates variable definitions, and fixes several build issues including broken AKV provider builds.Changes
sqlclient-official.ymlcommon-variables.yml(replaces fragmented variable files)onebranchfor a consistent layoutpublish-nuget-package-job.ymlfor NuGet release stageSymbols publishing
Other
akv-official-pipeline.yml,dotnet-sqlclient-signing-pipeline.yml,compound-esrp-code-signing-step.yml, and old variable filesglobal.jsonSDK version