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