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 clonerosdepcmake, make, make installmake testapt-src buildrosdoc_litecatkin_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
repositories.ros.org/status_page/(ros_kinetic_default.html)
Isrc_uS__roscpp__ubuntu_saucy__sourceJdev__ros_comm__ubuntu_trusty_amd64Kbin_uX64__rospack__ubuntu_xenial_amd64__binary__: prefix for group of jobs
__: the package or repository name| 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 %) |
| 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-buildfarmros_buildfarmfails 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 testingrelease 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