1
+ name : " Release"
2
+
3
+ on :
4
+ push :
5
+ tags :
6
+
7
+ concurrency :
8
+ group : " ${{ github.workflow }}-${{ github.ref }}"
9
+ cancel-in-progress : true
10
+
11
+ permissions :
12
+ contents : write
13
+
14
+ jobs :
15
+ release :
16
+ runs-on : windows-latest
17
+ outputs :
18
+ upload_url : " ${{ steps.create_release.outputs.upload_url }}"
19
+ steps :
20
+ - name : " Checkout repository"
21
+ uses : actions/checkout@v4
22
+
23
+ - name : " Create GitHub release"
24
+ id : create_release
25
+ uses : softprops/action-gh-release@v1
26
+ build-windows :
27
+ name : ${{ matrix.platform.ARCHITECTURE }}
28
+ runs-on : windows-latest
29
+ needs : ["release"]
30
+ strategy :
31
+ matrix :
32
+ platform : [
33
+ { 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"},
34
+ { 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"}
35
+ ]
36
+ steps :
37
+ - name : " Checkout repository"
38
+ uses : actions/checkout@v4
39
+ with :
40
+ submodules : true
41
+ - name : Cache vcpkg
42
+ uses : actions/cache@v4
43
+ with :
44
+ path : ' build/vcpkg_installed/'
45
+ key : vcpkg-release-${{ matrix.platform.VCPKG_TRIPLET }}
46
+ - name : BuildNumber
47
+ run : |
48
+ $b=(Get-Content CMakeSettings.json | Out-String | ConvertFrom-Json).environments.BuildNumber
49
+ echo "BUILD_NUMBER=$b" | Out-File -FilePath $Env:GITHUB_ENV -Encoding utf8 -Append
50
+ shell : pwsh
51
+ - name : Build
52
+ env :
53
+ ARCHITECTURE : ${{ matrix.platform.ARCHITECTURE }}
54
+ COMPILER_PATH : ${{ matrix.platform.COMPILER_PATH }}
55
+ VCPKG_TRIPLET : ${{ matrix.platform.VCPKG_TRIPLET }}
56
+ VCVARS_PATH : ${{ matrix.platform.VCVARS_PATH }}
57
+ run : |
58
+ set BUILD_BINARIESDIRECTORY=build
59
+ set BUILD_SOURCESDIRECTORY=%cd%
60
+ if not exist %BUILD_BINARIESDIRECTORY% mkdir %BUILD_BINARIESDIRECTORY%
61
+ cd %BUILD_BINARIESDIRECTORY%
62
+ call "%VCVARS_PATH%"
63
+ 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%"
64
+ cmake --build .
65
+ set BUILD_STAGINGDIRECTORY=%cd%
66
+ mkdir "%BUILD_STAGINGDIRECTORY%\installers"
67
+ vpnsetup /SFXMODE:vpnclient /SFXOUT:"%BUILD_STAGINGDIRECTORY%\installers\softether-vpnclient-%VERSION%.%BUILD_NUMBER%.%ARCHITECTURE%.exe"
68
+ vpnsetup /SFXMODE:vpnserver_vpnbridge /SFXOUT:"%BUILD_STAGINGDIRECTORY%\installers\softether-vpnserver_vpnbridge-%VERSION%.%BUILD_NUMBER%.%ARCHITECTURE%.exe"
69
+ shell : cmd
70
+ - name : " Upload release artifact"
71
+ uses : actions/upload-release-asset@v1
72
+ env :
73
+ GITHUB_TOKEN : " ${{ github.token }}"
74
+ with :
75
+ upload_url : " ${{ needs.release.outputs.upload_url }}"
76
+ asset_path : " build/installers"
77
+ asset_name : " Installers-${{ matrix.platform.ARCHITECTURE }}.zip"
78
+ asset_content_type : " application/zip"
0 commit comments