-
-
Notifications
You must be signed in to change notification settings - Fork 894
Library releases
-
Create a fresh clone of the repository:
git clone -o upstream [email protected]:mysensors/MySensors.git mysensors-release
-
Make sure to work on the most resent master version:
cd mysensors-release
git fetch upstream
-
Merge everything on
development
to a new branch named 'release' as a merge commit:git checkout remotes/upstream/master
git checkout -b release
git 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.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
-
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 -c
where 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