post-build.yml 18.1 KB
Newer Older
1
parameters:
2
  enableSourceLinkValidation: false
3
  enableSigningValidation: true
4
  enableSymbolValidation: false
5
  enableNugetValidation: true
6
  publishInstallersAndChecksums: false
7 8
  SDLValidationParameters:
    enable: false
9
    continueOnError: false
10
    params: ''
11
    artifactNames: ''
12

13 14 15 16 17 18
  # These parameters let the user customize the call to sdk-task.ps1 for publishing
  # symbols & general artifacts as well as for signing validation
  symbolPublishingAdditionalParameters: ''
  artifactsPublishingAdditionalParameters: ''
  signingValidationAdditionalParameters: ''

19
  # Which stages should finish execution before post-build stages start
20 21 22 23
  validateDependsOn:
  - build
  publishDependsOn: 
  - Validate
24

25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40
  # Channel ID's instantiated in this file.
  # When adding a new channel implementation the call to `check-channel-consistency.ps1` 
  # needs to be updated with the new channel ID
  NetEngLatestChannelId: 2
  NetEngValidationChannelId: 9
  NetCoreDev5ChannelId: 131
  GeneralTestingChannelId: 529
  NETCoreToolingDevChannelId: 548
  NETCoreToolingReleaseChannelId: 549
  NETInternalToolingChannelId: 551
  NETCoreExperimentalChannelId: 562
  NetEngServicesIntChannelId: 678
  NetEngServicesProdChannelId: 679
  Net5Preview1ChannelId: 737
  Net5Preview2ChannelId: 738
  
41
stages:
42 43
- stage: Validate
  dependsOn: ${{ parameters.validateDependsOn }}
44
  displayName: Validate
45 46
  variables:
    - template: common-variables.yml
47
  jobs:
48 49
  - template: setup-maestro-vars.yml

50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67
  - job:
    displayName: Post-build Checks
    dependsOn: setupMaestroVars
    variables:
      - name: InitialChannels
        value: $[ dependencies.setupMaestroVars.outputs['setReleaseVars.InitialChannels'] ]
      - name: PromoteToMaestroChannelId
        value: $[ dependencies.setupMaestroVars.outputs['setReleaseVars.PromoteToMaestroChannelId'] ]
    pool:
      vmImage: 'windows-2019'
    steps:
      - task: PowerShell@2
        displayName: Maestro Channels Consistency
        inputs:
          filePath: $(Build.SourcesDirectory)/eng/common/post-build/check-channel-consistency.ps1
          arguments: -PromoteToChannels "$(InitialChannels)[$(PromoteToMaestroChannelId)]"
            -AvailableChannelIds ${{parameters.NetEngLatestChannelId}},${{parameters.NetEngValidationChannelId}},${{parameters.NetCoreDev5ChannelId}},${{parameters.GeneralTestingChannelId}},${{parameters.NETCoreToolingDevChannelId}},${{parameters.NETCoreToolingReleaseChannelId}},${{parameters.NETInternalToolingChannelId}},${{parameters.NETCoreExperimentalChannelId}},${{parameters.NetEngServicesIntChannelId}},${{parameters.NetEngServicesProdChannelId}},${{parameters.Net5Preview1ChannelId}},${{parameters.Net5Preview2ChannelId}}

68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192
  - job:
    displayName: NuGet Validation
    dependsOn: setupMaestroVars
    condition: eq( ${{ parameters.enableNugetValidation }}, 'true')
    pool:
      vmImage: 'windows-2019'
    variables:
      - name: AzDOProjectName
        value: $[ dependencies.setupMaestroVars.outputs['setReleaseVars.AzDOProjectName'] ]
      - name: AzDOPipelineId
        value: $[ dependencies.setupMaestroVars.outputs['setReleaseVars.AzDOPipelineId'] ]
      - name: AzDOBuildId
        value: $[ dependencies.setupMaestroVars.outputs['setReleaseVars.AzDOBuildId'] ]
    steps:
      - task: DownloadBuildArtifacts@0
        displayName: Download Package Artifacts
        inputs:
          buildType: specific
          buildVersionToDownload: specific
          project: $(AzDOProjectName)
          pipeline: $(AzDOPipelineId)
          buildId: $(AzDOBuildId)
          artifactName: PackageArtifacts

      - task: PowerShell@2
        displayName: Validate
        inputs:
          filePath: $(Build.SourcesDirectory)/eng/common/post-build/nuget-validation.ps1
          arguments: -PackagesPath $(Build.ArtifactStagingDirectory)/PackageArtifacts/ 
            -ToolDestinationPath $(Agent.BuildDirectory)/Extract/ 

  - job:
    displayName: Signing Validation
    dependsOn: setupMaestroVars
    condition: eq( ${{ parameters.enableSigningValidation }}, 'true')
    variables:
      - template: common-variables.yml
      - name: AzDOProjectName
        value: $[ dependencies.setupMaestroVars.outputs['setReleaseVars.AzDOProjectName'] ]
      - name: AzDOPipelineId
        value: $[ dependencies.setupMaestroVars.outputs['setReleaseVars.AzDOPipelineId'] ]
      - name: AzDOBuildId
        value: $[ dependencies.setupMaestroVars.outputs['setReleaseVars.AzDOBuildId'] ]
    pool:
      vmImage: 'windows-2019'
    steps:
      - task: DownloadBuildArtifacts@0
        displayName: Download Package Artifacts
        inputs:
          buildType: specific
          buildVersionToDownload: specific
          project: $(AzDOProjectName)
          pipeline: $(AzDOPipelineId)
          buildId: $(AzDOBuildId)
          artifactName: PackageArtifacts

      # This is necessary whenever we want to publish/restore to an AzDO private feed
      # Since sdk-task.ps1 tries to restore packages we need to do this authentication here
      # otherwise it'll complain about accessing a private feed.
      - task: NuGetAuthenticate@0
        displayName: 'Authenticate to AzDO Feeds'

      - task: PowerShell@2
        displayName: Enable cross-org publishing
        inputs:
          filePath: eng\common\enable-cross-org-publishing.ps1
          arguments: -token $(dn-bot-dnceng-artifact-feeds-rw)

      - task: PowerShell@2
        displayName: Validate
        inputs:
          filePath: eng\common\sdk-task.ps1
          arguments: -task SigningValidation -restore -msbuildEngine dotnet
            /p:PackageBasePath='$(Build.ArtifactStagingDirectory)/PackageArtifacts'
            /p:SignCheckExclusionsFile='$(Build.SourcesDirectory)/eng/SignCheckExclusionsFile.txt'
            ${{ parameters.signingValidationAdditionalParameters }}

      - template: ../steps/publish-logs.yml
        parameters:
          StageLabel: 'Validation'
          JobLabel: 'Signing'

  - job:
    displayName: SourceLink Validation
    dependsOn: setupMaestroVars
    condition: eq( ${{ parameters.enableSourceLinkValidation }}, 'true')
    variables:
      - template: common-variables.yml
      - name: AzDOProjectName
        value: $[ dependencies.setupMaestroVars.outputs['setReleaseVars.AzDOProjectName'] ]
      - name: AzDOPipelineId
        value: $[ dependencies.setupMaestroVars.outputs['setReleaseVars.AzDOPipelineId'] ]
      - name: AzDOBuildId
        value: $[ dependencies.setupMaestroVars.outputs['setReleaseVars.AzDOBuildId'] ]
    pool:
      vmImage: 'windows-2019'
    steps:
      - task: DownloadBuildArtifacts@0
        displayName: Download Blob Artifacts
        inputs:
          buildType: specific
          buildVersionToDownload: specific
          project: $(AzDOProjectName)
          pipeline: $(AzDOPipelineId)
          buildId: $(AzDOBuildId)
          artifactName: BlobArtifacts

      - task: PowerShell@2
        displayName: Validate
        inputs:
          filePath: $(Build.SourcesDirectory)/eng/common/post-build/sourcelink-validation.ps1
          arguments: -InputPath $(Build.ArtifactStagingDirectory)/BlobArtifacts/ 
            -ExtractPath $(Agent.BuildDirectory)/Extract/ 
            -GHRepoName $(Build.Repository.Name) 
            -GHCommit $(Build.SourceVersion)
            -SourcelinkCliVersion $(SourceLinkCLIVersion)
        continueOnError: true

  - template: /eng/common/templates/job/execute-sdl.yml
    parameters:
      enable: ${{ parameters.SDLValidationParameters.enable }}
      dependsOn: setupMaestroVars
      additionalParameters: ${{ parameters.SDLValidationParameters.params }}
      continueOnError: ${{ parameters.SDLValidationParameters.continueOnError }}
      artifactNames: ${{ parameters.SDLValidationParameters.artifactNames }}
193

194
- template: \eng\common\templates\post-build\channels\generic-public-channel.yml
195
  parameters:
196
    artifactsPublishingAdditionalParameters: ${{ parameters.artifactsPublishingAdditionalParameters }}
197
    dependsOn: ${{ parameters.publishDependsOn }}
198
    publishInstallersAndChecksums: ${{ parameters.publishInstallersAndChecksums }}
199
    symbolPublishingAdditionalParameters: ${{ parameters.symbolPublishingAdditionalParameters }}
200 201
    stageName: 'NetCore_Dev5_Publish'
    channelName: '.NET Core 5 Dev'
202
    channelId: ${{ parameters.NetCoreDev5ChannelId }}
203 204 205 206
    transportFeed: 'https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet5-transport/nuget/v3/index.json'
    shippingFeed: 'https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet5/nuget/v3/index.json'
    symbolsFeed: 'https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet5-symbols/nuget/v3/index.json'

207 208 209 210 211 212 213 214
- template: \eng\common\templates\post-build\channels\generic-public-channel.yml
  parameters:
    artifactsPublishingAdditionalParameters: ${{ parameters.artifactsPublishingAdditionalParameters }}
    dependsOn: ${{ parameters.publishDependsOn }}
    publishInstallersAndChecksums: ${{ parameters.publishInstallersAndChecksums }}
    symbolPublishingAdditionalParameters: ${{ parameters.symbolPublishingAdditionalParameters }}
    stageName: 'Net5_Preview1_Publish'
    channelName: '.NET 5 Preview 1'
215
    channelId: ${{ parameters.Net5Preview1ChannelId }}
216 217 218 219 220 221 222 223 224 225 226 227
    transportFeed: 'https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet5-transport/nuget/v3/index.json'
    shippingFeed: 'https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet5/nuget/v3/index.json'
    symbolsFeed: 'https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet5-symbols/nuget/v3/index.json'

- template: \eng\common\templates\post-build\channels\generic-public-channel.yml
  parameters:
    artifactsPublishingAdditionalParameters: ${{ parameters.artifactsPublishingAdditionalParameters }}
    dependsOn: ${{ parameters.publishDependsOn }}
    publishInstallersAndChecksums: ${{ parameters.publishInstallersAndChecksums }}
    symbolPublishingAdditionalParameters: ${{ parameters.symbolPublishingAdditionalParameters }}
    stageName: 'Net5_Preview2_Publish'
    channelName: '.NET 5 Preview 2'
228
    channelId: ${{ parameters.Net5Preview2ChannelId }}
229 230 231 232
    transportFeed: 'https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet5-transport/nuget/v3/index.json'
    shippingFeed: 'https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet5/nuget/v3/index.json'
    symbolsFeed: 'https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet5-symbols/nuget/v3/index.json'

233
- template: \eng\common\templates\post-build\channels\generic-public-channel.yml
234 235
  parameters:
    artifactsPublishingAdditionalParameters: ${{ parameters.artifactsPublishingAdditionalParameters }}
236
    dependsOn: ${{ parameters.publishDependsOn }}
237
    publishInstallersAndChecksums: ${{ parameters.publishInstallersAndChecksums }}
238
    symbolPublishingAdditionalParameters: ${{ parameters.symbolPublishingAdditionalParameters }}
239 240
    stageName: 'Net_Eng_Latest_Publish'
    channelName: '.NET Eng - Latest'
241
    channelId: ${{ parameters.NetEngLatestChannelId }}
242 243 244 245 246
    transportFeed: 'https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-eng/nuget/v3/index.json'
    shippingFeed: 'https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-eng/nuget/v3/index.json'
    symbolsFeed: 'https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-eng-symbols/nuget/v3/index.json'

- template: \eng\common\templates\post-build\channels\generic-public-channel.yml
247
  parameters:
248
    artifactsPublishingAdditionalParameters: ${{ parameters.artifactsPublishingAdditionalParameters }}
249
    dependsOn: ${{ parameters.publishDependsOn }}
250
    publishInstallersAndChecksums: ${{ parameters.publishInstallersAndChecksums }}
251
    symbolPublishingAdditionalParameters: ${{ parameters.symbolPublishingAdditionalParameters }}
252 253
    stageName: 'Net_Eng_Validation_Publish'
    channelName: '.NET Eng - Validation'
254
    channelId: ${{ parameters.NetEngValidationChannelId }}
255 256 257 258 259
    transportFeed: 'https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-eng/nuget/v3/index.json'
    shippingFeed: 'https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-eng/nuget/v3/index.json'
    symbolsFeed: 'https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-eng-symbols/nuget/v3/index.json'

- template: \eng\common\templates\post-build\channels\generic-public-channel.yml
260 261
  parameters:
    artifactsPublishingAdditionalParameters: ${{ parameters.artifactsPublishingAdditionalParameters }}
262
    dependsOn: ${{ parameters.publishDependsOn }}
263
    publishInstallersAndChecksums: ${{ parameters.publishInstallersAndChecksums }}
264
    symbolPublishingAdditionalParameters: ${{ parameters.symbolPublishingAdditionalParameters }}
265 266
    stageName: 'General_Testing_Publish'
    channelName: 'General Testing'
267
    channelId: ${{ parameters.GeneralTestingChannelId }}
268 269 270 271 272
    transportFeed: 'https://pkgs.dev.azure.com/dnceng/public/_packaging/general-testing/nuget/v3/index.json'
    shippingFeed: 'https://pkgs.dev.azure.com/dnceng/public/_packaging/general-testing/nuget/v3/index.json'
    symbolsFeed: 'https://pkgs.dev.azure.com/dnceng/public/_packaging/general-testing-symbols/nuget/v3/index.json'

- template: \eng\common\templates\post-build\channels\generic-public-channel.yml
273 274
  parameters:
    artifactsPublishingAdditionalParameters: ${{ parameters.artifactsPublishingAdditionalParameters }}
275
    dependsOn: ${{ parameters.publishDependsOn }}
276
    publishInstallersAndChecksums: ${{ parameters.publishInstallersAndChecksums }}
277
    symbolPublishingAdditionalParameters: ${{ parameters.symbolPublishingAdditionalParameters }}
278 279
    stageName: 'NETCore_Tooling_Dev_Publishing'
    channelName: '.NET Core Tooling Dev'
280
    channelId: ${{ parameters.NETCoreToolingDevChannelId }}
281 282 283 284 285
    transportFeed: 'https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-tools/nuget/v3/index.json'
    shippingFeed: 'https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-tools/nuget/v3/index.json'
    symbolsFeed: 'https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-tools-symbols/nuget/v3/index.json'

- template: \eng\common\templates\post-build\channels\generic-public-channel.yml
286 287 288 289 290
  parameters:
    artifactsPublishingAdditionalParameters: ${{ parameters.artifactsPublishingAdditionalParameters }}
    dependsOn: ${{ parameters.publishDependsOn }}
    publishInstallersAndChecksums: ${{ parameters.publishInstallersAndChecksums }}
    symbolPublishingAdditionalParameters: ${{ parameters.symbolPublishingAdditionalParameters }}
291 292
    stageName: 'NETCore_Tooling_Release_Publishing'
    channelName: '.NET Core Tooling Release'
293
    channelId: ${{ parameters.NETCoreToolingReleaseChannelId }}
294 295 296 297 298
    transportFeed: 'https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-tools/nuget/v3/index.json'
    shippingFeed: 'https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-tools/nuget/v3/index.json'
    symbolsFeed: 'https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-tools-symbols/nuget/v3/index.json'

- template: \eng\common\templates\post-build\channels\generic-internal-channel.yml
299 300
  parameters:
    artifactsPublishingAdditionalParameters: ${{ parameters.artifactsPublishingAdditionalParameters }}
301
    dependsOn: ${{ parameters.publishDependsOn }}
302 303
    publishInstallersAndChecksums: ${{ parameters.publishInstallersAndChecksums }}
    symbolPublishingAdditionalParameters: ${{ parameters.symbolPublishingAdditionalParameters }}
304 305
    stageName: 'NET_Internal_Tooling_Publishing'
    channelName: '.NET Internal Tooling'
306
    channelId: ${{ parameters.NETInternalToolingChannelId }}
307 308 309 310 311
    transportFeed: 'https://pkgs.dev.azure.com/dnceng/internal/_packaging/dotnet-tools-internal/nuget/v3/index.json'
    shippingFeed: 'https://pkgs.dev.azure.com/dnceng/internal/_packaging/dotnet-tools-internal/nuget/v3/index.json'
    symbolsFeed: 'https://pkgs.dev.azure.com/dnceng/internal/_packaging/dotnet-tools-internal-symbols/nuget/v3/index.json'

- template: \eng\common\templates\post-build\channels\generic-public-channel.yml
312 313 314 315
  parameters:
    artifactsPublishingAdditionalParameters: ${{ parameters.artifactsPublishingAdditionalParameters }}
    dependsOn: ${{ parameters.publishDependsOn }}
    publishInstallersAndChecksums: ${{ parameters.publishInstallersAndChecksums }}
316
    symbolPublishingAdditionalParameters: ${{ parameters.symbolPublishingAdditionalParameters }}
317 318
    stageName: 'NETCore_Experimental_Publishing'
    channelName: '.NET Core Experimental'
319
    channelId: ${{ parameters.NETCoreExperimentalChannelId }}
320 321 322
    transportFeed: 'https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-experimental/nuget/v3/index.json'
    shippingFeed: 'https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-experimental/nuget/v3/index.json'
    symbolsFeed: 'https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-experimental-symbols/nuget/v3/index.json'
323 324 325 326 327 328 329 330 331

- template: \eng\common\templates\post-build\channels\generic-public-channel.yml
  parameters:
    artifactsPublishingAdditionalParameters: ${{ parameters.artifactsPublishingAdditionalParameters }}
    dependsOn: ${{ parameters.publishDependsOn }}
    publishInstallersAndChecksums: ${{ parameters.publishInstallersAndChecksums }}
    symbolPublishingAdditionalParameters: ${{ parameters.symbolPublishingAdditionalParameters }}
    stageName: 'Net_Eng_Services_Int_Publish'
    channelName: '.NET Eng Services - Int'
332
    channelId: ${{ parameters.NetEngServicesIntChannelId }}
333 334 335 336 337 338 339 340 341 342 343 344
    transportFeed: 'https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-eng/nuget/v3/index.json'
    shippingFeed: 'https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-eng/nuget/v3/index.json'
    symbolsFeed: 'https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-eng-symbols/nuget/v3/index.json'

- template: \eng\common\templates\post-build\channels\generic-public-channel.yml
  parameters:
    artifactsPublishingAdditionalParameters: ${{ parameters.artifactsPublishingAdditionalParameters }}
    dependsOn: ${{ parameters.publishDependsOn }}
    publishInstallersAndChecksums: ${{ parameters.publishInstallersAndChecksums }}
    symbolPublishingAdditionalParameters: ${{ parameters.symbolPublishingAdditionalParameters }}
    stageName: 'Net_Eng_Services_Prod_Publish'
    channelName: '.NET Eng Services - Prod'
345
    channelId: ${{ parameters.NetEngServicesProdChannelId }}
346 347 348
    transportFeed: 'https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-eng/nuget/v3/index.json'
    shippingFeed: 'https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-eng/nuget/v3/index.json'
    symbolsFeed: 'https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-eng-symbols/nuget/v3/index.json'