@@ -13,6 +13,17 @@ variables:
13
13
stages :
14
14
- stage : precheck
15
15
jobs :
16
+ - job : gofmt
17
+ dependsOn : []
18
+ pool :
19
+ vmImage : " ubuntu-18.04"
20
+ steps :
21
+ - task : GoTool@0
22
+ displayName : " Installing Golang"
23
+ inputs :
24
+ version : ' 1.16'
25
+ - script : scripts/gofmt.sh
26
+ displayName : " Executing gofmt"
16
27
- job : govet
17
28
dependsOn : []
18
29
pool :
@@ -45,7 +56,7 @@ stages:
45
56
./bin/golangci-lint run --timeout 5m0s ./...
46
57
displayName: "Executing golang-ci lint"
47
58
48
- - stage : dockerfile_lint
59
+ - stage : container_quality
49
60
dependsOn : ["precheck"]
50
61
jobs :
51
62
- job : dockerfile_lint
@@ -88,7 +99,7 @@ stages:
88
99
publishLocation : ' Container'
89
100
90
101
- stage : build_image
91
- dependsOn : ["dockerfile_lint "]
102
+ dependsOn : ["container_quality "]
92
103
jobs :
93
104
- job : linux_amd64
94
105
dependsOn : []
@@ -99,9 +110,53 @@ stages:
99
110
command : ' build'
100
111
Dockerfile : ' **/Dockerfile'
101
112
tags : ' $(Build.BuildId)'
113
+ repository : ' k8s-vault-webhook'
114
+ - script : |
115
+ mkdir -p $(Build.ArtifactStagingDirectory)/image
116
+ docker save -o $(Build.ArtifactStagingDirectory)/image/k8s-vault-webhook.tar k8s-vault-webhook:$(Build.BuildId)
117
+ displayName: "Archiving docker image"
118
+ - task : PublishBuildArtifacts@1
119
+ inputs :
120
+ PathtoPublish : ' $(Build.ArtifactStagingDirectory)/image'
121
+ ArtifactName : ' drop'
122
+ publishLocation : ' Container'
123
+
124
+ - stage : code_security
125
+ dependsOn : ["build"]
126
+ jobs :
127
+ - job : gosec
128
+ dependsOn : []
129
+ steps :
130
+ - script : scripts/gosec.sh
131
+ displayName : " Execute gosec scan"
132
+ - task : PublishTestResults@2
133
+ displayName : " Publish test results"
134
+ inputs :
135
+ testResultsFormat : ' JUnit'
136
+ testResultsFiles : ' ./bin/results.xml'
137
+ failTaskOnFailedTests : false
138
+ testRunTitle : ' GoSec Test Result'
139
+
140
+ - stage : container_security
141
+ dependsOn : ["build_image"]
142
+ jobs :
143
+ - job : trivy_scan
144
+ dependsOn : []
145
+ steps :
146
+ - task : DownloadBuildArtifacts@0
147
+ displayName : " Downloading the image artifact"
148
+ inputs :
149
+ buildType : ' current'
150
+ downloadType : ' single'
151
+ artifactName : ' drop'
152
+ downloadPath : ' $(System.ArtifactsDirectory)'
153
+ - script : scripts/trivy-scan.sh
154
+ displayName : " Execute trivy scan"
155
+ env :
156
+ IMAGE_PATH : $(System.ArtifactsDirectory)/drop/k8s-vault-webhook.tar
102
157
103
158
- stage : release_binaries
104
- dependsOn : ["build", "build_image "]
159
+ dependsOn : ["code_security "]
105
160
jobs :
106
161
- job : goreleaser
107
162
dependsOn : []
@@ -115,7 +170,7 @@ stages:
115
170
condition : and(succeeded(), eq(variables['Build.SourceBranch'], 'refs/heads/master'))
116
171
117
172
- stage : release_quay
118
- dependsOn : ["build ", "build_image "]
173
+ dependsOn : ["container_security ", "code_security "]
119
174
jobs :
120
175
- job : quay
121
176
dependsOn : []
@@ -135,7 +190,7 @@ stages:
135
190
condition : and(succeeded(), eq(variables['Build.SourceBranch'], 'refs/heads/master'))
136
191
137
192
- stage : release_github_image
138
- dependsOn : ["build ", "build_image "]
193
+ dependsOn : ["container_security ", "code_security "]
139
194
jobs :
140
195
- job : github
141
196
dependsOn : []
@@ -181,7 +236,7 @@ stages:
181
236
displayName: "Executing k8s-vault-webhook"
182
237
183
238
- stage : docs
184
- dependsOn : ["release_binaries", "release_quay", "release_github_image "]
239
+ dependsOn : ["verify "]
185
240
jobs :
186
241
- job : build
187
242
dependsOn : []
0 commit comments