mirror of
https://gitee.com/xiaohuolufeihua/bizhang_-obav.git
synced 2026-05-21 01:12:11 +00:00
Jenkins split SITL tests into separate pipeline (#10144)
This commit is contained in:
129
.ci/Jenkinsfile-SITL_tests
Normal file
129
.ci/Jenkinsfile-SITL_tests
Normal file
@@ -0,0 +1,129 @@
|
||||
#!/usr/bin/env groovy
|
||||
|
||||
pipeline {
|
||||
agent none
|
||||
stages {
|
||||
|
||||
stage('Build') {
|
||||
steps {
|
||||
script {
|
||||
stage('sitl package') {
|
||||
node {
|
||||
docker.image("px4io/px4-dev-ros:2018-07-19").inside('-e CCACHE_BASEDIR=$WORKSPACE -v ${CCACHE_DIR}:${CCACHE_DIR}:rw -e HOME=$WORKSPACE') {
|
||||
stage("sitl package") {
|
||||
try {
|
||||
checkout(scm)
|
||||
sh('export')
|
||||
sh('make distclean')
|
||||
sh "ccache -z"
|
||||
sh('make posix_sitl_default')
|
||||
sh "ccache -s"
|
||||
sh('make posix_sitl_default sitl_gazebo')
|
||||
sh "ccache -s"
|
||||
sh('make posix_sitl_default package')
|
||||
stash(name: "px4_sitl_package", includes: "build/posix_sitl_default/*.bz2")
|
||||
}
|
||||
catch (exc) {
|
||||
throw (exc)
|
||||
}
|
||||
finally {
|
||||
sh('make distclean')
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
} // script
|
||||
} // steps
|
||||
} // Build
|
||||
|
||||
stage('ROS Tests') {
|
||||
steps {
|
||||
script {
|
||||
def missions = [
|
||||
[
|
||||
name: "VTOL standard",
|
||||
test: "mavros_posix_test_mission.test",
|
||||
mission: "vtol_new_1",
|
||||
vehicle: "standard_vtol"
|
||||
],
|
||||
[
|
||||
name: "VTOL tailsitter",
|
||||
test: "mavros_posix_test_mission.test",
|
||||
mission: "vtol_new_1",
|
||||
vehicle: "tailsitter"
|
||||
],
|
||||
[
|
||||
name: "VTOL tiltrotor",
|
||||
test: "mavros_posix_test_mission.test",
|
||||
mission: "vtol_new_1",
|
||||
vehicle: "tiltrotor"
|
||||
],
|
||||
[
|
||||
name: "MC box",
|
||||
test: "mavros_posix_test_mission.test",
|
||||
mission: "multirotor_box",
|
||||
vehicle: "iris"
|
||||
],
|
||||
[
|
||||
name: "MC offboard att",
|
||||
test: "mavros_posix_tests_offboard_attctl.test",
|
||||
mission: "",
|
||||
vehicle: "iris"
|
||||
],
|
||||
[
|
||||
name: "MC offboard pos",
|
||||
test: "mavros_posix_tests_offboard_posctl.test",
|
||||
mission: "",
|
||||
vehicle: "iris"
|
||||
]
|
||||
]
|
||||
|
||||
def test_nodes = [:]
|
||||
for (def i = 0; i < missions.size(); i++) {
|
||||
test_nodes.put(missions[i].name, createTestNode(missions[i]))
|
||||
}
|
||||
|
||||
parallel test_nodes
|
||||
} // script
|
||||
} // steps
|
||||
} // ROS Tests
|
||||
|
||||
} //stages
|
||||
environment {
|
||||
CCACHE_DIR = '/tmp/ccache'
|
||||
CI = true
|
||||
}
|
||||
options {
|
||||
buildDiscarder(logRotator(numToKeepStr: '10', artifactDaysToKeepStr: '30'))
|
||||
timeout(time: 60, unit: 'MINUTES')
|
||||
}
|
||||
} // pipeline
|
||||
|
||||
def createTestNode(Map test_def) {
|
||||
return {
|
||||
node {
|
||||
cleanWs()
|
||||
docker.image("px4io/px4-dev-ros:2018-03-30").inside('-e HOME=${WORKSPACE}') {
|
||||
stage(test_def.name) {
|
||||
try {
|
||||
sh('export')
|
||||
unstash('px4_sitl_package')
|
||||
sh('tar -xjpvf build/posix_sitl_default/px4-posix_sitl_default*.bz2')
|
||||
sh('px4-posix_sitl_default*/px4/test/rostest_px4_run.sh ' + test_def.test + ' mission:=' + test_def.mission + ' vehicle:=' + test_def.vehicle)
|
||||
sh('px4-posix_sitl_default*/px4/Tools/ecl_ekf/process_logdata_ekf.py .ros/rootfs/fs/microsd/log/*/*.ulg')
|
||||
}
|
||||
catch (exc) {
|
||||
archiveArtifacts(allowEmptyArchive: false, artifacts: '.ros/**/*.ulg, .ros/**/rosunit-*.xml, .ros/**/rostest-*.log')
|
||||
throw (exc)
|
||||
}
|
||||
finally {
|
||||
sh('px4-posix_sitl_default*/px4/Tools/upload_log.py -q --description "${JOB_NAME}: ${STAGE_NAME}" --feedback "${JOB_NAME} ${CHANGE_TITLE} ${CHANGE_URL}" --source CI .ros/rootfs/fs/microsd/log/*/*.ulg')
|
||||
archiveArtifacts(allowEmptyArchive: false, artifacts: '.ros/**/*.pdf, .ros/**/*.csv')
|
||||
}
|
||||
}
|
||||
}
|
||||
cleanWs()
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user