-
-
Notifications
You must be signed in to change notification settings - Fork 72
Release Guide
Note: this article is new, and only fully covers creating the initial release from a release-branch. Patch-releases are so far left as an exercise for the reader.
Find a good branch-out point, and create a release-branch. The branch-out point is usually going to be the tip of master, unless there's some other important concern for this release. The branch should be called something like release-X.Y
, where X
and Y
are the major and minor release versions.
We don't make release-branches for patch-releases, we just keep developing on top of the respective minor-release branch.
Make sure all previous release-branches has been merged to this release-branch before proceeding.
Stuff/packages.config
contains the reference to FuseOpen.Uno.Tool
, which is the package for the uno binary. You need to update the version number there to the version of Uno the release should contain.
In addition, we need to overwrite stuff/uno.packages
with the file from the corresponding release at the GitHub Releases page for Uno.
All markdown-files in the CHANGELOG/
directory should be pasted into CHANGELOG.md
and formatted as appropriate. Delete the markdown-files after this is done.
Have a look over the top-most heading CHANGELOG.md
to see that there's no obvious errors going on. Fix and commit any mistakes.
Make sure the top heading is the current release-version.
The next thing we need to do, is to update the version number. The version number is stored in VERSION.txt
.
We use release-candidates, where we postfix the version-number with -rcN
(where N is the release candidate number, starting at 1), so the version number will be X.Y.0-rc1
for the first release on a new branch.
We normally do not use release-candidates for patch-releases. Changes in patch-releases should be small enough to be relatively risk-free, so we should be able to release these directly without involving QA-work.
To update the version number, simply edit the VERSION.txt-file. For example, you could do echo "1.2.0-rc1" > VERSION.txt
for the release-1.2
branch. Commit the result.
Building the UPK packages are a matter of doing:
bash build.sh
bash pack.sh
Tag the tip of the branch, with a tag-name based on the version number, like so: vX.Y.Z
. Include any release-candidate information in the tag name. So, the tag for the first release candidate for the 1.2 release-branch, should be called v1.2-rc1
.
Push out the resulting branch and tag to the upstream repo, and mark the branch as "protected" on GitHub.
Go to "Settings" -> "Branches" -> "Choose a branch", and pick the newly created release-branch.
Use the following settings:
- Check
Protect this branch
- Check
Require pull request reviews before merging
- Check
Require status checks to pass before merging
- Check
continuous-integration/appveyor/pr
- Check
continuous-integration/travis-ci
- Check
- Check
Restrict who can push to this branch
- Check
The result should look something like this:
Merge the result back to the master
-branch.
Make sure that there's an Unreleased
-header in CHANGELOG.md
.
We upload our packages to our MyGet stream. In order to upload there, you need to have an API-key. The scripts below will assume you have such a key, in the $KEY environment variable. You can of course also just replace $KEY with the actual key when invoking the commands instead if you want.
Uno itself has the ability to upload its pacakges to myget.org.
Stuff/uno push upload/*.upk --server https://www.myget.org/F/fuse/api/v2/package --key $KEY --out fuselibs.packages
This produces an fuselibs.packages-file, that should be uploaded to GitHub releases page for the release-tag.
Here's a checklist that can be used to make sure everything has been done:
- Verify all previous release-branch has been merged.
- Update Uno
- Update CHANGELOG.md
- If this is a minor-release (does not apply to patch-releases):
- Create release-branch.
- Protect release-branch.
- Update version number.
- Upload packages:
- UPK packages
- upload
fuselibs.packages
to the GitHub releases
- Merge to master.