Rosanswers logo

I've created three virtual machines for master/repo/slave following http://wiki.ros.org/buildfarm and https://github.com/ros-infrastructure/buildfarm_deployment. My goal is to build a set of packages from my intranet gitlab server. I don't want to build any official ros packages, just use the release versions of already built ones. Is that possible?

http://roscon.ros.org/2015/presentations/Buildfarm.pdf indicates it is or intended to be possible soon.

Do I need to fork rosdistro? Yes. And follow https://groups.google.com/forum/#!topic/ros-sig-buildfarm/ilT87RfnAVQ if so?

Do I run a customized bloom internally to release packages? No, it looks like I set ROSDISTRO_INDEX_URL to my internal rosdistro location.

It would be fantastic to have a set of github customized buildfarm config and rosdistro repos that are a complete working example of building 2 or 3 example 'private' packages that are also in github, and are dependent on public ros packages. It then could easily be replicated locally (add plenty of warnings in yaml comments to change the keys and passwords, but even with the default ones it would be safe to set up an experimental system behind a firewall). Maybe the minimum thing that would have to be changed is notification emails, and the user would be responsible for making sure the default server names resolve to their local master/repo/slave machine IPs.

(I can work on this but need to be able to get to that working system first)

Some additional more minor questions and comments

I'll probably answer for myself soon (or that https://github.com/ros-infrastructure/ros_buildfarm/tree/master/doc files already answer), but any help is welcome:

I've now forked ros_buildfarm_config onto my gitlab server, and I'm editing index.yaml. It seems obvious to edit notification_emails.

Is the PGP key the same as the one created for the buildfarm deployment provisioning stage? Yes, the key is the same in the ros_buildfarm_config/index.yaml and the buildfarm_deployment_config/repo/common.yaml.

Is upload_credential_id the same as credentials::jenkins-slave::id?

Should the status_page_repositories map to my repo machine from the buildfarm deployment provisioning stage? Yes appears in nearly every ros_buildfarm_config yaml, so replace it with my repo ip/name.

Change jenkins_url from to my jenkins master ip/name?

Comment out arm: if I don't want to build for the arm architecture? No

https://github.com/yujinrobot/rosdistro could be valuable resource, but they are using buildbot and not the jenkins buildfarm system?

How about generating all these config files from a script, and only provide emails and keys and so forth once? (though it might sacrifice flexibility, maybe there could be a single best practice configuration that this assumes) It looks like the debian_repository_key is duplicated 10 times!

Originally posted by lucasw on ROS Answers with karma: 8729 on 2016-03-02

Post score: 5


1 Answer 1


Rosanswers logo

For how to setup the custom rosdistro that's the right discussion, there's a little bit of an exercise left to the user.

Yes the upload_credential_id needs to be the same as credentials::jenkins-slave::id though it's fine to use the default.

You should change the jenkins_url should be set to a value that resolves to your master instance.

If you don't want to build for arm you can comment out or delete the entry in the index.yaml for the arm buildfile. We used it as an example of building for two different sets of architectures with different settings.

Automating generating these config files is definitely doable. A wizard/prompt to ask all the appropriate questions would probably be the best. However, the number of times you're expected to do this is relatively low which makes the value of automating it much lower. The repeated values for things like the repository key are there because the system is designed such that you do not need to upload all packages to the same repository for different build files. We could add complexity to abstract away the configuration but since the configuration is quite static managing the parallel config does not cost much in the long run and keeping the files self contained and easy to read has value.

Originally posted by tfoote with karma: 58457 on 2016-03-02

This answer was ACCEPTED on the original site

Post score: 2

Original comments

Comment by lucasw on 2016-03-03:
Thanks. I've gotten to the point where I have a generate_all_job.py creating a jenkins page full of jobs, but they mostly aren't working. I'll probably open a new question focused on rosdistro configuration.

Comment by lucasw on 2016-03-03:
Custom rosdistro questions http://answers.ros.org/question/228169/rosdistro-add-on-fork/


Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.