build: a grab bag of minor fixes + retry WinCNG tests #1650
Workflow file for this run
This file contains 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
name: CI | |
on: | |
push: | |
branches: [master] | |
pull_request: | |
branches: [master] | |
permissions: {} | |
jobs: | |
check_style: | |
name: style-check | |
runs-on: ubuntu-latest | |
timeout-minutes: 5 | |
steps: | |
- uses: actions/checkout@v3 | |
- name: Check Style | |
run: ./ci/checksrc.sh | |
build_linux: | |
name: linux | |
runs-on: ubuntu-latest | |
timeout-minutes: 60 | |
strategy: | |
fail-fast: false | |
matrix: | |
compiler: [gcc, clang] | |
address_size: [64] | |
crypto_backend: [OpenSSL, Libgcrypt, mbedTLS] | |
enable_zlib_compression: ['OFF', 'ON'] | |
b: [cmake] | |
include: | |
- compiler: gcc | |
address_size: 64 | |
crypto_backend: OpenSSL | |
enable_zlib_compression: 'OFF' | |
b: autotools | |
- compiler: clang | |
address_size: 64 | |
crypto_backend: OpenSSL | |
enable_zlib_compression: 'OFF' | |
b: autotools | |
env: | |
CC: ${{ matrix.compiler }} | |
CC_FOR_BUILD: ${{ matrix.compiler }} | |
CRYPTO_BACKEND: ${{ matrix.crypto_backend }} | |
ENABLE_ZLIB_COMPRESSION: ${{ matrix.enable_zlib_compression }} | |
steps: | |
- uses: actions/checkout@v3 | |
- name: Install 64 Bit Dependencies | |
if: ${{ matrix.address_size == 64 }} | |
run: | | |
sudo apt-get install -y libssl-dev | |
sudo apt-get install -y libgcrypt-dev | |
- name: Install mbedTLS Dependencies | |
if: ${{ matrix.crypto_backend == 'mbedTLS' }} | |
run: | | |
MBEDTLSVER=mbedtls-3.4.0 | |
curl -L https://github.com/Mbed-TLS/mbedtls/archive/$MBEDTLSVER.tar.gz | tar -xzf - | |
cd mbedtls-$MBEDTLSVER | |
cmake $TOOLCHAIN_OPTION \ | |
-DUSE_SHARED_MBEDTLS_LIBRARY=ON \ | |
-DCMAKE_INSTALL_PREFIX:PATH=../usr . | |
make -j3 install | |
cd .. | |
echo "LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$PWD/usr/lib" >> $GITHUB_ENV | |
echo "TOOLCHAIN_OPTION=$TOOLCHAIN_OPTION -DCMAKE_PREFIX_PATH=$PWD/usr" >> $GITHUB_ENV | |
- name: Build with Configure | |
if: ${{ matrix.b == 'autotools' }} | |
run: | | |
autoreconf -fi | |
./configure --enable-werror --enable-debug | |
make -j3 | |
make check VERBOSE=1 | |
- name: Build with CMake | |
timeout-minutes: 10 | |
if: ${{ matrix.b == 'cmake' }} | |
run: | | |
mkdir bin | |
cd bin | |
cmake $TOOLCHAIN_OPTION \ | |
-DENABLE_WERROR=ON \ | |
-DBUILD_SHARED_LIBS=ON \ | |
-DCRYPTO_BACKEND=$CRYPTO_BACKEND \ | |
-DENABLE_ZLIB_COMPRESSION=$ENABLE_ZLIB_COMPRESSION .. | |
cmake --build . | |
export OPENSSH_SERVER_IMAGE=ghcr.io/libssh2/ci_tests_openssh_server:$(git rev-parse --short=20 HEAD:../tests/openssh_server) | |
ctest -VV --output-on-failure | |
cmake --build . --target package | |
build_msys2: | |
name: msys2 | |
runs-on: windows-latest | |
timeout-minutes: 30 | |
strategy: | |
matrix: | |
include: | |
- { sys: mingw64, env: x86_64 } | |
- { sys: mingw32, env: i686 } | |
- { sys: ucrt64, env: ucrt-x86_64 } | |
- { sys: clang64, env: clang-x86_64 } | |
fail-fast: false | |
steps: | |
- uses: actions/checkout@v3 | |
- uses: msys2/setup-msys2@v2 | |
with: | |
msystem: ${{ matrix.sys }} | |
install: >- | |
mingw-w64-${{ matrix.env }}-cc | |
mingw-w64-${{ matrix.env }}-autotools | |
mingw-w64-${{ matrix.env }}-openssl | |
- name: Building libssh2 | |
shell: msys2 {0} | |
run: | | |
export SSHD='C:/Program Files/Git/usr/bin/sshd.exe' | |
autoreconf -fi | |
./configure --enable-werror --enable-debug --enable-static --disable-shared --with-crypto=openssl --disable-docker-tests | |
make -j3 | |
make check VERBOSE=1 | |
build_msvc: | |
name: msvc | |
runs-on: windows-latest | |
timeout-minutes: 30 | |
strategy: | |
matrix: | |
include: | |
- { arch: x64 , plat: windows, crypto: WinCNG , log: 'OFF', shared: 'OFF', zlib: 'OFF' } | |
- { arch: x64 , plat: windows, crypto: WinCNG , log: 'ON' , shared: 'ON' , zlib: 'OFF' } | |
- { arch: x64 , plat: windows, crypto: OpenSSL, log: 'OFF', shared: 'ON' , zlib: 'OFF' } | |
- { arch: x64 , plat: uwp , crypto: WinCNG , log: 'OFF', shared: 'ON' , zlib: 'OFF' } | |
- { arch: arm64, plat: windows, crypto: WinCNG , log: 'OFF', shared: 'ON' , zlib: 'OFF' } | |
- { arch: arm64, plat: uwp , crypto: WinCNG , log: 'OFF', shared: 'ON' , zlib: 'OFF' } | |
- { arch: x86 , plat: windows, crypto: WinCNG , log: 'OFF', shared: 'ON' , zlib: 'OFF' } | |
fail-fast: false | |
steps: | |
- uses: actions/checkout@v3 | |
- name: 'cmake generate' | |
shell: bash | |
run: | | |
archgen=${{ matrix.arch }}; [ "${archgen}" = 'x86' ] && archgen='Win32' | |
if [ "${{ matrix.plat }}" = 'uwp' ]; then | |
system='WindowsStore' | |
options='-DCMAKE_SYSTEM_VERSION=10.0' | |
else | |
system='Windows' | |
fi | |
cmake . -B bld ${options} \ | |
-DCMAKE_SYSTEM_NAME=${system} \ | |
-DCMAKE_TOOLCHAIN_FILE=C:/vcpkg/scripts/buildsystems/vcpkg.cmake \ | |
-DCMAKE_GENERATOR_PLATFORM=${archgen} \ | |
-DVCPKG_TARGET_TRIPLET=${{ matrix.arch }}-${{ matrix.plat }} \ | |
-DENABLE_WERROR=ON \ | |
-DENABLE_DEBUG_LOGGING=${{ matrix.log }} \ | |
-DBUILD_SHARED_LIBS=${{ matrix.shared }} \ | |
-DCRYPTO_BACKEND=${{ matrix.crypto }} \ | |
-DENABLE_ZLIB_COMPRESSION=${{ matrix.zlib }} \ | |
-DRUN_DOCKER_TESTS=OFF | |
- name: 'cmake build' | |
run: | | |
cmake --build bld --config Release --target package | |
- name: 'cmake test' | |
if: ${{ matrix.arch != 'arm64' && matrix.plat != 'uwp' }} | |
shell: bash | |
run: | | |
xxd < tests/openssh_server/ssh_host_ed25519_key | |
cd bld | |
ctest -VV -C Release --output-on-failure --timeout 900 | |
build_macos: | |
name: macOS (${{ matrix.build }}, ${{ matrix.crypto.name }}) | |
runs-on: macos-latest | |
timeout-minutes: 30 | |
strategy: | |
fail-fast: false | |
matrix: | |
build: [autotools, cmake] | |
crypto: | |
- name: OpenSSL 3 | |
install: openssl | |
configure: --with-crypto=openssl --with-libssl-prefix=/usr/local/opt/openssl | |
cmake: -DCRYPTO_BACKEND=OpenSSL -DOPENSSL_ROOT_DIR=/usr/local/opt/openssl | |
- name: OpenSSL 1.1 | |
install: openssl@1.1 | |
configure: --with-crypto=openssl --with-libssl-prefix=/usr/local/opt/openssl@1.1 | |
cmake: -DCRYPTO_BACKEND=OpenSSL -DOPENSSL_ROOT_DIR=/usr/local/opt/openssl@1.1 | |
- name: LibreSSL | |
install: libressl | |
configure: --with-crypto=openssl --with-libssl-prefix=/usr/local/opt/libressl | |
cmake: -DCRYPTO_BACKEND=OpenSSL -DOPENSSL_ROOT_DIR=/usr/local/opt/libressl | |
- name: wolfSSL | |
install: wolfssl | |
configure: --with-crypto=wolfssl --with-libwolfssl-prefix=/usr/local/opt/wolfssl | |
cmake: -DCRYPTO_BACKEND=wolfSSL | |
- name: libgcrypt | |
install: libgcrypt | |
configure: --with-crypto=libgcrypt --with-libgcrypt-prefix=/usr/local/opt/libgcrypt | |
cmake: -DCRYPTO_BACKEND=Libgcrypt | |
- name: mbedTLS | |
install: mbedtls | |
configure: --with-crypto=mbedtls --with-libmbedcrypto-prefix=/usr/local/opt/mbedtls | |
cmake: -DCRYPTO_BACKEND=mbedTLS -DMBEDCRYPTO_LIBRARY=/usr/local/opt/mbedtls/lib/libmbedcrypto.a -DMBEDTLS_LIBRARY=/usr/local/opt/mbedtls/lib/libmbedtls.a -DMBEDX509_LIBRARY=/usr/local/opt/mbedtls/lib/libmbedx509.a -DMBEDTLS_INCLUDE_DIR=/usr/local/opt/mbedtls/include | |
steps: | |
- name: 'brew install' | |
run: | | |
brew install automake ${{ matrix.crypto.install }} | |
- uses: actions/checkout@v3 | |
- name: 'autotools autoreconf' | |
if: ${{ matrix.build == 'autotools' }} | |
run: autoreconf -fi | |
- name: 'autotools configure' | |
if: ${{ matrix.build == 'autotools' }} | |
run: | | |
./configure ${{ matrix.crypto.configure }} \ | |
--enable-werror \ | |
--enable-debug \ | |
--with-libz \ | |
--disable-docker-tests | |
- name: 'autotools make' | |
if: ${{ matrix.build == 'autotools' }} | |
run: make | |
- name: 'autotools tests' | |
if: ${{ matrix.build == 'autotools' }} | |
run: make check VERBOSE=1 | |
- name: 'cmake generate' | |
if: ${{ matrix.build == 'cmake' }} | |
run: | | |
cmake . -B bld ${{ matrix.crypto.cmake }} \ | |
-DENABLE_WERROR=ON \ | |
-DENABLE_DEBUG_LOGGING=ON \ | |
-DENABLE_ZLIB_COMPRESSION=ON \ | |
-DRUN_DOCKER_TESTS=OFF | |
- name: 'cmake build' | |
if: ${{ matrix.build == 'cmake' }} | |
run: cmake --build bld | |
- name: 'cmake tests' | |
if: ${{ matrix.build == 'cmake' }} | |
run: | | |
cd bld | |
ctest -VV --output-on-failure --timeout 900 |