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') } }