First-timers Guide to Releases

So, this is your first release of a ROS stack -- welcome! We're excited to have contributions from the community become part of our distributions.

Before you do your first release, it's important that you understand better what a release means, what the expectations and policies are, and the workflow.

What is a Release?

A release is a version of a stack. There are several artifacts for a release, all of which are created by our infrastructure:

  1. Source control tags/branches for your stack (generated by create.py script)

  2. A tarball of your stack (generated by create.py script and uploaded to our servers)

  3. A source debian package (generated by our build servers)
  4. A binary debian package (generated by our build servers)

We record information about releases in a rosdistro file, e.g. unstable.rosdistro.

Expectations

Don't break the build

  • This is pretty self-explanatory.

Don't break other stacks

  • Once you do a release, it encourages others to build on your work. In the event that others release stacks on top of your work, you should either (a) keep the relevant APIs they use stable within a particular distribution release (e.g. electric), or (b) provide them with patches so that releases can be done simultaneously.

Policies

  1. You must submit a prerelease before doing a release. Yes, it takes time, but you will cost others time if your release fails
  2. If your build is broken, or becomes broken, it will be blacklisted. If your build is blacklisted, your debian package may disappear from the next release.

  3. You should try to support all the target platforms for a distribution release. You must support the Ubuntu LTS release within the target platform set (currently Lucid). If you know there are target platforms your release won't support, please notify kwc [at] willowgarage.com so that we can exclude it properly.

Workflow

NOTE: we only accept releases for fuerte and electric.

Each of these steps will be described in the release instructions, but this overview should provide the "big picture".

  1. In fuerte.rosdistro, add a entry with your rules and stack with version set to "null".

  2. Commit your change.
  3. Submit a prerelease test
  4. If that pre-release succeeds, run the 'create.py' release script to release into (fuerte|unstable). This will update the rosdistro file with an actual version number, create appropriate SVN/Git tags, and upload a source tarball of your code.
  5. Wait for your deb to build. There are two debs: a source deb, then a binary deb. The source deb will always fail for any target platforms your code does not support. The binary deb will fail if your code does not build.

  6. Wait until we push new 'fuerte' debs publicly. Install these debs on your machine to make sure that they work to your expectation.

Wiki: release/Releasing/First Release (last edited 2012-05-05 19:46:11 by KenConley)