Merge branch 'am/pathspec-f-f-checkout'
[git] / azure-pipelines.yml
1 variables:
2   Agent.Source.Git.ShallowFetchDepth: 1
3
4 jobs:
5 - job: windows_build
6   displayName: Windows Build
7   condition: succeeded()
8   pool: Hosted
9   timeoutInMinutes: 240
10   steps:
11   - powershell: |
12       if ("$GITFILESHAREPWD" -ne "" -and "$GITFILESHAREPWD" -ne "`$`(gitfileshare.pwd)") {
13         net use s: \\gitfileshare.file.core.windows.net\test-cache "$GITFILESHAREPWD" /user:AZURE\gitfileshare /persistent:no
14         cmd /c mklink /d "$(Build.SourcesDirectory)\test-cache" S:\
15       }
16     displayName: 'Mount test-cache'
17     env:
18       GITFILESHAREPWD: $(gitfileshare.pwd)
19   - powershell: |
20       $urlbase = "https://dev.azure.com/git-for-windows/git/_apis/build/builds"
21       $id = ((Invoke-WebRequest -UseBasicParsing "${urlbase}?definitions=22&statusFilter=completed&resultFilter=succeeded&`$top=1").content | ConvertFrom-JSON).value[0].id
22       $downloadUrl = ((Invoke-WebRequest -UseBasicParsing "${urlbase}/$id/artifacts").content | ConvertFrom-JSON).value[1].resource.downloadUrl
23       (New-Object Net.WebClient).DownloadFile($downloadUrl,"git-sdk-64-minimal.zip")
24       Expand-Archive git-sdk-64-minimal.zip -DestinationPath . -Force
25       Remove-Item git-sdk-64-minimal.zip
26
27       # Let Git ignore the SDK and the test-cache
28       "/git-sdk-64-minimal/`n/test-cache/`n" | Out-File -NoNewLine -Encoding ascii -Append "$(Build.SourcesDirectory)\.git\info\exclude"
29     displayName: 'Download git-sdk-64-minimal'
30   - powershell: |
31       & git-sdk-64-minimal\usr\bin\bash.exe -lc @"
32         ci/make-test-artifacts.sh artifacts
33       "@
34       if (!$?) { exit(1) }
35     displayName: Build
36     env:
37       HOME: $(Build.SourcesDirectory)
38       MSYSTEM: MINGW64
39       DEVELOPER: 1
40       NO_PERL: 1
41   - task: PublishPipelineArtifact@0
42     displayName: 'Publish Pipeline Artifact: test artifacts'
43     inputs:
44       artifactName: 'windows-artifacts'
45       targetPath: '$(Build.SourcesDirectory)\artifacts'
46   - task: PublishPipelineArtifact@0
47     displayName: 'Publish Pipeline Artifact: git-sdk-64-minimal'
48     inputs:
49       artifactName: 'git-sdk-64-minimal'
50       targetPath: '$(Build.SourcesDirectory)\git-sdk-64-minimal'
51   - powershell: |
52       if ("$GITFILESHAREPWD" -ne "" -and "$GITFILESHAREPWD" -ne "`$`(gitfileshare.pwd)") {
53         cmd /c rmdir "$(Build.SourcesDirectory)\test-cache"
54       }
55     displayName: 'Unmount test-cache'
56     condition: true
57     env:
58       GITFILESHAREPWD: $(gitfileshare.pwd)
59
60 - job: windows_test
61   displayName: Windows Test
62   dependsOn: windows_build
63   condition: succeeded()
64   pool: Hosted
65   timeoutInMinutes: 240
66   strategy:
67     parallel: 10
68   steps:
69   - powershell: |
70       if ("$GITFILESHAREPWD" -ne "" -and "$GITFILESHAREPWD" -ne "`$`(gitfileshare.pwd)") {
71         net use s: \\gitfileshare.file.core.windows.net\test-cache "$GITFILESHAREPWD" /user:AZURE\gitfileshare /persistent:no
72         cmd /c mklink /d "$(Build.SourcesDirectory)\test-cache" S:\
73       }
74     displayName: 'Mount test-cache'
75     env:
76       GITFILESHAREPWD: $(gitfileshare.pwd)
77   - task: DownloadPipelineArtifact@0
78     displayName: 'Download Pipeline Artifact: test artifacts'
79     inputs:
80       artifactName: 'windows-artifacts'
81       targetPath: '$(Build.SourcesDirectory)'
82   - task: DownloadPipelineArtifact@0
83     displayName: 'Download Pipeline Artifact: git-sdk-64-minimal'
84     inputs:
85       artifactName: 'git-sdk-64-minimal'
86       targetPath: '$(Build.SourcesDirectory)\git-sdk-64-minimal'
87   - powershell: |
88       & git-sdk-64-minimal\usr\bin\bash.exe -lc @"
89         test -f artifacts.tar.gz || {
90           echo No test artifacts found\; skipping >&2
91           exit 0
92         }
93         tar xf artifacts.tar.gz || exit 1
94
95         # Let Git ignore the SDK and the test-cache
96         printf '%s\n' /git-sdk-64-minimal/ /test-cache/ >>.git/info/exclude
97
98         ci/run-test-slice.sh `$SYSTEM_JOBPOSITIONINPHASE `$SYSTEM_TOTALJOBSINPHASE || {
99           ci/print-test-failures.sh
100           exit 1
101         }
102       "@
103       if (!$?) { exit(1) }
104     displayName: 'Test (parallel)'
105     env:
106       HOME: $(Build.SourcesDirectory)
107       MSYSTEM: MINGW64
108       NO_SVN_TESTS: 1
109       GIT_TEST_SKIP_REBASE_P: 1
110   - powershell: |
111       if ("$GITFILESHAREPWD" -ne "" -and "$GITFILESHAREPWD" -ne "`$`(gitfileshare.pwd)") {
112         cmd /c rmdir "$(Build.SourcesDirectory)\test-cache"
113       }
114     displayName: 'Unmount test-cache'
115     condition: true
116     env:
117       GITFILESHAREPWD: $(gitfileshare.pwd)
118   - task: PublishTestResults@2
119     displayName: 'Publish Test Results **/TEST-*.xml'
120     inputs:
121       mergeTestResults: true
122       testRunTitle: 'windows'
123       platform: Windows
124       publishRunAttachments: false
125     condition: succeededOrFailed()
126   - task: PublishBuildArtifacts@1
127     displayName: 'Publish trash directories of failed tests'
128     condition: failed()
129     inputs:
130       PathtoPublish: t/failed-test-artifacts
131       ArtifactName: failed-test-artifacts
132
133 - job: vs_build
134   displayName: Visual Studio Build
135   condition: succeeded()
136   pool: Hosted VS2017
137   timeoutInMinutes: 240
138   steps:
139   - powershell: |
140       if ("$GITFILESHAREPWD" -ne "" -and "$GITFILESHAREPWD" -ne "`$`(gitfileshare.pwd)") {
141         net use s: \\gitfileshare.file.core.windows.net\test-cache "$GITFILESHAREPWD" /user:AZURE\gitfileshare /persistent:no
142         cmd /c mklink /d "$(Build.SourcesDirectory)\test-cache" S:\
143       }
144     displayName: 'Mount test-cache'
145     env:
146       GITFILESHAREPWD: $(gitfileshare.pwd)
147   - powershell: |
148       $urlbase = "https://dev.azure.com/git-for-windows/git/_apis/build/builds"
149       $id = ((Invoke-WebRequest -UseBasicParsing "${urlbase}?definitions=22&statusFilter=completed&resultFilter=succeeded&`$top=1").content | ConvertFrom-JSON).value[0].id
150       $downloadUrl = ((Invoke-WebRequest -UseBasicParsing "${urlbase}/$id/artifacts").content | ConvertFrom-JSON).value[1].resource.downloadUrl
151       (New-Object Net.WebClient).DownloadFile($downloadUrl,"git-sdk-64-minimal.zip")
152       Expand-Archive git-sdk-64-minimal.zip -DestinationPath . -Force
153       Remove-Item git-sdk-64-minimal.zip
154
155       # Let Git ignore the SDK and the test-cache
156       "/git-sdk-64-minimal/`n/test-cache/`n" | Out-File -NoNewLine -Encoding ascii -Append "$(Build.SourcesDirectory)\.git\info\exclude"
157     displayName: 'Download git-sdk-64-minimal'
158   - powershell: |
159       & git-sdk-64-minimal\usr\bin\bash.exe -lc @"
160         make NDEBUG=1 DEVELOPER=1 vcxproj
161       "@
162       if (!$?) { exit(1) }
163     displayName: Generate Visual Studio Solution
164     env:
165       HOME: $(Build.SourcesDirectory)
166       MSYSTEM: MINGW64
167       DEVELOPER: 1
168       NO_PERL: 1
169       GIT_CONFIG_PARAMETERS: "'user.name=CI' 'user.email=ci@git'"
170   - powershell: |
171       $urlbase = "https://dev.azure.com/git/git/_apis/build/builds"
172       $id = ((Invoke-WebRequest -UseBasicParsing "${urlbase}?definitions=9&statusFilter=completed&resultFilter=succeeded&`$top=1").content | ConvertFrom-JSON).value[0].id
173       $downloadUrl = ((Invoke-WebRequest -UseBasicParsing "${urlbase}/$id/artifacts").content | ConvertFrom-JSON).value[0].resource.downloadUrl
174       (New-Object Net.WebClient).DownloadFile($downloadUrl, "compat.zip")
175       Expand-Archive compat.zip -DestinationPath . -Force
176       Remove-Item compat.zip
177     displayName: 'Download vcpkg artifacts'
178   - task: MSBuild@1
179     inputs:
180       solution: git.sln
181       platform: x64
182       configuration: Release
183       maximumCpuCount: 4
184   - powershell: |
185       & compat\vcbuild\vcpkg_copy_dlls.bat release
186       if (!$?) { exit(1) }
187       & git-sdk-64-minimal\usr\bin\bash.exe -lc @"
188         mkdir -p artifacts &&
189         eval \"`$(make -n artifacts-tar INCLUDE_DLLS_IN_ARTIFACTS=YesPlease ARTIFACTS_DIRECTORY=artifacts | grep ^tar)\"
190       "@
191       if (!$?) { exit(1) }
192     displayName: Bundle artifact tar
193     env:
194       HOME: $(Build.SourcesDirectory)
195       MSYSTEM: MINGW64
196       DEVELOPER: 1
197       NO_PERL: 1
198       MSVC: 1
199       VCPKG_ROOT: $(Build.SourcesDirectory)\compat\vcbuild\vcpkg
200   - powershell: |
201       $tag = (Invoke-WebRequest -UseBasicParsing "https://gitforwindows.org/latest-tag.txt").content
202       $version = (Invoke-WebRequest -UseBasicParsing "https://gitforwindows.org/latest-version.txt").content
203       $url = "https://github.com/git-for-windows/git/releases/download/${tag}/PortableGit-${version}-64-bit.7z.exe"
204       (New-Object Net.WebClient).DownloadFile($url,"PortableGit.exe")
205       & .\PortableGit.exe -y -oartifacts\PortableGit
206       # Wait until it is unpacked
207       while (-not @(Remove-Item -ErrorAction SilentlyContinue PortableGit.exe; $?)) { sleep 1 }
208     displayName: Download & extract portable Git
209   - task: PublishPipelineArtifact@0
210     displayName: 'Publish Pipeline Artifact: MSVC test artifacts'
211     inputs:
212       artifactName: 'vs-artifacts'
213       targetPath: '$(Build.SourcesDirectory)\artifacts'
214   - powershell: |
215       if ("$GITFILESHAREPWD" -ne "" -and "$GITFILESHAREPWD" -ne "`$`(gitfileshare.pwd)") {
216         cmd /c rmdir "$(Build.SourcesDirectory)\test-cache"
217       }
218     displayName: 'Unmount test-cache'
219     condition: true
220     env:
221       GITFILESHAREPWD: $(gitfileshare.pwd)
222
223 - job: vs_test
224   displayName: Visual Studio Test
225   dependsOn: vs_build
226   condition: succeeded()
227   pool: Hosted
228   timeoutInMinutes: 240
229   strategy:
230     parallel: 10
231   steps:
232   - powershell: |
233       if ("$GITFILESHAREPWD" -ne "" -and "$GITFILESHAREPWD" -ne "`$`(gitfileshare.pwd)") {
234         net use s: \\gitfileshare.file.core.windows.net\test-cache "$GITFILESHAREPWD" /user:AZURE\gitfileshare /persistent:no
235         cmd /c mklink /d "$(Build.SourcesDirectory)\test-cache" S:\
236       }
237     displayName: 'Mount test-cache'
238     env:
239       GITFILESHAREPWD: $(gitfileshare.pwd)
240   - task: DownloadPipelineArtifact@0
241     displayName: 'Download Pipeline Artifact: VS test artifacts'
242     inputs:
243       artifactName: 'vs-artifacts'
244       targetPath: '$(Build.SourcesDirectory)'
245   - powershell: |
246       & PortableGit\git-cmd.exe --command=usr\bin\bash.exe -lc @"
247         test -f artifacts.tar.gz || {
248           echo No test artifacts found\; skipping >&2
249           exit 0
250         }
251         tar xf artifacts.tar.gz || exit 1
252
253         # Let Git ignore the SDK and the test-cache
254         printf '%s\n' /PortableGit/ /test-cache/ >>.git/info/exclude
255
256         cd t &&
257         PATH=\"`$PWD/helper:`$PATH\" &&
258         test-tool.exe run-command testsuite --jobs=10 -V -x --write-junit-xml \
259                 `$(test-tool.exe path-utils slice-tests \
260                         `$SYSTEM_JOBPOSITIONINPHASE `$SYSTEM_TOTALJOBSINPHASE t[0-9]*.sh)
261       "@
262       if (!$?) { exit(1) }
263     displayName: 'Test (parallel)'
264     env:
265       HOME: $(Build.SourcesDirectory)
266       MSYSTEM: MINGW64
267       NO_SVN_TESTS: 1
268       GIT_TEST_SKIP_REBASE_P: 1
269   - powershell: |
270       if ("$GITFILESHAREPWD" -ne "" -and "$GITFILESHAREPWD" -ne "`$`(gitfileshare.pwd)") {
271         cmd /c rmdir "$(Build.SourcesDirectory)\test-cache"
272       }
273     displayName: 'Unmount test-cache'
274     condition: true
275     env:
276       GITFILESHAREPWD: $(gitfileshare.pwd)
277   - task: PublishTestResults@2
278     displayName: 'Publish Test Results **/TEST-*.xml'
279     inputs:
280       mergeTestResults: true
281       testRunTitle: 'vs'
282       platform: Windows
283       publishRunAttachments: false
284     condition: succeededOrFailed()
285   - task: PublishBuildArtifacts@1
286     displayName: 'Publish trash directories of failed tests'
287     condition: failed()
288     inputs:
289       PathtoPublish: t/failed-test-artifacts
290       ArtifactName: failed-vs-test-artifacts
291
292 - job: linux_clang
293   displayName: linux-clang
294   condition: succeeded()
295   pool: Hosted Ubuntu 1604
296   steps:
297   - bash: |
298        test "$GITFILESHAREPWD" = '$(gitfileshare.pwd)' || ci/mount-fileshare.sh //gitfileshare.file.core.windows.net/test-cache gitfileshare "$GITFILESHAREPWD" "$HOME/test-cache" || exit 1
299
300        sudo apt-get update &&
301        sudo apt-get -y install git gcc make libssl-dev libcurl4-openssl-dev libexpat-dev tcl tk gettext git-email zlib1g-dev apache2-bin &&
302
303        export CC=clang || exit 1
304
305        ci/install-dependencies.sh || exit 1
306        ci/run-build-and-tests.sh || {
307            ci/print-test-failures.sh
308            exit 1
309        }
310
311        test "$GITFILESHAREPWD" = '$(gitfileshare.pwd)' || sudo umount "$HOME/test-cache" || exit 1
312     displayName: 'ci/run-build-and-tests.sh'
313     env:
314       GITFILESHAREPWD: $(gitfileshare.pwd)
315   - task: PublishTestResults@2
316     displayName: 'Publish Test Results **/TEST-*.xml'
317     inputs:
318       mergeTestResults: true
319       testRunTitle: 'linux-clang'
320       platform: Linux
321       publishRunAttachments: false
322     condition: succeededOrFailed()
323   - task: PublishBuildArtifacts@1
324     displayName: 'Publish trash directories of failed tests'
325     condition: failed()
326     inputs:
327       PathtoPublish: t/failed-test-artifacts
328       ArtifactName: failed-test-artifacts
329
330 - job: linux_gcc
331   displayName: linux-gcc
332   condition: succeeded()
333   pool: Hosted Ubuntu 1604
334   steps:
335   - bash: |
336        test "$GITFILESHAREPWD" = '$(gitfileshare.pwd)' || ci/mount-fileshare.sh //gitfileshare.file.core.windows.net/test-cache gitfileshare "$GITFILESHAREPWD" "$HOME/test-cache" || exit 1
337
338        sudo add-apt-repository ppa:ubuntu-toolchain-r/test &&
339        sudo apt-get update &&
340        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
341
342        ci/install-dependencies.sh || exit 1
343        ci/run-build-and-tests.sh || {
344            ci/print-test-failures.sh
345            exit 1
346        }
347
348        test "$GITFILESHAREPWD" = '$(gitfileshare.pwd)' || sudo umount "$HOME/test-cache" || exit 1
349     displayName: 'ci/run-build-and-tests.sh'
350     env:
351       GITFILESHAREPWD: $(gitfileshare.pwd)
352   - task: PublishTestResults@2
353     displayName: 'Publish Test Results **/TEST-*.xml'
354     inputs:
355       mergeTestResults: true
356       testRunTitle: 'linux-gcc'
357       platform: Linux
358       publishRunAttachments: false
359     condition: succeededOrFailed()
360   - task: PublishBuildArtifacts@1
361     displayName: 'Publish trash directories of failed tests'
362     condition: failed()
363     inputs:
364       PathtoPublish: t/failed-test-artifacts
365       ArtifactName: failed-test-artifacts
366
367 - job: osx_clang
368   displayName: osx-clang
369   condition: succeeded()
370   pool: Hosted macOS
371   steps:
372   - bash: |
373        test "$GITFILESHAREPWD" = '$(gitfileshare.pwd)' || ci/mount-fileshare.sh //gitfileshare.file.core.windows.net/test-cache gitfileshare "$GITFILESHAREPWD" "$HOME/test-cache" || exit 1
374
375        export CC=clang
376
377        ci/install-dependencies.sh || exit 1
378        ci/run-build-and-tests.sh || {
379            ci/print-test-failures.sh
380            exit 1
381        }
382
383        test "$GITFILESHAREPWD" = '$(gitfileshare.pwd)' || umount "$HOME/test-cache" || exit 1
384     displayName: 'ci/run-build-and-tests.sh'
385     env:
386       GITFILESHAREPWD: $(gitfileshare.pwd)
387   - task: PublishTestResults@2
388     displayName: 'Publish Test Results **/TEST-*.xml'
389     inputs:
390       mergeTestResults: true
391       testRunTitle: 'osx-clang'
392       platform: macOS
393       publishRunAttachments: false
394     condition: succeededOrFailed()
395   - task: PublishBuildArtifacts@1
396     displayName: 'Publish trash directories of failed tests'
397     condition: failed()
398     inputs:
399       PathtoPublish: t/failed-test-artifacts
400       ArtifactName: failed-test-artifacts
401
402 - job: osx_gcc
403   displayName: osx-gcc
404   condition: succeeded()
405   pool: Hosted macOS
406   steps:
407   - bash: |
408        test "$GITFILESHAREPWD" = '$(gitfileshare.pwd)' || ci/mount-fileshare.sh //gitfileshare.file.core.windows.net/test-cache gitfileshare "$GITFILESHAREPWD" "$HOME/test-cache" || exit 1
409
410        ci/install-dependencies.sh || exit 1
411        ci/run-build-and-tests.sh || {
412            ci/print-test-failures.sh
413            exit 1
414        }
415
416        test "$GITFILESHAREPWD" = '$(gitfileshare.pwd)' || umount "$HOME/test-cache" || exit 1
417     displayName: 'ci/run-build-and-tests.sh'
418     env:
419       GITFILESHAREPWD: $(gitfileshare.pwd)
420   - task: PublishTestResults@2
421     displayName: 'Publish Test Results **/TEST-*.xml'
422     inputs:
423       mergeTestResults: true
424       testRunTitle: 'osx-gcc'
425       platform: macOS
426       publishRunAttachments: false
427     condition: succeededOrFailed()
428   - task: PublishBuildArtifacts@1
429     displayName: 'Publish trash directories of failed tests'
430     condition: failed()
431     inputs:
432       PathtoPublish: t/failed-test-artifacts
433       ArtifactName: failed-test-artifacts
434
435 - job: gettext_poison
436   displayName: GETTEXT_POISON
437   condition: succeeded()
438   pool: Hosted Ubuntu 1604
439   steps:
440   - bash: |
441        test "$GITFILESHAREPWD" = '$(gitfileshare.pwd)' || ci/mount-fileshare.sh //gitfileshare.file.core.windows.net/test-cache gitfileshare "$GITFILESHAREPWD" "$HOME/test-cache" || exit 1
442
443        sudo apt-get update &&
444        sudo apt-get -y install git gcc make libssl-dev libcurl4-openssl-dev libexpat-dev tcl tk gettext git-email zlib1g-dev &&
445
446        export jobname=GETTEXT_POISON || exit 1
447
448        ci/run-build-and-tests.sh || {
449            ci/print-test-failures.sh
450            exit 1
451        }
452
453        test "$GITFILESHAREPWD" = '$(gitfileshare.pwd)' || sudo umount "$HOME/test-cache" || exit 1
454     displayName: 'ci/run-build-and-tests.sh'
455     env:
456       GITFILESHAREPWD: $(gitfileshare.pwd)
457   - task: PublishTestResults@2
458     displayName: 'Publish Test Results **/TEST-*.xml'
459     inputs:
460       mergeTestResults: true
461       testRunTitle: 'gettext-poison'
462       platform: Linux
463       publishRunAttachments: false
464     condition: succeededOrFailed()
465   - task: PublishBuildArtifacts@1
466     displayName: 'Publish trash directories of failed tests'
467     condition: failed()
468     inputs:
469       PathtoPublish: t/failed-test-artifacts
470       ArtifactName: failed-test-artifacts
471
472 - job: linux32
473   displayName: Linux32
474   condition: succeeded()
475   pool: Hosted Ubuntu 1604
476   steps:
477   - bash: |
478        test "$GITFILESHAREPWD" = '$(gitfileshare.pwd)' || ci/mount-fileshare.sh //gitfileshare.file.core.windows.net/test-cache gitfileshare "$GITFILESHAREPWD" "$HOME/test-cache" || exit 1
479
480        res=0
481        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
482
483        sudo chmod a+r t/out/TEST-*.xml
484        test ! -d t/failed-test-artifacts || sudo chmod a+r t/failed-test-artifacts
485
486        test "$GITFILESHAREPWD" = '$(gitfileshare.pwd)' || sudo umount "$HOME/test-cache" || res=1
487        exit $res
488     displayName: 'ci/run-linux32-docker.sh'
489     env:
490       GITFILESHAREPWD: $(gitfileshare.pwd)
491   - task: PublishTestResults@2
492     displayName: 'Publish Test Results **/TEST-*.xml'
493     inputs:
494       mergeTestResults: true
495       testRunTitle: 'linux32'
496       platform: Linux
497       publishRunAttachments: false
498     condition: succeededOrFailed()
499   - task: PublishBuildArtifacts@1
500     displayName: 'Publish trash directories of failed tests'
501     condition: failed()
502     inputs:
503       PathtoPublish: t/failed-test-artifacts
504       ArtifactName: failed-test-artifacts
505
506 - job: static_analysis
507   displayName: StaticAnalysis
508   condition: succeeded()
509   pool: Hosted Ubuntu 1604
510   steps:
511   - bash: |
512        test "$GITFILESHAREPWD" = '$(gitfileshare.pwd)' || ci/mount-fileshare.sh //gitfileshare.file.core.windows.net/test-cache gitfileshare "$GITFILESHAREPWD" "$HOME/test-cache" || exit 1
513
514        sudo apt-get update &&
515        sudo apt-get install -y coccinelle libcurl4-openssl-dev libssl-dev libexpat-dev gettext &&
516
517        export jobname=StaticAnalysis &&
518
519        ci/run-static-analysis.sh || exit 1
520
521        test "$GITFILESHAREPWD" = '$(gitfileshare.pwd)' || sudo umount "$HOME/test-cache" || exit 1
522     displayName: 'ci/run-static-analysis.sh'
523     env:
524       GITFILESHAREPWD: $(gitfileshare.pwd)
525
526 - job: documentation
527   displayName: Documentation
528   condition: succeeded()
529   pool: Hosted Ubuntu 1604
530   steps:
531   - bash: |
532        test "$GITFILESHAREPWD" = '$(gitfileshare.pwd)' || ci/mount-fileshare.sh //gitfileshare.file.core.windows.net/test-cache gitfileshare "$GITFILESHAREPWD" "$HOME/test-cache" || exit 1
533
534        sudo apt-get update &&
535        sudo apt-get install -y asciidoc xmlto asciidoctor docbook-xsl-ns &&
536
537        export ALREADY_HAVE_ASCIIDOCTOR=yes. &&
538        export jobname=Documentation &&
539
540        ci/test-documentation.sh || exit 1
541
542        test "$GITFILESHAREPWD" = '$(gitfileshare.pwd)' || sudo umount "$HOME/test-cache" || exit 1
543     displayName: 'ci/test-documentation.sh'
544     env:
545       GITFILESHAREPWD: $(gitfileshare.pwd)