- Add release stage to pipeline.
This commit is contained in:
Bernie White 2019-05-17 21:25:30 +10:00 коммит произвёл GitHub
Родитель aac5ed5c43
Коммит c22938bf42
Не найден ключ, соответствующий данной подписи
Идентификатор ключа GPG: 4AEE18F83AFDEB23
3 изменённых файлов: 55 добавлений и 14 удалений

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

@ -1,3 +1,5 @@
# Azure DevOps
# CI pipeline for PSRule.Rules.Azure
variables:
version: '0.1.0'
@ -7,7 +9,12 @@ variables:
name: $(version)-B$(date:yyMM)$(rev:rr)
trigger:
- master
branches:
include:
- 'master'
tags:
include:
- 'v0.*'
pr:
branches:
@ -15,8 +22,10 @@ pr:
- 'master'
stages:
# Build pipeline
- stage: Build
displayName: Build stage
displayName: Build
jobs:
- job:
strategy:
@ -70,16 +79,32 @@ stages:
inputs:
codeCoverageTool: 'JaCoCo'
summaryFileLocation: 'reports/pester-coverage.xml'
#reportDirectory: # Optional
#additionalCodeCoverageFiles: # Optional
#failIfCoverageEmpty: false # Optional
condition: eq(variables['coverage'], 'true')
# Generate artifacts
- task: PublishBuildArtifacts@1
- task: PublishPipelineArtifact@0
displayName: 'Publish module'
inputs:
PathtoPublish: out/modules/PSRule.Rules.Azure
ArtifactName: PSRule.Rules.Azure
artifactName: PSRule.Rules.Azure
targetPath: out/modules/PSRule.Rules.Azure
condition: and(succeeded(), eq(variables['publishModule'], 'true'))
# Release pipeline
- stage: Release
displayName: Release
dependsOn: Build
condition: startsWith(variables['Build.SourceBranch'], 'refs/tags/v0.')
jobs:
- job:
displayName: Live
pool:
vmImage: 'ubuntu-16.04'
steps:
- task: DownloadPipelineArtifact@1
displayName: 'Download module'
inputs:
artifactName: PSRule.Rules.Azure
downloadPath: $(Build.SourcesDirectory)/out/modules/PSRule.Rules.Azure
# Install pipeline dependencies and build module
- powershell: ./scripts/pipeline-build.ps1 -File ./pipeline.build.ps1 -Task Release -NuGetApiKey $(apiKey)
displayName: 'Publish module'

3
.vscode/settings.json поставляемый
Просмотреть файл

@ -13,5 +13,8 @@
},
"[markdown]": {
"editor.tabSize": 2
},
"files.associations": {
"**/.azure-pipelines/*.yaml": "azure-pipelines"
}
}

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

@ -29,6 +29,9 @@ if ($Env:Coverage -eq 'true') {
$CodeCoverage = $True;
}
Write-Verbose -Message "[Pipeline] -- PWD: $PWD";
Write-Verbose -Message "[Pipeline] -- ArtifactPath: $ArtifactPath";
# Copy the PowerShell modules files to the destination path
function CopyModuleFiles {
@ -60,6 +63,10 @@ function CopyModuleFiles {
}
task VersionModule PSRule, {
$modulePath = Join-Path -Path $ArtifactPath -ChildPath PSRule.Rules.Azure;
$manifestPath = Join-Path -Path $modulePath -ChildPath PSRule.Rules.Azure.psd1;
Write-Verbose -Message "[VersionModule] -- Checking module path: $modulePath";
if (![String]::IsNullOrEmpty($ReleaseVersion)) {
Write-Verbose -Message "[VersionModule] -- ReleaseVersion: $ReleaseVersion";
$ModuleVersion = $ReleaseVersion;
@ -87,24 +94,30 @@ task VersionModule PSRule, {
# Update module version
if (![String]::IsNullOrEmpty($version)) {
Write-Verbose -Message "[VersionModule] -- Updating module manifest ModuleVersion";
Update-ModuleManifest -Path (Join-Path -Path $ArtifactPath -ChildPath PSRule.Rules.Azure/PSRule.Rules.Azure.psd1) -ModuleVersion $version;
Update-ModuleManifest -Path $manifestPath -ModuleVersion $version;
}
# Update pre-release version
if (![String]::IsNullOrEmpty($revision)) {
Write-Verbose -Message "[VersionModule] -- Updating module manifest Prerelease";
Update-ModuleManifest -Path (Join-Path -Path $ArtifactPath -ChildPath PSRule.Rules.Azure/PSRule.Rules.Azure.psd1) -Prerelease $revision;
Update-ModuleManifest -Path $manifestPath -Prerelease $revision;
}
}
$manifest = Get-Content -Path (Join-Path -Path $ArtifactPath -ChildPath PSRule.Rules.Azure/PSRule.Rules.Azure.psd1) -Raw;
$manifest.Replace('RequiredModules = @()', "RequiredModules = @(@{ ModuleName = 'PSRule'; ModuleVersion = '0.5.0' }, @{ ModuleName = 'Az.Accounts'; ModuleVersion = '1.4.0' }, @{ ModuleName = 'Az.StorageSync'; ModuleVersion = '0.8.0' }, @{ ModuleName = 'Az.Security'; ModuleVersion = '0.7.4' }, @{ ModuleName = 'Az.Storage'; ModuleVersion = '1.1.1' }, @{ ModuleName = 'Az.Websites'; ModuleVersion = '1.1.2' }, @{ ModuleName = 'Az.Sql'; ModuleVersion = '1.7.0' })") | Set-Content -Path (Join-Path -Path $ArtifactPath -ChildPath PSRule.Rules.Azure/PSRule.Rules.Azure.psd1);
$manifest = Get-Content -Path $manifestPath -Raw;
$manifest.Replace('RequiredModules = @()', "RequiredModules = @(@{ ModuleName = 'PSRule'; ModuleVersion = '0.5.0' }, @{ ModuleName = 'Az.Accounts'; ModuleVersion = '1.4.0' }, @{ ModuleName = 'Az.StorageSync'; ModuleVersion = '0.8.0' }, @{ ModuleName = 'Az.Security'; ModuleVersion = '0.7.4' }, @{ ModuleName = 'Az.Storage'; ModuleVersion = '1.1.1' }, @{ ModuleName = 'Az.Websites'; ModuleVersion = '1.1.2' }, @{ ModuleName = 'Az.Sql'; ModuleVersion = '1.7.0' })") | Set-Content -Path $manifestPath;
}
task ReleaseModule VersionModule, {
if (![String]::IsNullOrEmpty($NuGetApiKey)) {
$modulePath = (Join-Path -Path $ArtifactPath -ChildPath PSRule.Rules.Azure);
Write-Verbose -Message "[ReleaseModule] -- Checking module path: $modulePath";
if (!(Test-Path -Path $modulePath)) {
Write-Error -Message "[ReleaseModule] -- Module path does not exist";
}
elseif (![String]::IsNullOrEmpty($NuGetApiKey)) {
# Publish to PowerShell Gallery
Publish-Module -Path (Join-Path -Path $ArtifactPath -ChildPath PSRule.Rules.Azure) -NuGetApiKey $NuGetApiKey;
Publish-Module -Path $modulePath -NuGetApiKey $NuGetApiKey;
}
}