141 строка
4.2 KiB
YAML
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 |