From 406f00777503e698ecfca8142fc197eda44452d2 Mon Sep 17 00:00:00 2001 From: Egor Tensin Date: Thu, 22 Aug 2019 14:56:51 +0300 Subject: AppVeyor: better practices --- .appveyor/build.ps1 | 71 ++++++++++++++++++++++++++++++++++------------------- .appveyor/test.ps1 | 55 ++++++++++++++++++++++++----------------- appveyor.yml | 18 +++++++++----- 3 files changed, 91 insertions(+), 53 deletions(-) diff --git a/.appveyor/build.ps1 b/.appveyor/build.ps1 index 173ba3c..3016b42 100644 --- a/.appveyor/build.ps1 +++ b/.appveyor/build.ps1 @@ -1,7 +1,8 @@ param( - [string] $BuildDir = 'C:\Projects\build', + [string] $BuildDir = $null, [string] $ProjectDir = $null, [string] $Platform = $null, + [string] $Generator = $null, [string] $Configuration = $null, [string] $BoostDir = $null, [string] $BoostLibraryDir = $null, @@ -9,6 +10,7 @@ param( ) $ErrorActionPreference = "Stop"; +Set-PSDebug -Strict function Invoke-Exe { param( @@ -55,6 +57,22 @@ function Get-AppVeyorBoostLibraryDir { } } +function Set-AppVeyorDefaults { + $script:ProjectDir = $env:APPVEYOR_BUILD_FOLDER + $script:BuildDir = 'C:\Projects\build' + $script:Generator = switch ($env:APPVEYOR_BUILD_WORKER_IMAGE) { + 'Visual Studio 2013' { 'Visual Studio 12 2013' } + 'Visual Studio 2015' { 'Visual Studio 14 2015' } + 'Visual Studio 2017' { 'Visual Studio 15 2017' } + default { throw "Unsupported AppVeyor image: $env:APPVEYOR_BUILD_WORKER_IMAGE" } + } + $script:Platform = $env:PLATFORM + $script:Configuration = $env:CONFIGURATION + $script:BoostDir = Get-AppVeyorBoostDir + $script:BoostLibraryDir = Get-AppVeyorBoostLibraryDir -Platform $script:Platform + $script:UseAsm = -not ($env:appveyor_asm -eq '0') +} + function Build-Project { param( [Parameter(Mandatory=$true)] @@ -62,6 +80,8 @@ function Build-Project { [Parameter(Mandatory=$true)] [string] $BuildDir, [Parameter(Mandatory=$true)] + [string] $Generator, + [Parameter(Mandatory=$true)] [string] $Platform, [Parameter(Mandatory=$true)] [string] $Configuration, @@ -84,8 +104,8 @@ function Build-Project { mkdir $BuildDir cd $BuildDir - Invoke-Exe { cmake -Wno-dev ` - -G "Visual Studio 15 2017" -A $Platform ` + Invoke-Exe { cmake.exe -Wno-dev ` + -G $Generator -A $Platform ` -D "AES_TOOLS_ASM=$cmake_asm" ` -D "BOOST_ROOT=$BoostDir" ` -D "BOOST_LIBRARYDIR=$BoostLibraryDir" ` @@ -94,29 +114,30 @@ function Build-Project { $ProjectDir } - Invoke-Exe { cmake --build . --config "$Configuration" -- /m } + Invoke-Exe { cmake.exe --build . --config $Configuration -- /m } } -if (Test-AppVeyor) { - $cwd = pwd - $ProjectDir = $env:APPVEYOR_BUILD_FOLDER - $BuildDir = 'C:\Projects\build' - $Platform = $env:PLATFORM - $Configuration = $env:CONFIGURATION - $BoostDir = Get-AppVeyorBoostDir - $BoostLibraryDir = Get-AppVeyorBoostLibraryDir -Platform $Platform - $UseAsm = -not ($env:appveyor_asm -eq '0') +function Build-ProjectAppVeyor { + if (Test-AppVeyor) { + Set-AppVeyorDefaults + $appveyor_cwd = pwd + } + + try { + Build-Project ` + -ProjectDir $script:ProjectDir ` + -BuildDir $script:BuildDir ` + -Generator $script:Generator ` + -Platform $script:Platform ` + -Configuration $script:Configuration ` + -BoostDir $script:BoostDir ` + -BoostLibraryDir $script:BoostLibraryDir ` + -UseAsm $UseAsm + } finally { + if (Test-AppVeyor) { + cd $appveyor_cwd + } + } } -Build-Project ` - -ProjectDir $ProjectDir ` - -BuildDir $BuildDir ` - -Platform $Platform ` - -Configuration $Configuration ` - -BoostDir $BoostDir ` - -BoostLibraryDir $BoostLibraryDir ` - -UseAsm $UseAsm - -if (Test-AppVeyor) { - cd $cwd -} +Build-ProjectAppVeyor diff --git a/.appveyor/test.ps1 b/.appveyor/test.ps1 index 88ad8a9..6eced27 100644 --- a/.appveyor/test.ps1 +++ b/.appveyor/test.ps1 @@ -5,6 +5,7 @@ param( ) $ErrorActionPreference = "Stop"; +Set-PSDebug -Strict function Invoke-Exe { param( @@ -47,6 +48,12 @@ function Get-AppVeyorPythonDir { } } +function Set-AppVeyorDefaults { + $script:ProjectDir = $env:APPVEYOR_BUILD_FOLDER + $script:UtilsDir = Get-AppVeyorUtilsDir + $script:PythonDir = Get-AppVeyorPythonDir +} + function Run-ProjectTests { param( [Parameter(Mandatory=$true)] @@ -58,33 +65,37 @@ function Run-ProjectTests { $test_dir = "$ProjectDir\test" cd $test_dir - Invoke-Exe { python nist.py --path $UtilsDir --log nist.log } - Get-Content nist.log -Tail 5 - Invoke-Exe { python cavp.py --path $UtilsDir --log cavp.log } - Get-Content cavp.log -Tail 5 - Invoke-Exe { python nist.py --path $UtilsDir --log nist.log --boxes } + Invoke-Exe { python.exe nist.py --path $UtilsDir --log nist.log } Get-Content nist.log -Tail 5 - Invoke-Exe { python cavp.py --path $UtilsDir --log cavp.log --boxes } + Invoke-Exe { python.exe cavp.py --path $UtilsDir --log cavp.log } Get-Content cavp.log -Tail 5 - Invoke-Exe { python file.py --path $UtilsDir --log file.log } + Invoke-Exe { python.exe nist.py --path $UtilsDir --log nist_boxes.log --boxes } + Get-Content nist_boxes.log -Tail 5 + Invoke-Exe { python.exe cavp.py --path $UtilsDir --log cavp_boxes.log --boxes } + Get-Content cavp_boxes.log -Tail 5 + Invoke-Exe { python.exe file.py --path $UtilsDir --log file.log } Get-Content file.log -Tail 5 } -if (Test-AppVeyor) { - $cwd = pwd - $ProjectDir = $env:APPVEYOR_BUILD_FOLDER - $UtilsDir = Get-AppVeyorUtilsDir - $PythonDir = Get-AppVeyorPythonDir -} - -if ($PythonDir) { - $env:PATH = "${PythonDir};${env:PATH}" -} +function Run-ProjectTestsAppVeyor { + if (Test-AppVeyor) { + Set-AppVeyorDefaults + $appveyor_cwd = pwd + } -Run-ProjectTests ` - -ProjectDir $ProjectDir ` - -UtilsDir $UtilsDir + try { + if ($script:PythonDir) { + $env:PATH = "${script:PythonDir};${env:PATH}" + } -if (Test-AppVeyor) { - cd $cwd + Run-ProjectTests ` + -ProjectDir $script:ProjectDir ` + -UtilsDir $script:UtilsDir + } finally { + if (Test-AppVeyor) { + cd $appveyor_cwd + } + } } + +Run-ProjectTestsAppVeyor diff --git a/appveyor.yml b/appveyor.yml index 58d0005..85ba310 100644 --- a/appveyor.yml +++ b/appveyor.yml @@ -1,17 +1,23 @@ version: '{build}' -image: - - Visual Studio 2017 - branches: only: - master environment: - appveyor_boost_version: 1.69.0 matrix: - - appveyor_asm: 1 - - appveyor_asm: 0 + - APPVEYOR_BUILD_WORKER_IMAGE: Visual Studio 2015 + appveyor_boost_version: 1.62.0 + appveyor_asm: 1 + - APPVEYOR_BUILD_WORKER_IMAGE: Visual Studio 2015 + appveyor_boost_version: 1.62.0 + appveyor_asm: 0 + - APPVEYOR_BUILD_WORKER_IMAGE: Visual Studio 2017 + appveyor_boost_version: 1.69.0 + appveyor_asm: 1 + - APPVEYOR_BUILD_WORKER_IMAGE: Visual Studio 2017 + appveyor_boost_version: 1.69.0 + appveyor_asm: 0 platform: - Win32 -- cgit v1.2.3