| def configs = [ |
| [ |
| label: "windows2012-openssl", arch: "x86", "vsversion": 2010 |
| ], |
| [ |
| label: "windows2012-openssl", arch: "x86_64", "vsversion": 2010 |
| ], |
| [ |
| label: "windows2012-openssl", arch: "x86", "vsversion": 2015 |
| ], |
| [ |
| label: "windows2012-openssl", arch: "x86_64", "vsversion": 2015 |
| ], |
| ] |
| |
| script = """ |
| wmic qfe |
| powershell "[Net.ServicePointManager]::SecurityProtocol = 'tls12'; wget 'https://www.openssl.org/source/openssl-1.1.1-latest.tar.gz' -OutFile 'openssl-latest.tar.gz'" |
| REM Next decompress the tarball using winrar. INUL disables error msgs, which are GUI prompts and therefore undesirable |
| "C:\\Program Files\\WinRAR\\WinRAR.exe" -INUL x openssl-latest.tar.gz |
| cd openssl-1* |
| REM The next line determines the name of the current directory. Batch is great. |
| FOR %%I IN (.) DO @SET CURRENTDIR=%%~nI%%~xI |
| if "%BUILDARCH%" == "x86" ( |
| @SET BUILDARCHFLAG=x86 |
| @SET OPENSSLARCHFLAG="VC-WIN32" |
| ) else ( |
| @SET BUILDARCHFLAG=amd64 |
| @SET OPENSSLARCHFLAG="VC-WIN64A" |
| ) |
| if "%BUILDVSVERSION%" == "2010" ( |
| call "C:\\Program Files (x86)\\Microsoft Visual Studio 10.0\\VC\\vcvarsall.bat" %BUILDARCHFLAG% |
| echo "Building with VS 2010" |
| ) else ( |
| call "C:\\Program Files (x86)\\Microsoft Visual Studio 14.0\\VC\\vcvarsall.bat" %BUILDARCHFLAG% |
| echo "Building with VS 2015" |
| ) |
| SET |
| perl Configure no-comp no-shared %OPENSSLARCHFLAG% |
| nmake |
| nmake test |
| |
| if "%BUILDARCH%" == "x86" ( |
| @SET FINALDIR="openssl-win32-%BUILDVSVERSION%" |
| ) else ( |
| @SET FINALDIR="openssl-win64-%BUILDVSVERSION%" |
| ) |
| mkdir %FINALDIR% |
| mkdir %FINALDIR%\\lib |
| move include %FINALDIR%\\include |
| move libcrypto.lib %FINALDIR%\\lib\\ |
| move libssl.lib %FINALDIR%\\lib\\ |
| "C:\\Program Files\\WinRAR\\WinRAR.exe" -INUL a %CURRENTDIR%-%BUILDVSVERSION%-%BUILDARCH%.zip %FINALDIR%\\include %FINALDIR%\\lib\\libcrypto.lib %FINALDIR%\\lib\\libssl.lib |
| """ |
| |
| def build(label, vsversion, arch) { |
| node(label) { |
| try { |
| timeout(time: 30, unit: 'MINUTES') { |
| stage("Compile") { |
| withEnv(["BUILDARCH=$arch", "BUILDVSVERSION=$vsversion"]) { |
| bat script |
| } |
| } |
| stage("Archive") { |
| archiveArtifacts artifacts: "**/openssl-*.zip" |
| } |
| } |
| } finally { |
| deleteDir() |
| } |
| } |
| } |
| |
| def builders = [:] |
| |
| for (config in configs) { |
| def vsversion = config["vsversion"] |
| def arch = config["arch"] |
| def label = config["label"] |
| builders["${vsversion}-${arch}"] = { |
| build(label, vsversion, arch) |
| } |
| } |
| |
| parallel builders |