-
Notifications
You must be signed in to change notification settings - Fork 9
/
.travis.yml
164 lines (151 loc) · 6.41 KB
/
.travis.yml
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
# Generic .travis.yml file for running continuous integration on Travis-CI for
# any ROS package.
#
# Available here:
# - http://felixduvallet.github.io/ros-travis-integration
# - https://github.com/felixduvallet/ros-travis-integration
#
# This installs ROS on a clean Travis-CI virtual machine, creates a ROS
# workspace, resolves all listed dependencies, and sets environment variables
# (setup.bash). Then, it compiles the entire ROS workspace (ensuring there are
# no compilation errors), and runs all the tests. If any of the compilation/test
# phases fail, the build is marked as a failure.
#
# We handle two types of package dependencies:
# - packages (ros and otherwise) available through apt-get. These are installed
# using rosdep, based on the information in the ROS package.xml.
# - dependencies that must be checked out from source. These are handled by
# 'wstool', and should be listed in a file named dependencies.rosinstall.
#
# There are two variables you may want to change:
# - ROS_DISTRO (default is indigo). Note that packages must be available for
# ubuntu 14.04 trusty.
# - ROSINSTALL_FILE (default is dependencies.rosinstall inside the repo
# root). This should list all necessary repositories in wstool format (see
# the ros wiki). If the file does not exists then nothing happens.
#
# See the README.md for more information.
#
# Author: Felix Duvallet <[email protected]>
# NOTE: The build lifecycle on Travis.ci is something like this:
# before_install
# install
# before_script
# script
# after_success or after_failure
# after_script
# OPTIONAL before_deploy
# OPTIONAL deploy
# OPTIONAL after_deploy
################################################################################
# Use ubuntu trusty (14.04) with sudo privileges.
dist: trusty
sudo: required
language:
- generic
cache:
- apt
- pip
# Configuration variables. All variables are global now, but this can be used to
# trigger a build matrix for different ROS distributions if desired.
env:
global:
- ROS_DISTRO=indigo
- ROS_CI_DESKTOP="`lsb_release -cs`" # e.g. [precise|trusty|...]
- CI_SOURCE_PATH=$(pwd)
- ROSINSTALL_FILE=$CI_SOURCE_PATH/dependencies.rosinstall
- CATKIN_OPTIONS=$CI_SOURCE_PATH/catkin.options
- ROS_OS_OVERRIDE="ubuntu:14.04:trusty"
- ROS_PARALLEL_JOBS='-j8 -l6'
################################################################################
# Install system dependencies, namely a very barebones ROS setup.
before_install:
- sudo sh -c "echo \"deb http://packages.ros.org/ros/ubuntu $ROS_CI_DESKTOP main\" > /etc/apt/sources.list.d/ros-latest.list"
- wget http://packages.ros.org/ros.key -O - | sudo apt-key add -
- sudo apt-get update -qq
- sudo apt-get install -y ros-$ROS_DISTRO-catkin
# have to apt-get install rosdep or the command-line tool won't work
- sudo apt-get install -y python-rosdep
#use pip install, because otherwise travis can't find things
- pip install catkin-pkg
- pip install rosdep
- pip install wstool
- pip install empy
- pip install setuptools
# These packages are installed when using apt-get
# - pip install dateutil
# - pip install docutils
# - pip install nose
# - pip install pil
# - pip install pygments
# - pip install roman
# - pip install coverage
# - pip install nose-doc
# - pip install pil-doc
# - pip install pil-dbg
# - pip install catkin-pkg-modules
# end debugging
- sudo apt-get remove -y mongodb # For moveit
- sudo apt-get install -y mongodb-clients mongodb-server -o Dpkg::Options::="--force-confdef"
- source /opt/ros/$ROS_DISTRO/setup.bash
# Prepare rosdep to install dependencies.
- sudo rosdep init
- rosdep update
- sudo apt-get install -y libeigen3-dev
# Specific for freenect2
- git clone https://github.com/OpenKinect/libfreenect2.git
- sudo apt-get install build-essential cmake pkg-config
- sudo apt-get install -y libturbojpeg libjpeg-turbo8-dev
- sudo apt-get install libopenni2-dev
- sudo apt-get install libnlopt-dev
- cd libfreenect2/depends && ./download_debs_trusty.sh && sudo dpkg -i debs/libusb*deb && sh install_ubuntu.sh
- sudo apt-get install libglu1-mesa-dev libglu-dev mesa-common-dev
- sudo dpkg -i libglfw3*_3.0.4-1_*.deb && sudo apt-get install freeglut3-dev libxrandr-dev libxi-dev
- cd .. && mkdir build && cd build && cmake .. -DCMAKE_INSTALL_PREFIX=$HOME/freenect2 && make && make install
- sudo ln -sf ~/freenect2/lib/cmake/freenect2/freenect2Config.cmake /usr/share/cmake-3.2/Modules/Findfreenect2.cmake
# Create a catkin workspace with the package under integration.
install:
- mkdir -p ~/catkin_ws/src
- cd ~/catkin_ws/src
- catkin_init_workspace
# Create the devel/setup.bash (run catkin_make with an empty workspace) and
# source it to set the path variables.
- cd ~/catkin_ws
- catkin_make
- source devel/setup.bash
# Add the package under integration to the workspace using a symlink.
- cd ~/catkin_ws/src
- ln -s $CI_SOURCE_PATH .
# Install all dependencies, using wstool and rosdep.
# wstool looks for a ROSINSTALL_FILE defined in the environment variables.
before_script:
# source dependencies: install using wstool.
- cd ~/catkin_ws/src
- git clone https://github.com/StanleyInnovation/vector_v1.git # change later
- git clone https://github.com/GT-RAIL/rail_manipulation_msgs.git
- wstool init
- if [[ -f $ROSINSTALL_FILE ]] ; then wstool merge $ROSINSTALL_FILE ; fi
- wstool up
# package depdencies: install using rosdep.
- cd ~/catkin_ws
- rosdep install -y --from-paths src --ignore-src --rosdistro $ROS_DISTRO
# Compile and test (fail if any step fails). If the CATKIN_OPTIONS file exists,
# use it as an argument to catkin_make, for example to blacklist certain
# packages.
#
# NOTE on testing: `catkin_make run_tests` will show the output of the tests
# (gtest, nosetest, etc..) but always returns 0 (success) even if a test
# fails. On the other hand, `catkin_make test` aggregates all results, but
# returns non-zero when a test fails (which notifies Travis the build
# failed). This is why we run both.
script:
- source /opt/ros/$ROS_DISTRO/setup.bash
- cd ~/catkin_ws
- catkin_make $( [ -f $CATKIN_OPTIONS ] && cat $CATKIN_OPTIONS )
- catkin_make install -DSETUPTOOLS_DEB_LAYOUT=OFF
# Run the tests, ensuring the path is set correctly.
- source devel/setup.bash
- cd $CI_SOURCE_PATH
- pwd
# currently no tests - just verify that we didn't break catkin_make
#- catkin_make run_tests && catkin_make test