Skip to content

Library releases

Patrick Fallberg edited this page Nov 9, 2017 · 23 revisions

How to create a library release

  1. Create two fresh clones of the repository:

    git clone -o upstream [email protected]:mysensors/MySensors.git -b master release

    git clone -o upstream [email protected]:mysensors/MySensors.git -b development development

    Development clone is just for reference to validate the merge.

  2. Make sure to work on the most resent master version:

    cd release

    git fetch upstream

    git checkout remotes/upstream/master

  3. Create a release branch:

    git checkout -b release

  4. Merge everything on development to the new branch:

    git merge -X theirs remotes/upstream/development

  5. Validate that the release branch is identical to the development branch:

    git diff remotes/upstream/development

    You can also use a diff tool of your choise to compare the two clones, and make sure that the release repo is identical to the development repo before continuing.

  6. Update version info:

    new_release=2.2.0 (change this)

    old_release=2.2.0-rc.1 (change this)

    sed -i "s/$old_release/$new_release/" library.json library.properties README.md

    Validate that MAJOR/MINOR/PATCH values in core/Version.h are correctly set.

    sed something to fix MYSENSORS_LIBRARY_VERSION_PRERELEASE_NUMBER

  7. Commit the merge:

    git commit -am "MySensors $new_release release"

  8. Push the merge to origin:

    git push upstream HEAD:release

  9. On GitHub, create a pull request from the release branch and make sure it targets master (development is the default).

  10. Wait for Jenkins to finish building. Jenkins will create a copy+paste friendly changelog when validating the pull request. You can get it by clicking the Details link next to the Toll gate (Release changelog) status checkpoint.

  11. Once Jenkins finishes validating the pull request, and reviewers approve, ask for the pull request to be merged. Note: This merge should be a "Rebase and merge"

  12. Draft a new release on GitHub here. Pick a tag name that matches the release and target 'master'. E.g. 2.2.0 @ master.

Set the title to the same as the tag.

Paste the changelog provided by Jenkins.

When satisfied, publish the release and make an announcement on the forum.

Clone this wiki locally