durabletask-netherite/azure-pipelines-release.yml

141 строка
4.2 KiB
YAML

# .NET Desktop
# Build and run tests for .NET Desktop or Windows classic desktop solutions.
# Add steps that publish symbols, save build artifacts, and more:
# https://docs.microsoft.com/azure/devops/pipelines/apps/windows/dot-net
trigger: none
pr: none
pool:
name: '1ES-Hosted-DurableTaskFramework'
demands:
- ImageOverride -equals MMS2022TLS
steps:
# Install specific .NET sdk required by build or signing tasks
- task: UseDotNet@2
displayName: 'Use the .NET Core 2.1 SDK (required for build signing)'
inputs:
packageType: 'sdk'
version: '2.1.x'
- task: UseDotNet@2
displayName: 'Install .NET Core 2.2 SDK'
inputs:
packageType: 'sdk'
version: '2.2.x'
- task: UseDotNet@2
displayName: 'Install .NET Core 3.1 SDK'
inputs:
packageType: 'sdk'
version: '3.1.x'
- task: UseDotNet@2
displayName: 'Install .NET Core 5.0 SDK'
inputs:
packageType: 'sdk'
version: '5.0.x'
- task: UseDotNet@2
displayName: 'Install .NET Core 7.0 SDK'
inputs:
packageType: 'sdk'
version: '7.0.x'
# Start by restoring all the dependencies.
- task: DotNetCoreCLI@2
displayName: 'Restore nuget dependencies'
inputs:
command: restore
verbosityRestore: Minimal
projects: 'src/dirs.proj'
# Build the filtered solution in release mode, specifying the continuous integration flag.
- task: DotNetCoreCLI@2
displayName: 'Build'
inputs:
command: build
arguments: --no-restore -c release -p:GITHUB_RUN_NUMBER=$(Build.BuildId) -p:ContinuousIntegrationBuild=true
projects: 'src/dirs.proj'
# Manifest Generator Task
- task: AzureArtifacts.manifest-generator-task.manifest-generator-task.ManifestGeneratorTask@0
displayName: 'Manifest Generator '
inputs:
BuildDropPath: '$(System.DefaultWorkingDirectory)'
# Authenticode sign all the DLLs with the Microsoft certificate.
# This appears to be an in-place signing job, which is convenient.
- task: SFP.build-tasks.custom-build-task-1.EsrpCodeSigning@1
displayName: 'ESRP CodeSigning: Authenticode'
inputs:
ConnectedServiceName: 'ESRP Service'
FolderPath: 'src'
Pattern: 'DurableTask.*.dll'
signConfigType: inlineSignParams
inlineOperation: |
[
{
"KeyCode": "CP-230012",
"OperationCode": "SigntoolSign",
"Parameters": {
"OpusName": "Microsoft",
"OpusInfo": "http://www.microsoft.com",
"FileDigest": "/fd \"SHA256\"",
"PageHash": "/NPH",
"TimeStamp": "/tr \"http://rfc3161.gtm.corp.microsoft.com/TSS/HttpTspServer\" /td sha256"
},
"ToolName": "sign",
"ToolVersion": "1.0"
},
{
"KeyCode": "CP-230012",
"OperationCode": "SigntoolVerify",
"Parameters": {},
"ToolName": "sign",
"ToolVersion": "1.0"
}
]
# Packaging needs to be a separate step from build.
# This will automatically pick up the signed DLLs.
- task: DotNetCoreCLI@2
displayName: Generate nuget packages
inputs:
command: pack
verbosityPack: Minimal
configuration: Release
nobuild: true
packDirectory: $(build.artifactStagingDirectory)
packagesToPack: 'src/dirs.proj'
# Digitally sign all the nuget packages with the Microsoft certificate.
# This appears to be an in-place signing job, which is convenient.
- task: SFP.build-tasks.custom-build-task-1.EsrpCodeSigning@1
displayName: 'ESRP CodeSigning: Nupkg'
inputs:
ConnectedServiceName: 'ESRP Service'
FolderPath: $(build.artifactStagingDirectory)
Pattern: '*.nupkg'
signConfigType: inlineSignParams
inlineOperation: |
[
{
"KeyCode": "CP-401405",
"OperationCode": "NuGetSign",
"Parameters": {},
"ToolName": "sign",
"ToolVersion": "1.0"
},
{
"KeyCode": "CP-401405",
"OperationCode": "NuGetVerify",
"Parameters": {},
"ToolName": "sign",
"ToolVersion": "1.0"
}
]
# Make the nuget packages available for download in the ADO portal UI
- publish: $(build.artifactStagingDirectory)
displayName: 'Publish nuget packages to Artifacts'
artifact: PackageOutput