From 7bdb39668bd2efd579d94e7d69a0b429e026499b Mon Sep 17 00:00:00 2001 From: Jon Turney Date: Sat, 6 Oct 2018 18:09:56 +0100 Subject: 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 --- ci/azure-steps.yml | 82 ++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 82 insertions(+) create mode 100644 ci/azure-steps.yml (limited to 'ci') diff --git a/ci/azure-steps.yml b/ci/azure-steps.yml new file mode 100644 index 000000000..6126115b6 --- /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) -- cgit v1.2.3 From 9717fb81646f0e6a17abd1a5e0ed8d3ccde64412 Mon Sep 17 00:00:00 2001 From: Jon Turney Date: Wed, 10 Oct 2018 20:32:08 +0100 Subject: Add resgen to PATH so csharp tests are run --- ci/azure-steps.yml | 6 ++++++ 1 file changed, 6 insertions(+) (limited to 'ci') diff --git a/ci/azure-steps.yml b/ci/azure-steps.yml index 6126115b6..984d05d74 100644 --- a/ci/azure-steps.yml +++ b/ci/azure-steps.yml @@ -49,6 +49,12 @@ steps: $vsver = $env:compiler.Replace('msvc', '') Import-VisualStudioVars -VisualStudioVersion $vsver -Architecture $(arch) + # add .NET framework tools to path for resgen for C# tests + # (always use 32-bit tool, as there doesn't seem to be a 64-bit tool) + if ((Get-Command "resgen.exe" -ErrorAction SilentlyContinue) -eq $null) { + $env:Path = "$env:WindowsSDK_ExecutablePath_x86;$env:Path" + } + if ($env:backend -eq 'ninja') { ninja --version } else { -- cgit v1.2.3 From efa55c9e1c19621290ddf226002feed9710185e8 Mon Sep 17 00:00:00 2001 From: Jon Turney Date: Thu, 11 Oct 2018 17:43:55 +0100 Subject: Set env vars so MS-MPI tests are run Import MS-MPI env vars set by installer in registry to environment Skip testing we can apply a version constraint to MPI when version isn't known (as is the case for MS-MPI) (These tests have never worked in appveyor) --- ci/azure-steps.yml | 6 ++++++ test cases/frameworks/17 mpi/meson.build | 4 +++- 2 files changed, 9 insertions(+), 1 deletion(-) (limited to 'ci') diff --git a/ci/azure-steps.yml b/ci/azure-steps.yml index 984d05d74..4cb6ac8ba 100644 --- a/ci/azure-steps.yml +++ b/ci/azure-steps.yml @@ -39,6 +39,12 @@ steps: Start-Process msiexec.exe -ArgumentList '/i msmpisdk.msi /quiet' -Wait Start-Process .\MSMpiSetup.exe -ArgumentList '-unattend -full' -Wait + # import ms-mpi env vars (set by installer) + foreach ($p in "MSMPI_INC", "MSMPI_LIB32", "MSMPI_LIB64") { + $v = [Environment]::GetEnvironmentVariable($p, "Machine") + Set-Content "env:$p" "$v" + } + # add downloads to PATH $env:Path = "$env:SYSTEM_WORKFOLDER;$env:Path" diff --git a/test cases/frameworks/17 mpi/meson.build b/test cases/frameworks/17 mpi/meson.build index b2f9fb853..ae3f08afc 100644 --- a/test cases/frameworks/17 mpi/meson.build +++ b/test cases/frameworks/17 mpi/meson.build @@ -44,4 +44,6 @@ if uburesult.returncode() != 0 and add_languages('fortran', required : false) endif # Check we can apply a version constraint -dependency('mpi', version: '>=@0@'.format(mpic.version())) +if mpic.version() != 'unknown' + dependency('mpi', version: '>=@0@'.format(mpic.version())) +endif -- cgit v1.2.3