@@ -3,6 +3,10 @@ name: Windows Build (MSVC)
33permissions :
44 contents : read
55
6+ env :
7+ OPENSSL_VERSION : 3.6.3
8+ OPENSSL_SHA512 : 120A2E9A3E8B961484CB94D52F85D48DC2C8AF777B5B3B9E26BF49B4408797281F7C0FB2D543FD7796B3C3232ADFAA0F675E7122C0E5C4225B3B02E767197AC6
9+
610on :
711 push :
812 branches : [master, devel]
@@ -34,20 +38,50 @@ jobs:
3438 id : cache-openssl
3539 uses : actions/cache@v4
3640 with :
37- path : |
38- C:\Program Files\OpenSSL
39- C:\Program Files\OpenSSL-Win64
40- key : ${{ runner.os }}-openssl-v1
41+ path : C:\Program Files\OpenSSL-Win64
42+ key : ${{ runner.os }}-openssl-${{ env.OPENSSL_VERSION }}-v1
4143
4244
4345 - name : Install full OpenSSL (developer)
4446 if : steps.cache-openssl.outputs.cache-hit != 'true'
4547 shell : powershell
4648 run : |
47- Write-Host "Installing latest full OpenSSL for development..."
48- choco upgrade openssl -y --no-progress
49- $ver = & openssl version
50- Write-Host "Installed OpenSSL version: $ver"
49+ $versionSlug = $env:OPENSSL_VERSION.Replace('.', '_')
50+ $installer = Join-Path $env:RUNNER_TEMP "Win64OpenSSL-$versionSlug.exe"
51+ $url = "https://slproweb.com/download/Win64OpenSSL-$versionSlug.exe"
52+
53+ Write-Host "Downloading OpenSSL $env:OPENSSL_VERSION for development..."
54+ curl.exe --fail --location --retry 3 --output $installer $url
55+ if ($LASTEXITCODE -ne 0) {
56+ throw "OpenSSL download failed with exit code $LASTEXITCODE"
57+ }
58+
59+ $actualHash = (Get-FileHash -Algorithm SHA512 $installer).Hash
60+ if ($actualHash -ne $env:OPENSSL_SHA512) {
61+ throw "OpenSSL installer checksum mismatch: $actualHash"
62+ }
63+
64+ $installArgs = '/VERYSILENT /SUPPRESSMSGBOXES /NORESTART /SP- /DIR="C:\Program Files\OpenSSL-Win64"'
65+ $process = Start-Process -FilePath $installer -ArgumentList $installArgs -Wait -PassThru
66+ if ($process.ExitCode -ne 0) {
67+ throw "OpenSSL installer failed with exit code $($process.ExitCode)"
68+ }
69+
70+
71+ - name : Verify OpenSSL major version
72+ shell : powershell
73+ run : |
74+ $openssl = "C:\Program Files\OpenSSL-Win64\bin\openssl.exe"
75+
76+ if (-not (Test-Path $openssl)) {
77+ throw "OpenSSL executable not found at $openssl"
78+ }
79+
80+ $version = & $openssl version
81+ Write-Host "Installed OpenSSL version: $version"
82+ if ($version -notmatch '^OpenSSL 3\.') {
83+ throw "Windows CI requires OpenSSL 3.x, found: $version"
84+ }
5185
5286
5387 - name : Setup Windows 10 SDK
@@ -59,18 +93,13 @@ jobs:
5993 - name : Configure OpenSSL environment
6094 shell : bash
6195 run : |
62- if [ -d "C:/Program Files/OpenSSL/lib/VC" ]; then
63- echo "OPENSSL_ROOT_DIR=C:/Program Files/OpenSSL" >> $GITHUB_ENV
64- echo "OPENSSL_INCLUDE_DIR=C:/Program Files/OpenSSL/include" >> $GITHUB_ENV
65- echo "OPENSSL_CRYPTO_LIBRARY=C:/Program Files/OpenSSL/lib/VC/libcrypto64MT.lib" >> $GITHUB_ENV
66- echo "OPENSSL_SSL_LIBRARY=C:/Program Files/OpenSSL/lib/VC/libssl64MT.lib" >> $GITHUB_ENV
67- elif [ -d "C:/Program Files/OpenSSL-Win64/lib/VC" ]; then
96+ if [ -d "C:/Program Files/OpenSSL-Win64/lib/VC" ]; then
6897 echo "OPENSSL_ROOT_DIR=C:/Program Files/OpenSSL-Win64" >> $GITHUB_ENV
6998 echo "OPENSSL_INCLUDE_DIR=C:/Program Files/OpenSSL-Win64/include" >> $GITHUB_ENV
7099 echo "OPENSSL_CRYPTO_LIBRARY=C:/Program Files/OpenSSL-Win64/lib/VC/libcrypto64MT.lib" >> $GITHUB_ENV
71100 echo "OPENSSL_SSL_LIBRARY=C:/Program Files/OpenSSL-Win64/lib/VC/libssl64MT.lib" >> $GITHUB_ENV
72101 else
73- echo "::error::OpenSSL not found in either expected location "
102+ echo "::error::OpenSSL developer libraries not found "
74103 exit 1
75104 fi
76105
0 commit comments