ci: speed up Windows phase
[git/git.git] / azure-pipelines.yml
CommitLineData
27be7817
JS
1resources:
2- repo: self
3 fetchDepth: 1
4
5jobs:
2e90484e
JS
6- job: windows
7 displayName: Windows
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: |
6c1f4ae6
JS
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
2e90484e
JS
27
28 # Let Git ignore the SDK and the test-cache
6c1f4ae6
JS
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'
2e90484e 31 - powershell: |
6c1f4ae6 32 & git-sdk-64-minimal\usr\bin\bash.exe -lc @"
2e90484e
JS
33 export DEVELOPER=1
34 export NO_PERL=1
35 export NO_SVN_TESTS=1
36 export GIT_TEST_SKIP_REBASE_P=1
37
38 ci/run-build-and-tests.sh || {
39 ci/print-test-failures.sh
40 exit 1
41 }
42 "@
43 if (!$?) { exit(1) }
44 displayName: 'Build & Test'
45 env:
46 HOME: $(Build.SourcesDirectory)
47 MSYSTEM: MINGW64
48 - powershell: |
49 if ("$GITFILESHAREPWD" -ne "" -and "$GITFILESHAREPWD" -ne "`$`(gitfileshare.pwd)") {
50 cmd /c rmdir "$(Build.SourcesDirectory)\test-cache"
51 }
52 displayName: 'Unmount test-cache'
53 condition: true
54 env:
55 GITFILESHAREPWD: $(gitfileshare.pwd)
56 - task: PublishTestResults@2
57 displayName: 'Publish Test Results **/TEST-*.xml'
58 inputs:
59 mergeTestResults: true
60 testRunTitle: 'windows'
61 platform: Windows
62 publishRunAttachments: false
63 condition: succeededOrFailed()
64 - task: PublishBuildArtifacts@1
65 displayName: 'Publish trash directories of failed tests'
66 condition: failed()
67 inputs:
68 PathtoPublish: t/failed-test-artifacts
69 ArtifactName: failed-test-artifacts
70
27be7817
JS
71- job: linux_clang
72 displayName: linux-clang
73 condition: succeeded()
74 pool: Hosted Ubuntu 1604
75 steps:
76 - bash: |
77 test "$GITFILESHAREPWD" = '$(gitfileshare.pwd)' || ci/mount-fileshare.sh //gitfileshare.file.core.windows.net/test-cache gitfileshare "$GITFILESHAREPWD" "$HOME/test-cache" || exit 1
78
79 sudo apt-get update &&
80 sudo apt-get -y install git gcc make libssl-dev libcurl4-openssl-dev libexpat-dev tcl tk gettext git-email zlib1g-dev apache2-bin &&
81
82 export CC=clang || exit 1
83
84 ci/install-dependencies.sh || exit 1
85 ci/run-build-and-tests.sh || {
86 ci/print-test-failures.sh
87 exit 1
88 }
89
90 test "$GITFILESHAREPWD" = '$(gitfileshare.pwd)' || sudo umount "$HOME/test-cache" || exit 1
91 displayName: 'ci/run-build-and-tests.sh'
92 env:
93 GITFILESHAREPWD: $(gitfileshare.pwd)
94 - task: PublishTestResults@2
95 displayName: 'Publish Test Results **/TEST-*.xml'
96 inputs:
97 mergeTestResults: true
98 testRunTitle: 'linux-clang'
99 platform: Linux
100 publishRunAttachments: false
101 condition: succeededOrFailed()
102 - task: PublishBuildArtifacts@1
103 displayName: 'Publish trash directories of failed tests'
104 condition: failed()
105 inputs:
106 PathtoPublish: t/failed-test-artifacts
107 ArtifactName: failed-test-artifacts
108
109- job: linux_gcc
110 displayName: linux-gcc
111 condition: succeeded()
112 pool: Hosted Ubuntu 1604
113 steps:
114 - bash: |
115 test "$GITFILESHAREPWD" = '$(gitfileshare.pwd)' || ci/mount-fileshare.sh //gitfileshare.file.core.windows.net/test-cache gitfileshare "$GITFILESHAREPWD" "$HOME/test-cache" || exit 1
116
117 sudo add-apt-repository ppa:ubuntu-toolchain-r/test &&
118 sudo apt-get update &&
119 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
120
121 ci/install-dependencies.sh || exit 1
122 ci/run-build-and-tests.sh || {
123 ci/print-test-failures.sh
124 exit 1
125 }
126
127 test "$GITFILESHAREPWD" = '$(gitfileshare.pwd)' || sudo umount "$HOME/test-cache" || exit 1
128 displayName: 'ci/run-build-and-tests.sh'
129 env:
130 GITFILESHAREPWD: $(gitfileshare.pwd)
131 - task: PublishTestResults@2
132 displayName: 'Publish Test Results **/TEST-*.xml'
133 inputs:
134 mergeTestResults: true
135 testRunTitle: 'linux-gcc'
136 platform: Linux
137 publishRunAttachments: false
138 condition: succeededOrFailed()
139 - task: PublishBuildArtifacts@1
140 displayName: 'Publish trash directories of failed tests'
141 condition: failed()
142 inputs:
143 PathtoPublish: t/failed-test-artifacts
144 ArtifactName: failed-test-artifacts
145
146- job: osx_clang
147 displayName: osx-clang
148 condition: succeeded()
149 pool: Hosted macOS
150 steps:
151 - bash: |
152 test "$GITFILESHAREPWD" = '$(gitfileshare.pwd)' || ci/mount-fileshare.sh //gitfileshare.file.core.windows.net/test-cache gitfileshare "$GITFILESHAREPWD" "$HOME/test-cache" || exit 1
153
154 export CC=clang
155
156 ci/install-dependencies.sh || exit 1
157 ci/run-build-and-tests.sh || {
158 ci/print-test-failures.sh
159 exit 1
160 }
161
162 test "$GITFILESHAREPWD" = '$(gitfileshare.pwd)' || umount "$HOME/test-cache" || exit 1
163 displayName: 'ci/run-build-and-tests.sh'
164 env:
165 GITFILESHAREPWD: $(gitfileshare.pwd)
166 - task: PublishTestResults@2
167 displayName: 'Publish Test Results **/TEST-*.xml'
168 inputs:
169 mergeTestResults: true
170 testRunTitle: 'osx-clang'
171 platform: macOS
172 publishRunAttachments: false
173 condition: succeededOrFailed()
174 - task: PublishBuildArtifacts@1
175 displayName: 'Publish trash directories of failed tests'
176 condition: failed()
177 inputs:
178 PathtoPublish: t/failed-test-artifacts
179 ArtifactName: failed-test-artifacts
180
181- job: osx_gcc
182 displayName: osx-gcc
183 condition: succeeded()
184 pool: Hosted macOS
185 steps:
186 - bash: |
187 test "$GITFILESHAREPWD" = '$(gitfileshare.pwd)' || ci/mount-fileshare.sh //gitfileshare.file.core.windows.net/test-cache gitfileshare "$GITFILESHAREPWD" "$HOME/test-cache" || exit 1
188
189 ci/install-dependencies.sh || exit 1
190 ci/run-build-and-tests.sh || {
191 ci/print-test-failures.sh
192 exit 1
193 }
194
195 test "$GITFILESHAREPWD" = '$(gitfileshare.pwd)' || umount "$HOME/test-cache" || exit 1
196 displayName: 'ci/run-build-and-tests.sh'
197 env:
198 GITFILESHAREPWD: $(gitfileshare.pwd)
199 - task: PublishTestResults@2
200 displayName: 'Publish Test Results **/TEST-*.xml'
201 inputs:
202 mergeTestResults: true
203 testRunTitle: 'osx-gcc'
204 platform: macOS
205 publishRunAttachments: false
206 condition: succeededOrFailed()
207 - task: PublishBuildArtifacts@1
208 displayName: 'Publish trash directories of failed tests'
209 condition: failed()
210 inputs:
211 PathtoPublish: t/failed-test-artifacts
212 ArtifactName: failed-test-artifacts
213
214- job: gettext_poison
215 displayName: GETTEXT_POISON
216 condition: succeeded()
217 pool: Hosted Ubuntu 1604
218 steps:
219 - bash: |
220 test "$GITFILESHAREPWD" = '$(gitfileshare.pwd)' || ci/mount-fileshare.sh //gitfileshare.file.core.windows.net/test-cache gitfileshare "$GITFILESHAREPWD" "$HOME/test-cache" || exit 1
221
222 sudo apt-get update &&
223 sudo apt-get -y install git gcc make libssl-dev libcurl4-openssl-dev libexpat-dev tcl tk gettext git-email zlib1g-dev &&
224
225 export jobname=GETTEXT_POISON || exit 1
226
227 ci/run-build-and-tests.sh || {
228 ci/print-test-failures.sh
229 exit 1
230 }
231
232 test "$GITFILESHAREPWD" = '$(gitfileshare.pwd)' || sudo umount "$HOME/test-cache" || exit 1
233 displayName: 'ci/run-build-and-tests.sh'
234 env:
235 GITFILESHAREPWD: $(gitfileshare.pwd)
236 - task: PublishTestResults@2
237 displayName: 'Publish Test Results **/TEST-*.xml'
238 inputs:
239 mergeTestResults: true
240 testRunTitle: 'gettext-poison'
241 platform: Linux
242 publishRunAttachments: false
243 condition: succeededOrFailed()
244 - task: PublishBuildArtifacts@1
245 displayName: 'Publish trash directories of failed tests'
246 condition: failed()
247 inputs:
248 PathtoPublish: t/failed-test-artifacts
249 ArtifactName: failed-test-artifacts
250
251- job: linux32
252 displayName: Linux32
253 condition: succeeded()
254 pool: Hosted Ubuntu 1604
255 steps:
256 - bash: |
257 test "$GITFILESHAREPWD" = '$(gitfileshare.pwd)' || ci/mount-fileshare.sh //gitfileshare.file.core.windows.net/test-cache gitfileshare "$GITFILESHAREPWD" "$HOME/test-cache" || exit 1
258
259 res=0
260 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
261
262 sudo chmod a+r t/out/TEST-*.xml
263 test ! -d t/failed-test-artifacts || sudo chmod a+r t/failed-test-artifacts
264
265 test "$GITFILESHAREPWD" = '$(gitfileshare.pwd)' || sudo umount "$HOME/test-cache" || res=1
266 exit $res
267 displayName: 'ci/run-linux32-docker.sh'
268 env:
269 GITFILESHAREPWD: $(gitfileshare.pwd)
270 - task: PublishTestResults@2
271 displayName: 'Publish Test Results **/TEST-*.xml'
272 inputs:
273 mergeTestResults: true
274 testRunTitle: 'linux32'
275 platform: Linux
276 publishRunAttachments: false
277 condition: succeededOrFailed()
278 - task: PublishBuildArtifacts@1
279 displayName: 'Publish trash directories of failed tests'
280 condition: failed()
281 inputs:
282 PathtoPublish: t/failed-test-artifacts
283 ArtifactName: failed-test-artifacts
284
285- job: static_analysis
286 displayName: StaticAnalysis
287 condition: succeeded()
288 pool: Hosted Ubuntu 1604
289 steps:
290 - bash: |
291 test "$GITFILESHAREPWD" = '$(gitfileshare.pwd)' || ci/mount-fileshare.sh //gitfileshare.file.core.windows.net/test-cache gitfileshare "$GITFILESHAREPWD" "$HOME/test-cache" || exit 1
292
293 sudo apt-get update &&
294 sudo apt-get install -y coccinelle &&
295
296 export jobname=StaticAnalysis &&
297
298 ci/run-static-analysis.sh || exit 1
299
300 test "$GITFILESHAREPWD" = '$(gitfileshare.pwd)' || sudo umount "$HOME/test-cache" || exit 1
301 displayName: 'ci/run-static-analysis.sh'
302 env:
303 GITFILESHAREPWD: $(gitfileshare.pwd)
304
305- job: documentation
306 displayName: Documentation
307 condition: succeeded()
308 pool: Hosted Ubuntu 1604
309 steps:
310 - bash: |
311 test "$GITFILESHAREPWD" = '$(gitfileshare.pwd)' || ci/mount-fileshare.sh //gitfileshare.file.core.windows.net/test-cache gitfileshare "$GITFILESHAREPWD" "$HOME/test-cache" || exit 1
312
313 sudo apt-get update &&
314 sudo apt-get install -y asciidoc xmlto asciidoctor &&
315
316 export ALREADY_HAVE_ASCIIDOCTOR=yes. &&
317 export jobname=Documentation &&
318
319 ci/test-documentation.sh || exit 1
320
321 test "$GITFILESHAREPWD" = '$(gitfileshare.pwd)' || sudo umount "$HOME/test-cache" || exit 1
322 displayName: 'ci/test-documentation.sh'
323 env:
324 GITFILESHAREPWD: $(gitfileshare.pwd)