diff --git a/.ci/azure-pipelines/linux.yml b/.ci/azure-pipelines/linux.yml index f9b37ba6..d8f1512c 100644 --- a/.ci/azure-pipelines/linux.yml +++ b/.ci/azure-pipelines/linux.yml @@ -4,12 +4,11 @@ jobs: pool: vmImage: ubuntu-16.04 steps: - - script: | - 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 + - script: sudo apt-get -y install cmake gcc g++ ninja-build libncurses5-dev libreadline-dev libssl-dev make zlib1g-dev + displayName: 'Prepare environment' + - script: "$(Build.SourcesDirectory)/.ci/azure-pipelines/linux_build.sh" + env: + SE_BUILD_NUMBER_TOKEN: $(BUILD_NUMBER_TOKEN) displayName: 'Build' - script: | .ci/appveyor-deb-install-test.sh diff --git a/.ci/azure-pipelines/linux_build.sh b/.ci/azure-pipelines/linux_build.sh new file mode 100755 index 00000000..87537491 --- /dev/null +++ b/.ci/azure-pipelines/linux_build.sh @@ -0,0 +1,15 @@ +#!/bin/bash + +if [[ "${#SE_BUILD_NUMBER_TOKEN}" -eq 64 ]]; then + VERSION=$(python3 "version.py") + BUILD_NUMBER=$(curl "https://softether.network/get-build-number?commit=${BUILD_SOURCEVERSION}&version=${VERSION}&token=${SE_BUILD_NUMBER_TOKEN}") +else + BUILD_NUMBER=0 +fi + +cd ${BUILD_BINARIESDIRECTORY} + +cmake -G "Ninja" -DCMAKE_BUILD_TYPE=RelWithDebInfo -DBUILD_NUMBER=${BUILD_NUMBER} ${BUILD_SOURCESDIRECTORY} +cmake --build . + +cpack -C Release -G DEB diff --git a/.ci/azure-pipelines/macos.yml b/.ci/azure-pipelines/macos.yml index ead77931..acbd76e1 100644 --- a/.ci/azure-pipelines/macos.yml +++ b/.ci/azure-pipelines/macos.yml @@ -1,13 +1,11 @@ jobs: - job: macOS - displayName: 'macOS' pool: vmImage: macOS-latest steps: - script: brew install cmake ninja ncurses readline openssl zlib - displayName: 'Install packages' - - script: | - cd $BUILD_BINARIESDIRECTORY - cmake -G "Ninja" -DCMAKE_BUILD_TYPE=RelWithDebInfo -DOPENSSL_ROOT_DIR=/usr/local/opt/openssl $BUILD_SOURCESDIRECTORY - cmake --build . + displayName: 'Prepare environment' + - script: '$(Build.SourcesDirectory)/.ci/azure-pipelines/macos_build.sh' + env: + SE_BUILD_NUMBER_TOKEN: $(BUILD_NUMBER_TOKEN) displayName: 'Build' diff --git a/.ci/azure-pipelines/macos_build.sh b/.ci/azure-pipelines/macos_build.sh new file mode 100755 index 00000000..5befaebc --- /dev/null +++ b/.ci/azure-pipelines/macos_build.sh @@ -0,0 +1,13 @@ +#!/bin/bash + +if [[ "${#SE_BUILD_NUMBER_TOKEN}" -eq 64 ]]; then + VERSION=$(python "version.py") + BUILD_NUMBER=$(curl "https://softether.network/get-build-number?commit=${BUILD_SOURCEVERSION}&version=${VERSION}&token=${SE_BUILD_NUMBER_TOKEN}") +else + BUILD_NUMBER=0 +fi + +cd ${BUILD_BINARIESDIRECTORY} + +cmake -G "Ninja" -DCMAKE_BUILD_TYPE=RelWithDebInfo -DBUILD_NUMBER=${BUILD_NUMBER} -DOPENSSL_ROOT_DIR="/usr/local/opt/openssl" ${BUILD_SOURCESDIRECTORY} +cmake --build . diff --git a/.ci/azure-pipelines/windows-steps.yml b/.ci/azure-pipelines/windows-steps.yml index 30521896..9d053434 100644 --- a/.ci/azure-pipelines/windows-steps.yml +++ b/.ci/azure-pipelines/windows-steps.yml @@ -18,18 +18,14 @@ steps: vcpkg install openssl zlib --triplet ${{parameters.vcpkgTriplet}} workingDirectory: C:/vcpkg displayName: 'Prepare environment' -- script: | - call "${{parameters.vcvarsPath}}" - cmake -G "Ninja" -DCMAKE_TOOLCHAIN_FILE=C:/vcpkg/scripts/buildsystems/vcpkg.cmake -DVCPKG_TARGET_TRIPLET=${{parameters.vcpkgTriplet}} -DCMAKE_BUILD_TYPE=RelWithDebInfo -DCMAKE_C_COMPILER="${{parameters.compilerPath}}" -DCMAKE_CXX_COMPILER="${{parameters.compilerPath}}" $(Build.SourcesDirectory) - cmake --build . - workingDirectory: $(Build.BinariesDirectory) +- script: '$(Build.SourcesDirectory)/.ci/azure-pipelines/windows_build.bat' + env: + ARCHITECTURE: ${{parameters.architecture}} + COMPILER_PATH: ${{parameters.compilerPath}} + VCPKG_TRIPLET: ${{parameters.vcpkgTriplet}} + VCVARS_PATH: ${{parameters.vcvarsPath}} + SE_BUILD_NUMBER_TOKEN: $(BUILD_NUMBER_TOKEN) displayName: 'Build' -- script: | - mkdir "$(Build.StagingDirectory)/installers" - vpnsetup /SFXMODE:vpnclient /SFXOUT:"$(Build.StagingDirectory)/installers/softether-vpnclient-$(Build.SourceVersion)-${{parameters.architecture}}.exe" - vpnsetup /SFXMODE:vpnserver_vpnbridge /SFXOUT:"$(Build.StagingDirectory)/installers/softether-vpnserver_vpnbridge-$(Build.SourceVersion)-${{parameters.architecture}}.exe" - workingDirectory: $(Build.BinariesDirectory) - displayName: 'Build installers' - powershell: | . .ci/appveyor-vpntest.ps1 displayName: 'Test' diff --git a/.ci/azure-pipelines/windows_build.bat b/.ci/azure-pipelines/windows_build.bat new file mode 100644 index 00000000..6f533c72 --- /dev/null +++ b/.ci/azure-pipelines/windows_build.bat @@ -0,0 +1,26 @@ +@echo on + +:: The method we use to store a command's output into a variable: +:: https://stackoverflow.com/a/6362922 +for /f "tokens=* USEBACKQ" %%g in (`python "version.py"`) do (set "VERSION=%%g") + +:: https://stackoverflow.com/a/8566001 +echo %SE_BUILD_NUMBER_TOKEN%> "%tmp%\length.txt" +for %%? in ("%tmp%\length.txt") do ( set /A SE_BUILD_NUMBER_TOKEN_LENGTH=%%~z? - 2 ) + +if %SE_BUILD_NUMBER_TOKEN_LENGTH% equ 64 ( + for /f "tokens=* USEBACKQ" %%g in (`curl "https://softether.network/get-build-number?commit=%BUILD_SOURCEVERSION%&version=%VERSION%&token=%SE_BUILD_NUMBER_TOKEN%"`) do (set "BUILD_NUMBER=%%g") +) else ( + set BUILD_NUMBER=0 +) + +cd %BUILD_BINARIESDIRECTORY% + +call "%VCVARS_PATH%" + +cmake -G "Ninja" -DCMAKE_TOOLCHAIN_FILE="C:\vcpkg\scripts\buildsystems\vcpkg.cmake" -DVCPKG_TARGET_TRIPLET=%VCPKG_TRIPLET% -DCMAKE_BUILD_TYPE=RelWithDebInfo -DCMAKE_C_COMPILER="%COMPILER_PATH%" -DCMAKE_CXX_COMPILER="%COMPILER_PATH%" -DBUILD_NUMBER=%BUILD_NUMBER% "%BUILD_SOURCESDIRECTORY%" +cmake --build . + +mkdir "%BUILD_STAGINGDIRECTORY%\installers" +vpnsetup /SFXMODE:vpnclient /SFXOUT:"%BUILD_STAGINGDIRECTORY%\installers\softether-vpnclient-%VERSION%.%BUILD_NUMBER%.%ARCHITECTURE%.exe" +vpnsetup /SFXMODE:vpnserver_vpnbridge /SFXOUT:"%BUILD_STAGINGDIRECTORY%\installers\softether-vpnserver_vpnbridge-%VERSION%.%BUILD_NUMBER%.%ARCHITECTURE%.exe"