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: 30, 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('Sound Test') {
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								          steps {
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								            lock(resource: "", label: 'eon', inversePrecedence: true, variable: 'eon_ip', quantity: 1){
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								              timeout(time: 30, unit: 'MINUTES') {
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								                dir(path: 'selfdrive/test') {
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								                  sh 'pip install paramiko'
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								                  sh 'python phone_ci.py "SCONS_CACHE=1 scons -j3 cereal/ && cd selfdrive/test && nosetests -s test_sounds.py"'
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								                }
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								              }
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								            }
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								          }
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								        }
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								      }
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    }
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								  }
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								}