Repository: Azure/azure-sdk-for-net
Pull request #48555: Use 1es releasejob for deployments
Author: login: hallipr
Created: 2025-03-04T22:15:01Z | Merged: 2025-03-13T21:58:35Z

- Only use `deployment:` step for package deployment job
  - deployment steps should not clone the repo or download resources other than build artifacts


Diff:
diff --git a/eng/pipelines/templates/stages/archetype-net-release.yml b/eng/pipelines/templates/stages/archetype-net-release.yml
index 39dd8bb3976d..89c2c47e1f8f 100644
--- a/eng/pipelines/templates/stages/archetype-net-release.yml
+++ b/eng/pipelines/templates/stages/archetype-net-release.yml
@@ -5,20 +5,18 @@ parameters:
   # Publish to https://dev.azure.com/azure-sdk/public/_packaging?_a=feed&feed=azure-sdk-for-net
   DevOpsFeedId: '29ec6040-b234-4e31-b139-33dc4287b756/fa8c16a3-dbe0-4de2-a297-03065ec1ba3f'
 
-
 stages:
   - stage: Signing
     variables:
       - template: /eng/pipelines/templates/variables/globals.yml
       - template: /eng/pipelines/templates/variables/image.yml
     dependsOn: ${{parameters.DependsOn}}
+    pool:
+      name: $(WINDOWSPOOL)
+      image: $(WINDOWSVMIMAGE)
+      os: windows
     jobs:
-      - deployment: SignPackage
-        environment: esrp
-        pool:
-          name: azsdk-pool-mms-win-2022-general
-          image: azsdk-pool-mms-win-2022-1espt
-          os: windows
+      - job: SignPackage
 
         templateContext:
           outputs:
@@ -27,20 +25,17 @@ stages:
               targetPath: $(Pipeline.Workspace)/${{parameters.ArtifactName}}
               artifactName: ${{parameters.ArtifactName}}-signed
 
-        strategy:
-          runOnce:
-            deploy:
-              steps:
-                - checkout: azure-sdk-build-tools
-                  path: azure-sdk-build-tools
-                - template: /eng/pipelines/templates/steps/download-credscan-suppressions.yml
-                - download: current
-                  artifact: ${{parameters.ArtifactName}}
-                  timeoutInMinutes: 5
-                - template: pipelines/steps/net-signing.yml@azure-sdk-build-tools
-                  parameters:
-                    PackagesPath: $(Pipeline.Workspace)/${{parameters.ArtifactName}}
-                    BuildToolsPath: $(Pipeline.Workspace)/azure-sdk-build-tools
+        steps:
+          - checkout: azure-sdk-build-tools
+            path: azure-sdk-build-tools
+          - download: current
+            displayName: Download ${{parameters.ArtifactName}}
+            artifact: ${{parameters.ArtifactName}}
+            timeoutInMinutes: 5
+          - template: pipelines/steps/net-signing.yml@azure-sdk-build-tools
+            parameters:
+              PackagesPath: $(Pipeline.Workspace)/${{parameters.ArtifactName}}
+              BuildToolsPath: $(Pipeline.Workspace)/azure-sdk-build-tools
 
   - ${{if and(in(variables['Build.Reason'], 'Manual', ''), eq(variables['System.TeamProject'], 'internal'))}}:
     - ${{ each artifact in parameters.Artifacts }}:
@@ -52,57 +47,54 @@ stages:
           displayName: 'Release: ${{artifact.name}}'
           dependsOn: Signing
           condition: and(succeeded(), ne(variables['SetDevVersion'], 'true'), ne(variables['Skip.Release'], 'true'), ne(variables['Build.Repository.Name'], 'Azure/azure-sdk-for-net-pr'))
+          pool:
+            name: $(WINDOWSPOOL)
+            image: $(WINDOWSVMIMAGE)
+            os: windows
           jobs:
             - ${{if ne(artifact.skipTagRepository, 'true')}}:
-              - deployment: TagRepository
+              - job: TagRepository
                 displayName: "Create release tag"
                 condition: ne(variables['Skip.TagRepository'], 'true')
-                environment: package-publish
 
-                pool:
-                  name: azsdk-pool-mms-win-2022-general
-                  image: azsdk-pool-mms-win-2022-1espt
-                  os: windows
-
-                strategy:
-                  runOnce:
-                    deploy:
-                      steps:
-                        - checkout: self
-                        - download: current
-                          artifact: ${{parameters.ArtifactName}}-signed
-                        - template: /eng/pipelines/templates/steps/install-dotnet.yml
-                          parameters:
-                            EnableNuGetCache: false
-                        - template: /eng/common/pipelines/templates/steps/retain-run.yml
-                        - template: /eng/common/pipelines/templates/steps/set-test-pipeline-version.yml
-                          parameters:
-                            PackageName: "Azure.Template"
-                            ServiceDirectory: "template"
-                            TestPipeline: ${{ parameters.TestPipeline }}
-                        - template: /eng/common/pipelines/templates/steps/verify-changelog.yml
-                          parameters:
-                            PackageName: ${{artifact.name}}
-                            ServiceName: ${{parameters.ServiceDirectory}}
-                            ForRelease: true
-                        - template: /eng/common/pipelines/templates/steps/verify-restapi-spec-location.yml
-                          parameters:
-                            PackageName: ${{artifact.name}}
-                            ServiceDirectory: ${{parameters.ServiceDirectory}}
-                            ArtifactLocation: $(Pipeline.Workspace)/${{parameters.ArtifactName}}-signed
-                        - task: PowerShell@2
-                          inputs:
-                            filePath: $(System.DefaultWorkingDirectory)/eng/scripts/InstallationCheck.ps1
-                            pwsh: true
-                            arguments: >
-                              -ArtifactsDirectory "$(Pipeline.Workspace)/${{parameters.ArtifactName}}-signed" -Artifact ${{artifact.name}}
-                          condition: and(succeeded(),ne('${{ artifact.skipPublishPackage }}', 'true'))
-                          displayName: Verify Package Installation
-                        - template: /eng/common/pipelines/templates/steps/create-tags-and-git-release.yml
-                          parameters:
-                            ArtifactLocation: $(Pipeline.Workspace)/${{parameters.ArtifactName}}-signed/${{artifact.name}}
-                            PackageRepository: Nuget
-                            ReleaseSha: $(Build.SourceVersion)
+                steps:
+                  - checkout: self
+                    fetchDepth: 1
+                  - download: current
+                    displayName: Download ${{parameters.ArtifactName}}-signed
+                    artifact: ${{parameters.ArtifactName}}-signed
+                  - template: /eng/pipelines/templates/steps/install-dotnet.yml
+                    parameters:
+                      EnableNuGetCache: false
+                  - template: /eng/common/pipelines/templates/steps/retain-run.yml
+                  - template: /eng/common/pipelines/templates/steps/set-test-pipeline-version.yml
+                    parameters:
+                      PackageName: "Azure.Template"
+                      ServiceDirectory: "template"
+                      TestPipeline: ${{ parameters.TestPipeline }}
+                  - template: /eng/common/pipelines/templates/steps/verify-changelog.yml
+                    parameters:
+                      PackageName: ${{artifact.name}}
+                      ServiceName: ${{parameters.ServiceDirectory}}
+                      ForRelease: true
+                  - template: /eng/common/pipelines/templates/steps/verify-restapi-spec-location.yml
+                    parameters:
+                      PackageName: ${{artifact.name}}
+                      ServiceDirectory: ${{parameters.ServiceDirectory}}
+                      ArtifactLocation: $(Pipeline.Workspace)/${{parameters.ArtifactName}}-signed
+                  - task: PowerShell@2
+                    inputs:
+                      filePath: $(System.DefaultWorkingDirectory)/eng/scripts/InstallationCheck.ps1
+                      pwsh: true
+                      arguments: >
+                        -ArtifactsDirectory "$(Pipeline.Workspace)/${{parameters.ArtifactName}}-signed" -Artifact ${{artifact.name}}
+                    condition: and(succeeded(),ne('${{ artifact.skipPublishPackage }}', 'true'))
+                    displayName: Verify Package Installation
+                  - template: /eng/common/pipelines/templates/steps/create-tags-and-git-release.yml
+                    parameters:
+                      ArtifactLocation: $(Pipeline.Workspace)/${{parameters.ArtifactName}}-signed/${{artifact.name}}
+                      PackageRepository: Nuget
+                      ReleaseSha: $(Build.SourceVersion)
 
             - ${{if ne(artifact.skipPublishPackage, 'true')}}:
               - deployment: PublishPackage
@@ -117,156 +109,163 @@ stages:
                   os: linux
 
                 templateContext:
-                  outputParentDirectory: '$(Pipeline.Workspace)'
-                  outputs:
-                    - output: nuget
-                      displayName: 'Publish ${{artifact.name}} package to NuGet.org'
-                      packageParentPath: '$(Pipeline.Workspace)'
-                      packagesToPush: '$(Pipeline.Workspace)/${{parameters.ArtifactName}}-signed/${{artifact.name}}/*.nupkg;!$(Pipeline.Workspace)//${{parameters.ArtifactName}}-signed/${{artifact.name}}/*.symbols.nupkg'
-                      nuGetFeedType: external
-                      publishFeedCredentials: Nuget.org
-                    - output: nuget
-                      displayName: 'Publish to DevOps Feed'
-                      packageParentPath: '$(Pipeline.Workspace)'
-                      packagesToPush: '$(Pipeline.Workspace)/${{parameters.ArtifactName}}-signed/${{artifact.name}}/*.nupkg;!$(Pipeline.Workspace)/${{parameters.ArtifactName}}-signed/${{artifact.name}}/*.symbols.nupkg'
-                      publishVstsFeed: ${{ parameters.DevOpsFeedID }}
+                  type: releaseJob  # Required, this indicates this deployment job is a release job
+                  isProduction: true  # Required, must be 'true' or 'false'
+                  inputs:  # All input build artifacts must be declared here
+                    - input: pipelineArtifact  # Required, type of the input artifact
+                      artifactName: ${{parameters.ArtifactName}}-signed  # Required, name of the pipeline artifact
+                      targetPath: $(Pipeline.Workspace)/${{parameters.ArtifactName}}-signed  # Optional, specifies where the artifact is downloaded to
 
                 strategy:
                   runOnce:
                     deploy:
                       steps:
-                        - template: /eng/pipelines/templates/steps/download-credscan-suppressions.yml
+                        - task: 1ES.PublishNuget@1
+                          displayName: Publish ${{artifact.name}} package to NuGet.org
+                          inputs:
+                            packageParentPath: '$(Pipeline.Workspace)'
+                            packagesToPush: '$(Pipeline.Workspace)/${{parameters.ArtifactName}}-signed/${{artifact.name}}/*.nupkg;!$(Pipeline.Workspace)//${{parameters.ArtifactName}}-signed/${{artifact.name}}/*.symbols.nupkg'
+                            nuGetFeedType: external
+                            publishFeedCredentials: Nuget.org
+
+                        - task: 1ES.PublishNuget@1
+                          displayName: Publish to DevOps Feed
+                          inputs:
+                            packageParentPath: '$(Pipeline.Workspace)'
+                            packagesToPush: '$(Pipeline.Workspace)/${{parameters.ArtifactName}}-signed/${{artifact.name}}/*.nupkg;!$(Pipeline.Workspace)/${{parameters.ArtifactName}}-signed/${{artifact.name}}/*.symbols.nupkg'
+                            publishVstsFeed: ${{ parameters.DevOpsFeedID }}
 
               - ${{if ne(artifact.skipSymbolsUpload, 'true')}}:
-                - deployment: UploadSymbols
+                - job: UploadSymbols
                   displayName: Upload Symbols to Symbols Server
                   condition: and(succeeded(), ne(variables['Skip.SymbolsUpload'], 'true'))
-                  environment: package-publish
                   dependsOn: PublishPackage
 
-                  pool:
-                    name: azsdk-pool-mms-win-2022-general
-                    image: azsdk-pool-mms-win-2022-1espt
-                    os: windows
-
                   templateContext:
                     outputs:
                       - ${{if ne(artifact.skipSymbolsUpload, 'true')}}:
                         - output: pipelineArtifact
-                          displayName: 'Store converted symbols in ${{parameters.ArtifactName}}-symbols artifact'
+                          displayName: 'Store converted symbols in ${{artifact.name}}-symbols artifact'
                           targetPath: $(Build.ArtifactStagingDirectory)/symbols
-                          artifactName: ${{parameters.ArtifactName}}-symbols
+                          artifactName: ${{artifact.name}}-symbols
 
-                  strategy:
-                    runOnce:
-                      deploy:
-                        steps:
-                          - checkout: self
-                            path: s  # Keep this in the same path it would be if it was only a single checkout
-                          - checkout: azure-sdk-build-tools
-                            path: azure-sdk-build-tools
-                          - template: /pipelines/steps/publish-symbols.yml@azure-sdk-build-tools
-                            parameters:
-                              BuildToolsRepositoryPath: $(Pipeline.Workspace)/azure-sdk-build-tools
-                              PackagesPath: $(Pipeline.Workspace)/${{parameters.ArtifactName}}-signed/${{artifact.name}}
-                              StagingDirectory: $(Build.ArtifactStagingDirectory)/symbols
-                          - template: /eng/common/pipelines/templates/steps/create-apireview.yml
-                            parameters:
-                              ArtifactPath: $(Pipeline.Workspace)/packages
-                              Artifacts: ${{parameters.Artifacts}}
-                              ConfigFileDir: $(Pipeline.Workspace)/packages/PackageInfo
-                              MarkPackageAsShipped: true
-                              ArtifactName: ${{parameters.ArtifactName}}
-                              PackageName: ${{artifact.name}}
+                  variables:
+                    build-tools-repo-path: $(Pipeline.Workspace)/s/azure-sdk-build-tools
+                    sdk-repo-path: $(Pipeline.Workspace)/s/azure-sdk-for-net
+
+                  steps:
+                    # checkout azure-sdk-build-tools to $(Pipeline.Workspace)/s
+                    # As a "single repo" checkout, this will set $(Build.Repository.LocalPath), $(Build.SourcesDirectory)
+                    # and $(System.DefaultWorkingDirectory) to the repo path, even if a custom path is supplied
+                    - checkout: azure-sdk-build-tools
+                      path: s/azure-sdk-build-tools
+                    # checkout azure-sdk-for-net to $(Pipeline.Workspace)/azure-sdk-for-net
+                    # Sparse checkout defaults to $(System.DefaultWorkingDirectory) so we must specify a custom path
+                    - template: /eng/common/pipelines/templates/steps/sparse-checkout.yml
+                      parameters:
+                        SkipCheckoutNone: true
+                        Repositories:
+                          - Name: $(Build.Repository.Name)
+                            Commitish: $(Build.SourceVersion)
+                            WorkingDirectory: $(sdk-repo-path)
+
+                    # download "packages" artifact to $(Pipeline.Workspace)/packages
+                    - download: current
+                      displayName: Download ${{parameters.ArtifactName}}
+                      artifact: ${{parameters.ArtifactName}}
+                    - download: current
+                      displayName: Download ${{parameters.ArtifactName}}-signed
+                      artifact: ${{parameters.ArtifactName}}-signed
+                    - template: /pipelines/steps/publish-symbols.yml@azure-sdk-build-tools
+                      parameters:
+                        BuildToolsRepositoryPath: $(build-tools-repo-path)
+                        PackagesPath: $(Pipeline.Workspace)/${{parameters.ArtifactName}}-signed/${{artifact.name}}
+                        StagingDirectory: $(Build.ArtifactStagingDirectory)/symbols
+                    - template: /eng/common/pipelines/templates/steps/create-apireview.yml
+                      parameters:
+                        ArtifactPath: $(Pipeline.Workspace)/${{parameters.ArtifactName}}
+                        Artifacts: ${{parameters.Artifacts}}
+                        ConfigFileDir: $(Pipeline.Workspace)/${{parameters.ArtifactName}}/PackageInfo
+                        MarkPackageAsShipped: true
+                        ArtifactName: ${{parameters.ArtifactName}}
+                        PackageName: ${{artifact.name}}
+                        SourceRootPath: $(sdk-repo-path)
 
               - ${{if ne(artifact.skipPublishDocMs, 'true')}}:
-                - deployment: PublicDocsMS
+                - job: PublicDocsMS
                   displayName: Publish to Docs.MS
                   condition: and(succeeded(), ne(variables['Skip.PublishDocs'], 'true'))
-                  environment: package-publish
                   dependsOn: PublishPackage
 
                   pool:
-                    name: azsdk-pool-mms-ubuntu-2004-general
-                    image: azsdk-pool-mms-ubuntu-2004-1espt
+                    name: $(LINUXPOOL)
+                    image: $(LINUXVMIMAGE)
                     os: linux
 
-                  strategy:
-                    runOnce:
-                      deploy:
-                        steps:
-                          - template: /eng/common/pipelines/templates/steps/sparse-checkout.yml
-                            parameters:
-                              Paths:
-                                - sdk/**/*.md
-                                - .github/CODEOWNERS
-                          - download: current
-                          - template: /eng/common/pipelines/templates/steps/update-docsms-metadata.yml
-                            parameters:
-                              PackageInfoLocations:
-                                - $(Pipeline.Workspace)/${{parameters.ArtifactName}}/PackageInfo/${{artifact.name}}.json
-                              WorkingDirectory: $(System.DefaultWorkingDirectory)
-                              TargetDocRepoOwner: $(DocRepoOwner)
-                              TargetDocRepoName: $(DocRepoName)
-                              Language: 'dotnet'
-                              SparseCheckoutPaths:
-                                - /api/overview/azure/
-                                - /metadata/
+                  steps:
+                    - template: /eng/common/pipelines/templates/steps/sparse-checkout.yml
+                      parameters:
+                        Paths:
+                          - sdk/**/*.md
+                          - .github/CODEOWNERS
+                    - download: current
+                      displayName: Download ${{parameters.ArtifactName}}
+                      artifact: ${{parameters.ArtifactName}}
+                    - template: /eng/common/pipelines/templates/steps/update-docsms-metadata.yml
+                      parameters:
+                        PackageInfoLocations:
+                          - $(Pipeline.Workspace)/${{parameters.ArtifactName}}/PackageInfo/${{artifact.name}}.json
+                        WorkingDirectory: $(System.DefaultWorkingDirectory)
+                        TargetDocRepoOwner: $(DocRepoOwner)
+                        TargetDocRepoName: $(DocRepoName)
+                        Language: 'dotnet'
+                        SparseCheckoutPaths:
+                          - /api/overview/azure/
+                          - /metadata/
 
               - ${{if ne(artifact.skipPublishDocGithubIo, 'true')}}:
-                - deployment: PublishDocs
+                - job: PublishDocs
                   displayName: Publish Docs to GitHub pages
                   condition: and(succeeded(), ne(variables['Skip.PublishDocs'], 'true'))
-                  environment: package-publish
                   dependsOn: PublishPackage
 
-                  pool:
-                    name: azsdk-pool-mms-win-2022-general
-                    image: azsdk-pool-mms-win-2022-1espt
-                    os: windows
-
-                  strategy:
-                    runOnce:
-                      deploy:
-                        steps:
-                          - checkout: self
-                            fetchDepth: 0
-                          - template: /eng/common/pipelines/templates/steps/publish-blobs.yml
-                            parameters:
-                              FolderForUpload: '$(Pipeline.Workspace)/${{parameters.ArtifactName}}/${{artifact.name}}'
-                              TargetLanguage: 'dotnet'
-                              ArtifactLocation: '$(Pipeline.Workspace)/${{parameters.ArtifactName}}/${{artifact.name}}'
+                  steps:
+                    - template: /eng/common/pipelines/templates/steps/sparse-checkout.yml
+                    - download: current
+                      displayName: Download ${{parameters.ArtifactName}}
+                      artifact: ${{parameters.ArtifactName}}
+                    - template: /eng/common/pipelines/templates/steps/publish-blobs.yml
+                      parameters:
+                        FolderForUpload: '$(Pipeline.Workspace)/${{parameters.ArtifactName}}/${{artifact.name}}'
+                        TargetLanguage: 'dotnet'
+                        ArtifactLocation: '$(Pipeline.Workspace)/${{parameters.ArtifactName}}/${{artifact.name}}'
 
               - ${{if ne(artifact.skipUpdatePackageVersion, 'true')}}:
-                - deployment: UpdatePackageVersion
+                - job: UpdatePackageVersion
                   displayName: "Update Package Version"
                   condition: and(succeeded(), ne(variables['Skip.UpdatePackageVersion'], 'true'))
-                  environment: package-publish
                   dependsOn: PublishPackage
 
-                  pool:
-                    name: azsdk-pool-mms-win-2022-general
-                    image: azsdk-pool-mms-win-2022-1espt
-                    os: windows
+                  steps:
+                    - template: /eng/common/pipelines/templates/steps/sparse-checkout.yml
+                      parameters:
+                        paths:
+                          - /sdk
+                          - '!**/*.cs'
 
-                  strategy:
-                    runOnce:
-                      deploy:
-                        steps:
-                          - checkout: self
-                          - template: /eng/pipelines/templates/steps/install-dotnet.yml
-                            parameters:
-                              EnableNuGetCache: false
-                          - pwsh: |
-                              eng/scripts/Update-PkgVersion.ps1 -ServiceDirectory '${{parameters.ServiceDirectory}}' -PackageName '${{artifact.name}}'
-                            displayName: Increment package version
-                          - template: /eng/common/pipelines/templates/steps/create-pull-request.yml
-                            parameters:
-                              RepoName: azure-sdk-for-net
-                              PRBranchName: increment-package-version-${{ parameters.ServiceDirectory }}-$(Build.BuildId)
-                              CommitMsg: "Increment package version after release of ${{ artifact.name }}"
-                              PRTitle: "Increment version for ${{ parameters.ServiceDirectory }} releases"
-                              CloseAfterOpenForTesting: '${{ parameters.TestPipeline }}'
+                    - template: /eng/pipelines/templates/steps/install-dotnet.yml
+                      parameters:
+                        EnableNuGetCache: false
+                    - pwsh: |
+                        eng/scripts/Update-PkgVersion.ps1 -ServiceDirectory '${{parameters.ServiceDirectory}}' -PackageName '${{artifact.name}}'
+                      displayName: Increment package version
+                    - template: /eng/common/pipelines/templates/steps/create-pull-request.yml
+                      parameters:
+                        RepoName: azure-sdk-for-net
+                        PRBranchName: increment-package-version-${{ parameters.ServiceDirectory }}-$(Build.BuildId)
+                        CommitMsg: "Increment package version after release of ${{ artifact.name }}"
+                        PRTitle: "Increment version for ${{ parameters.ServiceDirectory }} releases"
+                        CloseAfterOpenForTesting: '${{ parameters.TestPipeline }}'
 
               - ${{if ne(artifact.skipSmokeTests, 'true')}}:
                 - ${{if and(eq(variables['Build.Reason'], 'Manual'), eq(variables['System.TeamProject'], 'internal'))}}:
@@ -283,7 +282,7 @@ stages:
     dependsOn: Signing
     jobs:
       - job: PublishPackages
-        condition: or(eq(variables['SetDevVersion'], 'true'), and(eq(variables['Build.Reason'],'Schedule'), eq(variables['System.TeamProject'], 'internal')))
+        condition: and(succeeded(), or(eq(variables['SetDevVersion'], 'true'), and(eq(variables['Build.Reason'],'Schedule'), eq(variables['System.TeamProject'], 'internal'))))
         displayName: Publish package to daily feed
         pool:
           name: $(WINDOWSPOOL)
@@ -299,22 +298,21 @@ stages:
                 packagesToPush: '$(Pipeline.Workspace)/${{parameters.ArtifactName}}-signed/${{artifact.name}}/*.nupkg;!$(Pipeline.Workspace)/${{parameters.ArtifactName}}-signed/${{artifact.name}}/*.symbols.nupkg'
                 publishVstsFeed: $(DevOpsFeedID)
 
-        steps:
-          - checkout: azure-sdk-build-tools
-            path: azure-sdk-build-tools
-          - template: /eng/pipelines/templates/steps/download-credscan-suppressions.yml
-          - download: current
-            artifact: ${{parameters.ArtifactName}}-signed
-          - pwsh: |
-              # For safety default to publishing to the private feed.
-              # Publish to https://dev.azure.com/azure-sdk/internal/_packaging?_a=feed&feed=azure-sdk-for-net-pr
-              $devopsFeedId = '590cfd2a-581c-4dcb-a12e-6568ce786175/fa8b2d77-74d9-48d7-bb96-badb2b9c6ca4'
-              if ('$(Build.Repository.Name)' -eq 'Azure/azure-sdk-for-net') {
-                $devopsFeedId = '${{ parameters.DevOpsFeedID }}'
-              }
-              echo "##vso[task.setvariable variable=DevOpsFeedID]$devopsFeedId"
-              echo "Using DevopsFeedId = $devopsFeedId"
-            displayName: Setup DevOpsFeedId
+          steps:
+            - template: /eng/common/pipelines/templates/steps/sparse-checkout.yml
+            - download: current
+              displayName: Download ${{parameters.ArtifactName}}-signed
+              artifact: ${{parameters.ArtifactName}}-signed
+            - pwsh: |
+                # For safety default to publishing to the private feed.
+                # Publish to https://dev.azure.com/azure-sdk/internal/_packaging?_a=feed&feed=azure-sdk-for-net-pr
+                $devopsFeedId = '590cfd2a-581c-4dcb-a12e-6568ce786175/fa8b2d77-74d9-48d7-bb96-badb2b9c6ca4'
+                if ('$(Build.Repository.Name)' -eq 'Azure/azure-sdk-for-net') {
+                  $devopsFeedId = '${{ parameters.DevOpsFeedID }}'
+                }
+                echo "##vso[task.setvariable variable=DevOpsFeedID]$devopsFeedId"
+                echo "Using DevopsFeedId = $devopsFeedId"
+              displayName: Setup DevOpsFeedId
 
       - job: PublishDocsToNightlyBranch
         dependsOn: PublishPackages
@@ -330,6 +328,8 @@ stages:
                 - sdk/**/*.md
                 - .github/CODEOWNERS
           - download: current
+            displayName: Download ${{parameters.ArtifactName}}
+            artifact: ${{parameters.ArtifactName}}
           - pwsh: |
               Get-ChildItem -Recurse $(Pipeline.Workspace)/${{parameters.ArtifactName}}/
             displayName: Show visible artifacts
diff --git a/eng/pipelines/templates/steps/download-credscan-suppressions.yml b/eng/pipelines/templates/steps/download-credscan-suppressions.yml
deleted file mode 100644
index a9a753be2ab8..000000000000
--- a/eng/pipelines/templates/steps/download-credscan-suppressions.yml
+++ /dev/null
@@ -1,11 +0,0 @@
-# 1es PT credscan step will fail if the suppression file path we use in other stages does not exist here.
-# Checking out the repo via sparse checkout changes the devops path structure so that can't be used instead.
-steps:
-  - pwsh: |
-      $ErrorActionPreference = 'Stop'
-      New-Item -ItemType Directory -Force eng
-
-      $req = Invoke-WebRequest https://raw.githubusercontent.com/Azure/azure-sdk-for-net/main/eng/CredScanSuppression.json
-      $req.RawContent | Out-File eng/CredScanSuppression.json
-    workingDirectory: $(Build.SourcesDirectory)
-    displayName: Set credscan suppression/baseline file


Reviews:
user: login: weshaggard
state: COMMENTED
author_association: MEMBER
submitted_at: 2025-03-04T23:04:44Z
user: login: weshaggard
state: COMMENTED
author_association: MEMBER
submitted_at: 2025-03-04T23:05:38Z
user: login: weshaggard
state: COMMENTED
author_association: MEMBER
submitted_at: 2025-03-04T23:08:08Z
user: login: scbedd
state: COMMENTED
author_association: MEMBER
submitted_at: 2025-03-05T20:37:14Z
user: login: scbedd
state: COMMENTED
author_association: MEMBER
submitted_at: 2025-03-05T20:37:42Z
user: login: scbedd
state: COMMENTED
author_association: MEMBER
submitted_at: 2025-03-05T20:39:45Z
user: login: hallipr
state: COMMENTED
author_association: MEMBER
submitted_at: 2025-03-05T23:20:43Z
user: login: hallipr
state: COMMENTED
author_association: MEMBER
submitted_at: 2025-03-05T23:21:57Z
user: login: hallipr
state: COMMENTED
author_association: MEMBER
submitted_at: 2025-03-06T01:01:49Z
user: login: hallipr
state: COMMENTED
author_association: MEMBER
submitted_at: 2025-03-06T01:02:30Z
user: login: hallipr
state: COMMENTED
author_association: MEMBER
submitted_at: 2025-03-06T01:02:50Z
user: login: hallipr
state: COMMENTED
author_association: MEMBER
submitted_at: 2025-03-06T01:03:03Z
user: login: weshaggard
state: APPROVED
author_association: MEMBER
submitted_at: 2025-03-10T22:56:14Z
user: login: scbedd
state: APPROVED
author_association: MEMBER
submitted_at: 2025-03-11T17:36:38Z
user: login: weshaggard
state: COMMENTED
author_association: MEMBER
submitted_at: 2025-03-11T17:40:26Z
user: login: weshaggard
state: COMMENTED
author_association: MEMBER
submitted_at: 2025-03-11T18:24:08Z
user: login: hallipr
state: COMMENTED
author_association: MEMBER
submitted_at: 2025-03-12T18:13:11Z
user: login: hallipr
state: COMMENTED
author_association: MEMBER
submitted_at: 2025-03-12T18:13:42Z

Review comments:
diff_hunk: @@ -209,6 +209,10 @@ jobs:
         inputs:
           ignoreDirectories: '.nuget'
 
+      - pwsh: |
+          Copy-Item -Path '$(Build.SourcesDirectory)/eng/CredScanSuppression.json' -Destination `$(Build.ArtifactStagingDirectory)/CredScanSuppression.json` -Force
path: eng/pipelines/templates/jobs/ci.yml
user: login: weshaggard
body: Why is this needed? I would like to avoid this. 
created_at: 2025-03-04T23:04:44Z
author_association: MEMBER
diff_hunk: @@ -27,20 +26,19 @@ stages:
               targetPath: $(Pipeline.Workspace)/${{parameters.ArtifactName}}
               artifactName: ${{parameters.ArtifactName}}-signed
 
-        strategy:
-          runOnce:
-            deploy:
-              steps:
-                - checkout: azure-sdk-build-tools
-                  path: azure-sdk-build-tools
-                - template: /eng/pipelines/templates/steps/download-credscan-suppressions.yml
-                - download: current
-                  artifact: ${{parameters.ArtifactName}}
-                  timeoutInMinutes: 5
-                - template: pipelines/steps/net-signing.yml@azure-sdk-build-tools
-                  parameters:
-                    PackagesPath: $(Pipeline.Workspace)/${{parameters.ArtifactName}}
-                    BuildToolsPath: $(Pipeline.Workspace)/azure-sdk-build-tools
+        steps:
+          - checkout: azure-sdk-build-tools
+            path: azure-sdk-build-tools
+          - download: current
+            artifact: ${{parameters.ArtifactName}}
+            timeoutInMinutes: 5
+          - template: /eng/pipelines/templates/steps/copy-credscan-suppressions.yml
path: eng/pipelines/templates/stages/archetype-net-release.yml
user: login: weshaggard
body: If we need this lets please just sparse checkout instead.
created_at: 2025-03-04T23:05:38Z
author_association: MEMBER
diff_hunk: @@ -117,31 +111,41 @@ stages:
                   os: linux
 
                 templateContext:
-                  outputParentDirectory: '$(Pipeline.Workspace)'
-                  outputs:
-                    - output: nuget
-                      displayName: 'Publish ${{artifact.name}} package to NuGet.org'
-                      packageParentPath: '$(Pipeline.Workspace)'
-                      packagesToPush: '$(Pipeline.Workspace)/${{parameters.ArtifactName}}-signed/${{artifact.name}}/*.nupkg;!$(Pipeline.Workspace)//${{parameters.ArtifactName}}-signed/${{artifact.name}}/*.symbols.nupkg'
-                      nuGetFeedType: external
-                      publishFeedCredentials: Nuget.org
-                    - output: nuget
-                      displayName: 'Publish to DevOps Feed'
-                      packageParentPath: '$(Pipeline.Workspace)'
-                      packagesToPush: '$(Pipeline.Workspace)/${{parameters.ArtifactName}}-signed/${{artifact.name}}/*.nupkg;!$(Pipeline.Workspace)/${{parameters.ArtifactName}}-signed/${{artifact.name}}/*.symbols.nupkg'
-                      publishVstsFeed: ${{ parameters.DevOpsFeedID }}
+                  type: releaseJob  # Required, this indicates this deployment job is a release job
+                  isProduction: true  # Required, must be 'true' or 'false'
+                  inputs:  # All input build artifacts must be declared here
+                    - input: pipelineArtifact  # Required, type of the input artifact
+                      artifactName: ${{parameters.ArtifactName}}-signed  # Required, name of the pipeline artifact
+                      targetPath: $(Pipeline.Workspace)/${{parameters.ArtifactName}}-signed  # Optional, specifies where the artifact is downloaded to
 
                 strategy:
                   runOnce:
                     deploy:
                       steps:
-                        - template: /eng/pipelines/templates/steps/download-credscan-suppressions.yml
+                        - template: /eng/pipelines/templates/steps/copy-credscan-suppressions.yml
path: eng/pipelines/templates/stages/archetype-net-release.yml
user: login: weshaggard
body: You shouldn't need this for deployment
created_at: 2025-03-04T23:08:08Z
author_association: MEMBER
diff_hunk: @@ -117,31 +111,37 @@ stages:
                   os: linux
 
                 templateContext:
-                  outputParentDirectory: '$(Pipeline.Workspace)'
-                  outputs:
-                    - output: nuget
-                      displayName: 'Publish ${{artifact.name}} package to NuGet.org'
path: eng/pipelines/templates/stages/archetype-net-release.yml
user: login: scbedd
body: I'm a little bit weirded out by the output artifacts used here, as historically I believe they were added to reduce the amount of generated YML. We should try a build of `storage` or `comunication` release (just up to triggering the release) to ensure that we don't hit max yml size without having this output inlined in the templatecontext.
created_at: 2025-03-05T20:37:14Z
author_association: MEMBER
diff_hunk: @@ -11,7 +11,7 @@ resources:
     - repository: azure-sdk-build-tools
       type: git
       name: internal/azure-sdk-build-tools
-      ref: refs/tags/azure-sdk-build-tools_20250228.1
+      ref: refs/heads/users/pahallis/credscan
path: eng/pipelines/templates/stages/1es-redirect.yml
user: login: scbedd
body: [FYI for reviewers](https://dev.azure.com/azure-sdk/internal/_git/azure-sdk-build-tools/pullrequest/1156)
created_at: 2025-03-05T20:37:42Z
author_association: MEMBER
diff_hunk: @@ -11,7 +11,7 @@ resources:
     - repository: azure-sdk-build-tools
       type: git
       name: internal/azure-sdk-build-tools
-      ref: refs/tags/azure-sdk-build-tools_20250228.1
+      ref: refs/heads/users/pahallis/credscan
path: eng/pipelines/templates/stages/1es-redirect.yml
user: login: scbedd
body: Does the credscansuppression file coming down as part of azure-sdk-build-tools put the credscan suppression file in the same place as exists in the repo? I would expect it to exist under a nonstandard path `$(Pipeline.Workspace)/azure-sdk-build-tools/eng/CredScanSuppression.json`.
created_at: 2025-03-05T20:39:44Z
author_association: MEMBER
diff_hunk: @@ -117,31 +111,37 @@ stages:
                   os: linux
 
                 templateContext:
-                  outputParentDirectory: '$(Pipeline.Workspace)'
-                  outputs:
-                    - output: nuget
-                      displayName: 'Publish ${{artifact.name}} package to NuGet.org'
path: eng/pipelines/templates/stages/archetype-net-release.yml
user: login: hallipr
body: The output artifacts allow you to compress your injected SDL steps by combining all of the scans across all of your outputs. This is in contract to inline output tasks like `1ES.PublishNuget` or `1ES.PublishArtifact` that will inject all of the sdl steps per inlined task.
created_at: 2025-03-05T23:20:43Z
author_association: MEMBER
diff_hunk: @@ -117,31 +111,37 @@ stages:
                   os: linux
 
                 templateContext:
-                  outputParentDirectory: '$(Pipeline.Workspace)'
-                  outputs:
-                    - output: nuget
-                      displayName: 'Publish ${{artifact.name}} package to NuGet.org'
path: eng/pipelines/templates/stages/archetype-net-release.yml
user: login: hallipr
body: The amount of YML doesn't really change.  We were declaring 2 job outputs per artifact, and now we're declaring 2 publish tasks per artifact.
created_at: 2025-03-05T23:21:57Z
author_association: MEMBER
diff_hunk: @@ -11,7 +11,7 @@ resources:
     - repository: azure-sdk-build-tools
       type: git
       name: internal/azure-sdk-build-tools
-      ref: refs/tags/azure-sdk-build-tools_20250228.1
+      ref: refs/heads/users/pahallis/credscan
path: eng/pipelines/templates/stages/1es-redirect.yml
user: login: hallipr
body: Path variables aren't consistent when mixed with different `checkout` step combinations.

When a run has a single `checkout` step, `$(System.DefaultWorkingDirectory)` always points to the single repo path, even when the repo uses a custom path.

When there are multiple `checkout` steps, `$(System.DefaultWorkingDirectory)` always points to `$(Pipeline.Workspace)/s`

The credscan path seems to be rooted with `$(System.DefaultWorkingDirectory)`, so it should track single repo checkouts, but the sdl settings will need to be overriden for any multi-repo checkout.

I added a wiki page that covers how the path variables are affected by different repo counts and paths:
https://dev.azure.com/azure-sdk/internal/_wiki/wikis/internal.wiki/1222/Pipeline-Path-Variables
created_at: 2025-03-06T01:01:49Z
author_association: MEMBER
diff_hunk: @@ -209,6 +209,10 @@ jobs:
         inputs:
           ignoreDirectories: '.nuget'
 
+      - pwsh: |
+          Copy-Item -Path '$(Build.SourcesDirectory)/eng/CredScanSuppression.json' -Destination `$(Build.ArtifactStagingDirectory)/CredScanSuppression.json` -Force
path: eng/pipelines/templates/jobs/ci.yml
user: login: hallipr
body: removed
created_at: 2025-03-06T01:02:30Z
author_association: MEMBER
diff_hunk: @@ -27,20 +26,19 @@ stages:
               targetPath: $(Pipeline.Workspace)/${{parameters.ArtifactName}}
               artifactName: ${{parameters.ArtifactName}}-signed
 
-        strategy:
-          runOnce:
-            deploy:
-              steps:
-                - checkout: azure-sdk-build-tools
-                  path: azure-sdk-build-tools
-                - template: /eng/pipelines/templates/steps/download-credscan-suppressions.yml
-                - download: current
-                  artifact: ${{parameters.ArtifactName}}
-                  timeoutInMinutes: 5
-                - template: pipelines/steps/net-signing.yml@azure-sdk-build-tools
-                  parameters:
-                    PackagesPath: $(Pipeline.Workspace)/${{parameters.ArtifactName}}
-                    BuildToolsPath: $(Pipeline.Workspace)/azure-sdk-build-tools
+        steps:
+          - checkout: azure-sdk-build-tools
+            path: azure-sdk-build-tools
+          - download: current
+            artifact: ${{parameters.ArtifactName}}
+            timeoutInMinutes: 5
+          - template: /eng/pipelines/templates/steps/copy-credscan-suppressions.yml
path: eng/pipelines/templates/stages/archetype-net-release.yml
user: login: hallipr
body: switched to sparse checkout
created_at: 2025-03-06T01:02:50Z
author_association: MEMBER
diff_hunk: @@ -117,31 +111,41 @@ stages:
                   os: linux
 
                 templateContext:
-                  outputParentDirectory: '$(Pipeline.Workspace)'
-                  outputs:
-                    - output: nuget
-                      displayName: 'Publish ${{artifact.name}} package to NuGet.org'
-                      packageParentPath: '$(Pipeline.Workspace)'
-                      packagesToPush: '$(Pipeline.Workspace)/${{parameters.ArtifactName}}-signed/${{artifact.name}}/*.nupkg;!$(Pipeline.Workspace)//${{parameters.ArtifactName}}-signed/${{artifact.name}}/*.symbols.nupkg'
-                      nuGetFeedType: external
-                      publishFeedCredentials: Nuget.org
-                    - output: nuget
-                      displayName: 'Publish to DevOps Feed'
-                      packageParentPath: '$(Pipeline.Workspace)'
-                      packagesToPush: '$(Pipeline.Workspace)/${{parameters.ArtifactName}}-signed/${{artifact.name}}/*.nupkg;!$(Pipeline.Workspace)/${{parameters.ArtifactName}}-signed/${{artifact.name}}/*.symbols.nupkg'
-                      publishVstsFeed: ${{ parameters.DevOpsFeedID }}
+                  type: releaseJob  # Required, this indicates this deployment job is a release job
+                  isProduction: true  # Required, must be 'true' or 'false'
+                  inputs:  # All input build artifacts must be declared here
+                    - input: pipelineArtifact  # Required, type of the input artifact
+                      artifactName: ${{parameters.ArtifactName}}-signed  # Required, name of the pipeline artifact
+                      targetPath: $(Pipeline.Workspace)/${{parameters.ArtifactName}}-signed  # Optional, specifies where the artifact is downloaded to
 
                 strategy:
                   runOnce:
                     deploy:
                       steps:
-                        - template: /eng/pipelines/templates/steps/download-credscan-suppressions.yml
+                        - template: /eng/pipelines/templates/steps/copy-credscan-suppressions.yml
path: eng/pipelines/templates/stages/archetype-net-release.yml
user: login: hallipr
body: removed
created_at: 2025-03-06T01:03:03Z
author_association: MEMBER
diff_hunk: @@ -156,11 +156,9 @@ stages:
                           artifactName: ${{artifact.name}}-symbols
 
                   steps:
-                    - template: /eng/common/pipelines/templates/steps/sparse-checkout.yml
-                      parameters:
-                        SkipCheckoutNone: true
+                    - checkout: self
+                      fetchDepth: 1
path: eng/pipelines/templates/stages/archetype-net-release.yml
user: login: weshaggard
body: Why this change?
created_at: 2025-03-11T17:40:25Z
author_association: MEMBER
diff_hunk: @@ -153,120 +151,113 @@ stages:
                     outputs:
                       - ${{if ne(artifact.skipSymbolsUpload, 'true')}}:
                         - output: pipelineArtifact
-                          displayName: 'Store converted symbols in ${{parameters.ArtifactName}}-symbols artifact'
+                          displayName: 'Store converted symbols in ${{artifact.name}}-symbols artifact'
                           targetPath: $(Build.ArtifactStagingDirectory)/symbols
-                          artifactName: ${{parameters.ArtifactName}}-symbols
-
-                  strategy:
-                    runOnce:
-                      deploy:
-                        steps:
-                          - checkout: self
-                            path: s  # Keep this in the same path it would be if it was only a single checkout
-                          - checkout: azure-sdk-build-tools
-                            path: azure-sdk-build-tools
-                          - template: /pipelines/steps/publish-symbols.yml@azure-sdk-build-tools
-                            parameters:
-                              BuildToolsRepositoryPath: $(Pipeline.Workspace)/azure-sdk-build-tools
-                              PackagesPath: $(Pipeline.Workspace)/${{parameters.ArtifactName}}-signed/${{artifact.name}}
-                              StagingDirectory: $(Build.ArtifactStagingDirectory)/symbols
-                          - template: /eng/common/pipelines/templates/steps/create-apireview.yml
-                            parameters:
-                              ArtifactPath: $(Pipeline.Workspace)/packages
-                              Artifacts: ${{parameters.Artifacts}}
-                              ConfigFileDir: $(Pipeline.Workspace)/packages/PackageInfo
-                              MarkPackageAsShipped: true
-                              ArtifactName: ${{parameters.ArtifactName}}
-                              PackageName: ${{artifact.name}}
+                          artifactName: ${{artifact.name}}-symbols
+
+                  steps:
+                    - checkout: self
+                      fetchDepth: 1
+                    - checkout: azure-sdk-build-tools
+                    - download: current
+                      artifact: ${{parameters.ArtifactName}}-signed
+                    - template: /pipelines/steps/publish-symbols.yml@azure-sdk-build-tools
+                      parameters:
+                        BuildToolsRepositoryPath: $(Pipeline.Workspace)/s/azure-sdk-build-tools
+                        PackagesPath: $(Pipeline.Workspace)/${{parameters.ArtifactName}}-signed/${{artifact.name}}
+                        StagingDirectory: $(Build.ArtifactStagingDirectory)/symbols
+                    - template: /eng/common/pipelines/templates/steps/create-apireview.yml
+                      parameters:
+                        ArtifactPath: $(Pipeline.Workspace)/packages
+                        Artifacts: ${{parameters.Artifacts}}
+                        ConfigFileDir: $(Pipeline.Workspace)/packages/PackageInfo
+                        MarkPackageAsShipped: true
+                        ArtifactName: ${{parameters.ArtifactName}}
+                        PackageName: ${{artifact.name}}
+                        SourceRootPath: $(Pipeline.Workspace)/s/azure-sdk-for-net
 
               - ${{if ne(artifact.skipPublishDocMs, 'true')}}:
-                - deployment: PublicDocsMS
+                - job: PublicDocsMS
                   displayName: Publish to Docs.MS
                   condition: and(succeeded(), ne(variables['Skip.PublishDocs'], 'true'))
-                  environment: package-publish
                   dependsOn: PublishPackage
 
                   pool:
                     name: azsdk-pool-mms-ubuntu-2004-general
path: eng/pipelines/templates/stages/archetype-net-release.yml
user: login: weshaggard
body: As a follow-up use image.yml variables for these.
created_at: 2025-03-11T18:24:08Z
author_association: MEMBER
diff_hunk: @@ -153,120 +151,113 @@ stages:
                     outputs:
                       - ${{if ne(artifact.skipSymbolsUpload, 'true')}}:
                         - output: pipelineArtifact
-                          displayName: 'Store converted symbols in ${{parameters.ArtifactName}}-symbols artifact'
+                          displayName: 'Store converted symbols in ${{artifact.name}}-symbols artifact'
                           targetPath: $(Build.ArtifactStagingDirectory)/symbols
-                          artifactName: ${{parameters.ArtifactName}}-symbols
-
-                  strategy:
-                    runOnce:
-                      deploy:
-                        steps:
-                          - checkout: self
-                            path: s  # Keep this in the same path it would be if it was only a single checkout
-                          - checkout: azure-sdk-build-tools
-                            path: azure-sdk-build-tools
-                          - template: /pipelines/steps/publish-symbols.yml@azure-sdk-build-tools
-                            parameters:
-                              BuildToolsRepositoryPath: $(Pipeline.Workspace)/azure-sdk-build-tools
-                              PackagesPath: $(Pipeline.Workspace)/${{parameters.ArtifactName}}-signed/${{artifact.name}}
-                              StagingDirectory: $(Build.ArtifactStagingDirectory)/symbols
-                          - template: /eng/common/pipelines/templates/steps/create-apireview.yml
-                            parameters:
-                              ArtifactPath: $(Pipeline.Workspace)/packages
-                              Artifacts: ${{parameters.Artifacts}}
-                              ConfigFileDir: $(Pipeline.Workspace)/packages/PackageInfo
-                              MarkPackageAsShipped: true
-                              ArtifactName: ${{parameters.ArtifactName}}
-                              PackageName: ${{artifact.name}}
+                          artifactName: ${{artifact.name}}-symbols
+
+                  steps:
+                    - checkout: self
+                      fetchDepth: 1
+                    - checkout: azure-sdk-build-tools
+                    - download: current
+                      artifact: ${{parameters.ArtifactName}}-signed
+                    - template: /pipelines/steps/publish-symbols.yml@azure-sdk-build-tools
+                      parameters:
+                        BuildToolsRepositoryPath: $(Pipeline.Workspace)/s/azure-sdk-build-tools
+                        PackagesPath: $(Pipeline.Workspace)/${{parameters.ArtifactName}}-signed/${{artifact.name}}
+                        StagingDirectory: $(Build.ArtifactStagingDirectory)/symbols
+                    - template: /eng/common/pipelines/templates/steps/create-apireview.yml
+                      parameters:
+                        ArtifactPath: $(Pipeline.Workspace)/packages
+                        Artifacts: ${{parameters.Artifacts}}
+                        ConfigFileDir: $(Pipeline.Workspace)/packages/PackageInfo
+                        MarkPackageAsShipped: true
+                        ArtifactName: ${{parameters.ArtifactName}}
+                        PackageName: ${{artifact.name}}
+                        SourceRootPath: $(Pipeline.Workspace)/s/azure-sdk-for-net
 
               - ${{if ne(artifact.skipPublishDocMs, 'true')}}:
-                - deployment: PublicDocsMS
+                - job: PublicDocsMS
                   displayName: Publish to Docs.MS
                   condition: and(succeeded(), ne(variables['Skip.PublishDocs'], 'true'))
-                  environment: package-publish
                   dependsOn: PublishPackage
 
                   pool:
                     name: azsdk-pool-mms-ubuntu-2004-general
path: eng/pipelines/templates/stages/archetype-net-release.yml
user: login: hallipr
body: Had more yaml work to do, so added in this PR
created_at: 2025-03-12T18:13:11Z
author_association: MEMBER
diff_hunk: @@ -156,11 +156,9 @@ stages:
                           artifactName: ${{artifact.name}}-symbols
 
                   steps:
-                    - template: /eng/common/pipelines/templates/steps/sparse-checkout.yml
-                      parameters:
-                        SkipCheckoutNone: true
+                    - checkout: self
+                      fetchDepth: 1
path: eng/pipelines/templates/stages/archetype-net-release.yml
user: login: hallipr
body: reverted to sparse checkout with explicit path
created_at: 2025-03-12T18:13:42Z
author_association: MEMBER

PR comments:
user: login: scbedd
created_at: 2025-03-11T17:37:02Z
body: /azp run net - core - ci
author_association: MEMBER
user: login: azure-pipelines[bot]
created_at: 2025-03-11T17:37:30Z
body: <samp>
Azure Pipelines successfully started running 1 pipeline(s).<br>

</samp>
author_association: NONE
user: login: hallipr
created_at: 2025-03-13T06:17:09Z
body: /azp run net - template
author_association: MEMBER
user: login: azure-pipelines[bot]
created_at: 2025-03-13T06:17:33Z
body: <samp>
Azure Pipelines successfully started running 1 pipeline(s).<br>

</samp>
author_association: NONE
user: login: hallipr
created_at: 2025-03-13T21:26:34Z
body: /check-enforcer override

Release smoke test failures aren't related to the jobs change
author_association: MEMBER