]> granicus.if.org Git - libevent/commitdiff
CI: catch failures and retry
authoryuangongji <yuangongji@foxmail.com>
Thu, 28 May 2020 03:50:49 +0000 (11:50 +0800)
committeryuangongji <82787816@qq.com>
Thu, 28 May 2020 12:10:47 +0000 (20:10 +0800)
.github/workflows/linux.yml
.github/workflows/macos.yml
.github/workflows/mingw.yml
.github/workflows/windows.yml

index c316de13d758d239e03bac9cf4807554085729c3..e4bbcf7d2f2f8d3dd4d63ac3e4f3d2794d7e5706 100644 (file)
@@ -98,7 +98,7 @@ jobs:
           mkdir -p build
           cd build
           echo [cmake]: cmake .. $EVENT_CMAKE_OPTIONS
-          cmake .. $EVENT_CMAKE_OPTIONS
+          cmake .. $EVENT_CMAKE_OPTIONS || (rm -rf * && cmake .. $EVENT_CMAKE_OPTIONS)
           cmake --build .
           if [ "${{ matrix.EVENT_MATRIX }}" == "TEST_EXPORT_STATIC" ]; then
             sudo python3 ../test-export/test-export.py static
index 60429779a18393066bff908d52b3142577673110..910a627a581400b6befc904b03d23b47feded5d1 100644 (file)
@@ -83,7 +83,7 @@ jobs:
           mkdir -p build
           cd build
           echo [cmake]: cmake .. $EVENT_CMAKE_OPTIONS
-          cmake .. $EVENT_CMAKE_OPTIONS
+          cmake .. $EVENT_CMAKE_OPTIONS || (rm -rf * && cmake .. $EVENT_CMAKE_OPTIONS)
           cmake --build .
           if [ "${{ matrix.EVENT_MATRIX }}" == "TEST_EXPORT_STATIC" ]; then
             sudo python3 ../test-export/test-export.py static
index 8758242c941ad6f2f567af339e38310ee381a5c8..a297e8caa093cf81783acfb2afb26d59f5a1d622 100644 (file)
@@ -137,7 +137,29 @@ jobs:
           $env:PATH="D:\a\_temp\msys\msys64\mingw64\bin;D:\a\_temp\msys\msys64\usr\bin;$env:PATH"
           mkdir build -ea 0
           cd build
-          cmake .. -G "MSYS Makefiles" $EVENT_CONFIGURE_OPTIONS -DCMAKE_C_FLAGS=-w
+          function cmake_configure($retry)
+          {
+            $errcode=0
+            try {
+              cmake .. -G "MSYS Makefiles" $EVENT_CONFIGURE_OPTIONS -DCMAKE_C_FLAGS=-w
+              $errcode=$LastExitCode
+            }
+            catch {
+              $errcode=1
+            }
+            finally {
+              if ($errcode -ne 0) {
+                if ($retry -eq 0) {
+                  $host.SetShouldExit($LastExitCode)
+                } else {
+                  echo "Remove all entries in build directory"
+                  rm -r -fo *
+                  cmake_configure 0
+                }
+              }
+            }
+          }
+          cmake_configure 1
           cmake --build .
           ctest -V
 
index 15e75acdaada670824804625b5cd80354a970cec..b30038a09d1ad08bdbad821894e53c17b269a1e1 100644 (file)
@@ -59,61 +59,55 @@ jobs:
           $EVENT_TESTS_PARALLEL=1
           $env:PATH="$OPENSSL_ROOT_DIR/bin;$env:PATH"
 
-          if ( "${{ matrix.EVENT_MATRIX }}" -eq "LIBRARY_TYPE_STATIC" ) {
-            $EVENT_CMAKE_OPTIONS="-DEVENT__LIBRARY_TYPE=STATIC"
-          }
-          elseif ( "${{ matrix.EVENT_MATRIX }}" -eq "DISABLE_OPENSSL" ) {
-            $EVENT_CMAKE_OPTIONS="-DEVENT__DISABLE_OPENSSL=ON"
-          }
-          elseif ( "${{ matrix.EVENT_MATRIX }}" -eq "DISABLE_THREAD_SUPPORT" ) {
-            $EVENT_CMAKE_OPTIONS="-DEVENT__DISABLE_THREAD_SUPPORT=ON"
-          }
-          elseif ( "${{ matrix.EVENT_MATRIX }}" -eq "DISABLE_DEBUG_MODE" ) {
-            $EVENT_CMAKE_OPTIONS="-DEVENT__DISABLE_DEBUG_MODE=ON"
-          }
-          elseif ( "${{ matrix.EVENT_MATRIX }}" -eq "DISABLE_MM_REPLACEMENT" ) {
-            $EVENT_CMAKE_OPTIONS="-DEVENT__DISABLE_MM_REPLACEMENT=ON"
-          }
-          elseif ( "${{ matrix.EVENT_MATRIX }}" -eq "UNICODE" ) {
-            $EVENT_CMAKE_OPTIONS="-DCMAKE_C_FLAGS='-DUNICODE -D_UNICODE'"
-          }
-          elseif ( "${{ matrix.EVENT_MATRIX }}" -eq "TEST_EXPORT_SHARED" ) {
-            $EVENT_CMAKE_OPTIONS="-DEVENT__DISABLE_TESTS=ON -DEVENT__DISABLE_SAMPLES=ON"
-          }
-          elseif ( "${{ matrix.EVENT_MATRIX }}" -eq "TEST_EXPORT_STATIC" ) {
-            $EVENT_CMAKE_OPTIONS="-DEVENT__LIBRARY_TYPE=STATIC -DEVENT__DISABLE_TESTS=ON -DEVENT__DISABLE_SAMPLES=ON"
-          }
-          else {
-            $EVENT_CMAKE_OPTIONS=""
-          }
-
-          if (-not (Test-Path -Path "./build")){
-            mkdir build
-          }
+          mkdir build -ea 0
           cd build
-          if ($LastExitCode -ne 0) { $host.SetShouldExit($LastExitCode) }
 
-          if ("${{ matrix.os }}" -eq "windows-2016") {
-            $CMAKE_CMD="cmake -G 'Visual Studio 15 2017 Win64' .. $EVENT_CMAKE_OPTIONS"
-          }
-          else { # windows-2019
-            $CMAKE_CMD="cmake -G 'Visual Studio 16 2019' -A x64 .. $EVENT_CMAKE_OPTIONS"
+          $CMAKE_CMD="cmake -G 'Visual Studio 15 2017 Win64' .."
+          function cmake_configure($retry)
+          {
+            $errcode=0
+            try {
+              if ($retry -eq 0) {
+                echo "[cmake configure retry] $CMAKE_CMD"
+              } else {
+                echo "[cmake configure] $CMAKE_CMD"
+              }
+              Invoke-Expression $CMAKE_CMD
+              $errcode=$LastExitCode
+            }
+            catch {
+              $errcode=1
+            }
+            finally {
+              if ($errcode -ne 0) {
+                if ($retry -eq 0) {
+                  $host.SetShouldExit($LastExitCode)
+                } else {
+                  echo "Remove all entries in build directory"
+                  rm -r -fo *
+                  cmake_configure 0
+                }
+              }
+            }
           }
-          echo "[cmake] $CMAKE_CMD"
-          Invoke-Expression $CMAKE_CMD
-          if ($LastExitCode -ne 0) { $host.SetShouldExit($LastExitCode) }
+          cmake_configure 1
 
-          cmake --build . -j $EVENT_BUILD_PARALLEL -- /nologo /verbosity:minimal
-          if ($LastExitCode -ne 0) { $host.SetShouldExit($LastExitCode) }
+          try {
+            cmake --build . -j $EVENT_BUILD_PARALLEL -- /nologo /verbosity:minimal
+            if ($LastExitCode -ne 0) { $host.SetShouldExit($LastExitCode) }
 
-          if ("${{ matrix.EVENT_MATRIX }}" -eq "TEST_EXPORT_STATIC") {
-            python ../test-export/test-export.py static
-          }
-          elseif ("${{ matrix.EVENT_MATRIX }}" -eq "TEST_EXPORT_SHARED") {
-            python ../test-export/test-export.py shared
-          }
-          else {
-            ctest --output-on-failure -j $EVENT_TESTS_PARALLEL
+            if ("${{ matrix.EVENT_MATRIX }}" -eq "TEST_EXPORT_STATIC") {
+              python ../test-export/test-export.py static
+            }
+            elseif ("${{ matrix.EVENT_MATRIX }}" -eq "TEST_EXPORT_SHARED") {
+              python ../test-export/test-export.py shared
+            }
+            else {
+              ctest --output-on-failure -j $EVENT_TESTS_PARALLEL
+              if ($LastExitCode -ne 0) { $host.SetShouldExit($LastExitCode) }
+            }
+          } catch {
+            $host.SetShouldExit($LastExitCode)
           }
 
       - uses: actions/upload-artifact@v1
@@ -199,33 +193,60 @@ jobs:
             $EVENT_CMAKE_OPTIONS=""
           }
 
-          if (-not (Test-Path -Path "./build")){
-            mkdir build
-          }
+          mkdir build -ea 0
           cd build
-          if ($LastExitCode -ne 0) { $host.SetShouldExit($LastExitCode) }
 
           if ("${{ matrix.os }}" -eq "windows-2016") {
-            $CMAKE_CMD="cmake -G 'Visual Studio 15 2017 Win64' .. $EVENT_CMAKE_OPTIONS"
+            $CMAKE_CMD="cmake -G 'Visual Studio 15 2017 Win64' .."
           }
           else { # windows-2019
             $CMAKE_CMD="cmake -G 'Visual Studio 16 2019' -A x64 .. $EVENT_CMAKE_OPTIONS"
           }
-          echo "[cmake] $CMAKE_CMD"
-          Invoke-Expression $CMAKE_CMD
-          if ($LastExitCode -ne 0) { $host.SetShouldExit($LastExitCode) }
+          function cmake_configure($retry)
+          {
+            $errcode=0
+            try {
+              if ($retry -eq 0) {
+                echo "[cmake configure retry] $CMAKE_CMD"
+              } else {
+                echo "[cmake configure] $CMAKE_CMD"
+              }
+              Invoke-Expression $CMAKE_CMD
+              $errcode=$LastExitCode
+            }
+            catch {
+              $errcode=1
+            }
+            finally {
+              if ($errcode -ne 0) {
+                if ($retry -eq 0) {
+                  $host.SetShouldExit($LastExitCode)
+                } else {
+                  echo "Remove all entries in build directory"
+                  rm -r -fo *
+                  cmake_configure 0
+                }
+              }
+            }
+          }
+          cmake_configure 1
 
-          cmake --build . -j $EVENT_BUILD_PARALLEL -- /nologo /verbosity:minimal
-          if ($LastExitCode -ne 0) { $host.SetShouldExit($LastExitCode) }
+          try {
+            cmake --build . -j $EVENT_BUILD_PARALLEL -- /nologo /verbosity:minimal
+            if ($LastExitCode -ne 0) { $host.SetShouldExit($LastExitCode) }
 
-          if ("${{ matrix.EVENT_MATRIX }}" -eq "TEST_EXPORT_STATIC") {
-            python ../test-export/test-export.py static
-          }
-          elseif ("${{ matrix.EVENT_MATRIX }}" -eq "TEST_EXPORT_SHARED") {
-            python ../test-export/test-export.py shared
-          }
-          else {
-            ctest --output-on-failure -j $EVENT_TESTS_PARALLEL
+            if ("${{ matrix.EVENT_MATRIX }}" -eq "TEST_EXPORT_STATIC") {
+              python ../test-export/test-export.py static
+            }
+            elseif ("${{ matrix.EVENT_MATRIX }}" -eq "TEST_EXPORT_SHARED") {
+              python ../test-export/test-export.py shared
+            }
+            else {
+              ctest --output-on-failure -j $EVENT_TESTS_PARALLEL
+              if ($LastExitCode -ne 0) { $host.SetShouldExit($LastExitCode) }
+            }
+          } catch {
+            $host.SetShouldExit($LastExitCode)
           }
 
       - uses: actions/upload-artifact@v1