- 
          
- 
                Notifications
    You must be signed in to change notification settings 
- Fork 896
Library releases
- 
Create a fresh clone of the repository: git clone -o upstream git@github.com:mysensors/MySensors.git mysensors-release
- 
Make sure to work on the most resent master version: cd mysensors-releasegit fetch upstream
- 
Merge everything on developmentto a new branch named 'release' as a merge commit:git checkout remotes/upstream/mastergit checkout -b releasegit merge remotes/upstream/development --no-ff
- 
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.mdValidate that MAJOR/MINOR/PATCH values in core/Version.hare 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
- 
Validate that the version has changed in all files: git diff
- 
Amend the merge commit with the changes: git commit -am "MySensors $new_release release" --amend
- 
Push the merge commit to origin: git push upstream HEAD
- 
On GitHub, create a pull request from the release branch and make sure it targets master (development is the default). 
- 
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. 
- 
Once Jenkins finishes validating the pull request, update the master branch: 
Note: https://www.mysensors.org/apidocs/index.html does not currently get updated with the new tag. We should probably add a tag in step 10 and push the tag with the commit and adjust step 11 to use the newly created tag. A workaround could be to replay the master job, which is done at https://ci.mysensors.org/job/MySensors/job/MySensors/job/master/build?delay=0sec. You need to pick the matching build from the list (the hashes) and then you can replay that particular job.
**Note: Do not use GitHub web interface to do this merge**
git push upstream HEAD:master
- 
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). Add information from issues labelled release-notes that were merged after the last release 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 -cwhere 2.1.1 is the tag for the last release.
Update https://www.mysensors.org/download
- 
Delete the release branch (using command line or at https://github.com/mysensors/MySensors/branches ) and close the pull request on GitHub. 
- 
Fetch the updates from GitHub: 
git fetch upstream
- Fast-forwared development to include the release
git checkout development
git merge upstream/master
git push upstream HEAD
- Create a commit with the next alpha release on development:
git checkout -b new-dev
new_release=2.2.1-alpha (change this)
old_release=$(grep version library.properties | cut -f2 -d=)
sed -i "s/$old_release/$new_release/" library.json library.properties README.md
Update MAJOR/MINOR/PATCH values in core/Version.h.
Change prerelease-counter to alpha state
sed -i "s/MYSENSORS_LIBRARY_VERSION_PRERELEASE_NUMBER\t0x[0-9A-FX][0-9A-FX]/MYSENSORS_LIBRARY_VERSION_PRERELEASE_NUMBER\t0x00/" core/Version.h
- Validate that the version has changed in all files:
git diff
- Create a commit with the new development version
git commit -am "Development version $new_release"
- Push the new version branch and create a PR on GitHub:
git push upstream HEAD