Skip to content

Commit 3389c9f

Browse files
author
Le Zhou
committed
Create azure-pipelines-test.yml
1 parent 1b756d3 commit 3389c9f

File tree

1 file changed

+297
-0
lines changed

1 file changed

+297
-0
lines changed

azure-pipelines-test.yml

Lines changed: 297 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,297 @@
1+
# Docker
2+
# Build and push an image to Azure Container Registry
3+
# https://docs.microsoft.com/azure/devops/pipelines/languages/docker
4+
pr:
5+
drafts: false
6+
trigger:
7+
- none
8+
9+
resources:
10+
- repo: self
11+
12+
variables:
13+
# Container registry service connection established during pipeline creation
14+
# Agent VM image name
15+
- name: vmImageName
16+
value: 'windows-latest'
17+
- name: fullBuild
18+
value: $[ne(variables['Build.Reason'], 'PullRequest')]
19+
- name: securityScan
20+
value: $[or(eq(variables['Build.Reason'], 'Manual'), eq(variables['Build.Reason'], 'Schedule'))]
21+
22+
stages:
23+
- stage: Build
24+
displayName: Build and push stage
25+
jobs:
26+
- job: Build
27+
displayName: Build
28+
pool:
29+
vmImage: $(vmImageName)
30+
steps:
31+
- task: NodeTool@0
32+
inputs:
33+
versionSpec: '18.x'
34+
- task: Npm@1
35+
inputs:
36+
command: 'install'
37+
workingDir: 'react'
38+
- task: Npm@1
39+
inputs:
40+
command: 'custom'
41+
workingDir: 'react'
42+
customCommand: 'run pub'
43+
- task: CodeInspector@2
44+
displayName: "[Security Review] code inspector"
45+
inputs:
46+
ProductId: '606a5e0d-64b0-4237-9dca-eac200438452'
47+
condition: eq(variables.securityScan, 'true')
48+
- task: CodeQL3000Init@0
49+
displayName: "[Security Review] CodeQL Init"
50+
condition: eq(variables.securityScan, 'true')
51+
- task: CredScan@3
52+
displayName: "[Security Review] CredScan"
53+
condition: eq(variables.securityScan, 'true')
54+
- task: PowerShell@2
55+
displayName: Generate Env File
56+
inputs:
57+
targetType: 'inline'
58+
script: |
59+
if(Test-Path variable:BLOB_CONNECTION_STRING){
60+
New-Item -Path common/src/test/resources -Name ".env" -ItemType "file" -Value "BLOB_CONNECTION_STRING = $(BLOB_CONNECTION_STRING)"
61+
}else{
62+
Write-Host "No BLOB_CONNECTION_STRING found"
63+
}
64+
workingDirectory: '$(Build.Repository.LocalPath)'
65+
condition: eq(variables.fullBuild, 'false')
66+
- task: PowerShell@2
67+
displayName: Set center/agent version
68+
inputs:
69+
targetType: 'inline'
70+
script: |
71+
$PSDefaultParameterValues['*:Encoding'] = 'utf8'
72+
$hydraVersionCode = $(Build.BuildId)
73+
$hydraVersion = "$(Build.SourceBranchName).$(Build.BuildId)"
74+
$branchName = "$(Build.SourceBranch)"
75+
76+
(Get-Content agent/src/main/resources/version.properties) -Replace '1000000', "$hydraVersionCode"| Set-Content agent/src/main/resources/version.properties
77+
(Get-Content center/src/main/resources/version.properties) -Replace '1000000', "$hydraVersionCode"| Set-Content center/src/main/resources/version.properties
78+
79+
if($branchName -like '*Release*'){
80+
(Get-Content agent/src/main/resources/version.properties) -Replace '0.0.0', $hydraVersion| Set-Content agent/src/main/resources/version.properties
81+
(Get-Content center/src/main/resources/version.properties) -Replace '0.0.0', $hydraVersion| Set-Content center/src/main/resources/version.properties
82+
}
83+
echo "##vso[task.setvariable variable=hydraVersionCode;]$hydraVersionCode"
84+
echo "##vso[task.setvariable variable=hydraVersion;]$hydraVersion"
85+
workingDirectory: '$(Build.Repository.LocalPath)'
86+
- task: Gradle@3
87+
displayName: Run JUnit Test
88+
inputs:
89+
gradleWrapperFile: 'gradlew'
90+
tasks: 'test jacocoRootReport --stacktrace'
91+
publishJUnitResults: true
92+
testResultsFiles: '**/TEST-*.xml'
93+
#codeCoverageToolOption: 'JaCoCo'
94+
#codeCoverageClassFilesDirectories: 'build/classes/java/main'
95+
javaHomeOption: 'JDKVersion'
96+
jdkVersionOption: '1.11'
97+
sonarQubeRunAnalysis: false
98+
spotBugsAnalysis: false
99+
condition: eq(variables.fullBuild, 'false')
100+
- task: PowerShell@2
101+
displayName: Delete Env File
102+
inputs:
103+
targetType: 'inline'
104+
script: |
105+
if(Test-Path common/src/test/resources/.env){
106+
Remove-Item -Path common/src/test/resources/.env -Force
107+
}else{
108+
Write-Host "No .env file found"
109+
}
110+
workingDirectory: '$(Build.Repository.LocalPath)'
111+
condition: eq(variables.fullBuild, 'false')
112+
- task: PublishCodeCoverageResults@1
113+
displayName: Publich Code Coverage
114+
inputs:
115+
codeCoverageTool: 'JaCoCo'
116+
summaryFileLocation: 'build/reports/jacoco/jacocoRootReport/*.xml'
117+
reportDirectory: 'build/reports/jacoco/jacocoRootReport/html'
118+
condition: eq(variables.fullBuild, 'false')
119+
- task: Gradle@2
120+
displayName: Package Android client APK
121+
inputs:
122+
workingDirectory: 'android_client'
123+
gradleWrapperFile: 'android_client/gradlew'
124+
tasks: 'assembleRelease --stacktrace'
125+
publishJUnitResults: false
126+
javaHomeOption: 'JDKVersion'
127+
jdkVersionOption: '1.11'
128+
options: '-PclientVersionCode=$(hydraVersionCode) -PclientVersionNumber=$(hydraVersion)'
129+
- task: Gradle@2
130+
displayName: Package Android client APK
131+
inputs:
132+
workingDirectory: 'android_client'
133+
gradleWrapperFile: 'android_client/gradlew'
134+
tasks: 'assembleAndroidTest --stacktrace'
135+
publishJUnitResults: false
136+
javaHomeOption: 'JDKVersion'
137+
jdkVersionOption: '1.11'
138+
options: '-PclientVersionCode=$(hydraVersionCode) -PclientVersionNumber=$(hydraVersion)'
139+
- task: PowerShell@2
140+
displayName: Copy APK to folder for deployment
141+
inputs:
142+
targetType: 'inline'
143+
script: |
144+
cp android_client/app/build/outputs/apk/androidTest/debug/app-debug-androidTest.apk common/src/main/resources/record_androidTest.apk -force
145+
- task: PowerShell@2
146+
displayName: Copy APK to folder for deployment
147+
inputs:
148+
targetType: 'inline'
149+
script: |
150+
cp android_client/app/build/outputs/apk/release/app-release.apk common/src/main/resources/record_release.apk -force
151+
- task: Gradle@2
152+
displayName: Build center
153+
inputs:
154+
gradleWrapperFile: 'gradlew'
155+
tasks: 'center:bootJar --stacktrace'
156+
publishJUnitResults: false
157+
javaHomeOption: 'JDKVersion'
158+
jdkVersionOption: '1.11'
159+
sonarQubeRunAnalysis: false
160+
spotBugsAnalysis: false
161+
- task: Gradle@2
162+
displayName: Build agent
163+
inputs:
164+
gradleWrapperFile: 'gradlew'
165+
tasks: 'agent:bootJar --stacktrace'
166+
publishJUnitResults: false
167+
javaHomeOption: 'JDKVersion'
168+
jdkVersionOption: '1.11'
169+
sonarQubeRunAnalysis: false
170+
spotBugsAnalysis: false
171+
- task: CopyFiles@2
172+
displayName: Copy deploy center files
173+
inputs:
174+
SourceFolder: 'center/'
175+
Contents: 'Dockerfile'
176+
TargetFolder: '$(Build.ArtifactStagingDirectory)/center_deploy'
177+
condition: eq(variables.fullBuild, 'true')
178+
- task: CopyFiles@2
179+
displayName: Copy deploy center files 2
180+
inputs:
181+
SourceFolder: 'center/deploy_startup/'
182+
Contents: '**'
183+
TargetFolder: '$(Build.ArtifactStagingDirectory)/center_deploy/deploy_startup'
184+
condition: eq(variables.fullBuild, 'true')
185+
- task: CopyFiles@2
186+
displayName: Copy deploy center files 3
187+
inputs:
188+
SourceFolder: 'center/uber_image/'
189+
Contents: 'hydra_lab_center_docker_db.sqlite'
190+
TargetFolder: '$(Build.ArtifactStagingDirectory)/center_deploy/deploy_startup'
191+
condition: eq(variables.fullBuild, 'true')
192+
- task: CopyFiles@2
193+
displayName: Copy deploy center files 4
194+
inputs:
195+
SourceFolder: 'common/src/main/resources/'
196+
Contents: |
197+
record_release.apk
198+
record_androidTest.apk
199+
TargetFolder: '$(Build.ArtifactStagingDirectory)/center_deploy/deploy_startup'
200+
condition: eq(variables.fullBuild, 'true')
201+
- task: CopyFiles@2
202+
displayName: Copy center jar
203+
inputs:
204+
SourceFolder: 'center/build/libs/'
205+
Contents: '*.jar'
206+
TargetFolder: '$(Build.ArtifactStagingDirectory)/center_deploy'
207+
condition: eq(variables.fullBuild, 'true')
208+
- task: Gradle@2
209+
displayName: Package Mac installer
210+
inputs:
211+
gradleWrapperFile: 'gradlew'
212+
tasks: 'packageMacInstaller --stacktrace'
213+
publishJUnitResults: false
214+
javaHomeOption: 'JDKVersion'
215+
jdkVersionOption: '1.11'
216+
sonarQubeRunAnalysis: false
217+
spotBugsAnalysis: false
218+
condition: eq(variables.fullBuild, 'true')
219+
- task: Gradle@2
220+
displayName: Package Windows installer
221+
inputs:
222+
gradleWrapperFile: 'gradlew'
223+
tasks: 'packageWindowsInstaller --stacktrace'
224+
publishJUnitResults: false
225+
javaHomeOption: 'JDKVersion'
226+
jdkVersionOption: '1.11'
227+
sonarQubeRunAnalysis: false
228+
spotBugsAnalysis: false
229+
condition: eq(variables.fullBuild, 'true')
230+
- task: PowerShell@2
231+
displayName: Copy APK & Mapping file to artifact
232+
inputs:
233+
targetType: 'inline'
234+
script: |
235+
mkdir -p $(Build.ArtifactStagingDirectory)/android_client
236+
cp android_client/app/build/outputs/apk/release/app-release.apk $(Build.ArtifactStagingDirectory)/android_client/app-release-$(hydraVersion).apk
237+
if(Test-Path android_client/app/build/outputs/mapping/release/mapping.txt){
238+
cp android_client/app/build/outputs/mapping/release/mapping.txt $(Build.ArtifactStagingDirectory)/android_client/
239+
}
240+
condition: eq(variables.fullBuild, 'true')
241+
- task: CopyFiles@2
242+
displayName: Copy agent jar
243+
inputs:
244+
SourceFolder: 'agent/build/libs/'
245+
Contents: '*.jar'
246+
TargetFolder: '$(Build.ArtifactStagingDirectory)/agent_deploy'
247+
condition: eq(variables.fullBuild, 'true')
248+
- task: CopyFiles@2
249+
displayName: Copy agent installer
250+
inputs:
251+
SourceFolder: 'build/installer/'
252+
Contents: '*.zip'
253+
TargetFolder: '$(Build.ArtifactStagingDirectory)/agent_deploy'
254+
condition: eq(variables.fullBuild, 'true')
255+
- task: CopyFiles@2
256+
displayName: Copy deploy uber files 1
257+
inputs:
258+
SourceFolder: 'common/src/main/resources/'
259+
Contents: |
260+
record_release.apk
261+
record_androidTest.apk
262+
TargetFolder: '$(Build.ArtifactStagingDirectory)/uber_image'
263+
condition: eq(variables.fullBuild, 'true')
264+
- task: CopyFiles@2
265+
displayName: Copy deploy uber files 2
266+
inputs:
267+
SourceFolder: 'center/uber_image/'
268+
Contents: '**'
269+
TargetFolder: '$(Build.ArtifactStagingDirectory)/uber_image'
270+
condition: eq(variables.fullBuild, 'true')
271+
- task: PowerShell@2
272+
displayName: Add Release Tag
273+
inputs:
274+
targetType: 'inline'
275+
script: |
276+
Write-Host "##vso[build.addbuildtag]Release"
277+
workingDirectory: '$(Build.Repository.LocalPath)'
278+
condition: and(eq(variables.fullBuild, 'true'), contains(variables['Build.SourceBranch'], 'Release/'))
279+
- task: PublishBuildArtifacts@1
280+
inputs:
281+
PathtoPublish: '$(Build.ArtifactStagingDirectory)'
282+
ArtifactName: 'HydraLabRelease'
283+
publishLocation: 'Container'
284+
condition: eq(variables.fullBuild, 'true')
285+
- task: CodeQL3000Finalize@0
286+
displayName: "[Security Review] CodeQL Finalize"
287+
condition: eq(variables.securityScan, 'true')
288+
- task: securedevelopmentteam.vss-secure-development-tools.build-task-report.SdtReport@2
289+
# https://strikecommunity.azurewebsites.net/articles/8216/how-to-enable-build-break-on-credscan-detections.html
290+
displayName: "[Security Review] Create CredScan Security Analysis Report"
291+
inputs:
292+
GdnExportHtmlFile: true
293+
GdnExportAllTools: false
294+
GdnExportGdnToolBinSkim: true
295+
GdnExportGdnToolCredScan: true
296+
GdnExportGdnToolSemmle: true
297+
condition: eq(variables.securityScan, 'true')

0 commit comments

Comments
 (0)