blob: 7a35b896a201e06e2fff129f2094ff60189fa9f9 [file] [log] [blame] [view]
David Brownc3370252017-09-12 10:36:19 -06001# Release Process
2
3The following documents the release process used with mcuboot.
4
5## Version numbering
6
7MCUboot uses [semantic versioning][semver], where version numbers
8follow a MAJOR.MINOR.PATCH format with the following guidelines on
9incremeting the numbers:
10
111. MAJOR version when you make incompatible API changes,
122. MINOR version when you add functionality in a backwards-compatible
13 manner, and
143. PATCH version when you make backwards-compatible bug fixes.
15
16We add pre-release tags of the format MAJOR.MINOR.PATCH-rc1.
17
18## Release Candidates
19
20Prior to each release, tags are made (see below) for at least one
21release candidate (a.b.c-rc1, followed by a.b.c-rc2, etc, followed by
22the official a.b.c release). The intent is to freeze the code for a
23time, and allow testing to happen.
24
25During the time between rc1 and the final release, the only changes
26that should be merged into master are those to fix bugs found in the
27rc.
28
29## Tagging and Release
30
31To make a release, make sure your local repo is on the tip version by
32fetching from origin. Typically, the releaser should create a branch
33named after the particular release.
34
35Create a commit on top of the branch that modifies the version number
36in the top-level `README.md`, and create a commit, with just this
37change, with a commit text similar to “Bump to version
38a.b.c”. Having the version bump helps to make the releases
39easier to find, as each release has a commit associated with it, and
40not just a tag pointing to another commit.
41
42Once this is done, the release should create a signed tag:
43``` bash
44git tag -s va.b.c-rcn
45```
46with the appropriate tag name. The releaser will need to make sure
47that git is configured to use the proper signing key, and that the
48public key is signed by enough parties to be trusted.
49
50At this point, the tag can be pushed to github to make the actual
51release happen:
52``` bash
53git push origin va.b.c-rcn
54```
55
56[semver]: http://semver.org/