Ask Your Question
0

ROS Build farm help

asked 2018-04-18 10:35:06 -0600

venkisagunner gravatar image

I’m trying to be as exhaustive as possible. I have no previous experience in setting up a ros buildfarm before and I have very little knowledge about it. I tried to follow the documentation here ( https://github.com/ros-infrastructure... ). I got to the second step after mirroring this ( https://github.com/ros-infrastructure... ) repository and tried to change the parameters inside the common.yaml file. I changed the master ip, repo ip, jenkins uname and password. But the other things listed in the documentation is not available in the common.yaml file.

I’m making my machine as the master and a raspberry pi as the repo and another raspberry pi as agent. The master IP is my machine’s IP and the repo and the agent IPs are the two raspi’s IP. In common.yaml file, I edited these stuffs and changed the jenkins::slave::ui_user and ui_pass to my github username and password which is authorized in my jenkins account. Then, autoreconfigure is setup to be false in the common.yaml file but it is listed as branch in the documentation. Should I go about changing this ?

Coming to ssh keys, the key specified is the public key I generated using the ssh keygen command in my master machine ?

Anybody who has setup a buildfarm before, it will be great if you could provide me with an example and if possible explain why we are performing each step along the way.

P.S: This is not my homework. This is something I’m really willing to learn. Thanks !

edit retag flag offensive close merge delete

1 Answer

Sort by » oldest newest most voted
1

answered 2018-04-18 12:38:17 -0600

nuclearsandwich gravatar image

Firstly, welcome to the community of buildfarmers! You've come to the right place with your question, but if you notice errors or have suggestions for improvement, you're invited to open issues or pull requests directly on https://github.com/ros-infrastructure... or https://github.com/ros-infrastructure... . Use the first one if you're not sure where an issue belongs and we'll help guide you to the right place. Your questions help improve the project!

raspberry pi as the repo and another raspberry pi as agent.

Just for background info: the ROS buildfarm doesn't currently support cross-compilation, arm compilation happens inside docker containers with arm-native filesystems that bundle the qemu-user-{arm,aarch64} interpreters so they can be run on AMD64 hosts. I have started playing with native ARM64 support for https://github.com/ros-infrastructure... but it is far from complete or stable. I would be very pleasantly surprised if puppet runs without errors on a Raspberry Pi.

Are you planning to build packages exclusively for Raspberry Pi or are you also hoping to build x86 packages? I think you'll need at least one AMD64 agent to build x86 and x86_64 packages. With qemu you can also use these to build ARM packages.

As for running your repo host on a Raspberry Pi, I can't think of any reason off the top of my head why that won't work, but it hasn't been tested as far as I'm aware.

What operating system are you running on your Pis? Ubuntu Xenial, Raspbian, or something else?


Now let me try to address your individual questions.

I edited these stuffs and changed the jenkins::slave::ui_user and ui_pass to my github username and password which is authorized in my jenkins account.

One thing to watch out for is that the puppet configuration will override your Jenkins auth settings with the following authentication strategy and security realm https://github.com/ros-infrastructure... . Running puppet may render you unable to sign in with your GitHub credentials. It's not something that's been tested much. The buildfarm_deployment is designed to be in full control of its jenkins master. If you have other projects using the same Jenkins master you might need to avoid using puppet and try to use it as a guide for setting Jenkins up manually.

The Jenkins agent credentials (referred to as jenkins::slave::ui_user and jenkins::slave::ui_pass in hiera are intended to match the admin username and password hash set in the master.yaml config: https://github.com/ros-infrastructure...

You can use a utility like https://github.com/gavanderhoorn/jenk... to generate a Jenkins password hash suitable for that line in your config.

Coming to ssh keys, the key specified is the public key I generated using the ssh keygen command in my master machine ?

This is the ssh key that will be used by your jenkins agents to publish packages, documentation, and generated status page html to your repo host. The config used to ... (more)

edit flag offensive delete link more

Comments

Firstly, Thank you for taking your time in answering my questions. I still have some fundamental questions about learning how to setup build farm. I'm a total noob and I understood bits and pieces of your answer. But I'm still lacking the overall picture on how to setup a build farm.

venkisagunner gravatar imagevenkisagunner ( 2018-04-18 13:03:36 -0600 )edit

The question I'm about to ask could be dumb. Let me tell you the scenario on what exactly I'm trying to achieve. I have a git repo that has a ros package which I developed. I want to setup a buildfarm, deploy it and perform continuous integration on it. So how should I go about setting up one ?

venkisagunner gravatar imagevenkisagunner ( 2018-04-18 13:05:35 -0600 )edit

No worries. Leave me a comment as to which parts are confusing and I can elaborate. In general we encourage one question per "Question" on answers.ros.org so I may respond with a request to create a new question from a particular comment or edit. It isn't a criticism, just housekeeping.

nuclearsandwich gravatar imagenuclearsandwich ( 2018-04-18 13:07:27 -0600 )edit

I understand that the github repo instructions are good enough, since I lack basic knowledge of CIs, jenkins I have no idea how to implement one. So it will be great if you could tell me how can I better learn this. Is there any material like Youtube

venkisagunner gravatar imagevenkisagunner ( 2018-04-18 13:10:01 -0600 )edit

I have a git repo that has a ros package which I developed. I want to setup a buildfarm, deploy it and perform continuous integration on it. So how should I go about setting up one ?

This is actually a great candidate (in my opinion) for being asked as a separate question.

nuclearsandwich gravatar imagenuclearsandwich ( 2018-04-18 13:10:48 -0600 )edit

I sympathise, as I went through the same struggle. My luck was probably that I may have a bit more experience with build systems and the previous version of the buildfarm. The documentation was not (completely) updated when the Xenial migration was merged.

Getting some familiarity with Jenkins, ..

gvdhoorn gravatar imagegvdhoorn ( 2018-04-18 13:50:00 -0600 )edit

.. CI, cmake, docker and how to run commands on remote machines through SSH might help. That is a lot of knowledge, but you don't need to be a wizard in any of that. That's why the ros_buildfarm pkgs exist.

gvdhoorn gravatar imagegvdhoorn ( 2018-04-18 13:50:49 -0600 )edit

https://answers.ros.org/question/2894... - I have posted a separate question here. Might have similar content. Tried to be specific with my question. Hope you could help. Thanks

venkisagunner gravatar imagevenkisagunner ( 2018-04-23 14:50:31 -0600 )edit

Your Answer

Please start posting anonymously - your entry will be published after you log in or create a new account.

Add Answer

Question Tools

Stats

Asked: 2018-04-18 10:35:06 -0600

Seen: 405 times

Last updated: Apr 18 '18