openpilot is an open source driver assistance system. openpilot performs the functions of Automated Lane Centering and Adaptive Cruise Control for over 200 supported car makes and models.

74 lines
1.9 KiB

#!/usr/bin/env python2
import paramiko
import os
import sys
import re
import time
import socket
def start_build(name):
ssh = paramiko.SSHClient()
ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())
key_file = open(os.path.join(os.path.dirname(__file__), "id_rsa_public"))
key = paramiko.RSAKey.from_private_key(key_file)
print("SSH to phone {}".format(name))
# Try connecting for one minute
t_start = time.time()
while True:
try:
ssh.connect(hostname=name, port=8022, pkey=key, timeout=10)
except (paramiko.ssh_exception.SSHException, socket.timeout, paramiko.ssh_exception.NoValidConnectionsError):
print("Connection failed")
if time.time() - t_start > 60:
raise
else:
break
time.sleep(1)
conn = ssh.invoke_shell()
branch = os.environ['GIT_BRANCH']
commit = os.environ.get('GIT_COMMIT', branch)
conn.send('uname -a\n')
conn.send('cd /data/openpilot_source\n')
conn.send("git reset --hard\n")
conn.send("git fetch origin\n")
conn.send("git checkout %s\n" % commit)
conn.send("git clean -xdf\n")
conn.send("git submodule update --init\n")
conn.send("git submodule foreach --recursive git reset --hard\n")
conn.send("git submodule foreach --recursive git clean -xdf\n")
conn.send("echo \"git took $SECONDS seconds\"\n")
push = "PUSH=master-ci" if branch == "master" else ""
conn.send("%s /data/openpilot_source/release/build_devel.sh\n" % push)
conn.send('echo "RESULT:" $?\n')
conn.send("exit\n")
return conn
if __name__ == "__main__":
eon_name = os.environ.get('eon_name', None)
conn = start_build(eon_name)
dat = b""
while True:
recvd = conn.recv(4096)
if len(recvd) == 0:
break
dat += recvd
sys.stdout.buffer.write(recvd)
sys.stdout.flush()
returns = re.findall(rb'^RESULT: (\d+)', dat[-1024:], flags=re.MULTILINE)
sys.exit(int(returns[0]))