-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathazure-pipelines.yml
149 lines (132 loc) · 4.96 KB
/
azure-pipelines.yml
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
trigger:
branches:
include:
- master
- feature/*
- hotfix/*
paths:
exclude:
- '*.md'
pool:
vmImage: 'windows-latest'
stages:
- stage: Test
jobs:
- job: TestJob
steps:
- task: PowerShell@2
displayName: Install InvokeBuild module on the build agent
inputs:
targetType: 'inline'
pwsh: true
script: |
if (-not (Get-Module -Name InvokeBuild -ListAvailable)) {
Install-Module InvokeBuild -Force
}
Import-Module InvokeBuild
- task: PowerShell@2
displayName: Analyze code with PSScriptAnalyzer
inputs:
targetType: 'inline'
pwsh: true
script: Invoke-Build -Task Analyze -PAT $(System.AccessToken)
workingDirectory: $(System.DefaultWorkingDirectory)
- task: PublishTestResults@2
displayName: Publish code analysis results
condition: succeededOrFailed()
inputs:
testResultsFormat: 'NUnit'
testResultsFiles: '$(System.DefaultWorkingDirectory)/**/AnalysisResults*.xml'
failTaskOnFailedTests: true
- task: PowerShell@2
displayName: Test code with Pester tests
condition: succeededOrFailed()
inputs:
targetType: 'inline'
pwsh: true
script: Invoke-Build -Task Test -PAT $(System.AccessToken)
workingDirectory: $(System.DefaultWorkingDirectory)
- task: PublishTestResults@2
displayName: Publish test results
condition: succeededOrFailed()
inputs:
testResultsFormat: 'NUnit'
testResultsFiles: '$(System.DefaultWorkingDirectory)/**/TestResults*.xml'
failTaskOnFailedTests: true
- task: PowerShell@2
displayName: Verify code coverage
condition: succeededOrFailed()
inputs:
targetType: 'inline'
pwsh: true
failOnStderr: true
script: Invoke-Build -Task CodeCoverage -PAT $(System.AccessToken)
workingDirectory: $(System.DefaultWorkingDirectory)
- task: PublishCodeCoverageResults@1
displayName: Publish code coverage results
condition: succeededOrFailed()
inputs:
codeCoverageTool: 'JaCoCo'
summaryFileLocation: '$(System.DefaultWorkingDirectory)/**/CodeCoverageResults*.xml'
pathToSources: '$(System.DefaultWorkingDirectory)/runbooks/'
- stage: Build
jobs:
- job: BuildJob
steps:
- task: PowerShell@2
displayName: Install InvokeBuild module on the build agent
inputs:
targetType: 'inline'
pwsh: true
script: |
if (-not (Get-Module -Name InvokeBuild -ListAvailable)) {
Install-Module InvokeBuild -Force
}
Import-Module InvokeBuild
- task: PowerShell@2
displayName: Build PowerShell module
inputs:
targetType: 'inline'
pwsh: true
script: Invoke-Build -Task Build -PAT $(System.AccessToken)
workingDirectory: $(System.DefaultWorkingDirectory)
- task: PublishPipelineArtifact@1
inputs:
targetPath: '$(System.DefaultWorkingDirectory)/build'
artifactName: 'build'
- stage: Deploy
condition: and(succeeded(), eq(variables['Build.SourceBranch'], 'refs/heads/master')) # Deploy only from the master branch
jobs:
- deployment: DeploymentJob
displayName: Deploy PowerShell artifacts to Azure Automation account
environment: 'Test'
strategy:
runOnce:
deploy:
steps:
- download: none
- task: DownloadPipelineArtifact@2
inputs:
source: 'current'
artifact: 'build'
path: '$(Pipeline.Workspace)/build'
- task: PowerShell@2
displayName: Install PSDeploy module on the build agent
inputs:
targetType: 'inline'
pwsh: true
script: |
if (-not (Get-Module -Name PSDeploy -ListAvailable)) {
Install-Module PSDeploy -Force
}
Import-Module PSDeploy
- task: AzurePowerShell@5
displayName: Deploy artifact with PSDeploy
inputs:
azureSubscription: 'Personal'
ScriptType: InlineScript
Inline: Invoke-PSDeploy -Force -Verbose
workingDirectory: '$(Pipeline.Workspace)'
pwsh: true
azurePowerShellVersion: latestVersion
errorActionPreference: silentlyContinue # Using error supression as a workaround to AzureAutomationModule deployment task