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:
Родитель
d07c31f7af
Коммит
cba9121738
|
@ -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()
|
14
build.proj
14
build.proj
|
@ -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) "Scripts\Publish-Module.ps1 -RepositoryLocation $(MSBuildProjectDirectory)\..\artifacts"" />
|
||||
</Target>
|
||||
</Project>
|
Загрузка…
Ссылка в новой задаче