@@ -130,6 +130,165 @@ jobs:
130
130
PathtoPublish : t/failed-test-artifacts
131
131
ArtifactName : failed-test-artifacts
132
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 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 -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
+
133
292
- job : linux_clang
134
293
displayName : linux-clang
135
294
condition : succeeded()
0 commit comments