Document the application-services release process

This commit is contained in:
Thom Chiovoloni 2019-01-11 11:54:55 -08:00 коммит произвёл Thom
Родитель 427d470a8f
Коммит 2ed4daee07
2 изменённых файлов: 43 добавлений и 1 удалений

Просмотреть файл

@ -1,6 +1,6 @@
# Unreleased Changes
**TODO: remove before tagging/publishing a release**
**See [the release process docs](docs/release-process.md) for the steps to take when cutting a new release.**
[Full Changelog](https://github.com/mozilla/application-services/compare/v0.13.3...master)

42
docs/release-process.md Normal file
Просмотреть файл

@ -0,0 +1,42 @@
# Application Services Release Process
These are the steps needed to cut a new release.
1. Update the changelog.
1. Add a new header between the "Full Changelog" and "See the release process docs..." lines with the version number and date of the next release.
2. Replace `master` in the Full Changelog link to be `v<new-version-number>`. E.g. if you are releasing 0.13.2, the link should be
```
[Full Changelog](https://github.com/mozilla/application-services/compare/v0.13.1...v0.13.2)
```
Note that this needs three dots (`...`) between the two tags (two dots is different). Yes, the second tag doesn't exist yet, you'll make it later.
3. Add a new "Full Changelog" link that starts at your new version and continues to master. E.g. for 0.13.2 this would be
```
[Full Changelog](https://github.com/mozilla/application-services/compare/v0.13.2...master)
```
Again, this needs 3 dots.
4. Optionally, go over the commits between the past release and this one and see if anything is worth including.
5. Make sure the changelog follows the format of the other changelog entries. If you have access, [this document](https://docs.google.com/document/d/1oxdGm7OQcsy78NzXjMQKTbfzn21tl9Nopmvo8NCMWmU) is fairly comprehensive. For a concrete example, at the time of this writing, see the [0.13.0](https://github.com/mozilla/application-services/blob/master/CHANGELOG.md#0130-2019-01-09) release notes.
- Note that we try to provide PR or issue numbers (and links) for each change. Please add these if they are missing.
2. Bump the version number in the top-level [build.gradle](https://github.com/mozilla/application-services/blob/master/build.gradle) file. Be sure you're following semver, and if in doubt, ask.
3. Land the commits that perform the steps above. This takes a PR, typically.
4. Cut the actual release.
1. Click "Releases", and then "Draft a New Release" in the github UI.
2. Enter `v<myversion>` as the tag. In the example above it would be `v0.13.2`. It's important this is the same as the tags you put in the links in the changelog.
3. Under the description, paste the contents of the release notes from CHANGELOG.md.
4. Note that the release is not avaliable until the taskcluster build completes for that tag.
- Finding out that this takes a little navigation in the github UI. It's available at `https://github.com/mozilla/application-services/commits/v<VERSION NUMBER>` in the build status info (the emoji) next to the last commit.
- If the taskcluster tag and/or release tasks fail, ping someone in slack and we'll figure out what to do.
5. In order for consumers to have access, we need to update in [android-components](https://github.com/mozilla-mobile/android-components).
1. If the changes expose new functionality, or otherwise require changes to code or documentation in https://github.com/mozilla-mobile/android-components, perform those. This part is often done at the same time as the changes in application-services, to avoid being blocked on steps 3-4 of this document.
2. Change the versions of our dependencies in [buildSrc/src/main/java/Dependencies.kt](https://github.com/mozilla-mobile/android-components/blob/master/buildSrc/src/main/java/Dependencies.kt).
3. Note the relevant changes in their [docs/changelog.md](https://github.com/mozilla-mobile/android-components/blob/master/docs/changelog.md), and update the application-services version there as well in their list of dependency versions.
4. **_Important: Manually test the changes versus the samples in android-components._**
- We do not have automated test coverage for much of the network functionality at this point, so this is crucial.
- You can do this before the release has been cut by adding `substitutions.application-services.dir=/path/to/application-services` in your `local.properties` file in android-components. Remember that you have done this, however, as it overrides changes in `Dependencies.kt`.
5. Get it PRed and landed.