name: Build Win32 3proxy with MSVC on: workflow_dispatch: jobs: ci: name: "${{ matrix.target }}" strategy: matrix: target: - windows-2022 runs-on: ${{ matrix.target }} steps: - uses: actions/checkout@v5 # - name: configure # run: ./configure - name: set date run: | $NOW = Get-Date -Format "yyMMddHHmmss" $RELEASE = Get-Content -Path "RELEASE" -Raw echo "RELEASE=$RELEASE" | Out-File -FilePath $env:GITHUB_ENV -Encoding utf8 -Append echo "VERSION=/D `"VERSION=\`"3proxy-$RELEASE\`"`"" | Out-File -FilePath $env:GITHUB_ENV -Encoding utf8 -Append echo "BUILDDATE=/D `"BUILDDATE=\`"$NOW\`"`"" | Out-File -FilePath $env:GITHUB_ENV -Encoding utf8 -Append - name: install packages run: vcpkg install pcre2:x86-windows-static openssl:x86-windows-static - name: Add msbuild to PATH uses: microsoft/setup-msbuild@v3 - name: make Windows MSVC if: ${{ startsWith(matrix.target, 'windows') }} shell: cmd run: | call "C:\Program Files\Microsoft Visual Studio\2022\Enterprise\VC\Auxiliary\Build\vcvars32.bat" D: cd "D:/a/3proxy/3proxy" set "LIB=%LIB%;c:/vcpkg/installed/x86-windows-static/lib" set "INCLUDE=%INCLUDE%;c:/vcpkg/installed/x86-windows-static/include" echo "volatile char VerSion[]=^"3APA3A-3proxy-Internal-Build: 3proxy-%RELEASE%-%NOW%\r\nCode certificate: https://3proxy.org/3proxy.cer\r\n^";" >>src/3proxy.c nmake /F Makefile.msvc - name: Decode Certificate shell: pwsh run: | $pfx_cert_byte = [System.Convert]::FromBase64String("${{ secrets.WINDOWS_CERTIFICATE }}") [System.IO.File]::WriteAllBytes("${{ github.workspace }}\cert.pfx", $pfx_cert_byte) - name: Sign shell: pwsh run: | $signtool = (Get-ChildItem "C:\Program Files (x86)\Windows Kits\10\bin\*\x64\signtool.exe" | Sort-Object { [version]$_.Directory.Parent.Name } -Descending | Select-Object -First 1).FullName & $signtool sign /f "${{ github.workspace }}\cert.pfx" /p "${{ secrets.WINDOWS_CERTIFICATE_PASSWORD }}" /tr http://timestamp.digicert.com /td sha256 /fd sha256 "bin\3proxy.exe" & $signtool sign /f "${{ github.workspace }}\cert.pfx" /p "${{ secrets.WINDOWS_CERTIFICATE_PASSWORD }}" /tr http://timestamp.digicert.com /td sha256 /fd sha256 "bin\3proxy_crypt.exe" - name: make dist dir shell: cmd run: | mkdir dist mkdir dist\3proxy mkdir dist\3proxy\bin mkdir dist\3proxy\cfg mkdir dist\3proxy\cfg\sql mkdir dist\3proxy\doc mkdir dist\3proxy\doc\ru mkdir dist\3proxy\doc\html mkdir dist\3proxy\doc\html\plugins mkdir dist\3proxy\doc\html\man5 mkdir dist\3proxy\doc\html\man8 mkdir dist\3proxy\doc\html\devel copy bin\3proxy.exe dist\3proxy\bin\ copy bin\*.dll dist\3proxy\bin\ copy bin\3proxy_crypt.exe dist\3proxy\bin\ copy cfg\*.* dist\3proxy\cfg\ copy cfg\sql\*.* dist\3proxy\cfg\sql\ copy doc\ru\*.* dist\3proxy\doc\ru\ copy doc\html\*.* dist\3proxy\doc\html\ copy doc\html\plugins\*.* dist\3proxy\doc\html\plugins\ copy doc\html\man8\*.* dist\3proxy\doc\html\man8\ copy doc\html\man5\*.* dist\3proxy\doc\html\man5\ copy doc\html\devel\*.* dist\3proxy\doc\html\devel\ copy copying dist\3proxy\ copy authors dist\3proxy\ copy README.md dist\3proxy\ copy rus.3ps dist\3proxy\ - name: Get artifact uses: actions/upload-artifact@v6 with: name: "3proxy-${{ env.RELEASE }}" path: dist/