resources: - repo: self fetchDepth: 1 jobs: - job: windows_build displayName: Windows Build condition: succeeded() pool: Hosted timeoutInMinutes: 240 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) - powershell: | $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-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-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-test-slice.sh `$SYSTEM_JOBPOSITIONINPHASE `$SYSTEM_TOTALJOBSINPHASE || { ci/print-test-failures.sh exit 1 } "@ if (!$?) { exit(1) } 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" } displayName: 'Unmount test-cache' condition: true env: GITFILESHAREPWD: $(gitfileshare.pwd) - task: PublishTestResults@2 displayName: 'Publish Test Results **/TEST-*.xml' inputs: mergeTestResults: true testRunTitle: 'windows' platform: Windows publishRunAttachments: false condition: succeededOrFailed() - task: PublishBuildArtifacts@1 displayName: 'Publish trash directories of failed tests' condition: failed() inputs: PathtoPublish: t/failed-test-artifacts ArtifactName: failed-test-artifacts - job: linux_clang displayName: linux-clang condition: succeeded() pool: Hosted Ubuntu 1604 steps: - bash: | test "$GITFILESHAREPWD" = '$(gitfileshare.pwd)' || ci/mount-fileshare.sh //gitfileshare.file.core.windows.net/test-cache gitfileshare "$GITFILESHAREPWD" "$HOME/test-cache" || exit 1 sudo apt-get update && sudo apt-get -y install git gcc make libssl-dev libcurl4-openssl-dev libexpat-dev tcl tk gettext git-email zlib1g-dev apache2-bin && export CC=clang || exit 1 ci/install-dependencies.sh || exit 1 ci/run-build-and-tests.sh || { ci/print-test-failures.sh exit 1 } test "$GITFILESHAREPWD" = '$(gitfileshare.pwd)' || sudo umount "$HOME/test-cache" || exit 1 displayName: 'ci/run-build-and-tests.sh' env: GITFILESHAREPWD: $(gitfileshare.pwd) - task: PublishTestResults@2 displayName: 'Publish Test Results **/TEST-*.xml' inputs: mergeTestResults: true testRunTitle: 'linux-clang' platform: Linux publishRunAttachments: false condition: succeededOrFailed() - task: PublishBuildArtifacts@1 displayName: 'Publish trash directories of failed tests' condition: failed() inputs: PathtoPublish: t/failed-test-artifacts ArtifactName: failed-test-artifacts - job: linux_gcc displayName: linux-gcc condition: succeeded() pool: Hosted Ubuntu 1604 steps: - bash: | test "$GITFILESHAREPWD" = '$(gitfileshare.pwd)' || ci/mount-fileshare.sh //gitfileshare.file.core.windows.net/test-cache gitfileshare "$GITFILESHAREPWD" "$HOME/test-cache" || exit 1 sudo add-apt-repository ppa:ubuntu-toolchain-r/test && sudo apt-get update && 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 ci/install-dependencies.sh || exit 1 ci/run-build-and-tests.sh || { ci/print-test-failures.sh exit 1 } test "$GITFILESHAREPWD" = '$(gitfileshare.pwd)' || sudo umount "$HOME/test-cache" || exit 1 displayName: 'ci/run-build-and-tests.sh' env: GITFILESHAREPWD: $(gitfileshare.pwd) - task: PublishTestResults@2 displayName: 'Publish Test Results **/TEST-*.xml' inputs: mergeTestResults: true testRunTitle: 'linux-gcc' platform: Linux publishRunAttachments: false condition: succeededOrFailed() - task: PublishBuildArtifacts@1 displayName: 'Publish trash directories of failed tests' condition: failed() inputs: PathtoPublish: t/failed-test-artifacts ArtifactName: failed-test-artifacts - job: osx_clang displayName: osx-clang condition: succeeded() pool: Hosted macOS steps: - bash: | test "$GITFILESHAREPWD" = '$(gitfileshare.pwd)' || ci/mount-fileshare.sh //gitfileshare.file.core.windows.net/test-cache gitfileshare "$GITFILESHAREPWD" "$HOME/test-cache" || exit 1 export CC=clang ci/install-dependencies.sh || exit 1 ci/run-build-and-tests.sh || { ci/print-test-failures.sh exit 1 } test "$GITFILESHAREPWD" = '$(gitfileshare.pwd)' || umount "$HOME/test-cache" || exit 1 displayName: 'ci/run-build-and-tests.sh' env: GITFILESHAREPWD: $(gitfileshare.pwd) - task: PublishTestResults@2 displayName: 'Publish Test Results **/TEST-*.xml' inputs: mergeTestResults: true testRunTitle: 'osx-clang' platform: macOS publishRunAttachments: false condition: succeededOrFailed() - task: PublishBuildArtifacts@1 displayName: 'Publish trash directories of failed tests' condition: failed() inputs: PathtoPublish: t/failed-test-artifacts ArtifactName: failed-test-artifacts - job: osx_gcc displayName: osx-gcc condition: succeeded() pool: Hosted macOS steps: - bash: | test "$GITFILESHAREPWD" = '$(gitfileshare.pwd)' || ci/mount-fileshare.sh //gitfileshare.file.core.windows.net/test-cache gitfileshare "$GITFILESHAREPWD" "$HOME/test-cache" || exit 1 ci/install-dependencies.sh || exit 1 ci/run-build-and-tests.sh || { ci/print-test-failures.sh exit 1 } test "$GITFILESHAREPWD" = '$(gitfileshare.pwd)' || umount "$HOME/test-cache" || exit 1 displayName: 'ci/run-build-and-tests.sh' env: GITFILESHAREPWD: $(gitfileshare.pwd) - task: PublishTestResults@2 displayName: 'Publish Test Results **/TEST-*.xml' inputs: mergeTestResults: true testRunTitle: 'osx-gcc' platform: macOS publishRunAttachments: false condition: succeededOrFailed() - task: PublishBuildArtifacts@1 displayName: 'Publish trash directories of failed tests' condition: failed() inputs: PathtoPublish: t/failed-test-artifacts ArtifactName: failed-test-artifacts - job: gettext_poison displayName: GETTEXT_POISON condition: succeeded() pool: Hosted Ubuntu 1604 steps: - bash: | test "$GITFILESHAREPWD" = '$(gitfileshare.pwd)' || ci/mount-fileshare.sh //gitfileshare.file.core.windows.net/test-cache gitfileshare "$GITFILESHAREPWD" "$HOME/test-cache" || exit 1 sudo apt-get update && sudo apt-get -y install git gcc make libssl-dev libcurl4-openssl-dev libexpat-dev tcl tk gettext git-email zlib1g-dev && export jobname=GETTEXT_POISON || exit 1 ci/run-build-and-tests.sh || { ci/print-test-failures.sh exit 1 } test "$GITFILESHAREPWD" = '$(gitfileshare.pwd)' || sudo umount "$HOME/test-cache" || exit 1 displayName: 'ci/run-build-and-tests.sh' env: GITFILESHAREPWD: $(gitfileshare.pwd) - task: PublishTestResults@2 displayName: 'Publish Test Results **/TEST-*.xml' inputs: mergeTestResults: true testRunTitle: 'gettext-poison' platform: Linux publishRunAttachments: false condition: succeededOrFailed() - task: PublishBuildArtifacts@1 displayName: 'Publish trash directories of failed tests' condition: failed() inputs: PathtoPublish: t/failed-test-artifacts ArtifactName: failed-test-artifacts - job: linux32 displayName: Linux32 condition: succeeded() pool: Hosted Ubuntu 1604 steps: - bash: | test "$GITFILESHAREPWD" = '$(gitfileshare.pwd)' || ci/mount-fileshare.sh //gitfileshare.file.core.windows.net/test-cache gitfileshare "$GITFILESHAREPWD" "$HOME/test-cache" || exit 1 res=0 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 sudo chmod a+r t/out/TEST-*.xml test ! -d t/failed-test-artifacts || sudo chmod a+r t/failed-test-artifacts test "$GITFILESHAREPWD" = '$(gitfileshare.pwd)' || sudo umount "$HOME/test-cache" || res=1 exit $res displayName: 'ci/run-linux32-docker.sh' env: GITFILESHAREPWD: $(gitfileshare.pwd) - task: PublishTestResults@2 displayName: 'Publish Test Results **/TEST-*.xml' inputs: mergeTestResults: true testRunTitle: 'linux32' platform: Linux publishRunAttachments: false condition: succeededOrFailed() - task: PublishBuildArtifacts@1 displayName: 'Publish trash directories of failed tests' condition: failed() inputs: PathtoPublish: t/failed-test-artifacts ArtifactName: failed-test-artifacts - job: static_analysis displayName: StaticAnalysis condition: succeeded() pool: Hosted Ubuntu 1604 steps: - bash: | test "$GITFILESHAREPWD" = '$(gitfileshare.pwd)' || ci/mount-fileshare.sh //gitfileshare.file.core.windows.net/test-cache gitfileshare "$GITFILESHAREPWD" "$HOME/test-cache" || exit 1 sudo apt-get update && sudo apt-get install -y coccinelle && export jobname=StaticAnalysis && ci/run-static-analysis.sh || exit 1 test "$GITFILESHAREPWD" = '$(gitfileshare.pwd)' || sudo umount "$HOME/test-cache" || exit 1 displayName: 'ci/run-static-analysis.sh' env: GITFILESHAREPWD: $(gitfileshare.pwd) - job: documentation displayName: Documentation condition: succeeded() pool: Hosted Ubuntu 1604 steps: - bash: | test "$GITFILESHAREPWD" = '$(gitfileshare.pwd)' || ci/mount-fileshare.sh //gitfileshare.file.core.windows.net/test-cache gitfileshare "$GITFILESHAREPWD" "$HOME/test-cache" || exit 1 sudo apt-get update && sudo apt-get install -y asciidoc xmlto asciidoctor && export ALREADY_HAVE_ASCIIDOCTOR=yes. && export jobname=Documentation && ci/test-documentation.sh || exit 1 test "$GITFILESHAREPWD" = '$(gitfileshare.pwd)' || sudo umount "$HOME/test-cache" || exit 1 displayName: 'ci/test-documentation.sh' env: GITFILESHAREPWD: $(gitfileshare.pwd)