summaryrefslogtreecommitdiff
path: root/.github
diff options
context:
space:
mode:
authoryuangongji <yuangongji@foxmail.com>2020-05-28 11:50:49 +0800
committeryuangongji <82787816@qq.com>2020-05-28 20:10:47 +0800
commitc753ae876e2e1e2630ee9fac909027f4e52f0570 (patch)
treeed0708c65841b2da9995f0d84c2c0a25b0e56dab /.github
parenta9aa2b3607c8adf9846aa6a01e070130f4d6dcb9 (diff)
downloadlibevent-c753ae876e2e1e2630ee9fac909027f4e52f0570.tar.gz
CI: catch failures and retry
Diffstat (limited to '.github')
-rw-r--r--.github/workflows/linux.yml2
-rw-r--r--.github/workflows/macos.yml2
-rw-r--r--.github/workflows/mingw.yml24
-rw-r--r--.github/workflows/windows.yml157
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