From 9982e128effee1f4b7d5b1f634b2cc9d70010a64 Mon Sep 17 00:00:00 2001 From: Ilia Shipitsin Date: Tue, 16 Apr 2024 22:26:00 +0200 Subject: [PATCH 1/2] CI: simplify GHA windows workflow --- .ci/azure-pipelines/windows_build.bat | 33 --------------------------- .github/workflows/windows.yml | 17 +++++++++++++- 2 files changed, 16 insertions(+), 34 deletions(-) delete mode 100644 .ci/azure-pipelines/windows_build.bat diff --git a/.ci/azure-pipelines/windows_build.bat b/.ci/azure-pipelines/windows_build.bat deleted file mode 100644 index b8491266..00000000 --- a/.ci/azure-pipelines/windows_build.bat +++ /dev/null @@ -1,33 +0,0 @@ -@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 -) - - -if "%BUILD_BINARIESDIRECTORY%"=="" (set BUILD_BINARIESDIRECTORY=build) -if "%BUILD_SOURCESDIRECTORY%"=="" (set BUILD_SOURCESDIRECTORY=%cd%) - -if not exist %BUILD_BINARIESDIRECTORY% mkdir %BUILD_BINARIESDIRECTORY% - -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 . - -if "%BUILD_STAGINGDIRECTORY%"=="" (set BUILD_STAGINGDIRECTORY=%cd%) -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" diff --git a/.github/workflows/windows.yml b/.github/workflows/windows.yml index 66a32ccf..d5cccba3 100644 --- a/.github/workflows/windows.yml +++ b/.github/workflows/windows.yml @@ -22,13 +22,28 @@ jobs: with: path: 'build/vcpkg_installed/' key: vcpkg-${{ matrix.platform.VCPKG_TRIPLET }} + - name: Set version variables + run: | + $v = python version.py + echo "VERSION=$v" | Out-File -FilePath $Env:GITHUB_ENV -Encoding utf8 -Append + shell: pwsh - name: Build env: ARCHITECTURE: ${{ matrix.platform.ARCHITECTURE }} COMPILER_PATH: ${{ matrix.platform.COMPILER_PATH }} VCPKG_TRIPLET: ${{ matrix.platform.VCPKG_TRIPLET }} VCVARS_PATH: ${{ matrix.platform.VCVARS_PATH }} - run: .ci/azure-pipelines/windows_build.bat + run: | + set BUILD_NUMBER=0 + mkdir build + cd build + 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% .. + cmake --build . + mkdir installers + vpnsetup /SFXMODE:vpnclient /SFXOUT:"installers\softether-vpnclient-%VERSION%.%BUILD_NUMBER%.%ARCHITECTURE%.exe" + vpnsetup /SFXMODE:vpnserver_vpnbridge /SFXOUT:"installers\softether-vpnserver_vpnbridge-%VERSION%.%BUILD_NUMBER%.%ARCHITECTURE%.exe" + shell: cmd - name: Test shell: powershell run: | From c838ba0009a2419e81f75f9f3ce2ebd6f0bfe57e Mon Sep 17 00:00:00 2001 From: Ilia Shipitsin Date: Tue, 16 Apr 2024 22:26:51 +0200 Subject: [PATCH 2/2] CI: create windows installer on release --- .github/workflows/windows_release.yml | 94 +++++++++++++++++++++++++++ 1 file changed, 94 insertions(+) create mode 100644 .github/workflows/windows_release.yml diff --git a/.github/workflows/windows_release.yml b/.github/workflows/windows_release.yml new file mode 100644 index 00000000..d9198934 --- /dev/null +++ b/.github/workflows/windows_release.yml @@ -0,0 +1,94 @@ +name: "Release" + +on: + push: + tags: + - '*' + +concurrency: + group: "${{ github.workflow }}-${{ github.ref }}" + cancel-in-progress: true + +permissions: + contents: write + +jobs: + release: + runs-on: windows-latest + outputs: + upload_url: "${{ steps.create_release.outputs.upload_url }}" + steps: + - name: "Checkout repository" + uses: actions/checkout@v4 + + - name: "Create GitHub release" + id: create_release + uses: softprops/action-gh-release@v1 + build-windows: + name: ${{ matrix.platform.ARCHITECTURE }} + runs-on: windows-latest + needs: ["release"] + strategy: + matrix: + platform: [ + { ARCHITECTURE: x86, COMPILER_PATH: "C:/Program Files/Microsoft Visual Studio/2022/Enterprise/VC/Tools/Llvm/bin/clang-cl.exe", VCPKG_TRIPLET: "x86-windows-static", VCVARS_PATH: "C:/Program Files/Microsoft Visual Studio/2022/Enterprise/VC/Auxiliary/Build/vcvars32.bat"}, + { ARCHITECTURE: x64, COMPILER_PATH: "C:/Program Files/Microsoft Visual Studio/2022/Enterprise/VC/Tools/Llvm/x64/bin/clang-cl.exe", VCPKG_TRIPLET: "x64-windows-static", VCVARS_PATH: "C:/Program Files/Microsoft Visual Studio/2022/Enterprise/VC/Auxiliary/Build/vcvars64.bat"} + ] + steps: + - name: "Checkout repository" + uses: actions/checkout@v4 + with: + submodules: true + - name: Cache vcpkg + uses: actions/cache@v4 + with: + path: 'build/vcpkg_installed/' + key: vcpkg-release-${{ matrix.platform.VCPKG_TRIPLET }} + - name: Set version variables + run: | + $b=(Get-Content CMakeSettings.json | Out-String | ConvertFrom-Json).environments.BuildNumber + echo "BUILD_NUMBER=$b" | Out-File -FilePath $Env:GITHUB_ENV -Encoding utf8 -Append + $v = python version.py + echo "VERSION=$v" | Out-File -FilePath $Env:GITHUB_ENV -Encoding utf8 -Append + shell: pwsh + - name: Build + env: + ARCHITECTURE: ${{ matrix.platform.ARCHITECTURE }} + COMPILER_PATH: ${{ matrix.platform.COMPILER_PATH }} + VCPKG_TRIPLET: ${{ matrix.platform.VCPKG_TRIPLET }} + VCVARS_PATH: ${{ matrix.platform.VCVARS_PATH }} + run: | + mkdir build + cd build + 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% .. + cmake --build . + mkdir installers + vpnsetup /SFXMODE:vpnclient /SFXOUT:"installers\softether-vpnclient-%VERSION%.%BUILD_NUMBER%.%ARCHITECTURE%.exe" + vpnsetup /SFXMODE:vpnserver_vpnbridge /SFXOUT:"installers\softether-vpnserver_vpnbridge-%VERSION%.%BUILD_NUMBER%.%ARCHITECTURE%.exe" + shell: cmd + + - name: dir + run: | + Get-ChildItem -Recurse build/installers + shell: pwsh + + - name: "Upload softether-vpnclient" + uses: actions/upload-release-asset@v1 + env: + GITHUB_TOKEN: "${{ github.token }}" + with: + upload_url: "${{ needs.release.outputs.upload_url }}" + asset_path: "build/installers/softether-vpnclient-${{ env.VERSION }}.${{ env.BUILD_NUMBER }}.${{ matrix.platform.ARCHITECTURE }}.exe" + asset_name: "softether-vpnclient-${{ env.VERSION }}.${{ env.BUILD_NUMBER }}.${{ matrix.platform.ARCHITECTURE }}.exe" + asset_content_type: "application/octet-stream" + - name: "Upload softether-vpnserver_vpnbridge" + uses: actions/upload-release-asset@v1 + env: + GITHUB_TOKEN: "${{ github.token }}" + with: + upload_url: "${{ needs.release.outputs.upload_url }}" + asset_path: "build/installers/softether-vpnserver_vpnbridge-${{ env.VERSION }}.${{ env.BUILD_NUMBER }}.${{ matrix.platform.ARCHITECTURE }}.exe" + asset_name: "softether-vpnserver_vpnbridge-${{ env.VERSION }}.${{ env.BUILD_NUMBER }}.${{ matrix.platform.ARCHITECTURE }}.exe" + asset_content_type: "application/octet-stream" +