mirror of
https://github.com/firestar5683/StarPilot.git
synced 2026-10-28 00:53:45 +08:00
22a8575199
Keep official openpilot ancestry and dependency licenses. Store resources directly in Git, remove LFS setup requirements, and leave the downloadable big model outside the source tree.
142 lines
3.6 KiB
Groovy
142 lines
3.6 KiB
Groovy
def phone(String ip, String step_label, String cmd) {
|
|
withCredentials([file(credentialsId: 'id_rsa', variable: 'key_file')]) {
|
|
def ssh_cmd = """
|
|
ssh -tt -o StrictHostKeyChecking=no -o ConnectTimeout=30 -o ConnectionAttempts=3 -o ServerAliveInterval=10 -o ServerAliveCountMax=3 -i ${key_file} 'comma@${ip}' /usr/bin/bash <<'END'
|
|
|
|
set -e
|
|
|
|
|
|
source ~/.bash_profile
|
|
if [ -f /etc/profile ]; then
|
|
source /etc/profile
|
|
fi
|
|
|
|
export CI=1
|
|
export TEST_DIR=${env.TEST_DIR}
|
|
export SOURCE_DIR=${env.SOURCE_DIR}
|
|
export GIT_BRANCH=${env.GIT_BRANCH}
|
|
export GIT_COMMIT=${env.GIT_COMMIT}
|
|
export PYTHONWARNINGS=error
|
|
export LOGLEVEL=debug
|
|
|
|
unset PYTHONPATH
|
|
if [ -f "${env.TEST_DIR}/.venv/bin/activate" ]; then
|
|
source "${env.TEST_DIR}/.venv/bin/activate"
|
|
fi
|
|
|
|
# TODO: this is an agnos issue
|
|
export PYTEST_ADDOPTS="-p no:asyncio"
|
|
|
|
cd ${env.TEST_DIR} || true
|
|
${cmd}
|
|
exit 0
|
|
|
|
END"""
|
|
|
|
sh script: ssh_cmd, label: step_label
|
|
}
|
|
}
|
|
|
|
def phone_steps(String device_type, steps) {
|
|
lock(resource: "", label: device_type, inversePrecedence: true, variable: 'device_ip', quantity: 1) {
|
|
timeout(time: 20, unit: 'MINUTES') {
|
|
retry (3) {
|
|
def date = sh(script: 'date', returnStdout: true).trim()
|
|
phone(device_ip, "set time", "date -s '${date}'")
|
|
phone(device_ip, "git checkout", readFile("tests/setup_device_ci.sh"))
|
|
}
|
|
steps.each { item ->
|
|
phone(device_ip, item[0], item[1])
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
|
|
|
|
pipeline {
|
|
agent any
|
|
environment {
|
|
CI = "1"
|
|
PYTHONWARNINGS= "error"
|
|
|
|
TEST_DIR = "/data/panda"
|
|
SOURCE_DIR = "/data/panda_source/"
|
|
}
|
|
options {
|
|
skipDefaultCheckout()
|
|
timeout(time: 3, unit: 'HOURS')
|
|
disableConcurrentBuilds(abortPrevious: env.BRANCH_NAME != 'master')
|
|
}
|
|
|
|
stages {
|
|
stage ('Acquire resource locks') {
|
|
options {
|
|
lock(resource: "pandas")
|
|
}
|
|
stages {
|
|
stage('Setup') {
|
|
steps {
|
|
timeout(time: 20, unit: 'MINUTES') {
|
|
deleteDir()
|
|
script {
|
|
def revision = checkout scm
|
|
env.GIT_COMMIT = revision.GIT_COMMIT
|
|
env.GIT_BRANCH = revision.GIT_BRANCH
|
|
}
|
|
sh 'PYTHONWARNINGS=default ./setup.sh'
|
|
}
|
|
}
|
|
}
|
|
stage('reset hardware') {
|
|
steps {
|
|
script {
|
|
retry (3) {
|
|
timeout(time: 3, unit: 'MINUTES') {
|
|
sh script: """#!/usr/bin/env bash
|
|
set -e
|
|
source .venv/bin/activate
|
|
python3 ./tests/hitl/reset_jungles.py
|
|
""", label: "reset hardware"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
stage('parallel tests') {
|
|
parallel {
|
|
stage('test cuatro') {
|
|
agent { docker { image 'ghcr.io/commaai/alpine-ssh'; args '--user=root'; reuseNode true } }
|
|
steps {
|
|
phone_steps("panda-cuatro", [
|
|
["build", "scons"],
|
|
["flash", "cd scripts/ && ./reflash_internal_panda.py"],
|
|
["test", "cd tests/hitl && HITL=1 python -m unittest -v test_2*.py test_[5-9]*.py"],
|
|
])
|
|
}
|
|
}
|
|
|
|
stage('test tres') {
|
|
agent { docker { image 'ghcr.io/commaai/alpine-ssh'; args '--user=root'; reuseNode true } }
|
|
steps {
|
|
phone_steps("panda-tres", [
|
|
["build", "scons"],
|
|
["flash", "cd scripts/ && ./reflash_internal_panda.py"],
|
|
["test", "cd tests/hitl && HITL=1 python -m unittest -v test_2*.py test_[5-9]*.py"],
|
|
])
|
|
}
|
|
}
|
|
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
post {
|
|
always {
|
|
deleteDir()
|
|
}
|
|
}
|
|
}
|