@@ -130,6 +130,165 @@ jobs:
130130 PathtoPublish : t/failed-test-artifacts
131131 ArtifactName : failed-test-artifacts
132132
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+
133292- job : linux_clang
134293 displayName : linux-clang
135294 condition : succeeded()
0 commit comments