Deployment

What we want…

We want to following repos, to be autodeployed to packagecloud.io, where they will be distributed via apt-get.

  • smacc_viewer (Python, Proprietary, Private Repo)
  • rrbtx_control (C++, Proprietary, Private Repo)
  • rrbtx_navigation (C++, Proprietary, Private Repo)
  • SMACC (C++, BSDv3, Public Repo) – Lower priority because we can distribute source code.

All these packages are for ROS, and consequently should be released as debians. and we don’t really care about security at this point (don’t need some trick GPG force setup). Just want to get the code out there to developers, in the manner they want (apt-get), without distributing the source code.

Catkin

Since all of our software is ROS focused, we use catkin… http://wiki.ros.org/catkin for all of our builds. Catkin is built on top of CMake.

TravisCI

We currently use Travis, and plan to continue, we have the bootstrap plan… https://travis-ci.com/plans

ros-industrial.ci

We use this ci script from ros-industrial .. https://github.com/ros-industrial/industrial_ci , which is our key market (the people we care about), across all of our repos.

Doxygen

And we are committed to using doxygen, as a documentation tools, and to having our documentation tool automated into our commit process. At the SMACC repo, scroll down to top of the readme to see the links to our doxygen pages that are auto pushed to github pages based on the workings of this shell script… https://github.com/reelrbtx/SMACC/blob/master/gh-pages.sh

Here is the doxygen github-pages site… https://reelrbtx.github.io/SMACC/master/html/namespaces.html

One last thing, we use custom doxygen settings, set in the repo’s doxygen file that produce very cool and useful class diagrams that aren’t the default. Here’s an example of ours… https://reelrbtx.github.io/SMACC/master/html/structsm__dance__bot_1_1SmDanceBot.html This of course requires greater computing resources, cache sizes, etc.

Bloom

In our failed first attempt to setup a deployment, we used the ROS tool bloom to generate our debians.

http://wiki.ros.org/bloom

Bloom, I believe is built on top of git-buildpackage

http://honk.sigxcpu.org/projects/git-buildpackage/manual-html/gbp.html

https://github.com/agx/git-buildpackage


Setting up autodeployment for Packagecloud.io

https://packagecloud.io/docs#travis

https://packagecloud.io/docs#how_to_create_packages

https://blog.packagecloud.io/eng/2017/01/17/continuous-delivery-python-applications-using-travis-ci-packagecloud/


Giant Pack file for SMACC issue

I found the reason why the SMACC repo is so big (Currently 663MB).

One file, .git/objects/pack/pack-5a9f70968c37a61374627488f91472bf2ab393d3.pack is 661MB.

Links that might help….

https://rtyley.github.io/bfg-repo-cleaner/

https://stackoverflow.com/questions/11050265/remove-large-pack-file-created-by-git/11277929

https://git-scm.com/book/en/v2/Git-Internals-Maintenance-and-Data-Recovery

https://github.com/18F/C2/issues/439