add retry build.

This commit is contained in:
Marios S. Kyriakou
2024-04-21 11:48:57 +03:00
parent 8bf2334708
commit cd242aa819
4 changed files with 114 additions and 31 deletions

View File

@@ -9,27 +9,52 @@ on:
jobs: jobs:
build: build:
runs-on: ubuntu-latest runs-on: ubuntu-latest
strategy:
fail-fast: false
steps: steps:
- uses: actions/checkout@v4 - uses: actions/checkout@v4
- name: Setup build directory
run: mkdir buildproducts
- name: CMake - name: Setup build directory
working-directory: ./buildproducts run: mkdir buildproducts
run: cmake ..
- name: Make - name: CMake
working-directory: ./buildproducts working-directory: ./buildproducts
run: make run: |
retry=0
max_retries=3
until cmake ..; do
retry=$((retry+1))
echo "Retry $retry/$max_retries..."
if [ "$retry" -ge "$max_retries" ]; then
echo "CMake configuration failed after $max_retries attempts."
exit 1
fi
sleep 10
done
- name: Copy header files to build directory - name: Make
run: | working-directory: ./buildproducts
cp include/epanet2.h buildproducts/ run: |
cp include/epanet2_2.h buildproducts/ retry=0
cp include/epanet2_enums.h buildproducts/ max_retries=3
until make; do
- uses: actions/upload-artifact@v4 retry=$((retry+1))
with: echo "Retry $retry/$max_retries..."
name: libepanet-output if [ "$retry" -ge "$max_retries" ]; then
path: buildproducts/ echo "Make build failed after $max_retries attempts."
exit 1
fi
sleep 10
done
- name: Copy header files to build directory
run: |
cp include/epanet2.h buildproducts/
cp include/epanet2_2.h buildproducts/
cp include/epanet2_enums.h buildproducts/
- uses: actions/upload-artifact@v4
with:
name: libepanet-output
path: buildproducts/

View File

@@ -9,26 +9,51 @@ on:
jobs: jobs:
build: build:
runs-on: macos-latest runs-on: macos-latest
strategy:
fail-fast: false
steps: steps:
- uses: actions/checkout@v4 - uses: actions/checkout@v4
- name: Setup build directory - name: Setup build directory
run: mkdir buildproducts run: mkdir buildproducts
- name: CMake - name: CMake
working-directory: ./buildproducts working-directory: ./buildproducts
run: cmake .. run: |
retry=0
max_retries=3
until cmake ..; do
((retry++))
echo "Retry $retry/$max_retries..."
if [ "$retry" -ge "$max_retries" ]; then
echo "CMake configuration failed after $max_retries attempts."
exit 1
fi
sleep 10
done
- name: Make - name: Make
working-directory: ./buildproducts working-directory: ./buildproducts
run: make run: |
retry=0
max_retries=3
until make; do
((retry++))
echo "Retry $retry/$max_retries..."
if [ "$retry" -ge "$max_retries" ]; then
echo "Make build failed after $max_retries attempts."
exit 1
fi
sleep 10
done
- name: Copy header files to build directory - name: Copy header files to build directory
run: | run: |
cp include/epanet2.h buildproducts/ cp include/epanet2.h buildproducts/
cp include/epanet2_2.h buildproducts/ cp include/epanet2_2.h buildproducts/
cp include/epanet2_enums.h buildproducts/ cp include/epanet2_enums.h buildproducts/
- uses: actions/upload-artifact@v4 - uses: actions/upload-artifact@v4
with: with:
name: libepanet-output name: libepanet-output

View File

@@ -9,6 +9,8 @@ on:
jobs: jobs:
build: build:
runs-on: windows-latest runs-on: windows-latest
strategy:
fail-fast: false
steps: steps:
- name: Checkout repository - name: Checkout repository
@@ -19,7 +21,21 @@ jobs:
- name: CMake - name: CMake
working-directory: ./buildproducts working-directory: ./buildproducts
run: cmake .. -A Win32 && cmake --build . --config Release shell: pwsh
run: |
$retryCount = 0
$maxRetries = 3
do {
cmake .. -A Win32 && cmake --build . --config Release
if ($LASTEXITCODE -eq 0) { break }
Write-Host "Retry $($retryCount + 1)/$maxRetries..."
Start-Sleep -Seconds 10
$retryCount++
} while ($retryCount -lt $maxRetries)
if ($retryCount -eq $maxRetries) {
Write-Host "CMake build failed after $maxRetries attempts."
exit 1
}
- name: Copy header files to build directory - name: Copy header files to build directory
run: | run: |
@@ -31,4 +47,4 @@ jobs:
- uses: actions/upload-artifact@v4 - uses: actions/upload-artifact@v4
with: with:
name: epanet2-win32 name: epanet2-win32
path: buildproducts\bin\Release path: buildproducts\bin\Release

View File

@@ -9,6 +9,8 @@ on:
jobs: jobs:
build: build:
runs-on: windows-latest runs-on: windows-latest
strategy:
fail-fast: false
steps: steps:
- name: Checkout repository - name: Checkout repository
@@ -19,16 +21,31 @@ jobs:
- name: CMake - name: CMake
working-directory: ./buildproducts working-directory: ./buildproducts
run: cmake .. -A x64 && cmake --build . --config Release shell: pwsh
run: |
$retryCount = 0
$maxRetries = 3
do {
cmake .. -A x64 # Specify architecture for 64-bit
cmake --build . --config Release
if ($LASTEXITCODE -eq 0) { break }
Write-Host "Retry $($retryCount + 1)/$maxRetries..."
Start-Sleep -Seconds 10
$retryCount++
} while ($retryCount -lt $maxRetries)
if ($retryCount -eq $maxRetries) {
Write-Host "CMake build failed after $maxRetries attempts."
exit 1
}
- name: Copy header files to build directory - name: Copy header files to build directory
run: | run: |
copy include\epanet2.h buildproducts\bin\Release copy include\epanet2.h buildproducts\bin\Release
copy include\epanet2_2.h buildproducts\bin\Release copy include\epanet2_2.h buildproducts\bin\Release
copy include\epanet2_enums.h buildproducts\bin\Release copy include\epanet2_enums.h buildproducts\bin\Release
shell: cmd shell: cmd
- uses: actions/upload-artifact@v4 - uses: actions/upload-artifact@v4
with: with:
name: epanet2-win64 name: epanet2-win64
path: buildproducts\bin\Release path: buildproducts\bin\Release