Oct. 9th 2016
Dirk Thomas
ROSCon 2016, Seoul, Korea
yaml
files specified in REP 143
rosdistro/index.yaml
distributions:
kinetic:
distribution:
- kinetic/distribution.yaml
distribution_cache: <url .yaml.gz>
./kinetic/distribution.yaml
repositories:
catkin:
doc: <...>
release: <...>
source: <...>
release_platforms:
ubuntu:
- wily
- xenial
git clone
rosdep
cmake
, make
, make install
make test
apt-src build
rosdoc_lite
catkin_make_isolated
One container for multiple packages
Build vs. test dependencies
catkin_make
vs. catkin_make_isolated
catkin_make | catkin_make_isolated | |
---|---|---|
CMake calls | 1, for the whole ws | N, each pkg separately |
Side effects | Need to depend on other pkgs targets catkin_EXPORTED_TARGETS |
|
Location of artifacts | Merged in a single folder E.g. one include dir |
Each pkg has its own folder |
Side effects | Package can implicitly access e.g. the headers from other pkgs |
|
Pros | Faster due to higher parallelization | Clean separation, better to identify problems |
The build farm builds with -j 1
for easily readable output
rosdistro/kinetic/distribution.yaml
genmsg:
source:
type: git
url: https://github.com/ros/genmsg.git
version: <valid branch name>
pkg/package.xml
<maintainer
email="dthomas@osrfoundation.org"
>Dirk Thomas</maintainer>
+ committers since the job was stable
rosdistro/kinetic/distribution.yaml
genmsg:
source:
test_pull_request: true
type: git
url: https://github.com/ros/genmsg.git
version: <valid branch name>
build.ros.org
only supports GitHub at the momentros-pull-request-builder
needs .travis.yml
file:
rosdistro/kinetic/distribution.yaml
genmsg:
doc:
type: git
url: https://github.com/ros/genmsg.git
version: <valid branch or tag name>
kinetic/api/genmsg/manifest.yaml
api_documentation: \
http://docs.ros.org/kinetic/api/genmsg/html
description: Generate ROS message and service data.
license: BSD
maintainer_status: maintained
maintainers: Dirk Thomas <email>
authors: <names>
has_changelog_rst: true
depends: <list of package dependencies>
depends_on: <list of packages depending on this>
timestamp: <last generation>
url: http://wiki.ros.org/genmsg
repo_url: https://github.com/ros/genmsg.git
bugtracker: https://github.com/ros/genmsg/issues
devel_jobs: <list of urls>
doc_job: <url>
release_jobs: <list of urls>
actions: <list of action names>
msgs: <list of msg names>
srvs: <list of service names>
wiki markup
<<PackageHeader(roscpp)>>
gbp-repo/tracks.yaml
kinetic:
devel_branch: master
rosdistro/kinetic/distribution.yaml
foo:
release:
packages:
- bar
- baz
tags:
release: release/kinetic/{package}/{version}
url: https://github.com/ros-gbp/foo-release.git
version: 1.2.3-4
AUTOMATION
- Makes releasing as easy as possible
- But allows customization anywhere in the process
- Creates the rosdistro pull request for you
Isrc_uS__roscpp__ubuntu_saucy__source
Jdev__ros_comm__ubuntu_trusty_amd64
Kbin_uX64__rospack__ubuntu_xenial_amd64__binary
__
: prefix for group of jobs__
: the package or repository namecount | success | unstable | failure | aborted | disabled | |
---|---|---|---|---|---|---|
All | 40751 | 39634 (97.25 %) | 148 (0.36 %) | 372 (0.91 %) | 129 (0.31 %) | 456 (1.11 %) |
Manage | 91 | 91 (100.00 %) | 0 (0.00 %) | 0 (0.00 %) | 0 (0.00 %) | 0 (0.00 %) |
Ibin_arm_uThf | 2348 | 1997 (85.05 %) | - | 16 (0.68 %) | 8 (0.34 %) | 327 (13.92 %) |
Ibin_uS32 | 2348 | 2316 (98.63 %) | - | 22 (0.93 %) | 9 (0.38 %) | 0 (0.00 %) |
Ibin_uS64 | 2348 | 2314 (98.55 %) | - | 22 (0.93 %) | 11 (0.46 %) | 0 (0.00 %) |
Ibin_uT32 | 2348 | 2333 (99.36 %) | - | 12 (0.51 %) | 3 (0.12 %) | 0 (0.00 %) |
Ibin_uT64 | 2348 | 2334 (99.40 %) | - | 11 (0.46 %) | 3 (0.12 %) | 0 (0.00 %) |
Idev | 769 | 645 (83.87 %) | 26 (3.38 %) | 98 (12.74 %) | 0 (0.00 %) | 0 (0.00 %) |
Idoc | 807 | 756 (93.68 %) | 31 (3.84 %) | 16 (1.98 %) | 1 (0.12 %) | 0 (0.00 %) |
Ipr | 29 | 20 (68.96 %) | 3 (10.34 %) | 2 (6.89 %) | 0 (0.00 %) | 0 (0.00 %) |
Isrc_uS | 2348 | 2348 (100.00 %) | - | 0 (0.00 %) | 0 (0.00 %) | 0 (0.00 %) |
Isrc_uT | 2348 | 2348 (100.00 %) | - | 0 (0.00 %) | 0 (0.00 %) | 0 (0.00 %) |
count | success | unstable | failure | aborted | disabled | |
---|---|---|---|---|---|---|
All | 40751 | 39634 (97.25 %) | 148 (0.36 %) | 372 (0.91 %) | 129 (0.31 %) | 456 (1.11 %) |
Manage | 91 | 91 (100.00 %) | 0 (0.00 %) | 0 (0.00 %) | 0 (0.00 %) | 0 (0.00 %) |
Kbin_dj_dJ64 | 953 | 922 (96.74 %) | - | 15 (1.57 %) | 14 (1.46 %) | 2 (0.20 %) |
Kbin_djv8_dJv8 | 953 | 902 (94.64 %) | - | 17 (1.78 %) | 14 (1.46 %) | 20 (2.09 %) |
Kbin_uW32 | 953 | 928 (97.37 %) | - | 14 (1.46 %) | 11 (1.15 %) | 0 (0.00 %) |
Kbin_uW64 | 953 | 928 (97.37 %) | - | 14 (1.46 %) | 11 (1.15 %) | 0 (0.00 %) |
Kbin_uX32 | 953 | 928 (97.37 %) | - | 14 (1.46 %) | 11 (1.15 %) | 0 (0.00 %) |
Kbin_uX64 | 953 | 928 (97.37 %) | - | 14 (1.46 %) | 11 (1.15 %) | 0 (0.00 %) |
Kbin_uxhf_uXhf | 953 | 905 (94.96 %) | - | 14 (1.46 %) | 11 (1.15 %) | 23 (2.41 %) |
Kbin_uxhf_uXv8 | 953 | 907 (95.17 %) | - | 15 (1.57 %) | 11 (1.15 %) | 20 (2.09 %) |
Kdev | 296 | 220 (74.32 %) | 49 (16.55 %) | 27 (9.12 %) | 0 (0.00 %) | 0 (0.00 %) |
Kdoc | 310 | 294 (94.83 %) | 11 (3.54 %) | 4 (1.29 %) | 0 (0.00 %) | 0 (0.00 %) |
Kpr | 30 | 23 (76.66 %) | 2 (6.66 %) | 2 (6.66 %) | 0 (0.00 %) | 0 (0.00 %) |
Ksrc_dJ | 953 | 950 (99.68 %) | - | 0 (0.00 %) | 0 (0.00 %) | 8 (0.85 %) |
Ksrc_uW | 953 | 953 (100.00 %) | - | 0 (0.00 %) | 0 (0.00 %) | 0 (0.00 %) |
Ksrc_uX | 953 | 953 (100.00 %) | - | 0 (0.00 %) | 0 (0.00 %) | 0 (0.00 %) |
python-ros-buildfarm
ros_buildfarm
fails
because it's using the last released version of A
Devel job with multiple repos
rpm
(Fedora)
Expect continuous effort
doc
entry to generate documentation
source
entry for devel jobs and easy cloning for users
test_commits: false
pull request testing
release
your packages, also into newer ROS distrosCMake Error at /opt/ros/kinetic/share/catkin/cmake/catkinConfig.cmake:83 (find_package):
Could not find a package configuration file provided by "<pkg_name>"
For more information go to:
github.com/ros-infrastructure/ros_buildfarm