Update azure-pipelines.yml for Azure Pipelines

This commit is contained in:
Ryan Newington
2023-02-04 08:52:11 +11:00
parent 843535a0ba
commit 9668356e5d
+105 -11
View File
@@ -19,23 +19,24 @@ variables:
- name: build.date - name: build.date
value: $[format('{0:yyyy}-{0:MM}-{0:dd}T{0:HH}:{0:mm}:{0:ss}', pipeline.startTime)] value: $[format('{0:yyyy}-{0:MM}-{0:dd}T{0:HH}:{0:mm}:{0:ss}', pipeline.startTime)]
- group: Azure KeyVault Code Signing - group: Azure KeyVault Code Signing
- group: PSGallery
name: $(build.version.major).$(build.version.minor).$(build.version.revision)$(build.version.suffix) name: $(build.version.major).$(build.version.minor).$(build.version.revision)$(build.version.suffix)
trigger: none trigger: none
stages: stages:
- stage: build - stage: build-provider
displayName: Build credential provider displayName: Build credential provider
dependsOn: [] dependsOn: []
jobs: jobs:
- job: "buildjob" - job: "build-provider-job"
steps: steps:
- task: DotNetCoreCLI@2 - task: DotNetCoreCLI@2
displayName: dotnet build displayName: dotnet build
inputs: inputs:
command: build command: build
publishWebProjects: false publishWebProjects: false
arguments: '-c $(buildConfiguration) -p:Version=$(build.version) -p:PackageOutputPath=$(Build.ArtifactStagingDirectory)' arguments: '-c $(buildConfiguration) -p:Version=$(build.version) -p:PackageOutputPath=$(Build.ArtifactStagingDirectory)\cp'
projects: 'src/Lithnet.CredentialProvider/Lithnet.CredentialProvider.csproj' projects: 'src/Lithnet.CredentialProvider/Lithnet.CredentialProvider.csproj'
zipAfterPublish: false zipAfterPublish: false
@@ -88,7 +89,7 @@ stages:
targetType: 'inline' targetType: 'inline'
script: | script: |
$cmdargs = @( $cmdargs = @(
"sign", "$(Build.ArtifactStagingDirectory)\Lithnet.CredentialProvider.$(build.version).nupkg" "sign", "$(Build.ArtifactStagingDirectory)\cp\Lithnet.CredentialProvider.$(build.version).nupkg"
"-fd", "sha256", "-fd", "sha256",
"-kvu", "$(akv.url)", "-kvu", "$(akv.url)",
"-kvi", "$(akv.applicationID)", "-kvi", "$(akv.applicationID)",
@@ -109,7 +110,7 @@ stages:
targetType: 'inline' targetType: 'inline'
script: | script: |
$cmdargs = @( $cmdargs = @(
"sign", "$(Build.ArtifactStagingDirectory)\Lithnet.CredentialProvider.$(build.version).snupkg" "sign", "$(Build.ArtifactStagingDirectory)\cp\Lithnet.CredentialProvider.$(build.version).snupkg"
"-fd", "sha256", "-fd", "sha256",
"-kvu", "$(akv.url)", "-kvu", "$(akv.url)",
"-kvi", "$(akv.applicationID)", "-kvi", "$(akv.applicationID)",
@@ -128,7 +129,7 @@ stages:
displayName: Publish package to internal feed displayName: Publish package to internal feed
inputs: inputs:
command: 'push' command: 'push'
packagesToPush: '$(Build.ArtifactStagingDirectory)/*.nupkg' packagesToPush: '$(Build.ArtifactStagingDirectory)/cp/*.nupkg'
nuGetFeedType: 'internal' nuGetFeedType: 'internal'
publishVstsFeed: '91a552bc-359d-4f28-bdbd-f36f71cfdf81' publishVstsFeed: '91a552bc-359d-4f28-bdbd-f36f71cfdf81'
@@ -136,18 +137,89 @@ stages:
displayName: Publish symbols to internal feed displayName: Publish symbols to internal feed
inputs: inputs:
command: 'push' command: 'push'
packagesToPush: '$(Build.ArtifactStagingDirectory)/*.snupkg' packagesToPush: '$(Build.ArtifactStagingDirectory)/cp/*.snupkg'
nuGetFeedType: 'internal' nuGetFeedType: 'internal'
publishVstsFeed: '91a552bc-359d-4f28-bdbd-f36f71cfdf81' publishVstsFeed: '91a552bc-359d-4f28-bdbd-f36f71cfdf81'
- task: PublishPipelineArtifact@1 - task: PublishPipelineArtifact@1
displayName: Publish nuget artifact
inputs: inputs:
targetPath: '$(Build.ArtifactStagingDirectory)' targetPath: '$(Build.ArtifactStagingDirectory)/cp'
publishLocation: 'pipeline' publishLocation: 'pipeline'
- stage: publish - task: PublishPipelineArtifact@1
displayName: Publish PS artifact
inputs:
targetPath: '$(Build.ArtifactStagingDirectory)/ps'
publishLocation: 'pipeline'
- stage: build-psmodule
displayName: Build PowerShell module
dependsOn: []
jobs:
- job: "build-ps-job"
steps:
- task: DotNetCoreCLI@2
displayName: dotnet build
inputs:
command: build
publishWebProjects: false
arguments: '-c $(buildConfiguration) -p:Version=$(build.version) --output "$(Build.ArtifactStagingDirectory)\ps"'
projects: 'src/Lithnet.CredentialProvider.Management/Lithnet.CredentialProvider.Management.csproj'
zipAfterPublish: false
- task: PowerShell@2
displayName: 'Update manifest version'
inputs:
targetType: 'inline'
script: |
Update-ModuleManifest -Path "$(Build.ArtifactStagingDirectory)\ps\Lithnet.CredentialProvider.Management.psd1" -ModuleVersion "$(build.version)"
- task: DotNetCoreCLI@2
inputs:
command: 'custom'
custom: 'tool'
arguments: 'update --global azuresigntool'
displayName: Install AzureSignTool
- task: PowerShell@2
displayName: 'Sign files with AzureSignTool'
inputs:
targetType: 'inline'
script: |
$files = @()
$files += (Get-ChildItem -Recurse -Path "$(Build.ArtifactStagingDirectory)\ps\Lithnet*.dll").FullName
$files += (Get-ChildItem -Recurse -Path "$(Build.ArtifactStagingDirectory)\ps\Lithnet*.psd1").FullName
write-host "Signing $($files.Length) files:"
write-output $files
$cmdargs = @(
"sign",
"-d", "Lithnet Windows Credential Provider",
"-kvu", "$(akv.url)",
"-kvi", "$(akv.applicationID)",
"-kvs", "$(akv.secret)",
"-kvt", "$(akv.tenantId)",
"-kvc", "$(akv.certificateName)",
"-tr", "http://timestamp.digicert.com",
"-td", "sha256"
)
$cmdargs += $files
& AzureSignTool $cmdargs
failOnStderr: true
showWarnings: true
- task: PublishPipelineArtifact@1
inputs:
targetPath: '$(Build.ArtifactStagingDirectory)\ps'
publishLocation: 'pipeline'
- stage: publish-nuget
displayName: Publish packages to production feed displayName: Publish packages to production feed
dependsOn: "build" dependsOn: "build-provider"
jobs: jobs:
- deployment: 'PublishPackages' - deployment: 'PublishPackages'
environment: 'Production' environment: 'Production'
@@ -158,7 +230,7 @@ stages:
runOnce: runOnce:
deploy: deploy:
steps: steps:
- checkout: self - checkout: none
- task: NuGetToolInstaller@1 - task: NuGetToolInstaller@1
inputs: inputs:
versionSpec: '>=4.9.0-0' versionSpec: '>=4.9.0-0'
@@ -169,3 +241,25 @@ stages:
packagesToPush: '$(Pipeline.Workspace)/**/*.nupkg' packagesToPush: '$(Pipeline.Workspace)/**/*.nupkg'
nuGetFeedType: 'external' nuGetFeedType: 'external'
publishFeedCredentials: 'WindowsCredentialProviderNuget' publishFeedCredentials: 'WindowsCredentialProviderNuget'
- stage: publish-psgallery
displayName: Publish module to PSGallery
dependsOn: "build-psmodule"
jobs:
- deployment: 'PublishPackages'
environment: 'Production'
displayName: Publish packages to public PSGallery
pool:
vmImage: windows-2022
strategy:
runOnce:
deploy:
steps:
- checkout: none
- task: PowerShell@2
displayName: 'Upload module to PSGallery'
inputs:
targetType: 'inline'
script: |
Publish-Module -Path "$(Pipeline.Workspace)\ps\Lithnet.CredentialProvider.Management.psd1" -NuGetApiKey "$(psgallery.apikey)"