Add pipeline for build and signing (#35)

* Package and sign powershell modules

* Set up CI with Azure Pipelines

[skip ci]

* Update sign-package.yml for Azure Pipelines

* Update sign-package.yml for Azure Pipelines

* Update sign-package.yml for Azure Pipelines

* Package and sign powershell modules

* Set up CI with Azure Pipelines

[skip ci]

* Update sign-package.yml for Azure Pipelines

* Update sign-package.yml for Azure Pipelines

* Update sign-package.yml for Azure Pipelines

* Update code

* Add psd1 file in signing
This commit is contained in:
Dingmeng Xue 2020-08-27 10:28:07 +08:00 коммит произвёл GitHub
Родитель d07c31f7af
Коммит cba9121738
Не найден ключ, соответствующий данной подписи
Идентификатор ключа GPG: 4AEE18F83AFDEB23
4 изменённых файлов: 146 добавлений и 2 удалений

Просмотреть файл

@ -0,0 +1,76 @@
trigger: none
pr: none
pool:
vmImage: 'windows-2019'
steps:
- task: PowerShell@2
displayName: 'Install platyPS'
inputs:
targetType: inline
script: 'Install-Module platyPS -Force -Confirm:$false -Scope CurrentUser'
- task: PowerShell@2
displayName: 'Install PowerShellGet [v2.1.3 has a Publish-Module bug]'
inputs:
targetType: inline
script: 'Install-Module PowerShellGet -Force -Confirm:$false -Scope CurrentUser -SkipPublisherCheck'
- task: DotNetCoreCLI@2
displayName: 'Build'
inputs:
command: custom
custom: msbuild
arguments: 'build.proj /t:Build'
- task: SFP.build-tasks.custom-build-task-1.EsrpCodeSigning@1
displayName: 'Signing'
inputs:
ConnectedServiceName: $(signServiceConnection)
FolderPath: artifacts
Pattern: |
Az.Tools.Migration/**/*.ps1
Az.Tools.Migration/**/*.psd1
Az.Tools.Migration/**/*.psm1
Az.Tools.Migration/**/*.ps1xml
Az.Tools.Migration/**/*.js
UseMinimatch: true
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"
}
]
- task: DotNetCoreCLI@2
displayName: Package
inputs:
command: custom
custom: msbuild
arguments: 'build.proj /t:Package'
- task: PublishPipelineArtifact@0
displayName: 'Save artifacts'
inputs:
artifactName: artifacts
targetPath: artifacts
condition: succeededOrFailed()

Просмотреть файл

@ -2,20 +2,30 @@
<Project ToolsVersion="15.0"
xmlns="http://schemas.microsoft.com/developer/msbuild/2003" Target="Build">
<Target Name="Clean">
<Message Text="Clean artifacts folder" />
<RemoveDir Directories="artifacts" />
</Target>
<Target Name="Build">
<Message Text="Build VS code extension" />
<MSBuild Projects="vscode-extension/build.proj" Targets="Build"/>
<Message Text="Build PowerShell module" />
<MSBuild Projects="powershell-module/build.proj" Targets="Build"/>
</Target>
<Target Name="Test" DependsOnTargets="Build">
</Target>
<Target Name="Package" DependsOnTargets="Build;Test">
<Target Name="Package">
<!--
<Message Text="Package VS code extension" />
<MSBuild Projects="vscode-extension/build.proj" Targets="Package"/>
-->
<Message Text="Package PowerShell module" />
<MSBuild Projects="powershell-module/build.proj" Targets="Package"/>
</Target>
</Project>

Просмотреть файл

@ -0,0 +1,28 @@
<#
.SYNOPSIS
Create nuget packages for module.
.PARAMETER ApiKey
ApiKey used to publish nuget to PS repository.
.PARAMETER RepositoryLocation
Location we want to publish too.
#>
param(
[Parameter(Mandatory = $true)]
[string]$RepositoryLocation
)
try {
$tempRepoName = ([System.Guid]::NewGuid()).ToString()
Register-PSRepository -Name $tempRepoName -SourceLocation $RepositoryLocation -PublishLocation $RepositoryLocation -InstallationPolicy Trusted -PackageManagementProvider NuGet
$modulePath = Join-Path $RepositoryLocation Az.Tools.Migration -Resolve
Publish-Module -Path $modulePath -Repository $tempRepoName -Force
} catch {
$Errors = $_
Write-Error ($_ | Out-String)
} finally {
Unregister-PSRepository -Name $tempRepoName
}

Просмотреть файл

@ -0,0 +1,30 @@
<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="15.0"
xmlns="http://schemas.microsoft.com/developer/msbuild/2003" Target="Build">
<PropertyGroup>
<PowerShellCoreCommandPrefix>pwsh -NonInteractive -NoLogo -NoProfile -Command</PowerShellCoreCommandPrefix>
</PropertyGroup>
<Target Name="Clean">
<Message Text="Clean artifacts folder" />
<RemoveDir Directories="..\artifacts" />
</Target>
<Target Name="Build">
<Message Text="Build Az.Tools.Migration" />
<ItemGroup>
<PublishFiles Include="Az.Tools.Migration\**" Exclude="Az.Tools.Migration\Tests\**;Az.Tools.Migration\Resources\TestFiles\**"/>
</ItemGroup>
<Copy SourceFiles="@(PublishFiles)" DestinationFolder="..\artifacts\Az.Tools.Migration\%(RecursiveDir)" />
</Target>
<Target Name="Test" DependsOnTargets="Build">
</Target>
<Target Name="Package">
<Message Text="Package Az.Tools.Migration" />
<Exec Command="$(PowerShellCoreCommandPrefix) &quot;Scripts\Publish-Module.ps1 -RepositoryLocation $(MSBuildProjectDirectory)\..\artifacts&quot;" />
</Target>
</Project>