Jenkinsfile: ensure usb hub commands are wrapped in retry blocks
Some checks failed
Build / host (3.10.0, map[os:ubuntu shell:bash]) (push) Failing after 12s
Build / host (3.16.0, map[os:ubuntu shell:bash]) (push) Failing after 13s
Build / host (3.21.0, map[os:ubuntu shell:bash]) (push) Failing after 11s
Build / host (4.0.0, map[os:ubuntu shell:bash]) (push) Failing after 9s
Build / host (latest, map[os:ubuntu shell:bash]) (push) Failing after 9s
Build / firmware (HACKRF_ONE, 3.10.0, ubuntu) (push) Failing after 9s
Build / firmware (HACKRF_ONE, latest, ubuntu) (push) Failing after 8s
Build / firmware (JAWBREAKER, 3.10.0, ubuntu) (push) Failing after 9s
Build / firmware (JAWBREAKER, latest, ubuntu) (push) Failing after 9s
Build / firmware (PRALINE, 3.10.0, ubuntu) (push) Failing after 8s
Build / firmware (PRALINE, latest, ubuntu) (push) Failing after 12s
Build / firmware (RAD1O, 3.10.0, ubuntu) (push) Failing after 10s
Build / firmware (RAD1O, latest, ubuntu) (push) Failing after 10s
Build / firmware (UNIVERSAL, 3.10.0, ubuntu) (push) Failing after 7s
Build / firmware (UNIVERSAL, latest, ubuntu) (push) Failing after 8s
Check code style / clang-format (push) Failing after 17s
Check code style / clang-format-1 (push) Failing after 17s
Check code style / clang-format-2 (push) Failing after 19s
Check code style / clang-format-3 (push) Failing after 7s
Check includes / includes-check (HACKRF_ONE, 3.10.0) (push) Failing after 6s
Check includes / includes-check (HACKRF_ONE, latest) (push) Failing after 5s
Check includes / includes-check (JAWBREAKER, 3.10.0) (push) Failing after 5s
Check includes / includes-check (JAWBREAKER, latest) (push) Failing after 3s
Check includes / includes-check (PRALINE, 3.10.0) (push) Failing after 4s
Check includes / includes-check (PRALINE, latest) (push) Failing after 3s
Check includes / includes-check (RAD1O, 3.10.0) (push) Failing after 3s
Check includes / includes-check (RAD1O, latest) (push) Failing after 3s
Check includes / includes-check (UNIVERSAL, 3.10.0) (push) Failing after 4s
Check includes / includes-check (UNIVERSAL, latest) (push) Failing after 3s
Build / host (3.10.0, map[os:macos shell:bash]) (push) Has been cancelled
Build / host (3.16.0, map[os:macos shell:bash]) (push) Has been cancelled
Build / host (3.21.0, -DPKG_CONFIG_EXECUTABLE=C:/vcpkg/installed/x64-windows/tools/pkgconf/pkgconf.exe -DCMAKE_TOOLCHAIN_FILE=C:/vcpkg/scripts/buildsystems/vcpkg.cmake --install-prefix=$env:GITHUB_WORKSPACE/install, map[os:windows shell:pwsh]) (push) Has been cancelled
Build / host (3.21.0, map[os:macos shell:bash]) (push) Has been cancelled
Build / host (4.0.0, -DPKG_CONFIG_EXECUTABLE=C:/vcpkg/installed/x64-windows/tools/pkgconf/pkgconf.exe -DCMAKE_TOOLCHAIN_FILE=C:/vcpkg/scripts/buildsystems/vcpkg.cmake --install-prefix=$env:GITHUB_WORKSPACE/install, map[os:windows shell:pwsh]) (push) Has been cancelled
Build / host (4.0.0, map[os:macos shell:bash]) (push) Has been cancelled
Build / host (latest, --install-prefix=/usr/local, map[os:windows shell:msys2]) (push) Has been cancelled
Build / host (latest, -DPKG_CONFIG_EXECUTABLE=C:/vcpkg/installed/x64-windows/tools/pkgconf/pkgconf.exe -DCMAKE_TOOLCHAIN_FILE=C:/vcpkg/scripts/buildsystems/vcpkg.cmake --install-prefix=$env:GITHUB_WORKSPACE/install, map[os:windows shell:pwsh]) (push) Has been cancelled
Build / host (latest, map[os:macos shell:bash]) (push) Has been cancelled
Build / firmware (HACKRF_ONE, latest, windows) (push) Has been cancelled
Build / firmware (JAWBREAKER, latest, windows) (push) Has been cancelled
Build / firmware (PRALINE, 3.10.0, macos) (push) Has been cancelled
Build / firmware (PRALINE, latest, macos) (push) Has been cancelled
Build / firmware (PRALINE, latest, windows) (push) Has been cancelled
Build / firmware (RAD1O, latest, windows) (push) Has been cancelled
Build / firmware (UNIVERSAL, 3.10.0, macos) (push) Has been cancelled
Build / firmware (UNIVERSAL, latest, macos) (push) Has been cancelled
Build / firmware (UNIVERSAL, latest, windows) (push) Has been cancelled
Some checks failed
Build / host (3.10.0, map[os:ubuntu shell:bash]) (push) Failing after 12s
Build / host (3.16.0, map[os:ubuntu shell:bash]) (push) Failing after 13s
Build / host (3.21.0, map[os:ubuntu shell:bash]) (push) Failing after 11s
Build / host (4.0.0, map[os:ubuntu shell:bash]) (push) Failing after 9s
Build / host (latest, map[os:ubuntu shell:bash]) (push) Failing after 9s
Build / firmware (HACKRF_ONE, 3.10.0, ubuntu) (push) Failing after 9s
Build / firmware (HACKRF_ONE, latest, ubuntu) (push) Failing after 8s
Build / firmware (JAWBREAKER, 3.10.0, ubuntu) (push) Failing after 9s
Build / firmware (JAWBREAKER, latest, ubuntu) (push) Failing after 9s
Build / firmware (PRALINE, 3.10.0, ubuntu) (push) Failing after 8s
Build / firmware (PRALINE, latest, ubuntu) (push) Failing after 12s
Build / firmware (RAD1O, 3.10.0, ubuntu) (push) Failing after 10s
Build / firmware (RAD1O, latest, ubuntu) (push) Failing after 10s
Build / firmware (UNIVERSAL, 3.10.0, ubuntu) (push) Failing after 7s
Build / firmware (UNIVERSAL, latest, ubuntu) (push) Failing after 8s
Check code style / clang-format (push) Failing after 17s
Check code style / clang-format-1 (push) Failing after 17s
Check code style / clang-format-2 (push) Failing after 19s
Check code style / clang-format-3 (push) Failing after 7s
Check includes / includes-check (HACKRF_ONE, 3.10.0) (push) Failing after 6s
Check includes / includes-check (HACKRF_ONE, latest) (push) Failing after 5s
Check includes / includes-check (JAWBREAKER, 3.10.0) (push) Failing after 5s
Check includes / includes-check (JAWBREAKER, latest) (push) Failing after 3s
Check includes / includes-check (PRALINE, 3.10.0) (push) Failing after 4s
Check includes / includes-check (PRALINE, latest) (push) Failing after 3s
Check includes / includes-check (RAD1O, 3.10.0) (push) Failing after 3s
Check includes / includes-check (RAD1O, latest) (push) Failing after 3s
Check includes / includes-check (UNIVERSAL, 3.10.0) (push) Failing after 4s
Check includes / includes-check (UNIVERSAL, latest) (push) Failing after 3s
Build / host (3.10.0, map[os:macos shell:bash]) (push) Has been cancelled
Build / host (3.16.0, map[os:macos shell:bash]) (push) Has been cancelled
Build / host (3.21.0, -DPKG_CONFIG_EXECUTABLE=C:/vcpkg/installed/x64-windows/tools/pkgconf/pkgconf.exe -DCMAKE_TOOLCHAIN_FILE=C:/vcpkg/scripts/buildsystems/vcpkg.cmake --install-prefix=$env:GITHUB_WORKSPACE/install, map[os:windows shell:pwsh]) (push) Has been cancelled
Build / host (3.21.0, map[os:macos shell:bash]) (push) Has been cancelled
Build / host (4.0.0, -DPKG_CONFIG_EXECUTABLE=C:/vcpkg/installed/x64-windows/tools/pkgconf/pkgconf.exe -DCMAKE_TOOLCHAIN_FILE=C:/vcpkg/scripts/buildsystems/vcpkg.cmake --install-prefix=$env:GITHUB_WORKSPACE/install, map[os:windows shell:pwsh]) (push) Has been cancelled
Build / host (4.0.0, map[os:macos shell:bash]) (push) Has been cancelled
Build / host (latest, --install-prefix=/usr/local, map[os:windows shell:msys2]) (push) Has been cancelled
Build / host (latest, -DPKG_CONFIG_EXECUTABLE=C:/vcpkg/installed/x64-windows/tools/pkgconf/pkgconf.exe -DCMAKE_TOOLCHAIN_FILE=C:/vcpkg/scripts/buildsystems/vcpkg.cmake --install-prefix=$env:GITHUB_WORKSPACE/install, map[os:windows shell:pwsh]) (push) Has been cancelled
Build / host (latest, map[os:macos shell:bash]) (push) Has been cancelled
Build / firmware (HACKRF_ONE, latest, windows) (push) Has been cancelled
Build / firmware (JAWBREAKER, latest, windows) (push) Has been cancelled
Build / firmware (PRALINE, 3.10.0, macos) (push) Has been cancelled
Build / firmware (PRALINE, latest, macos) (push) Has been cancelled
Build / firmware (PRALINE, latest, windows) (push) Has been cancelled
Build / firmware (RAD1O, latest, windows) (push) Has been cancelled
Build / firmware (UNIVERSAL, 3.10.0, macos) (push) Has been cancelled
Build / firmware (UNIVERSAL, latest, macos) (push) Has been cancelled
Build / firmware (UNIVERSAL, latest, windows) (push) Has been cancelled
This commit is contained in:
parent
f8c3856d7c
commit
e1dc052815
1 changed files with 88 additions and 87 deletions
175
Jenkinsfile
vendored
175
Jenkinsfile
vendored
|
|
@ -20,6 +20,9 @@ pipeline {
|
|||
agent any
|
||||
stages {
|
||||
stage('Build Docker Image') {
|
||||
options {
|
||||
timeout(time: 20, unit: 'MINUTES')
|
||||
}
|
||||
steps {
|
||||
sh 'docker build -t hackrf https://github.com/greatscottgadgets/hackrf.git'
|
||||
}
|
||||
|
|
@ -32,35 +35,34 @@ pipeline {
|
|||
args docker_args
|
||||
}
|
||||
}
|
||||
options {
|
||||
timeout(time: 20, unit: 'MINUTES')
|
||||
}
|
||||
steps {
|
||||
sh './ci-scripts/install_host.sh'
|
||||
sh './ci-scripts/build_firmware.sh HACKRF_ONE'
|
||||
script {
|
||||
allOff();
|
||||
allOff()
|
||||
reset('h1_eut')
|
||||
}
|
||||
sh 'sleep 1s'
|
||||
retry(3) {
|
||||
script {
|
||||
reset('h1_eut')
|
||||
}
|
||||
sh 'sleep 1s'
|
||||
sh './ci-scripts/test_host.sh'
|
||||
}
|
||||
retry(3) {
|
||||
script {
|
||||
reset('h1_tester h1_eut')
|
||||
}
|
||||
sh 'sleep 1s'
|
||||
script {
|
||||
// Allow 5 minutes for the test to run
|
||||
runCommand(5, 'MINUTES', "HackRF One Test", h1_test)
|
||||
allOff()
|
||||
}
|
||||
script {
|
||||
reset('h1_tester h1_eut')
|
||||
}
|
||||
sh 'sleep 1s'
|
||||
script {
|
||||
// Allow up to 3 retries 5 minutes each for the HIL test
|
||||
runCommand(3, 5, 'MINUTES', "HackRF One Test", h1_test)
|
||||
}
|
||||
script {
|
||||
allOff()
|
||||
reset('h1_eut')
|
||||
}
|
||||
sh 'sleep 1s'
|
||||
retry(3) {
|
||||
script {
|
||||
reset('h1_eut')
|
||||
}
|
||||
sh 'sleep 1s'
|
||||
sh 'python3 ci-scripts/test_sgpio_debug.py'
|
||||
}
|
||||
}
|
||||
|
|
@ -73,35 +75,34 @@ pipeline {
|
|||
args docker_args
|
||||
}
|
||||
}
|
||||
options {
|
||||
timeout(time: 20, unit: 'MINUTES')
|
||||
}
|
||||
steps {
|
||||
sh './ci-scripts/install_host.sh'
|
||||
sh './ci-scripts/build_firmware.sh UNIVERSAL'
|
||||
script {
|
||||
allOff();
|
||||
allOff()
|
||||
reset('h1_eut')
|
||||
}
|
||||
sh 'sleep 1s'
|
||||
retry(3) {
|
||||
script {
|
||||
reset('h1_eut')
|
||||
}
|
||||
sh 'sleep 1s'
|
||||
sh './ci-scripts/test_host.sh'
|
||||
}
|
||||
retry(3) {
|
||||
script {
|
||||
reset('h1_tester h1_eut')
|
||||
}
|
||||
sh 'sleep 1s'
|
||||
script {
|
||||
// Allow 5 minutes for the test to run
|
||||
runCommand(5, 'MINUTES', "HackRF One Test", h1_test)
|
||||
allOff()
|
||||
}
|
||||
script {
|
||||
reset('h1_tester h1_eut')
|
||||
}
|
||||
sh 'sleep 1s'
|
||||
script {
|
||||
// Allow up to 3 retries 5 minutes each for the HIL test
|
||||
runCommand(3, 5, 'MINUTES', "HackRF One Test", h1_test)
|
||||
}
|
||||
script {
|
||||
allOff()
|
||||
reset('h1_eut')
|
||||
}
|
||||
sh 'sleep 1s'
|
||||
retry(3) {
|
||||
script {
|
||||
reset('h1_eut')
|
||||
}
|
||||
sh 'sleep 1s'
|
||||
sh 'python3 ci-scripts/test_sgpio_debug.py'
|
||||
}
|
||||
}
|
||||
|
|
@ -114,28 +115,27 @@ pipeline {
|
|||
args "$docker_args"
|
||||
}
|
||||
}
|
||||
options {
|
||||
timeout(time: 20, unit: 'MINUTES')
|
||||
}
|
||||
steps {
|
||||
sh './ci-scripts/install_host.sh'
|
||||
sh './ci-scripts/build_firmware.sh PRALINE'
|
||||
script {
|
||||
allOff();
|
||||
allOff()
|
||||
reset('hpro_eut')
|
||||
}
|
||||
sh 'sleep 1s'
|
||||
retry(3) {
|
||||
script {
|
||||
reset('hpro_eut')
|
||||
}
|
||||
sh 'sleep 1s'
|
||||
sh './ci-scripts/test_host.sh'
|
||||
}
|
||||
retry(3) {
|
||||
script {
|
||||
reset('hpro_tester hpro_eut')
|
||||
}
|
||||
sh 'sleep 1s'
|
||||
script {
|
||||
// Allow 5 minutes for the test to run
|
||||
runCommand(5, 'MINUTES', "HackRF Pro Test", hpro_test)
|
||||
}
|
||||
script {
|
||||
reset('hpro_tester hpro_eut')
|
||||
}
|
||||
sh 'sleep 1s'
|
||||
script {
|
||||
// Allow up to 3 retries 5 minutes each for the HIL test
|
||||
runCommand(3, 5, 'MINUTES', "HackRF Pro Test", hpro_test)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -147,28 +147,27 @@ pipeline {
|
|||
args "$docker_args"
|
||||
}
|
||||
}
|
||||
options {
|
||||
timeout(time: 20, unit: 'MINUTES')
|
||||
}
|
||||
steps {
|
||||
sh './ci-scripts/install_host.sh'
|
||||
sh './ci-scripts/build_firmware.sh UNIVERSAL'
|
||||
script {
|
||||
allOff();
|
||||
allOff()
|
||||
reset('hpro_eut')
|
||||
}
|
||||
sh 'sleep 1s'
|
||||
retry(3) {
|
||||
script {
|
||||
reset('hpro_eut')
|
||||
}
|
||||
sh 'sleep 1s'
|
||||
sh './ci-scripts/test_host.sh'
|
||||
}
|
||||
retry(3) {
|
||||
script {
|
||||
reset('hpro_tester hpro_eut')
|
||||
}
|
||||
sh 'sleep 1s'
|
||||
script {
|
||||
// Allow 5 minutes for the test to run
|
||||
runCommand(5, 'MINUTES', "HackRF Pro Test", hpro_test)
|
||||
}
|
||||
script {
|
||||
reset('hpro_tester hpro_eut')
|
||||
}
|
||||
sh 'sleep 1s'
|
||||
script {
|
||||
// Allow up to 3 retries 5 minutes each for the HIL test
|
||||
runCommand(3, 5, 'MINUTES', "HackRF Pro Test", hpro_test)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -184,32 +183,34 @@ pipeline {
|
|||
}
|
||||
|
||||
def allOff() {
|
||||
// Allow 20 seconds for the USB hub port power server to respond
|
||||
runCommand(20, 'SECONDS', 'USB hub port power server command', "hubs all off")
|
||||
// Allow up to 3 retries, 20 seconds each, for the USB hub port power server to respond appropriately
|
||||
runCommand(3, 20, 'SECONDS', 'USB hub port power server command', "hubs all off")
|
||||
}
|
||||
|
||||
def reset(devices) {
|
||||
// Allow 20 seconds for the USB hub port power server to respond
|
||||
runCommand(20, 'SECONDS', 'USB hub port power server command', "hubs ${devices} reset")
|
||||
// Allow up to 3 retries, 20 seconds each, for the USB hub port power server to respond appropriately
|
||||
runCommand(3, 20, 'SECONDS', 'USB hub port power server command', "hubs ${devices} reset")
|
||||
}
|
||||
|
||||
def runCommand(time, unit, title, cmd) {
|
||||
try {
|
||||
timeout(time: time, unit: unit) {
|
||||
sh "${cmd}"
|
||||
def runCommand(retries, time, unit, title, cmd) {
|
||||
retry(retries) {
|
||||
try {
|
||||
timeout(time: time, unit: unit) {
|
||||
sh "${cmd}"
|
||||
}
|
||||
} catch (FlowInterruptedException err) {
|
||||
// Check if the cause was specifically an exceeded timeout
|
||||
def cause = err.getCauses().get(0)
|
||||
if (cause instanceof org.jenkinsci.plugins.workflow.steps.TimeoutStepExecution.ExceededTimeout) {
|
||||
echo "${title} timeout reached."
|
||||
throw err // Re-throw the exception to fail the build
|
||||
} else {
|
||||
echo "Build interrupted for another reason."
|
||||
throw err // Re-throw the exception to fail the build
|
||||
}
|
||||
} catch (Exception err) {
|
||||
echo "An unrelated error occurred: ${err.getMessage()}"
|
||||
throw err
|
||||
}
|
||||
} catch (FlowInterruptedException err) {
|
||||
// Check if the cause was specifically an exceeded timeout
|
||||
def cause = err.getCauses().get(0)
|
||||
if (cause instanceof org.jenkinsci.plugins.workflow.steps.TimeoutStepExecution.ExceededTimeout) {
|
||||
echo "${title} timeout reached."
|
||||
throw err // Re-throw the exception to fail the build
|
||||
} else {
|
||||
echo "Build interrupted for another reason."
|
||||
throw err // Re-throw the exception to fail the build
|
||||
}
|
||||
} catch (Exception err) {
|
||||
echo "An unrelated error occurred: ${err.getMessage()}"
|
||||
throw err
|
||||
}
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue