Skip to content
Mickael Gaillard edited this page Mar 25, 2018 · 3 revisions

History

Based on Esteve stack of build. but 2 majors issues :

  • Esteve need to use private image for DDS-vendor limitation.
  • All the build is made in only-one job. But travis-ci limited the duration of build to ~50 minutes. (only 10 minutes is available to your app build)

Concept is to separate in many build...

Workflow

CI Workflow

Steps

1. ros2java

Build any day (for check compatibility with ROS2).

  1. Docker Image is define on DockerFile from ros2java-alfred/ros2_java_docker for Debian and Ubuntu.
  2. Image is build (and store) on Docker Hub service Build with distribution tag. (eg. debian).
  3. Travis build ros2java stack, on special jobs based on Docker image from Docker Hub service Build. (TODO trigger).
  4. From Travis job build push new images with tags on Docker Hub service Tags :
    • <dist>_ros2java : for last successful image.
    • <dist>_ros2java_<build> : for specifics builds.

2. your_app

  1. Travis build Your_App on job, with last successful image of <dist>_ros2java .

a example of .travis.yml file on ALfred-App

Documentations

Travis-CI

Parameters

Key default value Descriptions
APP_NAME xxxxx Your ros2 for java package name.
APP_PATH ws/${APP_NAME} Your default workspace.
CI true Define you use CI infrastructure (to manualy launch).
CI_NAME travis-ci Name of the CI system use.
DOCKER_DIST debian-ros2java Docker images Tag to use for build.
DOCKER_REPO theosakamg7/ros2_java_docker Docker image to use for build.
PKG_EXCLUDE "" Ros2 packages to not build (separate by space).

for PKG_EXCLUDE we recommend to use "ament_cmake_export_jars ament_cmake_ros connext_cmake_module console_bridge fastcdr fastrtps fastrtps_cmake_module launch dummy_robot_bringup launch_testing opensplice_cmake_module orocos_kdl poco_vendor class_loader python_cmake_module rcljava_common rcutils rmw rmw_implementation_cmake rosidl_default_generators rosidl_default_runtime rosidl_generator_dds_idl rosidl_parser rosidl_cmake rosidl_typesupport_interface rosidl_generator_c rmw_connext_shared_cpp rosidl_generator_cpp rosidl_typesupport_c rosidl_typesupport_connext_cpp rosidl_typesupport_connext_c rmw_connext_cpp rosidl_typesupport_cpp rosidl_typesupport_introspection_c rosidl_typesupport_introspection_cpp rmw_connext_dynamic_cpp rmw_fastrtps_cpp rosidl_typesupport_opensplice_cpp rosidl_typesupport_opensplice_c rmw_opensplice_cpp rmw_implementation rosidl_generator_java rosidl_generator_py builtin_interfaces example_interfaces lifecycle_msgs pendulum_msgs rcl_interfaces rttest std_msgs actionlib_msgs geometry_msgs diagnostic_msgs nav_msgs rcl rcl_lifecycle rclcpp composition dummy_map_server examples_rclcpp_minimal_client examples_rclcpp_minimal_composition examples_rclcpp_minimal_publisher examples_rclcpp_minimal_service examples_rclcpp_minimal_subscriber examples_rclcpp_minimal_timer rcljava rcljava_utils rclpy demo_nodes_py examples_rclpy_minimal_client examples_rclpy_minimal_publisher examples_rclpy_minimal_service examples_rclpy_minimal_subscriber rclcpp_lifecycle lifecycle ros1_bridge sensor_msgs demo_nodes_cpp dummy_sensors image_tools intra_process_demo rcljava_examples shape_msgs std_srvs stereo_msgs test_communication cli_tools_py test_rclcpp tf2 tf2_msgs tf2_ros tf2_geometry_msgs tinyxml_vendor tlsf tlsf_cpp pendulum_control topic_monitor trajectory_msgs urdfdom_headers urdfdom urdf kdl_parser robot_state_publisher visualization_msgs".

Extra :

  • COVERALLS_REPO_TOKEN : Coveralls service token of project.

Docker

Images layer

  1. Debian or Ubuntu docker official image.
  2. ROS2 Build chain tools
  3. ROS2 Java Build chain tools (eg. theosakamg7/ros2_java_docker:debian )
  4. ROS2 Java Building (eg. theosakamg7/ros2_java_docker:debian-ros2java )
  5. Your writable container.
Clone this wiki locally