px4-firmware/.ci/Jenkinsfile-hardware

147 lines
4.6 KiB
Plaintext

pipeline {
agent none
stages {
stage('Build') {
parallel {
stage('px4fmu-v2') {
agent {
docker {
image 'px4io/px4-dev-nuttx:2018-09-11'
args '-e CCACHE_BASEDIR=$WORKSPACE -v ${CCACHE_DIR}:${CCACHE_DIR}:rw'
}
}
steps {
sh 'export'
sh 'make distclean'
sh 'ccache -z'
sh 'git fetch --tags'
sh 'make nuttx_px4fmu-v2_test'
sh 'make sizes'
sh 'ccache -s'
stash includes: 'build/nuttx_px4fmu-v2_test/nuttx_px4fmu-v2_test.elf', name: 'px4fmu-v2_test'
stash includes: 'Tools/HIL/monitor_firmware_upload.py, Tools/HIL/run_tests.py', name: 'scripts-px4fmu-v2'
}
post {
always {
sh 'make distclean'
}
}
}
stage('px4fmu-v4 (stackcheck)') {
agent {
docker {
image 'px4io/px4-dev-nuttx:2018-09-11'
args '-e CCACHE_BASEDIR=$WORKSPACE -v ${CCACHE_DIR}:${CCACHE_DIR}:rw'
}
}
steps {
sh 'export'
sh 'make distclean'
sh 'ccache -z'
sh 'git fetch --tags'
sh 'make nuttx_px4fmu-v4_stackcheck'
sh 'make sizes'
sh 'ccache -s'
stash includes: 'build/nuttx_px4fmu-v4_stackcheck/nuttx_px4fmu-v4_stackcheck.elf', name: 'px4fmu-v4_stackcheck'
stash includes: 'Tools/HIL/monitor_firmware_upload.py, Tools/HIL/run_tests.py', name: 'scripts-px4fmu-v4'
}
post {
always {
sh 'make distclean'
}
}
}
} // parallel
} // stage Build
stage('Flash and Run') {
parallel {
stage('px4fmu-v2') {
agent {
label 'px4fmu-v2'
}
steps {
script {
try {
sh 'export'
sh 'find /dev/serial'
unstash 'scripts-px4fmu-v2'
unstash 'px4fmu-v2_test'
sh ''' gdb -nx --batch \
-ex "target extended-remote `find /dev/serial -name *Black_Magic_Probe_*-if00`" \
-ex "monitor version" \
-ex "monitor connect_srst enable" \
-ex "monitor swdp_scan" \
-ex "attach 1" \
-ex "load" \
-ex "kill" \
build/nuttx_px4fmu-v2_test/nuttx_px4fmu-v2_test.elf
'''
sh './Tools/HIL/monitor_firmware_upload.py --device `find /dev/serial -name *Black_Magic_Probe_*-if02` --baudrate 57600'
sh './Tools/HIL/run_tests.py --device `find /dev/serial -name *Black_Magic_Probe_*-if02`'
} catch (Exception err) {
// always report passed for now
currentBuild.result = 'SUCCESS'
}
} // script
}
options {
timeout(time: 300, unit: 'SECONDS')
}
}
stage('px4fmu-v4') {
agent {
label 'px4fmu-v4'
}
steps {
script {
try {
sh 'export'
sh 'find /dev/serial'
unstash 'scripts-px4fmu-v4'
unstash 'px4fmu-v4_stackcheck'
sh ''' gdb -nx --batch \
-ex "target extended-remote `find /dev/serial -name *Black_Magic_Probe_*-if00`" \
-ex "monitor version" \
-ex "monitor connect_srst enable" \
-ex "monitor swdp_scan" \
-ex "attach 1" \
-ex "load" \
-ex "kill" \
build/nuttx_px4fmu-v4_stackcheck/nuttx_px4fmu-v4_stackcheck.elf
'''
sh './Tools/HIL/monitor_firmware_upload.py --device `find /dev/serial -name *Black_Magic_Probe_*-if02` --baudrate 57600'
sh './Tools/HIL/run_tests.py --device `find /dev/serial -name *Black_Magic_Probe_*-if02`'
} catch (Exception err) {
// always report passed for now
currentBuild.result = 'SUCCESS'
}
} // script
}
options {
timeout(time: 300, unit: 'SECONDS')
}
}
} // parallel
} // stage Flash
} // stages
environment {
CCACHE_DIR = '/tmp/ccache'
CI = true
}
options {
buildDiscarder(logRotator(numToKeepStr: '10', artifactDaysToKeepStr: '30'))
timeout(time: 60, unit: 'MINUTES')
}
}