From 6801e4b384e0ca6d16f497575c2e83f757152826 Mon Sep 17 00:00:00 2001 From: Davide Beatrici Date: Tue, 21 Jul 2020 21:11:57 +0200 Subject: [PATCH] Azure Pipelines: improve steps, use Ninja and designated build directory --- .ci/appveyor-deb-install-test.sh | 12 +++++++----- .ci/appveyor-vpntest.ps1 | 13 +++++++++---- .ci/azure-pipelines-linux.yml | 20 +++++++++++--------- .ci/azure-pipelines-win.yml | 27 +++++++++++++-------------- .ci/run-openvpn-tests.sh | 5 ++++- .ci/start-se-openvpn.sh | 20 ++++++++++++-------- 6 files changed, 56 insertions(+), 41 deletions(-) diff --git a/.ci/appveyor-deb-install-test.sh b/.ci/appveyor-deb-install-test.sh index 1e912a4e..abc391ce 100755 --- a/.ci/appveyor-deb-install-test.sh +++ b/.ci/appveyor-deb-install-test.sh @@ -2,11 +2,13 @@ set -eux -sudo dpkg -i build/softether-common*.deb -sudo dpkg -i build/softether-vpnbridge*.deb -sudo dpkg -i build/softether-vpnclient*.deb -sudo dpkg -i build/softether-vpncmd*.deb -sudo dpkg -i build/softether-vpnserver*.deb +BUILD_BINARIESDIRECTORY="${BUILD_BINARIESDIRECTORY:-build}" + +sudo dpkg -i $BUILD_BINARIESDIRECTORY/softether-common*.deb +sudo dpkg -i $BUILD_BINARIESDIRECTORY/softether-vpnbridge*.deb +sudo dpkg -i $BUILD_BINARIESDIRECTORY/softether-vpnclient*.deb +sudo dpkg -i $BUILD_BINARIESDIRECTORY/softether-vpncmd*.deb +sudo dpkg -i $BUILD_BINARIESDIRECTORY/softether-vpnserver*.deb sudo systemctl restart softether-vpnserver || (sudo journalctl -xe --no-pager >> systemctl.log && appveyor PushArtifact systemctl.log && exit 1) diff --git a/.ci/appveyor-vpntest.ps1 b/.ci/appveyor-vpntest.ps1 index 60177c2b..41b2ee56 100644 --- a/.ci/appveyor-vpntest.ps1 +++ b/.ci/appveyor-vpntest.ps1 @@ -1,20 +1,25 @@ $ErrorActionPreference = 'Stop' +if (Test-Path "env:BUILD_BINARIESDIRECTORY") { + $BUILD_BINARIESDIRECTORY = $env:BUILD_BINARIESDIRECTORY +} else { + $BUILD_BINARIESDIRECTORY = "build" +} + # ('s', 'c', 'b', 'sm', 'cm') ?? ('s', 'c', 'b') | % { [String] $mode = $_ Write-Host "testing: $mode" - $full = (Write-Output "q\n" | & .\build\vpntest.exe $mode) + $full = (Write-Output "q\n" | & "$BUILD_BINARIESDIRECTORY\vpntest.exe" $mode) $t = ($full | Select-String -Pattern 'NO MEMORY LEAKS' -CaseSensitive) - if( ($t).Count -ne 1){ + if (($t).Count -ne 1) { $full Write-Error 'failed' return $false - }else{ + } else { Write-Host 'ok' } - } diff --git a/.ci/azure-pipelines-linux.yml b/.ci/azure-pipelines-linux.yml index bf9b9738..f9b37ba6 100644 --- a/.ci/azure-pipelines-linux.yml +++ b/.ci/azure-pipelines-linux.yml @@ -3,15 +3,17 @@ jobs: displayName: 'Ubuntu (x86_64)' pool: vmImage: ubuntu-16.04 - variables: - CPACK_GENERATOR: DEB steps: - script: | - sudo apt -y install cmake gcc g++ libncurses5-dev libreadline-dev libssl-dev make zlib1g-dev - ./configure - make package -C build -j $(nproc || sysctl -n hw.ncpu || echo 4) + cd $BUILD_BINARIESDIRECTORY + sudo apt -y install cmake gcc g++ ninja-build libncurses5-dev libreadline-dev libssl-dev make zlib1g-dev + cmake -G "Ninja" -DCMAKE_BUILD_TYPE=RelWithDebInfo $BUILD_SOURCESDIRECTORY + cmake --build . + cpack -C Release -G DEB + displayName: 'Build' + - script: | .ci/appveyor-deb-install-test.sh - sudo apt-get -y install autoconf libtool liblzo2-dev libpam-dev fping unzip # openvpn build deps - sudo .ci/start-se-openvpn.sh - sudo .ci/run-openvpn-tests.sh - displayName: 'Ubuntu 16.04' + sudo apt-get -y install autoconf libtool liblzo2-dev libpam-dev fping unzip # To build OpenVPN + sudo BUILD_BINARIESDIRECTORY=$BUILD_BINARIESDIRECTORY .ci/start-se-openvpn.sh + sudo BUILD_BINARIESDIRECTORY=$BUILD_BINARIESDIRECTORY .ci/run-openvpn-tests.sh + displayName: 'Test' diff --git a/.ci/azure-pipelines-win.yml b/.ci/azure-pipelines-win.yml index f03e11f1..07e8e1a0 100644 --- a/.ci/azure-pipelines-win.yml +++ b/.ci/azure-pipelines-win.yml @@ -5,22 +5,21 @@ jobs: vmImage: vs2017-win2016 steps: - script: | - call "C:\Program Files (x86)\Microsoft Visual Studio\2017\Enterprise\VC\Auxiliary\Build\vcvars64.bat" - configure - - script: | - call "C:\Program Files (x86)\Microsoft Visual Studio\2017\Enterprise\VC\Auxiliary\Build\vcvars64.bat" - cd build - nmake + cd /d %BUILD_BINARIESDIRECTORY% + call "C:\Program Files (x86)\Microsoft Visual Studio\2017\Enterprise\VC\Auxiliary\Build\vcvars64.bat" + cmake -G "Ninja" -DCMAKE_BUILD_TYPE=RelWithDebInfo -DCMAKE_C_COMPILER=cl "-DCMAKE_CXX_COMPILER=cl" %BUILD_SOURCESDIRECTORY% + cmake --build . + displayName: 'Build' - powershell: | - . .ci\appveyor-vpntest.ps1 - - powershell: | - New-Item -Path '$(build.artifactstagingdirectory)/publish' -ItemType Directory + . .ci\appveyor-vpntest.ps1 + displayName: 'Test' - task: CopyFiles@2 inputs: - sourceFolder: '$(Build.SourcesDirectory)' - contents: 'build/?(*.exe|*.se2|*.pdb)' - TargetFolder: '$(build.artifactstagingdirectory)/publish' + sourceFolder: '$(Build.BinariesDirectory)' + contents: '?(*.exe|*.se2|*.pdb)' + TargetFolder: '$(Build.StagingDirectory)' + flattenFolders: true - task: PublishBuildArtifacts@1 inputs: - pathtoPublish: '$(build.artifactstagingdirectory)/publish' - artifactName: vs2017 + pathtoPublish: '$(Build.StagingDirectory)' + artifactName: 'Binaries' diff --git a/.ci/run-openvpn-tests.sh b/.ci/run-openvpn-tests.sh index 334841cf..8826c975 100755 --- a/.ci/run-openvpn-tests.sh +++ b/.ci/run-openvpn-tests.sh @@ -2,7 +2,10 @@ set -eux -cd +BUILD_BINARIESDIRECTORY="${BUILD_BINARIESDIRECTORY:-build}" + +cd $BUILD_BINARIESDIRECTORY + git clone https://github.com/openvpn/openvpn cd openvpn autoreconf -iv diff --git a/.ci/start-se-openvpn.sh b/.ci/start-se-openvpn.sh index a000a3d5..d385164b 100755 --- a/.ci/start-se-openvpn.sh +++ b/.ci/start-se-openvpn.sh @@ -2,13 +2,17 @@ set -eux -build/vpnserver start +BUILD_BINARIESDIRECTORY="${BUILD_BINARIESDIRECTORY:-build}" -build/vpncmd 127.0.0.1:443 /SERVER /HUB:DEFAULT /CMD:SecureNatEnable -build/vpncmd 127.0.0.1:443 /SERVER /CMD:"OpenVpnEnable yes" -build/vpncmd 127.0.0.1:443 /SERVER /CMD:"PortsUDPSet 1194" -build/vpncmd 127.0.0.1:443 /SERVER /HUB:DEFAULT /CMD:"UserCreate test /GROUP:none /REALNAME:none /NOTE:none" -build/vpncmd 127.0.0.1:443 /SERVER /HUB:DEFAULT /CMD:"UserPasswordSet test /PASSWORD:test" -build/vpncmd 127.0.0.1:443 /SERVER /CMD:"OpenVpnMakeConfig ~/my_openvpn_config.zip" +cd $BUILD_BINARIESDIRECTORY -unzip -d /tmp ~/my_openvpn_config.zip +./vpnserver start + +./vpncmd 127.0.0.1:443 /SERVER /HUB:DEFAULT /CMD:SecureNatEnable +./vpncmd 127.0.0.1:443 /SERVER /CMD:"OpenVpnEnable yes" +./vpncmd 127.0.0.1:443 /SERVER /CMD:"PortsUDPSet 1194" +./vpncmd 127.0.0.1:443 /SERVER /HUB:DEFAULT /CMD:"UserCreate test /GROUP:none /REALNAME:none /NOTE:none" +./vpncmd 127.0.0.1:443 /SERVER /HUB:DEFAULT /CMD:"UserPasswordSet test /PASSWORD:test" +./vpncmd 127.0.0.1:443 /SERVER /CMD:"OpenVpnMakeConfig my_openvpn_config.zip" + +unzip -d /tmp my_openvpn_config.zip