pipeline { agent { docker { image 'python:3.7.3' args '--user=root' } } environment { COMMA_JWT = credentials('athena-test-jwt') } stages { stage('Release Build') { when { branch 'devel-staging' } steps { lock(resource: "", label: 'eon-build', inversePrecedence: true, variable: 'eon_ip', quantity: 1){ timeout(time: 60, unit: 'MINUTES') { dir(path: 'selfdrive/test') { sh 'pip install paramiko' sh 'python phone_ci.py "cd release && PUSH=1 ./build_release2.sh"' } } } } } stage('On-device Tests') { when { not { anyOf { branch 'master-ci'; branch 'devel'; branch 'devel-staging'; branch 'release2'; branch 'release2-staging'; branch 'dashcam'; branch 'dashcam-staging' } } } parallel { stage('Build') { environment { CI_PUSH = "${env.BRANCH_NAME == 'master' ? 'master-ci' : ''}" } steps { lock(resource: "", label: 'eon', inversePrecedence: true, variable: 'eon_ip', quantity: 1){ timeout(time: 60, unit: 'MINUTES') { dir(path: 'selfdrive/test') { sh 'pip install paramiko' sh 'python phone_ci.py "cd release && ./build_devel.sh"' } } } } } stage('Replay Tests') { steps { lock(resource: "", label: 'eon2', inversePrecedence: true, variable: 'eon_ip', quantity: 1){ timeout(time: 60, unit: 'MINUTES') { dir(path: 'selfdrive/test') { sh 'pip install paramiko' sh 'python phone_ci.py "cd selfdrive/test/process_replay && ./camera_replay.py"' } } } } } stage('HW Tests') { steps { lock(resource: "", label: 'eon', inversePrecedence: true, variable: 'eon_ip', quantity: 1){ timeout(time: 60, unit: 'MINUTES') { dir(path: 'selfdrive/test') { sh 'pip install paramiko' sh 'python phone_ci.py "SCONS_CACHE=1 scons -j3 cereal/ && \ nosetests -s selfdrive/test/test_sounds.py && \ nosetests -s selfdrive/boardd/tests/test_boardd_loopback.py"' } } } } } } } } }