mirror of
https://github.com/openssl/openssl.git
synced 2026-10-28 08:25:12 +08:00
The VS2013 toolchain image pull, the cross-compile apt installs and the DJGPP PPA fail transiently and turn a push red with nothing in the log about the change. Try each up to three times, 30 seconds apart. When all attempts fail, report it as an environment failure in an error annotation and the job summary, so it is not mistaken for a test failure. Assisted-by: Claude:claude-opus-5-5 Reviewed-by: Tomas Mraz <tomas@openssl.foundation> Reviewed-by: Eugene Syromiatnikov <esyr@openssl.org> Reviewed-by: Nikola Pajkovsky <nikolap@openssl.org> Merge-date: Wed Oct 21 17:07:51 2026 Merged-from: https://github.com/openssl/openssl/pull/33198
206 lines
10 KiB
YAML
206 lines
10 KiB
YAML
# Copyright 2022-2026 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 Compression GitHub CI
|
|
|
|
on:
|
|
pull_request:
|
|
paths:
|
|
- 'crypto/comp/*.c'
|
|
- '.github/workflows/windows_comp.yml'
|
|
push:
|
|
paths:
|
|
- '**.c'
|
|
|
|
permissions:
|
|
contents: read
|
|
|
|
jobs:
|
|
zstd:
|
|
runs-on: windows-latest
|
|
steps:
|
|
- uses: actions/checkout@v6
|
|
with:
|
|
persist-credentials: false
|
|
- name: checkout fuzz/corpora submodule
|
|
run: git submodule update --init --depth 1 fuzz/corpora
|
|
- name: install nasm
|
|
if: github.repository == 'openssl/openssl'
|
|
run: |
|
|
$installer = "nasm-3.01-installer-x64.exe"
|
|
Invoke-WebRequest -Uri "https://openssl-library.org/ci-deps/$installer" -OutFile $installer -MaximumRetryCount 3 -RetryIntervalSec 30
|
|
$expected = (Get-Content "$env:GITHUB_WORKSPACE\.github\ci-deps.json" -Raw | ConvertFrom-Json).$installer
|
|
$actual = (Get-FileHash $installer -Algorithm SHA256).Hash
|
|
if ($actual -ne $expected) { throw "SHA256 mismatch for $installer (expected $expected, got $actual)" }
|
|
Start-Process -FilePath ".\$installer" -ArgumentList '/S' -Wait
|
|
"C:\Program Files\NASM" | Out-File -FilePath "$env:GITHUB_PATH" -Append
|
|
- name: install nasm (forks)
|
|
if: github.repository != 'openssl/openssl'
|
|
run: |
|
|
$installer = "nasm-3.01-installer-x64.exe"
|
|
Invoke-WebRequest -Uri "https://www.nasm.us/pub/nasm/releasebuilds/3.01/win64/$installer" -OutFile $installer
|
|
Start-Process -FilePath ".\$installer" -ArgumentList '/S' -Wait
|
|
"C:\Program Files\NASM" | Out-File -FilePath "$env:GITHUB_PATH" -Append
|
|
- name: install jom
|
|
if: github.repository == 'openssl/openssl'
|
|
run: |
|
|
mkdir C:\jom
|
|
Invoke-WebRequest -Uri "https://openssl-library.org/ci-deps/jom-1.1.7.exe" -OutFile C:\jom\jom.exe -MaximumRetryCount 3 -RetryIntervalSec 30
|
|
$expected = (Get-Content "$env:GITHUB_WORKSPACE\.github\ci-deps.json" -Raw | ConvertFrom-Json).'jom-1.1.7.exe'
|
|
$actual = (Get-FileHash C:\jom\jom.exe -Algorithm SHA256).Hash
|
|
if ($actual -ne $expected) { throw "SHA256 mismatch for jom.exe (expected $expected, got $actual)" }
|
|
"C:\jom" | Out-File -FilePath "$env:GITHUB_PATH" -Append
|
|
- name: install jom (forks)
|
|
if: github.repository != 'openssl/openssl'
|
|
run: |
|
|
mkdir C:\jom
|
|
Invoke-WebRequest -Uri "https://download.qt.io/official_releases/jom/jom_1_1_7.zip" -OutFile C:\jom\jom.zip
|
|
Expand-Archive -Path C:\jom\jom.zip -DestinationPath C:\jom
|
|
"C:\jom" | Out-File -FilePath "$env:GITHUB_PATH" -Append
|
|
- name: prepare the build directory
|
|
run: mkdir _build
|
|
- name: Get zstd
|
|
run: |
|
|
vcpkg install zstd:x64-windows
|
|
"C:\vcpkg\packages\zstd_x64-windows\bin" | Out-File -FilePath "$env:GITHUB_PATH" -Append
|
|
- name: config
|
|
working-directory: _build
|
|
shell: cmd
|
|
run: |
|
|
call "C:\Program Files\Microsoft Visual Studio\18\Enterprise\VC\Auxiliary\Build\vcvars64.bat"
|
|
perl ..\Configure --strict-warnings enable-comp enable-zstd --with-zstd-include=C:\vcpkg\packages\zstd_x64-windows\include --with-zstd-lib=C:\vcpkg\packages\zstd_x64-windows\lib\zstd.lib no-makedepend -DOSSL_WINCTX=openssl VC-WIN64A
|
|
perl configdata.pm --dump
|
|
- name: build
|
|
working-directory: _build
|
|
shell: cmd
|
|
run: |
|
|
call "C:\Program Files\Microsoft Visual Studio\18\Enterprise\VC\Auxiliary\Build\vcvars64.bat"
|
|
jom /j4 /S
|
|
- 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 MODULESDIR /t REG_EXPAND_SZ /d TESTOPENSSLDIR /reg:32
|
|
reg.exe query HKLM\SOFTWARE\OpenSSL-${Env:OSSL_VERSION}-openssl /v OPENSSLDIR /reg:32
|
|
- name: download coreinfo
|
|
run: |
|
|
mkdir _build\coreinfo
|
|
Invoke-WebRequest -Uri "https://download.sysinternals.com/files/Coreinfo.zip" -outfile "_build\coreinfo\Coreinfo.zip" -MaximumRetryCount 3 -RetryIntervalSec 30
|
|
- 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\18\Enterprise\VC\Auxiliary\Build\vcvars64.bat"
|
|
jom test VERBOSE_FAILURE=yes TESTS="-test_fuzz* -test_fipsload" HARNESS_JOBS=4
|
|
|
|
brotli:
|
|
runs-on: windows-latest
|
|
steps:
|
|
- uses: actions/checkout@v6
|
|
with:
|
|
persist-credentials: false
|
|
- name: checkout fuzz/corpora submodule
|
|
run: git submodule update --init --depth 1 fuzz/corpora
|
|
- name: install nasm
|
|
if: github.repository == 'openssl/openssl'
|
|
run: |
|
|
$installer = "nasm-3.01-installer-x64.exe"
|
|
Invoke-WebRequest -Uri "https://openssl-library.org/ci-deps/$installer" -OutFile $installer -MaximumRetryCount 3 -RetryIntervalSec 30
|
|
$expected = (Get-Content "$env:GITHUB_WORKSPACE\.github\ci-deps.json" -Raw | ConvertFrom-Json).$installer
|
|
$actual = (Get-FileHash $installer -Algorithm SHA256).Hash
|
|
if ($actual -ne $expected) { throw "SHA256 mismatch for $installer (expected $expected, got $actual)" }
|
|
Start-Process -FilePath ".\$installer" -ArgumentList '/S' -Wait
|
|
"C:\Program Files\NASM" | Out-File -FilePath "$env:GITHUB_PATH" -Append
|
|
- name: install nasm (forks)
|
|
if: github.repository != 'openssl/openssl'
|
|
run: |
|
|
$installer = "nasm-3.01-installer-x64.exe"
|
|
Invoke-WebRequest -Uri "https://www.nasm.us/pub/nasm/releasebuilds/3.01/win64/$installer" -OutFile $installer
|
|
Start-Process -FilePath ".\$installer" -ArgumentList '/S' -Wait
|
|
"C:\Program Files\NASM" | Out-File -FilePath "$env:GITHUB_PATH" -Append
|
|
- name: install jom
|
|
if: github.repository == 'openssl/openssl'
|
|
run: |
|
|
mkdir C:\jom
|
|
Invoke-WebRequest -Uri "https://openssl-library.org/ci-deps/jom-1.1.7.exe" -OutFile C:\jom\jom.exe -MaximumRetryCount 3 -RetryIntervalSec 30
|
|
$expected = (Get-Content "$env:GITHUB_WORKSPACE\.github\ci-deps.json" -Raw | ConvertFrom-Json).'jom-1.1.7.exe'
|
|
$actual = (Get-FileHash C:\jom\jom.exe -Algorithm SHA256).Hash
|
|
if ($actual -ne $expected) { throw "SHA256 mismatch for jom.exe (expected $expected, got $actual)" }
|
|
"C:\jom" | Out-File -FilePath "$env:GITHUB_PATH" -Append
|
|
- name: install jom (forks)
|
|
if: github.repository != 'openssl/openssl'
|
|
run: |
|
|
mkdir C:\jom
|
|
Invoke-WebRequest -Uri "https://download.qt.io/official_releases/jom/jom_1_1_7.zip" -OutFile C:\jom\jom.zip
|
|
Expand-Archive -Path C:\jom\jom.zip -DestinationPath C:\jom
|
|
"C:\jom" | Out-File -FilePath "$env:GITHUB_PATH" -Append
|
|
- name: prepare the build directory
|
|
run: mkdir _build
|
|
- name: Get brotli
|
|
run: |
|
|
vcpkg install brotli:x64-windows
|
|
"C:\vcpkg\packages\brotli_x64-windows\bin" | Out-File -FilePath "$env:GITHUB_PATH" -Append
|
|
- name: config
|
|
working-directory: _build
|
|
shell: cmd
|
|
run: |
|
|
call "C:\Program Files\Microsoft Visual Studio\18\Enterprise\VC\Auxiliary\Build\vcvars64.bat"
|
|
perl ..\Configure --strict-warnings enable-comp enable-brotli --with-brotli-include=C:\vcpkg\packages\brotli_x64-windows\include --with-brotli-lib=C:\vcpkg\packages\brotli_x64-windows\lib no-makedepend -DOSSL_WINCTX=openssl VC-WIN64A
|
|
perl configdata.pm --dump
|
|
- name: build
|
|
working-directory: _build
|
|
shell: cmd
|
|
run: |
|
|
call "C:\Program Files\Microsoft Visual Studio\18\Enterprise\VC\Auxiliary\Build\vcvars64.bat"
|
|
jom /j4 /S
|
|
- 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 MODULESDIR /t REG_EXPAND_SZ /d TESTOPENSSLDIR /reg:32
|
|
reg.exe query HKLM\SOFTWARE\OpenSSL-${Env:OSSL_VERSION}-openssl /v OPENSSLDIR /reg:32
|
|
- name: download coreinfo
|
|
run: |
|
|
mkdir _build\coreinfo
|
|
Invoke-WebRequest -Uri "https://download.sysinternals.com/files/Coreinfo.zip" -outfile "_build\coreinfo\Coreinfo.zip" -MaximumRetryCount 3 -RetryIntervalSec 30
|
|
- 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\18\Enterprise\VC\Auxiliary\Build\vcvars64.bat"
|
|
jom test VERBOSE_FAILURE=yes TESTS="-test_fuzz* -test_fipsload" HARNESS_JOBS=4
|