Skip to content

Library releases

Patrick Fallberg edited this page Jan 25, 2018 · 23 revisions

How to create a library release

  1. Create a fresh clone of the repository:

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

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

    cd mysensors-release

    git fetch upstream

  3. Merge everything on development to a new branch named 'release':

    git checkout remotes/upstream/development

    git checkout -b tmp

    git merge -s ours remotes/upstream/master

    git checkout remotes/upstream/master

    git checkout -b release

    git merge tmp

    git branch -D tmp

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

    git diff remotes/upstream/development

  5. Update version info:

    new_release=2.2.0 (change this)

    old_release=$(grep version library.properties | cut -f2 -d=)

    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 -i "s/MYSENSORS_LIBRARY_VERSION_PRERELEASE_NUMBER\t0x[0-9A-FX][0-9A-FX]/MYSENSORS_LIBRARY_VERSION_PRERELEASE_NUMBER\t0xFF/" core/Version.h

  6. Validate that the version has changed in all files:

    git diff

  7. Commit the changes as an amend to the merge commit:

    git commit -am "MySensors $new_release release" --amend

  8. Push the merge commit 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 "Create a merge commit"

  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.

    Add some relevant release notes (highlight significant changes).

    Paste the changelog provided by Jenkins.

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

    A list of contributors can be generated with git log 2.1.1...HEAD --format="%aN" | sort | uniq -c where 2.1.1 is the tag for the last release.

  13. Delete the release branch (using command line or at https://github.com/mysensors/MySensors/branches )

Clone this wiki locally