aboutsummaryrefslogtreecommitdiff
path: root/ci
diff options
context:
space:
mode:
authorJon Turney <jon.turney@dronecode.org.uk>2018-10-06 18:09:56 +0100
committerJon Turney <jon.turney@dronecode.org.uk>2018-10-14 16:01:22 +0100
commit7bdb39668bd2efd579d94e7d69a0b429e026499b (patch)
tree8b2507af902dcfec0381302c4e3dc4994feb809a /ci
parenta0a0c244e2a062ceba357f05d4852cd063f0b0cd (diff)
downloadmeson-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.yml82
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)