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" +