diff options
author | yuangongji <yuangongji@foxmail.com> | 2020-05-28 11:50:49 +0800 |
---|---|---|
committer | yuangongji <82787816@qq.com> | 2020-05-28 20:10:47 +0800 |
commit | c753ae876e2e1e2630ee9fac909027f4e52f0570 (patch) | |
tree | ed0708c65841b2da9995f0d84c2c0a25b0e56dab /.github | |
parent | a9aa2b3607c8adf9846aa6a01e070130f4d6dcb9 (diff) | |
download | libevent-c753ae876e2e1e2630ee9fac909027f4e52f0570.tar.gz |
CI: catch failures and retry
Diffstat (limited to '.github')
-rw-r--r-- | .github/workflows/linux.yml | 2 | ||||
-rw-r--r-- | .github/workflows/macos.yml | 2 | ||||
-rw-r--r-- | .github/workflows/mingw.yml | 24 | ||||
-rw-r--r-- | .github/workflows/windows.yml | 157 |
4 files changed, 114 insertions, 71 deletions
diff --git a/.github/workflows/linux.yml b/.github/workflows/linux.yml index c316de13..e4bbcf7d 100644 --- a/.github/workflows/linux.yml +++ b/.github/workflows/linux.yml @@ -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 diff --git a/.github/workflows/macos.yml b/.github/workflows/macos.yml index 60429779..910a627a 100644 --- a/.github/workflows/macos.yml +++ b/.github/workflows/macos.yml @@ -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 diff --git a/.github/workflows/mingw.yml b/.github/workflows/mingw.yml index 8758242c..a297e8ca 100644 --- a/.github/workflows/mingw.yml +++ b/.github/workflows/mingw.yml @@ -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 diff --git a/.github/workflows/windows.yml b/.github/workflows/windows.yml index 15e75acd..b30038a0 100644 --- a/.github/workflows/windows.yml +++ b/.github/workflows/windows.yml @@ -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 |