blob: 6eeaf1d50fb534b978cc9f96fb606c4632075ed4 [file] [log] [blame] [view]
# Release Process Documentation
## Release Process Overview
This describes the _technical_, theoretical steps of a release. (For all the _organizational_ steps and actual commands to execute, please refer to the [Detailed Release Process Documentation](#detailed-release-process-documentation) below.)
TODO maybe rewrite release-from-master focused with fallback "needs release branch" instead of release-from-branch focused.
- Decide on release type:
a) minor/major
b) patch
- Checkout correct branch:
- If minor/major: `master`
- If patch: existing release branch
- Prepare Release
- If patch: _Cherry pick_ fixes from `master` (or create on release branch directly or via PR and _commit_)
- [Code Maintenance](code-maintenance.md)
- If major (and not bumped manually with breaking commit before): Bump major and _commit_
- [Test](testing-releases.md)
- Fix any regressions and _commit_
- Create, curate Release Notes into `RELEASENOTES.md` and _commit_
- Release
- Remove `-dev` suffix in version and Release Notes (and _commit_)
- _Tag_
- Apache: Create archive and upload to [`dist/dev`](https://dist.apache.org/repos/dist/dev/cordova/)
- Bump patch + add `-dev` back (and _commit_)
- If minor/major: _Create_ new release branch
- _Push_ all changes, release branch and tag
- Vote
- Other PMC members [test the release](testing-releases.md) and vote
- On success:
- Apache: Promote from [`dist/dev`](https://dist.apache.org/repos/dist/dev/cordova/) to [`dist/release`](https://dist.apache.org/repos/dist/release/cordova/)
- Apache: Add `rel/` tag
- Publish archive (!) to npm
- If patch: Cherry pick release notes and version bump commit from release branch to `master`
- _Push_ changes and tag
- On failure:
- Remove created tag (and _push_), delete uploaded archive from [`dist/dev`](https://dist.apache.org/repos/dist/dev/cordova/), unbump patch on release branch (and _commit_ and _push_)
- TODO ALTERNATIVE: remove tag, delete archive, start from beginning with now a patch release
- TODO ALTERNATIVE: https://github.com/apache/cordova-coho/blob/master/docs/platforms-release-process.md#if-the-vote-does-not-pass
- Fix problem
- Restart at "Release"
This list also does not include steps that are only required for one type of component:
- Platforms: Update `cordova.js`, propagate version number to other platform files (which those are depends on the platform), tag `master` of `cordova-js` with new platform version, make sure documentation is up to date or create PR that can be merged after release, Android only: Publish to Bintray
- Plugins: Make sure `README.md` is correct
- Tools: cordova-lib: Update `platformsConfig.json`, all: update cross dependencies between libraries,
The detailed documentation below does include these at the appropriate locations.
## Detailed Release Process Documentation
This generalized release process is supported and partly automated by our `cordova-coho` CLI tool. As details of this process are different depending on what kind of package you want to release, we have individual detailed release process documentation that contains the actual commands to run:
- [Platforms](https://github.com/apache/cordova-coho/blob/master/docs/platforms-release-process.md)
- [Plugins](https://github.com/apache/cordova-coho/blob/master/docs/plugins-release-process.md)
- [Tooling](https://github.com/apache/cordova-coho/blob/master/docs/tools-release-process.md)
- [Hello World App](https://github.com/apache/cordova-coho/blob/master/docs/app-hello-world-release-process.md)
- [Coho](https://github.com/apache/cordova-coho/blob/master/docs/coho-release-process.md)