= Releasing a new version of a catkin package = <> {{{#!wiki solid/blue By default, bloom releases packages to the public ROS build farm. See [[build.ros.org]] for more information and for policies about released packages. }}} == Prerequisites == This tutorial assumes that you, or someone else, has previously released this package by following the [[bloom/Tutorials/FirstTimeRelease|Releasing a Package for the First Time]] tutorial. || || ||<#FFFF00 style="text-align:center; ">'''We recommend you do a pre-release before the real release.''' || ||<#FFFF00 style="text-align:center; ">'''Follow this tutorial for instructions: [[bloom/Tutorials/PrereleaseTest|Running a pre-release test]]''' || <> == Release the catkin Package == {{{#!wiki blue/solid '''Note:''' If you have two factor authorization enabled on github, please follow this tutorial first: [[bloom/Tutorials/GithubManualAuthorization|GithubManualAuthorization]] }}} This part is easy, in any folder run: . {{{ $ bloom-release foo --rosdistro kinetic }}} Where `foo` is the name of your repository (name used in the ROS distro file) and `kinetic` is the name of the rosdistro you are releasing for. The "track" is set to be equivalent to the rosdistro unless otherwise specified. This command will fetch your release repository, run `git-bloom-release ` on it, and then push your changes to your hosted release repository, ditching the fetched release repository afterwards, and finally opening a pull request on your behalf. That's it. {{{#!wiki blue/solid /!\ If you took over from someone a pkg that's already been released and run `bloom-release`, you might see a [[http://answers.ros.org/question/57485/bloom-says-cannot-push-to-remote-release-repository/|situation like this]]. In that case ask for push access to that repository. }}} {{{#!wiki blue/solid '''Note:''' If your repository contains more packages in subdirectories, the whole release process expects you update all of them in sync each time. I.e. `catkin_generate_changelog` and `catkin_prepare_release` traverse all packages in the repository and work on all of them, and `bloom-release` releases all of them. There is no way around the first two (but you can substitute them with manual steps). If you only want to `bloom-release` a subset of the packages as binary packages, you can create a file called `.ignored` (i.e. `melodic.ignored`) in the root of the '''release''' repository (not the upstream repo) on branch `master` (this name is not configurable). In this file, you can list whitespace-separated packages that should not be released by bloom in this step. [[https://github.com/ros-gbp/geometry2-release/blob/master/melodic.ignored|Example here]], [[https://github.com/ros-gbp/geometry2-release/blob/master/melodic.ignored|discussion 1]], [[https://answers.ros.org/question/405579/bloom-how-to-release-a-single-package-from-a-multi-package-repo/|discussion 2]]. }}} == Notifying the Build Farm == If the automated pull request did not work then you will need to manually open a pull request to notify the build farm that you have a new version of your packages to build. For each ROS distribution there is a distro file hosted on Github, for kinetic it is: https://github.com/ros/rosdistro/blob/master/kinetic/distribution.yaml You can open a pull request on this file by simply visiting the above URL and clicking the edit button (note: you have to be logged into Github for this to work), make your changes and then click "Propose Changes" at the bottom right of the page. To update your version, simply find your repository in the list and update the associated version. Note that you must put the full version which is the version of your package plus the release increment number separated by a hyphen. The release increment number is increased each time you release a package of the same version, this can occur when adding patches to the release repository or when changing the release settings.