1resources:
2- repo: self
3 fetchDepth: 1
4
5jobs:
6- job: windows_build
7 displayName: Windows Build
8 condition: succeeded()
9 pool: Hosted
10 timeoutInMinutes: 240
11 steps:
12 - powershell: |
13 if ("$GITFILESHAREPWD" -ne "" -and "$GITFILESHAREPWD" -ne "`$`(gitfileshare.pwd)") {
14 net use s: \\gitfileshare.file.core.windows.net\test-cache "$GITFILESHAREPWD" /user:AZURE\gitfileshare /persistent:no
15 cmd /c mklink /d "$(Build.SourcesDirectory)\test-cache" S:\
16 }
17 displayName: 'Mount test-cache'
18 env:
19 GITFILESHAREPWD: $(gitfileshare.pwd)
20 - powershell: |
21 $urlbase = "https://dev.azure.com/git-for-windows/git/_apis/build/builds"
22 $id = ((Invoke-WebRequest -UseBasicParsing "${urlbase}?definitions=22&statusFilter=completed&resultFilter=succeeded&`$top=1").content | ConvertFrom-JSON).value[0].id
23 $downloadUrl = ((Invoke-WebRequest -UseBasicParsing "${urlbase}/$id/artifacts").content | ConvertFrom-JSON).value[1].resource.downloadUrl
24 (New-Object Net.WebClient).DownloadFile($downloadUrl,"git-sdk-64-minimal.zip")
25 Expand-Archive git-sdk-64-minimal.zip -DestinationPath . -Force
26 Remove-Item git-sdk-64-minimal.zip
27
28 # Let Git ignore the SDK and the test-cache
29 "/git-sdk-64-minimal/`n/test-cache/`n" | Out-File -NoNewLine -Encoding ascii -Append "$(Build.SourcesDirectory)\.git\info\exclude"
30 displayName: 'Download git-sdk-64-minimal'
31 - powershell: |
32 & git-sdk-64-minimal\usr\bin\bash.exe -lc @"
33 ci/make-test-artifacts.sh artifacts
34 "@
35 if (!$?) { exit(1) }
36 displayName: Build
37 env:
38 HOME: $(Build.SourcesDirectory)
39 MSYSTEM: MINGW64
40 DEVELOPER: 1
41 NO_PERL: 1
42 - task: PublishPipelineArtifact@0
43 displayName: 'Publish Pipeline Artifact: test artifacts'
44 inputs:
45 artifactName: 'windows-artifacts'
46 targetPath: '$(Build.SourcesDirectory)\artifacts'
47 - task: PublishPipelineArtifact@0
48 displayName: 'Publish Pipeline Artifact: git-sdk-64-minimal'
49 inputs:
50 artifactName: 'git-sdk-64-minimal'
51 targetPath: '$(Build.SourcesDirectory)\git-sdk-64-minimal'
52 - powershell: |
53 if ("$GITFILESHAREPWD" -ne "" -and "$GITFILESHAREPWD" -ne "`$`(gitfileshare.pwd)") {
54 cmd /c rmdir "$(Build.SourcesDirectory)\test-cache"
55 }
56 displayName: 'Unmount test-cache'
57 condition: true
58 env:
59 GITFILESHAREPWD: $(gitfileshare.pwd)
60
61- job: windows_test
62 displayName: Windows Test
63 dependsOn: windows_build
64 condition: succeeded()
65 pool: Hosted
66 timeoutInMinutes: 240
67 strategy:
68 parallel: 10
69 steps:
70 - powershell: |
71 if ("$GITFILESHAREPWD" -ne "" -and "$GITFILESHAREPWD" -ne "`$`(gitfileshare.pwd)") {
72 net use s: \\gitfileshare.file.core.windows.net\test-cache "$GITFILESHAREPWD" /user:AZURE\gitfileshare /persistent:no
73 cmd /c mklink /d "$(Build.SourcesDirectory)\test-cache" S:\
74 }
75 displayName: 'Mount test-cache'
76 env:
77 GITFILESHAREPWD: $(gitfileshare.pwd)
78 - task: DownloadPipelineArtifact@0
79 displayName: 'Download Pipeline Artifact: test artifacts'
80 inputs:
81 artifactName: 'windows-artifacts'
82 targetPath: '$(Build.SourcesDirectory)'
83 - task: DownloadPipelineArtifact@0
84 displayName: 'Download Pipeline Artifact: git-sdk-64-minimal'
85 inputs:
86 artifactName: 'git-sdk-64-minimal'
87 targetPath: '$(Build.SourcesDirectory)\git-sdk-64-minimal'
88 - powershell: |
89 & git-sdk-64-minimal\usr\bin\bash.exe -lc @"
90 test -f artifacts.tar.gz || {
91 echo No test artifacts found\; skipping >&2
92 exit 0
93 }
94 tar xf artifacts.tar.gz || exit 1
95
96 # Let Git ignore the SDK and the test-cache
97 printf '%s\n' /git-sdk-64-minimal/ /test-cache/ >>.git/info/exclude
98
99 ci/run-test-slice.sh `$SYSTEM_JOBPOSITIONINPHASE `$SYSTEM_TOTALJOBSINPHASE || {
100 ci/print-test-failures.sh
101 exit 1
102 }
103 "@
104 if (!$?) { exit(1) }
105 displayName: 'Test (parallel)'
106 env:
107 HOME: $(Build.SourcesDirectory)
108 MSYSTEM: MINGW64
109 NO_SVN_TESTS: 1
110 GIT_TEST_SKIP_REBASE_P: 1
111 - powershell: |
112 if ("$GITFILESHAREPWD" -ne "" -and "$GITFILESHAREPWD" -ne "`$`(gitfileshare.pwd)") {
113 cmd /c rmdir "$(Build.SourcesDirectory)\test-cache"
114 }
115 displayName: 'Unmount test-cache'
116 condition: true
117 env:
118 GITFILESHAREPWD: $(gitfileshare.pwd)
119 - task: PublishTestResults@2
120 displayName: 'Publish Test Results **/TEST-*.xml'
121 inputs:
122 mergeTestResults: true
123 testRunTitle: 'windows'
124 platform: Windows
125 publishRunAttachments: false
126 condition: succeededOrFailed()
127 - task: PublishBuildArtifacts@1
128 displayName: 'Publish trash directories of failed tests'
129 condition: failed()
130 inputs:
131 PathtoPublish: t/failed-test-artifacts
132 ArtifactName: failed-test-artifacts
133
134- job: linux_clang
135 displayName: linux-clang
136 condition: succeeded()
137 pool: Hosted Ubuntu 1604
138 steps:
139 - bash: |
140 test "$GITFILESHAREPWD" = '$(gitfileshare.pwd)' || ci/mount-fileshare.sh //gitfileshare.file.core.windows.net/test-cache gitfileshare "$GITFILESHAREPWD" "$HOME/test-cache" || exit 1
141
142 sudo apt-get update &&
143 sudo apt-get -y install git gcc make libssl-dev libcurl4-openssl-dev libexpat-dev tcl tk gettext git-email zlib1g-dev apache2-bin &&
144
145 export CC=clang || exit 1
146
147 ci/install-dependencies.sh || exit 1
148 ci/run-build-and-tests.sh || {
149 ci/print-test-failures.sh
150 exit 1
151 }
152
153 test "$GITFILESHAREPWD" = '$(gitfileshare.pwd)' || sudo umount "$HOME/test-cache" || exit 1
154 displayName: 'ci/run-build-and-tests.sh'
155 env:
156 GITFILESHAREPWD: $(gitfileshare.pwd)
157 - task: PublishTestResults@2
158 displayName: 'Publish Test Results **/TEST-*.xml'
159 inputs:
160 mergeTestResults: true
161 testRunTitle: 'linux-clang'
162 platform: Linux
163 publishRunAttachments: false
164 condition: succeededOrFailed()
165 - task: PublishBuildArtifacts@1
166 displayName: 'Publish trash directories of failed tests'
167 condition: failed()
168 inputs:
169 PathtoPublish: t/failed-test-artifacts
170 ArtifactName: failed-test-artifacts
171
172- job: linux_gcc
173 displayName: linux-gcc
174 condition: succeeded()
175 pool: Hosted Ubuntu 1604
176 steps:
177 - bash: |
178 test "$GITFILESHAREPWD" = '$(gitfileshare.pwd)' || ci/mount-fileshare.sh //gitfileshare.file.core.windows.net/test-cache gitfileshare "$GITFILESHAREPWD" "$HOME/test-cache" || exit 1
179
180 sudo add-apt-repository ppa:ubuntu-toolchain-r/test &&
181 sudo apt-get update &&
182 sudo apt-get -y install git gcc make libssl-dev libcurl4-openssl-dev libexpat-dev tcl tk gettext git-email zlib1g-dev apache2 language-pack-is git-svn gcc-8 || exit 1
183
184 ci/install-dependencies.sh || exit 1
185 ci/run-build-and-tests.sh || {
186 ci/print-test-failures.sh
187 exit 1
188 }
189
190 test "$GITFILESHAREPWD" = '$(gitfileshare.pwd)' || sudo umount "$HOME/test-cache" || exit 1
191 displayName: 'ci/run-build-and-tests.sh'
192 env:
193 GITFILESHAREPWD: $(gitfileshare.pwd)
194 - task: PublishTestResults@2
195 displayName: 'Publish Test Results **/TEST-*.xml'
196 inputs:
197 mergeTestResults: true
198 testRunTitle: 'linux-gcc'
199 platform: Linux
200 publishRunAttachments: false
201 condition: succeededOrFailed()
202 - task: PublishBuildArtifacts@1
203 displayName: 'Publish trash directories of failed tests'
204 condition: failed()
205 inputs:
206 PathtoPublish: t/failed-test-artifacts
207 ArtifactName: failed-test-artifacts
208
209- job: osx_clang
210 displayName: osx-clang
211 condition: succeeded()
212 pool: Hosted macOS
213 steps:
214 - bash: |
215 test "$GITFILESHAREPWD" = '$(gitfileshare.pwd)' || ci/mount-fileshare.sh //gitfileshare.file.core.windows.net/test-cache gitfileshare "$GITFILESHAREPWD" "$HOME/test-cache" || exit 1
216
217 export CC=clang
218
219 ci/install-dependencies.sh || exit 1
220 ci/run-build-and-tests.sh || {
221 ci/print-test-failures.sh
222 exit 1
223 }
224
225 test "$GITFILESHAREPWD" = '$(gitfileshare.pwd)' || umount "$HOME/test-cache" || exit 1
226 displayName: 'ci/run-build-and-tests.sh'
227 env:
228 GITFILESHAREPWD: $(gitfileshare.pwd)
229 - task: PublishTestResults@2
230 displayName: 'Publish Test Results **/TEST-*.xml'
231 inputs:
232 mergeTestResults: true
233 testRunTitle: 'osx-clang'
234 platform: macOS
235 publishRunAttachments: false
236 condition: succeededOrFailed()
237 - task: PublishBuildArtifacts@1
238 displayName: 'Publish trash directories of failed tests'
239 condition: failed()
240 inputs:
241 PathtoPublish: t/failed-test-artifacts
242 ArtifactName: failed-test-artifacts
243
244- job: osx_gcc
245 displayName: osx-gcc
246 condition: succeeded()
247 pool: Hosted macOS
248 steps:
249 - bash: |
250 test "$GITFILESHAREPWD" = '$(gitfileshare.pwd)' || ci/mount-fileshare.sh //gitfileshare.file.core.windows.net/test-cache gitfileshare "$GITFILESHAREPWD" "$HOME/test-cache" || exit 1
251
252 ci/install-dependencies.sh || exit 1
253 ci/run-build-and-tests.sh || {
254 ci/print-test-failures.sh
255 exit 1
256 }
257
258 test "$GITFILESHAREPWD" = '$(gitfileshare.pwd)' || umount "$HOME/test-cache" || exit 1
259 displayName: 'ci/run-build-and-tests.sh'
260 env:
261 GITFILESHAREPWD: $(gitfileshare.pwd)
262 - task: PublishTestResults@2
263 displayName: 'Publish Test Results **/TEST-*.xml'
264 inputs:
265 mergeTestResults: true
266 testRunTitle: 'osx-gcc'
267 platform: macOS
268 publishRunAttachments: false
269 condition: succeededOrFailed()
270 - task: PublishBuildArtifacts@1
271 displayName: 'Publish trash directories of failed tests'
272 condition: failed()
273 inputs:
274 PathtoPublish: t/failed-test-artifacts
275 ArtifactName: failed-test-artifacts
276
277- job: gettext_poison
278 displayName: GETTEXT_POISON
279 condition: succeeded()
280 pool: Hosted Ubuntu 1604
281 steps:
282 - bash: |
283 test "$GITFILESHAREPWD" = '$(gitfileshare.pwd)' || ci/mount-fileshare.sh //gitfileshare.file.core.windows.net/test-cache gitfileshare "$GITFILESHAREPWD" "$HOME/test-cache" || exit 1
284
285 sudo apt-get update &&
286 sudo apt-get -y install git gcc make libssl-dev libcurl4-openssl-dev libexpat-dev tcl tk gettext git-email zlib1g-dev &&
287
288 export jobname=GETTEXT_POISON || exit 1
289
290 ci/run-build-and-tests.sh || {
291 ci/print-test-failures.sh
292 exit 1
293 }
294
295 test "$GITFILESHAREPWD" = '$(gitfileshare.pwd)' || sudo umount "$HOME/test-cache" || exit 1
296 displayName: 'ci/run-build-and-tests.sh'
297 env:
298 GITFILESHAREPWD: $(gitfileshare.pwd)
299 - task: PublishTestResults@2
300 displayName: 'Publish Test Results **/TEST-*.xml'
301 inputs:
302 mergeTestResults: true
303 testRunTitle: 'gettext-poison'
304 platform: Linux
305 publishRunAttachments: false
306 condition: succeededOrFailed()
307 - task: PublishBuildArtifacts@1
308 displayName: 'Publish trash directories of failed tests'
309 condition: failed()
310 inputs:
311 PathtoPublish: t/failed-test-artifacts
312 ArtifactName: failed-test-artifacts
313
314- job: linux32
315 displayName: Linux32
316 condition: succeeded()
317 pool: Hosted Ubuntu 1604
318 steps:
319 - bash: |
320 test "$GITFILESHAREPWD" = '$(gitfileshare.pwd)' || ci/mount-fileshare.sh //gitfileshare.file.core.windows.net/test-cache gitfileshare "$GITFILESHAREPWD" "$HOME/test-cache" || exit 1
321
322 res=0
323 sudo AGENT_OS="$AGENT_OS" BUILD_BUILDNUMBER="$BUILD_BUILDNUMBER" BUILD_REPOSITORY_URI="$BUILD_REPOSITORY_URI" BUILD_SOURCEBRANCH="$BUILD_SOURCEBRANCH" BUILD_SOURCEVERSION="$BUILD_SOURCEVERSION" SYSTEM_PHASENAME="$SYSTEM_PHASENAME" SYSTEM_TASKDEFINITIONSURI="$SYSTEM_TASKDEFINITIONSURI" SYSTEM_TEAMPROJECT="$SYSTEM_TEAMPROJECT" CC=$CC MAKEFLAGS="$MAKEFLAGS" bash -lxc ci/run-linux32-docker.sh || res=1
324
325 sudo chmod a+r t/out/TEST-*.xml
326 test ! -d t/failed-test-artifacts || sudo chmod a+r t/failed-test-artifacts
327
328 test "$GITFILESHAREPWD" = '$(gitfileshare.pwd)' || sudo umount "$HOME/test-cache" || res=1
329 exit $res
330 displayName: 'ci/run-linux32-docker.sh'
331 env:
332 GITFILESHAREPWD: $(gitfileshare.pwd)
333 - task: PublishTestResults@2
334 displayName: 'Publish Test Results **/TEST-*.xml'
335 inputs:
336 mergeTestResults: true
337 testRunTitle: 'linux32'
338 platform: Linux
339 publishRunAttachments: false
340 condition: succeededOrFailed()
341 - task: PublishBuildArtifacts@1
342 displayName: 'Publish trash directories of failed tests'
343 condition: failed()
344 inputs:
345 PathtoPublish: t/failed-test-artifacts
346 ArtifactName: failed-test-artifacts
347
348- job: static_analysis
349 displayName: StaticAnalysis
350 condition: succeeded()
351 pool: Hosted Ubuntu 1604
352 steps:
353 - bash: |
354 test "$GITFILESHAREPWD" = '$(gitfileshare.pwd)' || ci/mount-fileshare.sh //gitfileshare.file.core.windows.net/test-cache gitfileshare "$GITFILESHAREPWD" "$HOME/test-cache" || exit 1
355
356 sudo apt-get update &&
357 sudo apt-get install -y coccinelle &&
358
359 export jobname=StaticAnalysis &&
360
361 ci/run-static-analysis.sh || exit 1
362
363 test "$GITFILESHAREPWD" = '$(gitfileshare.pwd)' || sudo umount "$HOME/test-cache" || exit 1
364 displayName: 'ci/run-static-analysis.sh'
365 env:
366 GITFILESHAREPWD: $(gitfileshare.pwd)
367
368- job: documentation
369 displayName: Documentation
370 condition: succeeded()
371 pool: Hosted Ubuntu 1604
372 steps:
373 - bash: |
374 test "$GITFILESHAREPWD" = '$(gitfileshare.pwd)' || ci/mount-fileshare.sh //gitfileshare.file.core.windows.net/test-cache gitfileshare "$GITFILESHAREPWD" "$HOME/test-cache" || exit 1
375
376 sudo apt-get update &&
377 sudo apt-get install -y asciidoc xmlto asciidoctor &&
378
379 export ALREADY_HAVE_ASCIIDOCTOR=yes. &&
380 export jobname=Documentation &&
381
382 ci/test-documentation.sh || exit 1
383
384 test "$GITFILESHAREPWD" = '$(gitfileshare.pwd)' || sudo umount "$HOME/test-cache" || exit 1
385 displayName: 'ci/test-documentation.sh'
386 env:
387 GITFILESHAREPWD: $(gitfileshare.pwd)