v1: Add an azure-pipelines.yml Don't check source line endings if autocrlf is on Handle origin-only refs in skip_ci Add .py to PATHEXT for the benefit of test_find_program() Publish logs as build artifacts and publish test results v2: Use .gitattributes to override autocrlf Move tmpdir, so it's not a subdir of source directory, otherwise it gets included in line-ending checks. Use serial build numbers, rather than date.dailybuildnumber Workaround for #3239 is no longer needed now a fix has been commited Tweak test results and artefact naming Wait for MS-MPI installers to complete Publish test results even if tests had an errorpull/4340/head
parent
a0a0c244e2
commit
7bdb39668b
4 changed files with 136 additions and 1 deletions
@ -1,3 +1,3 @@ |
|||||||
.gitignore export-ignore |
.gitignore export-ignore |
||||||
.gitattributes export-ignore |
.gitattributes export-ignore |
||||||
|
* text eol=lf |
||||||
|
@ -0,0 +1,49 @@ |
|||||||
|
name: $(BuildID) |
||||||
|
|
||||||
|
trigger: |
||||||
|
branches: |
||||||
|
include: |
||||||
|
- 'master' |
||||||
|
|
||||||
|
variables: |
||||||
|
MESON_FIXED_NINJA: 1 |
||||||
|
CI: 1 |
||||||
|
|
||||||
|
jobs: |
||||||
|
#- job: vs2015 |
||||||
|
# pool: |
||||||
|
# vmImage: vs2015-win2012r2 |
||||||
|
# |
||||||
|
# strategy: |
||||||
|
# maxParallel: 10 |
||||||
|
# matrix: |
||||||
|
# vc2015x86ninja: |
||||||
|
# arch: x86 |
||||||
|
# compiler: msvc2015 |
||||||
|
# backend: ninja |
||||||
|
# vc2015x86vs: |
||||||
|
# arch: x86 |
||||||
|
# compiler: msvc2015 |
||||||
|
# backend: vs2015 |
||||||
|
# |
||||||
|
# steps: |
||||||
|
# - template: ci/azure-steps.yml |
||||||
|
|
||||||
|
- job: vs2017 |
||||||
|
pool: |
||||||
|
vmImage: VS2017-Win2016 |
||||||
|
|
||||||
|
strategy: |
||||||
|
maxParallel: 10 |
||||||
|
matrix: |
||||||
|
vc2017x64ninja: |
||||||
|
arch: x64 |
||||||
|
compiler: msvc2017 |
||||||
|
backend: ninja |
||||||
|
vc2017x64vs: |
||||||
|
arch: x64 |
||||||
|
compiler: msvc2017 |
||||||
|
backend: vs2017 |
||||||
|
|
||||||
|
steps: |
||||||
|
- template: ci/azure-steps.yml |
@ -0,0 +1,82 @@ |
|||||||
|
steps: |
||||||
|
- powershell: | |
||||||
|
# test_find_program exercises some behaviour which relies on .py being in PATHEXT |
||||||
|
$env:PATHEXT += ';.py' |
||||||
|
|
||||||
|
where.exe python |
||||||
|
|
||||||
|
python ./skip_ci.py --base-branch-env=SYSTEM_PULLREQUEST_TARGETBRANCH --is-pull-env=SYSTEM_PULLREQUEST_PULLREQUESTID --base-branch-origin |
||||||
|
if ($LastExitCode -ne 0) { |
||||||
|
throw ('error in skip_ci.py') |
||||||
|
} |
||||||
|
|
||||||
|
# remove MinGW from path, so we don't find gfortran and try to use it |
||||||
|
$env:Path = ($env:Path.Split(';') | Where-Object { $_ -notlike '*mingw*' }) -join ';' |
||||||
|
|
||||||
|
# download and install prerequisites |
||||||
|
function DownloadFile([String] $Source, [String] $Destination) { |
||||||
|
$retries = 10 |
||||||
|
for ($i = 1; $i -le $retries; $i++) { |
||||||
|
try { |
||||||
|
(New-Object net.webclient).DownloadFile($Source, $Destination) |
||||||
|
break # succeeded |
||||||
|
} catch [net.WebException] { |
||||||
|
if ($i -eq $retries) { |
||||||
|
throw # fail on last retry |
||||||
|
} |
||||||
|
$backoff = (10 * $i) # backoff 10s, 20s, 30s... |
||||||
|
echo ('{0}: {1}' -f $Source, $_.Exception.Message) |
||||||
|
echo ('Retrying in {0}s...' -f $backoff) |
||||||
|
Start-Sleep -m ($backoff * 1000) |
||||||
|
} |
||||||
|
} |
||||||
|
} |
||||||
|
|
||||||
|
DownloadFile -Source 'https://github.com/mesonbuild/cidata/raw/master/ninja.exe' -Destination $(System.WorkFolder)\ninja.exe |
||||||
|
DownloadFile -Source 'http://nirbheek.in/files/binaries/pkg-config/win32/pkg-config.exe' -Destination $(System.WorkFolder)\pkg-config.exe |
||||||
|
DownloadFile -Source 'https://download.microsoft.com/download/D/B/B/DBB64BA1-7B51-43DB-8BF1-D1FB45EACF7A/msmpisdk.msi' -Destination msmpisdk.msi |
||||||
|
DownloadFile -Source 'https://download.microsoft.com/download/D/B/B/DBB64BA1-7B51-43DB-8BF1-D1FB45EACF7A/MSMpiSetup.exe' -Destination MSMpiSetup.exe |
||||||
|
Start-Process msiexec.exe -ArgumentList '/i msmpisdk.msi /quiet' -Wait |
||||||
|
Start-Process .\MSMpiSetup.exe -ArgumentList '-unattend -full' -Wait |
||||||
|
|
||||||
|
# add downloads to PATH |
||||||
|
$env:Path = "$env:SYSTEM_WORKFOLDER;$env:Path" |
||||||
|
|
||||||
|
# import visual studio variables |
||||||
|
Set-PSRepository -Name PSGallery -InstallationPolicy Trusted |
||||||
|
Install-Module Pscx -Scope CurrentUser -AllowClobber |
||||||
|
Install-Module VSSetup -Scope CurrentUser |
||||||
|
$vsver = $env:compiler.Replace('msvc', '') |
||||||
|
Import-VisualStudioVars -VisualStudioVersion $vsver -Architecture $(arch) |
||||||
|
|
||||||
|
if ($env:backend -eq 'ninja') { |
||||||
|
ninja --version |
||||||
|
} else { |
||||||
|
MSBuild /version |
||||||
|
} |
||||||
|
|
||||||
|
python run_tests.py --backend $(backend) |
||||||
|
|
||||||
|
echo "##vso[task.setvariable variable=test_status]$LastExitCode" |
||||||
|
|
||||||
|
continueOnError: true |
||||||
|
|
||||||
|
- task: PublishTestResults@2 |
||||||
|
inputs: |
||||||
|
testResultsFiles: meson-test-run.xml |
||||||
|
testRunTitle: $(System.JobName) |
||||||
|
publishRunAttachments: true |
||||||
|
|
||||||
|
- task: CopyFiles@2 |
||||||
|
inputs: |
||||||
|
contents: 'meson-test-run.*' |
||||||
|
targetFolder: $(Build.ArtifactStagingDirectory) |
||||||
|
|
||||||
|
- task: PublishBuildArtifacts@1 |
||||||
|
inputs: |
||||||
|
artifactName: $(System.JobName) |
||||||
|
|
||||||
|
- powershell: | |
||||||
|
# after publishing test results, even if some failed |
||||||
|
# exit with the test status |
||||||
|
exit $(test_status) |
Loading…
Reference in new issue