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 |
||||
.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