diff options
author | Jon Turney <jon.turney@dronecode.org.uk> | 2018-10-06 18:09:56 +0100 |
---|---|---|
committer | Jon Turney <jon.turney@dronecode.org.uk> | 2018-10-14 16:01:22 +0100 |
commit | 7bdb39668bd2efd579d94e7d69a0b429e026499b (patch) | |
tree | 8b2507af902dcfec0381302c4e3dc4994feb809a /ci | |
parent | a0a0c244e2a062ceba357f05d4852cd063f0b0cd (diff) | |
download | meson-7bdb39668bd2efd579d94e7d69a0b429e026499b.zip meson-7bdb39668bd2efd579d94e7d69a0b429e026499b.tar.gz meson-7bdb39668bd2efd579d94e7d69a0b429e026499b.tar.bz2 |
Add an azure-pipelines.yml
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 error
Diffstat (limited to 'ci')
-rw-r--r-- | ci/azure-steps.yml | 82 |
1 files changed, 82 insertions, 0 deletions
diff --git a/ci/azure-steps.yml b/ci/azure-steps.yml new file mode 100644 index 0000000..6126115 --- /dev/null +++ b/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) |