From 0e80210f33466e32b00ec4c0912678202f11e9ac Mon Sep 17 00:00:00 2001 From: Anthony Lamping <lamping.ap@gmail.com> Date: Wed, 2 May 2018 09:47:12 -0400 Subject: [PATCH] cmake: package px4 with sitl_gazebo plugins for jenkins ROS tests --- Jenkinsfile | 148 +++++++++++++++++++++------------ platforms/posix/CMakeLists.txt | 77 ++++++++++++++++- 2 files changed, 168 insertions(+), 57 deletions(-) diff --git a/Jenkinsfile b/Jenkinsfile index 256d655b35..24eb2133d7 100644 --- a/Jenkinsfile +++ b/Jenkinsfile @@ -77,6 +77,28 @@ pipeline { builds["eagle (linux)"] = createBuildNodeDockerLogin(docker_snapdragon, 'docker_hub_dagar', 'posix_eagle_default') builds["eagle (qurt)"] = createBuildNodeDockerLogin(docker_snapdragon, 'docker_hub_dagar', 'qurt_eagle_default') + // posix_sitl_default with package + builds["sitl"] = { + node { + stage("Build Test sitl") { + docker.image(docker_ros).inside('-e CCACHE_BASEDIR=$WORKSPACE -v ${CCACHE_DIR}:${CCACHE_DIR}:rw -e HOME=$WORKSPACE') { + stage("sitl") { + 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 "make posix_sitl_default package" + stash name: "px4_sitl_package", includes: "build/posix_sitl_default/*.zip" + sh "make distclean" + } + } + } + } + } + // MAC OS posix_sitl_default builds["sitl (OSX)"] = { node("mac") { @@ -286,15 +308,17 @@ pipeline { steps { sh 'export' sh 'make distclean; rm -rf .ros; rm -rf .gazebo' - sh 'git fetch --tags' - sh 'make posix_sitl_default' - sh 'make posix_sitl_default sitl_gazebo' - sh './test/rostest_px4_run.sh mavros_posix_test_mission.test mission:=vtol_new_1 vehicle:=standard_vtol' - sh './Tools/ecl_ekf/process_logdata_ekf.py `find . -name *.ulg -print -quit`' + unstash 'px4_sitl_package' + sh 'unzip build/posix_sitl_default/px4-posix_sitl_default*.zip' + sh 'mv px4-posix_sitl_default*/bin/px4 px4-posix_sitl_default*/share/px4/' + sh 'chmod +x px4-posix_sitl_default*/share/px4/px4' + sh 'chmod +x px4-posix_sitl_default*/share/px4/integrationtests/python_src/px4_it/mavros/mission_test.py' + sh 'bash px4-posix_sitl_default*/share/px4/test/rostest_px4_run.sh mavros_posix_test_mission.test mission:=vtol_new_1 vehicle:=standard_vtol' + sh 'python px4-posix_sitl_default*/share/px4/Tools/ecl_ekf/process_logdata_ekf.py `find . -name *.ulg -print -quit`' } post { always { - sh './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' + sh 'python px4-posix_sitl_default*/share/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 '.ros/**/*.pdf' archiveArtifacts '.ros/**/*.csv' sh 'make distclean' @@ -317,15 +341,17 @@ pipeline { steps { sh 'export' sh 'make distclean; rm -rf .ros; rm -rf .gazebo' - sh 'git fetch --tags' - sh 'make posix_sitl_default' - sh 'make posix_sitl_default sitl_gazebo' - sh './test/rostest_px4_run.sh mavros_posix_test_mission.test mission:=vtol_new_1 vehicle:=tailsitter' - sh './Tools/ecl_ekf/process_logdata_ekf.py `find . -name *.ulg -print -quit`' + unstash 'px4_sitl_package' + sh 'unzip build/posix_sitl_default/px4-posix_sitl_default*.zip' + sh 'mv px4-posix_sitl_default*/bin/px4 px4-posix_sitl_default*/share/px4/' + sh 'chmod +x px4-posix_sitl_default*/share/px4/px4' + sh 'chmod +x px4-posix_sitl_default*/share/px4/integrationtests/python_src/px4_it/mavros/mission_test.py' + sh 'bash px4-posix_sitl_default*/share/px4/test/rostest_px4_run.sh mavros_posix_test_mission.test mission:=vtol_new_1 vehicle:=tailsitter' + sh 'python px4-posix_sitl_default*/share/px4/Tools/ecl_ekf/process_logdata_ekf.py `find . -name *.ulg -print -quit`' } post { always { - sh './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' + sh 'python px4-posix_sitl_default*/share/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 '.ros/**/*.pdf' archiveArtifacts '.ros/**/*.csv' sh 'make distclean' @@ -348,15 +374,17 @@ pipeline { steps { sh 'export' sh 'make distclean; rm -rf .ros; rm -rf .gazebo' - sh 'git fetch --tags' - sh 'make posix_sitl_default' - sh 'make posix_sitl_default sitl_gazebo' - sh './test/rostest_px4_run.sh mavros_posix_test_mission.test mission:=vtol_new_1 vehicle:=tiltrotor' - sh './Tools/ecl_ekf/process_logdata_ekf.py `find . -name *.ulg -print -quit`' + unstash 'px4_sitl_package' + sh 'unzip build/posix_sitl_default/px4-posix_sitl_default*.zip' + sh 'mv px4-posix_sitl_default*/bin/px4 px4-posix_sitl_default*/share/px4/' + sh 'chmod +x px4-posix_sitl_default*/share/px4/px4' + sh 'chmod +x px4-posix_sitl_default*/share/px4/integrationtests/python_src/px4_it/mavros/mission_test.py' + sh 'bash px4-posix_sitl_default*/share/px4/test/rostest_px4_run.sh mavros_posix_test_mission.test mission:=vtol_new_1 vehicle:=tiltrotor' + sh 'python px4-posix_sitl_default*/share/px4/Tools/ecl_ekf/process_logdata_ekf.py `find . -name *.ulg -print -quit`' } post { always { - sh './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' + sh 'python px4-posix_sitl_default*/share/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 '.ros/**/*.pdf' archiveArtifacts '.ros/**/*.csv' sh 'make distclean' @@ -379,15 +407,17 @@ pipeline { steps { sh 'export' sh 'make distclean; rm -rf .ros; rm -rf .gazebo' - sh 'git fetch --tags' - sh 'make posix_sitl_default' - sh 'make posix_sitl_default sitl_gazebo' - sh './test/rostest_px4_run.sh mavros_posix_test_mission.test mission:=vtol_new_2 vehicle:=standard_vtol' - sh './Tools/ecl_ekf/process_logdata_ekf.py `find . -name *.ulg -print -quit`' + unstash 'px4_sitl_package' + sh 'unzip build/posix_sitl_default/px4-posix_sitl_default*.zip' + sh 'mv px4-posix_sitl_default*/bin/px4 px4-posix_sitl_default*/share/px4/' + sh 'chmod +x px4-posix_sitl_default*/share/px4/px4' + sh 'chmod +x px4-posix_sitl_default*/share/px4/integrationtests/python_src/px4_it/mavros/mission_test.py' + sh 'bash px4-posix_sitl_default*/share/px4/test/rostest_px4_run.sh mavros_posix_test_mission.test mission:=vtol_new_2 vehicle:=standard_vtol' + sh 'python px4-posix_sitl_default*/share/px4/Tools/ecl_ekf/process_logdata_ekf.py `find . -name *.ulg -print -quit`' } post { always { - sh './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' + sh 'python px4-posix_sitl_default*/share/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 '.ros/**/*.pdf' archiveArtifacts '.ros/**/*.csv' sh 'make distclean' @@ -410,15 +440,17 @@ pipeline { steps { sh 'export' sh 'make distclean; rm -rf .ros; rm -rf .gazebo' - sh 'git fetch --tags' - sh 'make posix_sitl_default' - sh 'make posix_sitl_default sitl_gazebo' - sh './test/rostest_px4_run.sh mavros_posix_test_mission.test mission:=vtol_old_1 vehicle:=standard_vtol' - sh './Tools/ecl_ekf/process_logdata_ekf.py `find . -name *.ulg -print -quit`' + unstash 'px4_sitl_package' + sh 'unzip build/posix_sitl_default/px4-posix_sitl_default*.zip' + sh 'mv px4-posix_sitl_default*/bin/px4 px4-posix_sitl_default*/share/px4/' + sh 'chmod +x px4-posix_sitl_default*/share/px4/px4' + sh 'chmod +x px4-posix_sitl_default*/share/px4/integrationtests/python_src/px4_it/mavros/mission_test.py' + sh 'bash px4-posix_sitl_default*/share/px4/test/rostest_px4_run.sh mavros_posix_test_mission.test mission:=vtol_old_1 vehicle:=standard_vtol' + sh 'python px4-posix_sitl_default*/share/px4/Tools/ecl_ekf/process_logdata_ekf.py `find . -name *.ulg -print -quit`' } post { always { - sh './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' + sh 'python px4-posix_sitl_default*/share/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 '.ros/**/*.pdf' archiveArtifacts '.ros/**/*.csv' sh 'make distclean' @@ -441,15 +473,17 @@ pipeline { steps { sh 'export' sh 'make distclean; rm -rf .ros; rm -rf .gazebo' - sh 'git fetch --tags' - sh 'make posix_sitl_default' - sh 'make posix_sitl_default sitl_gazebo' - sh './test/rostest_px4_run.sh mavros_posix_test_mission.test mission:=vtol_old_2 vehicle:=standard_vtol' - sh './Tools/ecl_ekf/process_logdata_ekf.py `find . -name *.ulg -print -quit`' + unstash 'px4_sitl_package' + sh 'unzip build/posix_sitl_default/px4-posix_sitl_default*.zip' + sh 'mv px4-posix_sitl_default*/bin/px4 px4-posix_sitl_default*/share/px4/' + sh 'chmod +x px4-posix_sitl_default*/share/px4/px4' + sh 'chmod +x px4-posix_sitl_default*/share/px4/integrationtests/python_src/px4_it/mavros/mission_test.py' + sh 'bash px4-posix_sitl_default*/share/px4/test/rostest_px4_run.sh mavros_posix_test_mission.test mission:=vtol_old_2 vehicle:=standard_vtol' + sh 'python px4-posix_sitl_default*/share/px4/Tools/ecl_ekf/process_logdata_ekf.py `find . -name *.ulg -print -quit`' } post { always { - sh './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' + sh 'python px4-posix_sitl_default*/share/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 '.ros/**/*.pdf' archiveArtifacts '.ros/**/*.csv' sh 'make distclean' @@ -472,15 +506,17 @@ pipeline { steps { sh 'export' sh 'make distclean; rm -rf .ros; rm -rf .gazebo' - sh 'git fetch --tags' - sh 'make posix_sitl_default' - sh 'make posix_sitl_default sitl_gazebo' - sh './test/rostest_px4_run.sh mavros_posix_test_mission.test mission:=multirotor_box vehicle:=iris' - sh './Tools/ecl_ekf/process_logdata_ekf.py `find . -name *.ulg -print -quit`' + unstash 'px4_sitl_package' + sh 'unzip build/posix_sitl_default/px4-posix_sitl_default*.zip' + sh 'mv px4-posix_sitl_default*/bin/px4 px4-posix_sitl_default*/share/px4/' + sh 'chmod +x px4-posix_sitl_default*/share/px4/px4' + sh 'chmod +x px4-posix_sitl_default*/share/px4/integrationtests/python_src/px4_it/mavros/mission_test.py' + sh 'bash px4-posix_sitl_default*/share/px4/test/rostest_px4_run.sh mavros_posix_test_mission.test mission:=multirotor_box vehicle:=iris' + sh 'python px4-posix_sitl_default*/share/px4/Tools/ecl_ekf/process_logdata_ekf.py `find . -name *.ulg -print -quit`' } post { always { - sh './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' + sh 'python px4-posix_sitl_default*/share/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 '.ros/**/*.pdf' archiveArtifacts '.ros/**/*.csv' sh 'make distclean' @@ -503,15 +539,17 @@ pipeline { steps { sh 'export' sh 'make distclean; rm -rf .ros; rm -rf .gazebo' - sh 'git fetch --tags' - sh 'make posix_sitl_default' - sh 'make posix_sitl_default sitl_gazebo' - sh './test/rostest_px4_run.sh mavros_posix_tests_offboard_attctl.test' - sh './Tools/ecl_ekf/process_logdata_ekf.py `find . -name *.ulg -print -quit`' + unstash 'px4_sitl_package' + sh 'unzip build/posix_sitl_default/px4-posix_sitl_default*.zip' + sh 'mv px4-posix_sitl_default*/bin/px4 px4-posix_sitl_default*/share/px4/' + sh 'chmod +x px4-posix_sitl_default*/share/px4/px4' + sh 'chmod +x px4-posix_sitl_default*/share/px4/integrationtests/python_src/px4_it/mavros/mavros_offboard_attctl_test.py' + sh 'bash px4-posix_sitl_default*/share/px4/test/rostest_px4_run.sh mavros_posix_tests_offboard_attctl.test' + sh 'python px4-posix_sitl_default*/share/px4/Tools/ecl_ekf/process_logdata_ekf.py `find . -name *.ulg -print -quit`' } post { always { - sh './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' + sh 'python px4-posix_sitl_default*/share/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 '.ros/**/*.pdf' archiveArtifacts '.ros/**/*.csv' sh 'make distclean' @@ -534,15 +572,17 @@ pipeline { steps { sh 'export' sh 'make distclean; rm -rf .ros; rm -rf .gazebo' - sh 'git fetch --tags' - sh 'make posix_sitl_default' - sh 'make posix_sitl_default sitl_gazebo' - sh './test/rostest_px4_run.sh mavros_posix_tests_offboard_posctl.test' - sh './Tools/ecl_ekf/process_logdata_ekf.py `find . -name *.ulg -print -quit`' + unstash 'px4_sitl_package' + sh 'unzip build/posix_sitl_default/px4-posix_sitl_default*.zip' + sh 'mv px4-posix_sitl_default*/bin/px4 px4-posix_sitl_default*/share/px4/' + sh 'chmod +x px4-posix_sitl_default*/share/px4/px4' + sh 'chmod +x px4-posix_sitl_default*/share/px4/integrationtests/python_src/px4_it/mavros/mavros_offboard_posctl_test.py' + sh 'bash px4-posix_sitl_default*/share/px4/test/rostest_px4_run.sh mavros_posix_tests_offboard_posctl.test' + sh 'python px4-posix_sitl_default*/share/px4/Tools/ecl_ekf/process_logdata_ekf.py `find . -name *.ulg -print -quit`' } post { always { - sh './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' + sh 'python px4-posix_sitl_default*/share/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 '.ros/**/*.pdf' archiveArtifacts '.ros/**/*.csv' sh 'make distclean' diff --git a/platforms/posix/CMakeLists.txt b/platforms/posix/CMakeLists.txt index 18dc510ca2..8f370176ba 100644 --- a/platforms/posix/CMakeLists.txt +++ b/platforms/posix/CMakeLists.txt @@ -92,6 +92,77 @@ endif() # install # -install(TARGETS px4 DESTINATION ${CMAKE_INSTALL_BINDIR}) -install(DIRECTORY ${PROJECT_SOURCE_DIR}/ROMFS DESTINATION ${CMAKE_INSTALL_DATADIR}/${PROJECT_NAME}) -install(DIRECTORY ${PROJECT_SOURCE_DIR}/posix-configs DESTINATION ${CMAKE_INSTALL_DATADIR}/${PROJECT_NAME}) +# px4 app +install( + TARGETS + px4 + DESTINATION + ${CMAKE_INSTALL_BINDIR} + ) + +# px4 dirs +install( + DIRECTORY + ${PROJECT_SOURCE_DIR}/integrationtests + ${PROJECT_SOURCE_DIR}/launch + ${PROJECT_SOURCE_DIR}/posix-configs + ${PROJECT_SOURCE_DIR}/ROMFS + ${PROJECT_SOURCE_DIR}/test + DESTINATION + ${CMAKE_INSTALL_DATADIR}/${PROJECT_NAME} + ) + +# px4 files +install( + FILES + ${PROJECT_SOURCE_DIR}/CMakeLists.txt + ${PROJECT_SOURCE_DIR}/package.xml + DESTINATION + ${CMAKE_INSTALL_DATADIR}/${PROJECT_NAME} + ) + +# px4 Tools dirs +install( + DIRECTORY + ${PROJECT_SOURCE_DIR}/Tools/ecl_ekf + DESTINATION + ${CMAKE_INSTALL_DATADIR}/${PROJECT_NAME}/Tools + ) + +# px4 Tools files +install( + FILES + ${PROJECT_SOURCE_DIR}/Tools/setup_gazebo.bash + ${PROJECT_SOURCE_DIR}/Tools/upload_log.py + DESTINATION + ${CMAKE_INSTALL_DATADIR}/${PROJECT_NAME}/Tools + ) + +# sitl_gazebo built plugins +install( + DIRECTORY + ${PROJECT_SOURCE_DIR}/build/posix_sitl_default/build_gazebo + DESTINATION + ${CMAKE_INSTALL_DATADIR}/${PROJECT_NAME}/build/posix_sitl_default + FILES_MATCHING + PATTERN "CMakeFiles" EXCLUDE + PATTERN "*.so" + ) + +# sitl_gazebo dirs +install( + DIRECTORY + ${PROJECT_SOURCE_DIR}/Tools/sitl_gazebo/models + ${PROJECT_SOURCE_DIR}/Tools/sitl_gazebo/worlds + DESTINATION + ${CMAKE_INSTALL_DATADIR}/${PROJECT_NAME}/Tools/sitl_gazebo + ) + +# sitl_gazebo files +install( + FILES + ${PROJECT_SOURCE_DIR}/Tools/sitl_gazebo/CMakeLists.txt + ${PROJECT_SOURCE_DIR}/Tools/sitl_gazebo/package.xml + DESTINATION + ${CMAKE_INSTALL_DATADIR}/${PROJECT_NAME}/Tools/sitl_gazebo + ) \ No newline at end of file -- GitLab