diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 3677607c..662ca275 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -10,37 +10,34 @@ permissions: {} jobs: check_style: - name: style-check + name: 'style-check' runs-on: ubuntu-latest timeout-minutes: 5 steps: - uses: actions/checkout@v3 - - name: Check Style + - name: 'checksrc' run: ./ci/checksrc.sh build_linux: - name: 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] + build: [cmake] include: - compiler: gcc - address_size: 64 crypto_backend: OpenSSL enable_zlib_compression: 'OFF' - b: configure + build: autotools - compiler: clang - address_size: 64 crypto_backend: OpenSSL enable_zlib_compression: 'OFF' - b: configure + build: autotools env: CC: ${{ matrix.compiler }} CC_FOR_BUILD: ${{ matrix.compiler }} @@ -48,12 +45,10 @@ jobs: 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 + - name: 'install packages' + if: ${{ matrix.crypto_backend != 'mbedTLS' }} + run: sudo apt-get install -y libssl-dev libgcrypt-dev + - name: 'install mbedTLS from source' if: ${{ matrix.crypto_backend == 'mbedTLS' }} run: | MBEDTLSVER=mbedtls-3.4.0 @@ -66,31 +61,40 @@ jobs: 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 == 'configure' }} + + - name: 'autotools autoreconf' + if: ${{ matrix.build == 'autotools' }} + run: autoreconf -fi + - name: 'autotools configure' + if: ${{ matrix.build == 'autotools' }} + run: ./configure --enable-werror --enable-debug + - name: 'autotools build' + if: ${{ matrix.build == 'autotools' }} + run: make -j3 + - name: 'autotools tests' + if: ${{ matrix.build == 'autotools' }} + run: make check VERBOSE=1 + - name: 'cmake configure' + if: ${{ matrix.build == 'cmake' }} 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 \ + cmake . -B bld $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 + -DENABLE_ZLIB_COMPRESSION=$ENABLE_ZLIB_COMPRESSION + + - name: 'cmake build' + if: ${{ matrix.build == 'cmake' }} + run: cmake --build bld --target package + - name: 'cmake tests' + if: ${{ matrix.build == 'cmake' }} + timeout-minutes: 10 + run: | + export OPENSSH_SERVER_IMAGE=ghcr.io/libssh2/ci_tests_openssh_server:$(git rev-parse --short=20 HEAD:tests/openssh_server) + cd bld && ctest -VV --output-on-failure build_msys2: - name: msys2 + name: 'msys2' runs-on: windows-latest timeout-minutes: 30 strategy: @@ -110,13 +114,22 @@ jobs: mingw-w64-${{ matrix.env }}-cc mingw-w64-${{ matrix.env }}-autotools mingw-w64-${{ matrix.env }}-openssl - - name: Building libssh2 + + - name: 'autotools autoreconf' + shell: msys2 {0} + run: autoreconf -fi + - name: 'autotools configure' shell: msys2 {0} run: | - autoreconf -fi - ./configure --enable-werror --enable-debug --enable-static --disable-shared --with-crypto=openssl - make -j3 - make check VERBOSE=1 + ./configure --enable-werror --enable-debug --enable-static --disable-shared \ + --with-crypto=openssl + + - name: 'autotools build' + shell: msys2 {0} + run: make -j3 + - name: 'autotools tests' + shell: msys2 {0} + run: make check VERBOSE=1 build_msys2_gnu_make: name: 'msys2 (mingw64, x86_64, Makefile.mk)' @@ -136,7 +149,7 @@ jobs: run: mkdir bld && cd bld && BLD_DIR=bld make -C .. -j3 -f Makefile.mk dyn example test build_msvc: - name: msvc + name: 'msvc' runs-on: windows-latest timeout-minutes: 30 strategy: @@ -152,7 +165,7 @@ jobs: fail-fast: false steps: - uses: actions/checkout@v3 - - name: 'cmake generate' + - name: 'cmake configure' shell: bash run: | archgen=${{ matrix.arch }}; [ "${archgen}" = 'x86' ] && archgen='Win32' @@ -172,12 +185,12 @@ jobs: -DBUILD_SHARED_LIBS=${{ matrix.shared }} \ -DCRYPTO_BACKEND=${{ matrix.crypto }} \ -DENABLE_ZLIB_COMPRESSION=${{ matrix.zlib }} + - name: 'cmake build' - run: | - cmake --build bld --config Release --target package + run: cmake --build bld --target package --config Release build_macos: - name: macOS (${{ matrix.build }}, ${{ matrix.crypto.name }}) + name: 'macOS (${{ matrix.build }}, ${{ matrix.crypto.name }})' runs-on: macos-latest timeout-minutes: 30 strategy: @@ -185,58 +198,54 @@ jobs: matrix: build: [autotools, cmake] crypto: - - name: OpenSSL 3 + - 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 + - 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 + - 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 + - name: 'wolfSSL' install: wolfssl configure: --with-crypto=wolfssl --with-libwolfssl-prefix=/usr/local/opt/wolfssl cmake: -DCRYPTO_BACKEND=wolfSSL - - name: libgcrypt + - name: 'libgcrypt' install: libgcrypt configure: --with-crypto=libgcrypt --with-libgcrypt-prefix=/usr/local/opt/libgcrypt cmake: -DCRYPTO_BACKEND=Libgcrypt - - name: mbedTLS + - 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 }} - + - name: 'install packages' + 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 - - name: 'autotools make' + ./configure --enable-werror --enable-debug \ + --with-libz ${{ matrix.crypto.configure }} + + - name: 'autotools build' if: ${{ matrix.build == 'autotools' }} run: make - - - name: 'cmake generate' + - name: 'cmake configure' if: ${{ matrix.build == 'cmake' }} run: | cmake . -B bld ${{ matrix.crypto.cmake }} \ -DENABLE_WERROR=ON \ -DENABLE_DEBUG_LOGGING=ON \ -DENABLE_ZLIB_COMPRESSION=ON + - name: 'cmake build' if: ${{ matrix.build == 'cmake' }} run: cmake --build bld