diff --git a/.ci/azure-pipelines/windows_build.bat b/.ci/azure-pipelines/windows_build.bat index 6f533c72..b8491266 100644 --- a/.ci/azure-pipelines/windows_build.bat +++ b/.ci/azure-pipelines/windows_build.bat @@ -14,6 +14,12 @@ if %SE_BUILD_NUMBER_TOKEN_LENGTH% equ 64 ( 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%" @@ -21,6 +27,7 @@ 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 new file mode 100644 index 00000000..66a32ccf --- /dev/null +++ b/.github/workflows/windows.yml @@ -0,0 +1,48 @@ +on: [push, pull_request] + +permissions: + contents: read + +jobs: + build_and_test: + 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"} + ] + runs-on: windows-latest + name: ${{ matrix.platform.ARCHITECTURE }} + steps: + - uses: actions/checkout@v4 + with: + submodules: true + - name: Cache vcpkg + uses: actions/cache@v4 + with: + path: 'build/vcpkg_installed/' + key: vcpkg-${{ matrix.platform.VCPKG_TRIPLET }} + - 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 + - name: Test + shell: powershell + run: | + . .ci/appveyor-vpntest.ps1 + - uses: actions/upload-artifact@v4 + with: + if-no-files-found: error + name: Binaries-${{ matrix.platform.ARCHITECTURE }} + path: | + build/*.exe + build/*.pdb + build/*.se2 + - uses: actions/upload-artifact@v4 + with: + if-no-files-found: error + name: Installers-${{ matrix.platform.ARCHITECTURE }} + path: build/installers \ No newline at end of file