瀏覽代碼

Add linux and macOS test using OpenSSL3.0

Signed-off-by: yubiuser <github@yubiuser.dev>
yubiuser 9 月之前
父節點
當前提交
aa7de369a4
共有 2 個文件被更改,包括 72 次插入15 次删除
  1. 71 14
      .github/workflows/cibuild.yml
  2. 1 1
      unittest/public_server.c

+ 71 - 14
.github/workflows/cibuild.yml

@@ -16,7 +16,6 @@ jobs:
           - os: ubuntu-latest
             compiler: clang
             env:
-              idx: 1
               N: Clang-Linux-Minimal-Debug
               BUILD_TYPE: Debug
               ENABLE_SSL_DYNAMIC_LOADING: YES
@@ -42,7 +41,6 @@ jobs:
           - os: ubuntu-latest
             compiler: clang
             env:
-              idx: 3
               N: Clang-Linux-Default-Release
               BUILD_TYPE: Release
               ENABLE_SSL_DYNAMIC_LOADING: YES
@@ -68,7 +66,6 @@ jobs:
           - os: ubuntu-latest
             compiler: gcc 
             env:
-              idx: 5
               N: GCC-Linux-Complete-NoLua-Release
               BUILD_TYPE: Release
               ENABLE_SSL_DYNAMIC_LOADING: YES
@@ -94,7 +91,6 @@ jobs:
           - os: ubuntu-latest
             compiler: clang
             env:
-              idx: 6
               N: CLANG-AnyVersion-Linux-Coverage
               BUILD_TYPE: Coverage
               ENABLE_SSL_DYNAMIC_LOADING: YES
@@ -120,7 +116,6 @@ jobs:
           - os: ubuntu-latest
             compiler: clang
             env:
-              idx: 9
               N: Clang-Linux-Default-Shared
               BUILD_TYPE: Debug
               ENABLE_SSL_DYNAMIC_LOADING: YES
@@ -146,7 +141,6 @@ jobs:
           - os: ubuntu-latest
             compiler: gcc
             env:
-              idx: 15
               N: GCCLinuxDefault_RelWithDebInfo
               BUILD_TYPE: RelWithDebInfo
               ENABLE_SSL_DYNAMIC_LOADING: YES
@@ -171,7 +165,6 @@ jobs:
           - os: ubuntu-latest
             compiler: gcc
             env:
-              idx: 16
               N: GCCLinuxDefault_MinSizeRel
               BUILD_TYPE: MinSizeRel
               ENABLE_SSL_DYNAMIC_LOADING: YES
@@ -196,7 +189,6 @@ jobs:
           - os: ubuntu-latest
             compiler: gcc
             env:
-              idx: 17
               N: GCCLinuxDefault_None
               BUILD_TYPE: None
               ENABLE_SSL_DYNAMIC_LOADING: YES
@@ -221,7 +213,6 @@ jobs:
           - os: ubuntu-latest
             compiler: gcc
             env:
-              idx: 20
               N: GCCLinuxDefault_xenial
               BUILD_TYPE: Release
               ENABLE_SSL_DYNAMIC_LOADING: YES
@@ -246,7 +237,6 @@ jobs:
           - os: ubuntu-latest
             compiler: gcc
             env:
-              idx: 23
               N: GCCLinuxDefault_focal
               BUILD_TYPE: Release
               ENABLE_SSL_DYNAMIC_LOADING: YES
@@ -267,13 +257,37 @@ jobs:
               NO_CACHING: NO
               ALLOW_WARNINGS: YES
               RUN_UNITTEST: 1
+         
+          - os: ubuntu-latest
+            compiler: gcc
+            env:
+              N: GCCLinuxDefault_OpenSSL_3_0
+              BUILD_TYPE: Release
+              ENABLE_SSL_DYNAMIC_LOADING: YES
+              OPENSSL_1_0: NO
+              OPENSSL_1_1: NO
+              OpenSSL_3_0: YES
+              ENABLE_CXX: NO
+              ENABLE_LUA_SHARED: NO
+              C_STANDARD: auto
+              CXX_STANDARD: auto
+              BUILD_SHARED: NO
+              NO_FILES: NO
+              ENABLE_SSL: YES
+              NO_CGI: NO
+              ENABLE_IPV6: NO
+              ENABLE_WEBSOCKETS: NO
+              ENABLE_LUA: NO
+              ENABLE_DUKTAPE: NO
+              NO_CACHING: NO
+              ALLOW_WARNINGS: YES
+              RUN_UNITTEST: 1
 
           # Disable Lua build, until someone knows how to fix the CMake files
           # see https://github.com/civetweb/civetweb/issues/543
           # - os: ubuntu-lastest
           #   compiler: clang
           #   env:
-          #     idx: 99
           #     N: Clang-Linux-Complete-WithLua-Debug
           #     BUILD_TYPE: Debug
           #     ENABLE_SSL_DYNAMIC_LOADING: YES
@@ -299,7 +313,6 @@ jobs:
           - os: macos-latest
             compiler: clang
             env:
-              idx: 8
               N: Clang-OSX-Complete-NoLua-Release-OpenSSL_1_1_NoDynLoad
               BUILD_TYPE: Release
               ENABLE_SSL_DYNAMIC_LOADING: NO
@@ -328,8 +341,7 @@ jobs:
           - os: macos-13
             compiler: clang
             env:
-              idx: 11
-              N: OSX-Package
+              N: OSX-Package_OpenSSL_1_0
               BUILD_TYPE: Release
               ENABLE_SSL_DYNAMIC_LOADING: YES
               OPENSSL_1_0: YES
@@ -352,6 +364,33 @@ jobs:
               MACOSX_PACKAGE: 1
               RUN_UNITTEST: 1
 
+          - os: macos-latest
+            compiler: clang
+            env:
+              N: OSX-Package_OpenSSL_3_0
+              BUILD_TYPE: Release
+              ENABLE_SSL_DYNAMIC_LOADING: YES
+              OPENSSL_1_0: NO
+              OPENSSL_1_1: NO
+              OPENSSL_3_0: YES
+              ENABLE_CXX: NO
+              ENABLE_LUA_SHARED: NO
+              C_STANDARD: auto
+              CXX_STANDARD: auto
+              BUILD_SHARED: NO
+              NO_FILES: NO
+              ENABLE_SSL: YES
+              NO_CGI: NO
+              ENABLE_IPV6: YES
+              ENABLE_WEBSOCKETS: YES
+              ENABLE_SERVER_STATS: NO
+              ENABLE_LUA: NO
+              ENABLE_DUKTAPE: NO
+              NO_CACHING: NO
+              ALLOW_WARNINGS: YES
+              MACOSX_PACKAGE: 1
+              RUN_UNITTEST: 1
+
 
     steps:
         - name: Checkout code
@@ -404,7 +443,25 @@ jobs:
             echo "${OPENSSL_ROOT_DIR}/bin" >> $GITHUB_PATH
             echo "ADDITIONAL_CMAKE_ARGS=${ADDITIONAL_CMAKE_ARGS}" >> $GITHUB_ENV
             echo "PKG_CONFIG_PATH=${PKG_CONFIG_PATH}" >> $GITHUB_ENV
+
+        - name: Install OpenSSL 3.0 on modern MacOS
+          # OpenSSL 1.1 is installed by default, so we need to install 3.0 manually
+          if: startsWith(matrix.os,'macos') && matrix.env.OPENSSL_3_0 == 'YES'            
+          run: |
+            brew install openssl@3.0
             
+            OPENSSL_ROOT_DIR=$(brew --prefix openssl@3.0)
+            LDFLAGS=-L${OPENSSL_ROOT_DIR}/lib
+            CFLAGS=-I${OPENSSL_ROOT_DIR}/include
+            ADDITIONAL_CMAKE_ARGS="-DCMAKE_SHARED_LINKER_FLAGS=${LDFLAGS} -DMAKE_C_FLAGS=${CFLAGS}"
+            PKG_CONFIG_PATH=${OPENSSL_ROOT_DIR}/lib/pkgconfig
+
+            echo "LDFLAGS=${LDFLAGS}" >> $GITHUB_ENV
+            echo "CFLAGS=${CFLAGS}" >> $GITHUB_ENV
+            echo "${OPENSSL_ROOT_DIR}/bin" >> $GITHUB_PATH
+            echo "ADDITIONAL_CMAKE_ARGS=${ADDITIONAL_CMAKE_ARGS}" >> $GITHUB_ENV
+            echo "PKG_CONFIG_PATH=${PKG_CONFIG_PATH}" >> $GITHUB_ENV
+
         - name: Install OpenSSL 1.0 on modern Linux
           # Needed for recent versions of Linux as they ship with OpenSSL 3.0 by default
           if: startsWith(matrix.os,'ubuntu') && matrix.env.OPENSSL_1_0 == 'YES'

+ 1 - 1
unittest/public_server.c

@@ -823,7 +823,7 @@ START_TEST(test_mg_server_and_client_tls)
 	 * while Ubuntu Xenial, Ubuntu Trusty and Windows test containers at
 	 * Travis CI do not. Maybe it is OpenSSL version specific.
 	 */
-#if defined(OPENSSL_API_1_1)
+#if defined(OPENSSL_API_1_1) || defined(OPENSSL_API_3_0) 
 	if (client_conn) {
 		/* Connect succeeds, but the connection is unusable. */
 		mg_printf(client_conn, "GET / HTTP/1.0\r\n\r\n");