name: Ubuntu-Macos-Windows Tests # START OF COMMON SECTION on: push: branches: [ 'master', 'main', 'release/**' ] pull_request: branches: [ '*' ] concurrency: group: ${{ github.workflow }}-${{ github.ref }} cancel-in-progress: true # END OF COMMON SECTION jobs: make_check: strategy: fail-fast: false matrix: os: [ ubuntu-latest, macos-latest ] config: [ # Add new configs here '', '--enable-all --enable-asn=template', '--enable-all --enable-asn=original', '--enable-harden-tls', '--enable-tls13 --enable-session-ticket --enable-dtls --enable-dtls13 --enable-opensslextra --enable-sessioncerts CPPFLAGS=''-DWOLFSSL_DTLS_NO_HVR_ON_RESUME -DHAVE_EXT_CACHE -DWOLFSSL_TICKET_HAVE_ID -DHAVE_EX_DATA -DSESSION_CACHE_DYNAMIC_MEM'' ', '--enable-all --enable-secure-renegotiation', '--enable-all --enable-haproxy --enable-quic', '--enable-dtls --enable-dtls13 --enable-earlydata --enable-session-ticket --enable-psk CPPFLAGS=''-DWOLFSSL_DTLS13_NO_HRR_ON_RESUME'' ', '--enable-experimental --enable-kyber --enable-dtls --enable-dtls13 --enable-dtls-frag-ch', '--enable-all --enable-dtls13 --enable-dtls-frag-ch', '--enable-dtls --enable-dtls13 --enable-dtls-frag-ch --enable-dtls-mtu', '--enable-dtls --enable-dtlscid --enable-dtls13 --enable-secure-renegotiation --enable-psk --enable-aesccm --enable-nullcipher CPPFLAGS=-DWOLFSSL_STATIC_RSA', ] name: make check if: github.repository_owner == 'wolfssl' runs-on: ${{ matrix.os }} # This should be a safe limit for the tests to run. timeout-minutes: 14 steps: - name: Build and test wolfSSL uses: wolfSSL/actions-build-autotools-project@v1 with: configure: ${{ matrix.config }} check: true make_user_settings: strategy: fail-fast: false matrix: os: [ ubuntu-latest, macos-latest ] user-settings: [ # Add new user_settings.h here 'examples/configs/user_settings_all.h', ] name: make user_setting.h if: github.repository_owner == 'wolfssl' runs-on: ${{ matrix.os }} # This should be a safe limit for the tests to run. timeout-minutes: 14 steps: - name: Build and test wolfSSL uses: wolfSSL/actions-build-autotools-project@v1 with: configure: --enable-usersettings check: true user-settings: ${{ matrix.user-settings }} make_user_settings_testwolfcrypt: strategy: fail-fast: false matrix: os: [ ubuntu-latest, macos-latest ] user-settings: [ # Add new user_settings.h here 'examples/configs/user_settings_min_ecc.h', 'examples/configs/user_settings_wolfboot_keytools.h', 'examples/configs/user_settings_wolftpm.h', 'examples/configs/user_settings_wolfssh.h', 'examples/configs/user_settings_tls12.h', ] name: make user_setting.h (testwolfcrypt only) if: github.repository_owner == 'wolfssl' runs-on: ${{ matrix.os }} # This should be a safe limit for the tests to run. timeout-minutes: 14 steps: - name: Build and test wolfSSL uses: wolfSSL/actions-build-autotools-project@v1 with: configure: --enable-usersettings --disable-examples check: false user-settings: ${{ matrix.user-settings }} - name: Run wolfcrypt/test/testwolfcrypt run: ./wolfcrypt/test/testwolfcrypt # Has to be dedicated function due to the sed call make_user_all: strategy: fail-fast: false matrix: os: [ ubuntu-latest, macos-latest ] name: make user_setting.h (with sed) if: github.repository_owner == 'wolfssl' runs-on: ${{ matrix.os }} # This should be a safe limit for the tests to run. timeout-minutes: 14 steps: - uses: actions/checkout@v4 - if: ${{ matrix.os == 'macos-latest' }} run: brew install automake libtool - run: ./autogen.sh - name: user_settings_all.h with compatibility layer run: | cp ./examples/configs/user_settings_all.h user_settings.h sed -i -e "s/if 0/if 1/" user_settings.h ./configure --enable-usersettings make make check windows_build: name: Windows Build Test if: github.repository_owner == 'wolfssl' runs-on: windows-latest strategy: fail-fast: false matrix: arch: [ x64, Win32, ARM64 ] # This should be a safe limit for the tests to run. timeout-minutes: 6 env: # Path to the solution file relative to the root of the project. SOLUTION_FILE_PATH: wolfssl64.sln # Configuration type to build. # You can convert this to a build matrix if you need coverage of multiple configuration types. # https://docs.github.com/actions/learn-github-actions/managing-complex-workflows#using-a-build-matrix BUILD_CONFIGURATION: Release steps: - uses: actions/checkout@v4 - name: Add MSBuild to PATH uses: microsoft/setup-msbuild@v2 - name: Restore NuGet packages working-directory: ${{env.GITHUB_WORKSPACE}} run: nuget restore ${{env.SOLUTION_FILE_PATH}} - name: Build working-directory: ${{env.GITHUB_WORKSPACE}} # Add additional options to the MSBuild command line here (like platform or verbosity level). # See https://docs.microsoft.com/visualstudio/msbuild/msbuild-command-line-reference run: msbuild /m /p:PlatformToolset=v142 /p:Platform=${{matrix.arch}} /p:Configuration=${{env.BUILD_CONFIGURATION}} ${{env.SOLUTION_FILE_PATH}} - if: ${{ matrix.arch != 'ARM64' }} name: Run Test working-directory: ${{env.GITHUB_WORKSPACE}} run: Release/${{matrix.arch}}/testsuite.exe