Combining time validation with comparison return values considered harmful #36208
Workflow file for this run
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
# Copyright 2021-2025 The OpenSSL Project Authors. All Rights Reserved. | |
# | |
# Licensed under the Apache License 2.0 (the "License"). You may not use | |
# this file except in compliance with the License. You can obtain a copy | |
# in the file LICENSE in the source distribution or at | |
# https://www.openssl.org/source/license.html | |
name: Windows GitHub CI | |
on: [pull_request, push] | |
permissions: | |
contents: read | |
jobs: | |
shared: | |
# Run a job for each of the specified target architectures: | |
strategy: | |
matrix: | |
platform: | |
- arch: amd64 | |
os: windows-2022 | |
config: enable-lms enable-fips | |
vcvars: C:\Program Files\Microsoft Visual Studio\2022\Enterprise\VC\Auxiliary\Build\vcvars64.bat | |
- arch: amd64 | |
os: windows-2025 | |
config: enable-lms enable-fips no-thread-pool no-quic | |
vcvars: C:\Program Files\Microsoft Visual Studio\2022\Enterprise\VC\Auxiliary\Build\vcvars64.bat | |
- arch: x86 | |
os: windows-2022 | |
config: --strict-warnings no-fips enable-lms | |
vcvars: C:\Program Files\Microsoft Visual Studio\2022\Enterprise\VC\Auxiliary\Build\vcvars32.bat | |
runs-on: ${{ matrix.platform.os }} | |
steps: | |
- uses: actions/checkout@v4 | |
- name: checkout fuzz/corpora submodule | |
run: git submodule update --init --depth 1 fuzz/corpora | |
- name: install nasm | |
run: | | |
choco install nasm ${{ matrix.platform.arch == 'x86' && '--x86' || '' }} | |
"C:\Program Files${{ matrix.platform.arch == 'x86' && ' (x86)' || '' }}\NASM" | Out-File -FilePath "$env:GITHUB_PATH" -Append | |
- name: prepare the build directory | |
run: mkdir _build | |
- name: config | |
working-directory: _build | |
shell: cmd | |
run: | | |
call "${{ matrix.platform.vcvars }}" | |
perl ..\Configure --banner=Configured --strict-warnings no-makedepend -DOSSL_WINCTX=openssl ${{ matrix.platform.config }} | |
perl configdata.pm --dump | |
- name: build | |
working-directory: _build | |
shell: cmd | |
run: | | |
call "${{ matrix.platform.vcvars }}" | |
nmake /S | |
- name: download coreinfo | |
run: | | |
mkdir _build\coreinfo | |
Invoke-WebRequest -Uri "https://download.sysinternals.com/files/Coreinfo.zip" -outfile "_build\coreinfo\Coreinfo.zip" | |
- name: Gather openssl version info | |
working-directory: _build | |
run: | | |
apps/openssl.exe version -v | |
apps/openssl.exe version -v | %{($_ -split '\s+')[1]} | |
apps/openssl.exe version -v | %{($_ -split '\s+')[1] -replace '([0-9]+\.[0-9]+)(\..*)','$1'} | |
echo "OSSL_VERSION=$(apps/openssl.exe version -v | %{($_ -split '\s+')[1] -replace '([0-9]+\.[0-9]+)(\..*)','$1'})" | Out-File -FilePath $Env:GITHUB_ENV -Encoding utf8 -Append | |
- name: Set registry keys | |
working-directory: _build | |
run: | | |
echo ${Env:OSSL_VERSION} | |
reg.exe add HKLM\SOFTWARE\OpenSSL-${Env:OSSL_VERSION}-openssl /v OPENSSLDIR /t REG_EXPAND_SZ /d TESTOPENSSLDIR /reg:32 | |
reg.exe add HKLM\SOFTWARE\OpenSSL-${Env:OSSL_VERSION}-openssl /v ENGINESDIR /t REG_EXPAND_SZ /d TESTOPENSSLDIR /reg:32 | |
reg.exe add HKLM\SOFTWARE\OpenSSL-${Env:OSSL_VERSION}-openssl /v MODULESDIR /t REG_EXPAND_SZ /d TESTOPENSSLDIR /reg:32 | |
reg.exe query HKLM\SOFTWARE\OpenSSL-${Env:OSSL_VERSION}-openssl /v OPENSSLDIR /reg:32 | |
- name: get cpu info | |
working-directory: _build | |
continue-on-error: true | |
run: | | |
7z.exe x coreinfo/Coreinfo.zip | |
./Coreinfo64.exe -accepteula -f | |
./apps/openssl.exe version -c | |
- name: Check platform symbol usage | |
working-directory: _build | |
run: perl ../util/checkplatformsyms.pl ../util/platform_symbols/windows-symbols.txt libcrypto-3-x64.dll ./libssl-3-x64.dll | |
- name: test | |
working-directory: _build | |
shell: cmd | |
run: | | |
call "${{ matrix.platform.vcvars }}" | |
nmake test VERBOSE_FAILURE=yes TESTS=-test_fuzz* HARNESS_JOBS=4 | |
- name: install | |
# Run on 64 bit only as 32 bit is slow enough already | |
if: ${{ matrix.platform.arch == 'amd64' }} | |
working-directory: _build | |
shell: cmd | |
run: | | |
call "${{ matrix.platform.vcvars }}" | |
mkdir _dest | |
nmake install DESTDIR=_dest | |
plain: | |
runs-on: windows-2022 | |
steps: | |
- uses: actions/checkout@v4 | |
- name: checkout fuzz/corpora submodule | |
run: git submodule update --init --depth 1 fuzz/corpora | |
- name: prepare the build directory | |
run: mkdir _build | |
- name: config | |
working-directory: _build | |
shell: cmd | |
run: | | |
call "C:\Program Files\Microsoft Visual Studio\2022\Enterprise\VC\Auxiliary\Build\vcvars64.bat" | |
perl ..\Configure --banner=Configured --strict-warnings enable-demos no-makedepend no-shared no-fips enable-md2 enable-rc5 enable-ssl3 enable-ssl3-method enable-weak-ssl-ciphers enable-trace enable-crypto-mdebug -DOSSL_WINCTX=openssl VC-WIN64A-masm | |
perl configdata.pm --dump | |
- name: build | |
working-directory: _build | |
shell: cmd | |
run: | | |
call "C:\Program Files\Microsoft Visual Studio\2022\Enterprise\VC\Auxiliary\Build\vcvars64.bat" | |
nmake /S | |
- name: download coreinfo | |
run: | | |
mkdir _build\coreinfo | |
Invoke-WebRequest -Uri "https://download.sysinternals.com/files/Coreinfo.zip" -outfile "_build\coreinfo\Coreinfo.zip" | |
- name: get cpu info | |
working-directory: _build | |
continue-on-error: true | |
run: | | |
7z.exe x coreinfo/Coreinfo.zip | |
./Coreinfo64.exe -accepteula -f | |
./apps/openssl.exe version -c | |
- name: test | |
working-directory: _build | |
shell: cmd | |
run: | | |
call "C:\Program Files\Microsoft Visual Studio\2022\Enterprise\VC\Auxiliary\Build\vcvars64.bat" | |
nmake test VERBOSE_FAILURE=yes HARNESS_JOBS=4 | |
minimal: | |
runs-on: windows-2022 | |
steps: | |
- uses: actions/checkout@v4 | |
- name: checkout fuzz/corpora submodule | |
run: git submodule update --init --depth 1 fuzz/corpora | |
- name: prepare the build directory | |
run: mkdir _build | |
- name: config | |
working-directory: _build | |
shell: cmd | |
run: | | |
call "C:\Program Files\Microsoft Visual Studio\2022\Enterprise\VC\Auxiliary\Build\vcvars64.bat" | |
perl ..\Configure --banner=Configured --strict-warnings enable-demos no-makedepend no-bulk no-deprecated no-fips no-asm no-threads -DOPENSSL_SMALL_FOOTPRINT -DOSSL_WINCTX=openssl | |
perl configdata.pm --dump | |
- name: build | |
working-directory: _build | |
shell: cmd | |
run: | | |
call "C:\Program Files\Microsoft Visual Studio\2022\Enterprise\VC\Auxiliary\Build\vcvars64.bat" | |
nmake | |
- name: download coreinfo | |
run: | | |
mkdir _build\coreinfo | |
Invoke-WebRequest -Uri "https://download.sysinternals.com/files/Coreinfo.zip" -outfile "_build\coreinfo\Coreinfo.zip" | |
- name: get cpu info | |
working-directory: _build | |
continue-on-error: true | |
run: | | |
7z.exe x coreinfo/Coreinfo.zip | |
./Coreinfo64.exe -accepteula -f | |
./apps/openssl.exe version -c | |
- name: test | |
working-directory: _build | |
shell: cmd | |
run: | | |
call "C:\Program Files\Microsoft Visual Studio\2022\Enterprise\VC\Auxiliary\Build\vcvars64.bat" | |
nmake test VERBOSE_FAILURE=yes TESTS=-test_fuzz* HARNESS_JOBS=4 | |
cygwin: | |
# Run a job for each of the specified target architectures: | |
strategy: | |
matrix: | |
os: | |
- windows-2022 | |
platform: | |
- arch: win64 | |
config: -DCMAKE_C_COMPILER=gcc --strict-warnings enable-demos no-fips | |
# are we really learning sth new from win32? So let's save some CO2 for now disabling this | |
# - arch: win32 | |
# config: -DCMAKE_C_COMPILER=gcc --strict-warnings no-fips | |
runs-on: ${{ matrix.os }} | |
env: | |
CYGWIN_NOWINPATH: 1 | |
SHELLOPTS: igncr | |
# Don't overwhelm github CI VMs: | |
MAKE_PARAMS: -j 4 | |
steps: | |
# Checkout before cygwin can mess with PATH... | |
- uses: actions/checkout@v4 | |
- uses: cygwin/cygwin-install-action@f61179d72284ceddc397ed07ddb444d82bf9e559 #v5 | |
with: | |
packages: perl git make gcc-core | |
- name: Check repo | |
run: cygcheck -V | |
- name: Full cygcheck status | |
run: cygcheck -s -v -r -h | |
# Activate this if checkout action fails: | |
# - name: Clone repo | |
# run: bash -c "pwd && git clone --branch ${{ github.ref_name }} --depth 1 https://github.com/${{ github.repository }}.git" | |
- name: Full build | |
run: bash -c "gcc --version && ./config ${{ matrix.platform.config }} && make $MAKE_PARAMS" | |
# Disable testing for now. TBD: Need local cygwin installation to debug . | |
# - name: Run openssl tests | |
# run: bash -c "cd openssl && make V=1 test" |