@@ -5,8 +5,9 @@ variables:
55 version : ' 0.2.0'
66 buildConfiguration : ' Release'
77 disable.coverage.autogenerate : ' true'
8+ imageName : ' ubuntu-18.04'
89
9- # Use build number format, i.e. 0.2.0-B1811001
10+ # Use build number format, i.e. 0.2.0-B2002001
1011name : $(version)-B$(date:yyMM)$(rev:rrr)
1112
1213trigger :
@@ -27,25 +28,12 @@ stages:
2728# Build pipeline
2829- stage : Build
2930 displayName : Build
31+ dependsOn : []
3032 jobs :
3133 - job :
32- strategy :
33- matrix :
34- Linux :
35- displayName : ' Linux'
36- imageName : ' ubuntu-latest'
37- MacOS :
38- displayName : ' MacOS'
39- imageName : ' macOS-latest'
40- Windows :
41- displayName : ' Windows'
42- imageName : ' vs2017-win2016'
43- publish : ' true'
44- analysis : ' true'
45- coverage : ' true'
4634 pool :
4735 vmImage : $(imageName)
48- displayName : ' PowerShell '
36+ displayName : ' Module '
4937 steps :
5038
5139 # Install pipeline dependencies
@@ -56,19 +44,6 @@ stages:
5644 - powershell : Invoke-Build -Configuration $(buildConfiguration) -Build $(Build.BuildNumber)
5745 displayName : ' Build module'
5846
59- # Pester test results
60- - task : PublishTestResults@2
61- displayName : ' Publish Pester results'
62- inputs :
63- testRunTitle : ' Pester on $(imageName)'
64- testRunner : NUnit
65- testResultsFiles : ' reports/pester-unit.xml'
66- mergeTestResults : true
67- platform : $(imageName)
68- configuration : $(buildConfiguration)
69- publishRunAttachments : true
70- condition : succeededOrFailed()
71-
7247 # PSRule results
7348 - task : PublishTestResults@2
7449 displayName : ' Publish PSRule results'
@@ -82,52 +57,104 @@ stages:
8257 publishRunAttachments : true
8358 condition : succeededOrFailed()
8459
85- # Generate Code Coverage report
86- - task : Palmmedia.reportgenerator.reportgenerator-build-release-task.reportgenerator@4
87- displayName : ' Code coverage report generator'
88- inputs :
89- reports : ' reports\pester-coverage.xml'
90- targetdir : ' reports\coverage'
91- sourcedirs : ' src\PSRule.Rules.Kubernetes'
92- reporttypes : ' HtmlInline_AzurePipelines;Cobertura;Badges'
93- tag : $(Build.BuildNumber)
94- condition : eq(variables['coverage'], 'true')
95-
96- # Publish Code Coverage report
97- - task : PublishCodeCoverageResults@1
98- displayName : ' Publish Pester code coverage'
99- inputs :
100- codeCoverageTool : ' Cobertura'
101- summaryFileLocation : ' reports/coverage/Cobertura.xml'
102- reportDirectory : ' reports/coverage'
103- condition : eq(variables['coverage'], 'true')
104-
10560 # Generate artifacts
10661 - publish : out/modules/PSRule.Rules.Kubernetes
10762 displayName : ' Publish module'
10863 artifact : PSRule.Rules.Kubernetes
109- condition : and(succeeded(), eq(variables['publish'], 'true'))
64+
65+ # Analysis pipeline
66+ - stage : Analysis
67+ displayName : Analysis
68+ dependsOn : []
69+ jobs :
70+ - job : Secret_Scan
71+ pool : ' Hosted VS2017'
72+ displayName : Secret scan
73+
74+ steps :
75+ - task : securedevelopmentteam.vss-secure-development-tools.build-task-credscan.CredScan@2
76+ displayName : ' Scan for secrets'
77+ inputs :
78+ debugMode : false
79+ toolMajorVersion : V2
80+
81+ - task : securedevelopmentteam.vss-secure-development-tools.build-task-publishsecurityanalysislogs.PublishSecurityAnalysisLogs@2
82+ displayName : ' Publish scan logs'
83+ continueOnError : true
84+
85+ - task : securedevelopmentteam.vss-secure-development-tools.build-task-postanalysis.PostAnalysis@1
86+ displayName : ' Check for failures'
87+ inputs :
88+ CredScan : true
89+ ToolLogsNotFoundAction : Error
90+
91+ # Test pipeline
92+ - stage : Test
93+ dependsOn : Build
94+ jobs :
95+
96+ - template : jobs/test.yaml
97+ parameters :
98+ name : ubuntu_18_04_coverage
99+ imageName : ' ubuntu-18.04'
100+ displayName : ' PowerShell coverage'
101+ coverage : ' true'
102+ publishResults : ' false'
103+
104+ - template : jobs/test.yaml
105+ parameters :
106+ name : macOS_10_15
107+ displayName : ' PowerShell 6.2.4 - macOS-10.15'
108+ imageName : ' macOS-10.15'
109+
110+ - template : jobs/test.yaml
111+ parameters :
112+ name : windows
113+ displayName : ' PowerShell 5.1 - win2016'
114+ imageName : ' vs2017-win2016'
115+
116+ # Currently can't use alpine because addtional tools for Azure DevOps are required
117+ # - template: jobs/testContainer.yaml
118+ # parameters:
119+ # name: alpine_3_10
120+ # displayName: 'PowerShell 7.0 - alpine-3.10'
121+ # imageName: mcr.microsoft.com/powershell
122+ # imageTag: 7.0.0-alpine-3.10
123+
124+ - template : jobs/testContainer.yaml
125+ parameters :
126+ name : ps_7_ubuntu_18_04
127+ displayName : ' PowerShell 7.0 - ubuntu-18.04'
128+ imageName : mcr.microsoft.com/powershell
129+ imageTag : 7.0.0-ubuntu-18.04
130+
131+ - template : jobs/testContainer.yaml
132+ parameters :
133+ name : ps_6_ubuntu_18_04
134+ displayName : ' PowerShell 6.2.4 - ubuntu-18.04'
135+ imageName : mcr.microsoft.com/powershell
136+ imageTag : 6.2.4-ubuntu-18.04
110137
111138# Release pipeline
112139- stage : Release
113140 displayName : Release
114- dependsOn : Build
141+ dependsOn : [ 'Test', 'Analysis' ]
115142 condition : and(succeeded(), startsWith(variables['Build.SourceBranch'], 'refs/tags/v0.'))
116143 jobs :
117144 - job :
118145 displayName : Live
119146 pool :
120- vmImage : ' ubuntu-latest '
147+ vmImage : $(imageName)
121148 variables :
122149 isPreRelease : $[contains(variables['Build.SourceBranchName'], '-B')]
123150 steps :
124151
125152 # Download module from build
126- - task : DownloadPipelineArtifact@1
153+ - task : DownloadPipelineArtifact@2
127154 displayName : ' Download module'
128155 inputs :
129- artifactName : PSRule.Rules.Kubernetes
130- downloadPath : $(Build.SourcesDirectory)/out/modules/PSRule.Rules.Kubernetes
156+ artifact : PSRule.Rules.Kubernetes
157+ path : $(Build.SourcesDirectory)/out/modules/PSRule.Rules.Kubernetes
131158
132159 # Install pipeline dependencies
133160 - powershell : ./.azure-pipelines/pipeline-deps.ps1
@@ -138,15 +165,15 @@ stages:
138165 displayName : ' Publish module'
139166
140167 # Update GitHub release
141- - task : GitHubRelease@0
168+ - task : GitHubRelease@1
142169 displayName : ' GitHub release'
143170 inputs :
144171 gitHubConnection : ' AzureDevOps-PSRule.Rules.Kubernetes'
145172 repositoryName : ' $(Build.Repository.Name)'
146173 action : edit
147174 tag : ' $(Build.SourceBranchName)'
148- releaseNotesSource : input
149- releaseNotes : ' See [change log](https://github.com/Microsoft/PSRule.Rules.Kubernetes/blob/master/CHANGELOG.md)'
175+ releaseNotesSource : inline
176+ releaseNotesInline : ' See [change log](https://github.com/Microsoft/PSRule.Rules.Kubernetes/blob/master/CHANGELOG.md)'
150177 assetUploadMode : replace
151178 addChangeLog : false
152179 isPreRelease : $(isPreRelease)
0 commit comments