fetchDepth: 1
jobs:
-- job: windows
- displayName: Windows
+- job: windows_build
+ displayName: Windows Build
condition: succeeded()
pool: Hosted
timeoutInMinutes: 240
env:
GITFILESHAREPWD: $(gitfileshare.pwd)
- powershell: |
- # Helper to check the error level of the latest command (exit with error when appropriate)
- function c() { if (!$?) { exit(1) } }
-
- # Add build agent's MinGit to PATH
- $env:PATH = $env:AGENT_HOMEDIRECTORY +"\externals\\git\cmd;" +$env:PATH
-
- # Helper to initialize (or update) a Git worktree
- function init ($path, $url, $set_origin) {
- if (Test-Path $path) {
- cd $path; c
- if (Test-Path .git) {
- & git init; c
- } else {
- & git status
- }
- } else {
- & git init $path; c
- cd $path; c
- }
- & git config core.autocrlf false; c
- & git config core.untrackedCache true; c
- if (($set_origin -ne 0) -and !(git config remote.origin.url)) {
- & git remote add origin $url; c
- }
- & git fetch --depth=1 $url master; c
- & git reset --hard FETCH_HEAD; c
- & git clean -df; c
- }
-
- # Initialize Git for Windows' SDK
- $sdk_path = "$(Build.SourcesDirectory)\git-sdk-64"
- init "$sdk_path" "https://dev.azure.com/git-for-windows/git-sdk-64/_git/git-sdk-64" 0
+ $urlbase = "https://dev.azure.com/git-for-windows/git/_apis/build/builds"
+ $id = ((Invoke-WebRequest -UseBasicParsing "${urlbase}?definitions=22&statusFilter=completed&resultFilter=succeeded&`$top=1").content | ConvertFrom-JSON).value[0].id
+ $downloadUrl = ((Invoke-WebRequest -UseBasicParsing "${urlbase}/$id/artifacts").content | ConvertFrom-JSON).value[1].resource.downloadUrl
+ (New-Object Net.WebClient).DownloadFile($downloadUrl,"git-sdk-64-minimal.zip")
+ Expand-Archive git-sdk-64-minimal.zip -DestinationPath . -Force
+ Remove-Item git-sdk-64-minimal.zip
# Let Git ignore the SDK and the test-cache
- "/git-sdk-64/`n/test-cache/`n" | Out-File -NoNewLine -Encoding ascii -Append "$(Build.SourcesDirectory)\.git\info\exclude"
- displayName: 'Initialize the Git for Windows SDK'
+ "/git-sdk-64-minimal/`n/test-cache/`n" | Out-File -NoNewLine -Encoding ascii -Append "$(Build.SourcesDirectory)\.git\info\exclude"
+ displayName: 'Download git-sdk-64-minimal'
- powershell: |
- & "git-sdk-64\git-cmd.exe" --command=usr\\bin\\bash.exe -lc @"
- export DEVELOPER=1
- export NO_PERL=1
- export NO_SVN_TESTS=1
- export GIT_TEST_SKIP_REBASE_P=1
+ & git-sdk-64-minimal\usr\bin\bash.exe -lc @"
+ ci/make-test-artifacts.sh artifacts
+ "@
+ if (!$?) { exit(1) }
+ displayName: Build
+ env:
+ HOME: $(Build.SourcesDirectory)
+ MSYSTEM: MINGW64
+ DEVELOPER: 1
+ NO_PERL: 1
+ - task: PublishPipelineArtifact@0
+ displayName: 'Publish Pipeline Artifact: test artifacts'
+ inputs:
+ artifactName: 'windows-artifacts'
+ targetPath: '$(Build.SourcesDirectory)\artifacts'
+ - task: PublishPipelineArtifact@0
+ displayName: 'Publish Pipeline Artifact: git-sdk-64-minimal'
+ inputs:
+ artifactName: 'git-sdk-64-minimal'
+ targetPath: '$(Build.SourcesDirectory)\git-sdk-64-minimal'
+ - powershell: |
+ if ("$GITFILESHAREPWD" -ne "" -and "$GITFILESHAREPWD" -ne "`$`(gitfileshare.pwd)") {
+ cmd /c rmdir "$(Build.SourcesDirectory)\test-cache"
+ }
+ displayName: 'Unmount test-cache'
+ condition: true
+ env:
+ GITFILESHAREPWD: $(gitfileshare.pwd)
+
+- job: windows_test
+ displayName: Windows Test
+ dependsOn: windows_build
+ condition: succeeded()
+ pool: Hosted
+ timeoutInMinutes: 240
+ strategy:
+ parallel: 10
+ steps:
+ - powershell: |
+ if ("$GITFILESHAREPWD" -ne "" -and "$GITFILESHAREPWD" -ne "`$`(gitfileshare.pwd)") {
+ net use s: \\gitfileshare.file.core.windows.net\test-cache "$GITFILESHAREPWD" /user:AZURE\gitfileshare /persistent:no
+ cmd /c mklink /d "$(Build.SourcesDirectory)\test-cache" S:\
+ }
+ displayName: 'Mount test-cache'
+ env:
+ GITFILESHAREPWD: $(gitfileshare.pwd)
+ - task: DownloadPipelineArtifact@0
+ displayName: 'Download Pipeline Artifact: test artifacts'
+ inputs:
+ artifactName: 'windows-artifacts'
+ targetPath: '$(Build.SourcesDirectory)'
+ - task: DownloadPipelineArtifact@0
+ displayName: 'Download Pipeline Artifact: git-sdk-64-minimal'
+ inputs:
+ artifactName: 'git-sdk-64-minimal'
+ targetPath: '$(Build.SourcesDirectory)\git-sdk-64-minimal'
+ - powershell: |
+ & git-sdk-64-minimal\usr\bin\bash.exe -lc @"
+ test -f artifacts.tar.gz || {
+ echo No test artifacts found\; skipping >&2
+ exit 0
+ }
+ tar xf artifacts.tar.gz || exit 1
+
+ # Let Git ignore the SDK and the test-cache
+ printf '%s\n' /git-sdk-64-minimal/ /test-cache/ >>.git/info/exclude
- ci/run-build-and-tests.sh || {
+ ci/run-test-slice.sh `$SYSTEM_JOBPOSITIONINPHASE `$SYSTEM_TOTALJOBSINPHASE || {
ci/print-test-failures.sh
exit 1
}
"@
if (!$?) { exit(1) }
- displayName: 'Build & Test'
+ displayName: 'Test (parallel)'
env:
HOME: $(Build.SourcesDirectory)
MSYSTEM: MINGW64
+ NO_SVN_TESTS: 1
+ GIT_TEST_SKIP_REBASE_P: 1
- powershell: |
if ("$GITFILESHAREPWD" -ne "" -and "$GITFILESHAREPWD" -ne "`$`(gitfileshare.pwd)") {
cmd /c rmdir "$(Build.SourcesDirectory)\test-cache"