Merge pull request #7660 from electron/document-release-process
Document release process
This commit is contained in:
commit
337db9fbb9
2 changed files with 102 additions and 0 deletions
100
docs/development/releasing.md
Normal file
100
docs/development/releasing.md
Normal file
|
@ -0,0 +1,100 @@
|
||||||
|
# Releasing
|
||||||
|
|
||||||
|
This document describes the process for releasing a new version of Electron.
|
||||||
|
|
||||||
|
## Compile release notes
|
||||||
|
|
||||||
|
The current process is to maintain a local file, keeping track of notable changes as pull requests are merged. For examples of how to format the notes, see previous releases on [the releases page].
|
||||||
|
|
||||||
|
## Create a temporary branch
|
||||||
|
|
||||||
|
Create a new branch from `master` named `release`.
|
||||||
|
|
||||||
|
```sh
|
||||||
|
git checkout master
|
||||||
|
git pull
|
||||||
|
git checkout -b release
|
||||||
|
```
|
||||||
|
|
||||||
|
This branch is created as a precaution to prevent any merged PRs from sneaking into a release between the time the temporary release branch is created and the CI builds are complete.
|
||||||
|
|
||||||
|
## Bump the version
|
||||||
|
|
||||||
|
Run the `bump-version` script, passing `major`, `minor`, or `patch` as an argument:
|
||||||
|
|
||||||
|
```sh
|
||||||
|
npm run bump-version -- patch
|
||||||
|
```
|
||||||
|
|
||||||
|
This will bump the version number in several files. See [this bump commit] for an example.
|
||||||
|
|
||||||
|
Most releases will be `patch` level. Upgrades to Chrome or other major changes should use `minor`. For more info, see [electron-versioning].
|
||||||
|
|
||||||
|
## Edit the release draft
|
||||||
|
|
||||||
|
1. Visit [the releases page] and you'll see a new draft release with placeholder release notes.
|
||||||
|
1. Edit the release and add release notes.
|
||||||
|
1. Click 'Save draft'. **Do not click 'Publish release'!**
|
||||||
|
1. Wait for all the builds to pass. :hourglass_flowing_sand:
|
||||||
|
|
||||||
|
## Merge temporary branch
|
||||||
|
|
||||||
|
Merge the temporary back into master, without creating a merge commit:
|
||||||
|
|
||||||
|
```sh
|
||||||
|
git merge release master --no-commit
|
||||||
|
git push origin master
|
||||||
|
```
|
||||||
|
|
||||||
|
If this fails, rebase with master and rebuild:
|
||||||
|
|
||||||
|
```sh
|
||||||
|
git pull
|
||||||
|
git checkout release
|
||||||
|
git rebase master
|
||||||
|
git push origin HEAD
|
||||||
|
```
|
||||||
|
|
||||||
|
## Run local debug build
|
||||||
|
|
||||||
|
Run local debug build to verify that you are actually building the version you want. Sometimes you thought you were doing a release for a new version, but you're actually not.
|
||||||
|
|
||||||
|
```sh
|
||||||
|
npm run build
|
||||||
|
npm start
|
||||||
|
```
|
||||||
|
|
||||||
|
Verify the window is displaying the current updated version.
|
||||||
|
|
||||||
|
## Set environment variables
|
||||||
|
|
||||||
|
You'll need to set the following environment variables to publish a release. Ask another team member for these credentials.
|
||||||
|
|
||||||
|
- `ELECTRON_S3_BUCKET`
|
||||||
|
- `ELECTRON_S3_ACCESS_KEY`
|
||||||
|
- `ELECTRON_S3_SECRET_KEY`
|
||||||
|
- `ELECTRON_GITHUB_TOKEN` - A personal access token with "repo" scope.
|
||||||
|
|
||||||
|
You will only need to do this once.
|
||||||
|
|
||||||
|
## Publish the release
|
||||||
|
|
||||||
|
This script will download the binaries and generate the node headers and the .lib linker used on Windows by node-gyp to build native modules.
|
||||||
|
|
||||||
|
```sh
|
||||||
|
npm run release
|
||||||
|
```
|
||||||
|
|
||||||
|
Note: Many distributions of Python still ship with old HTTPS certificates. You may see a `InsecureRequestWarning`, but it can be disregarded.
|
||||||
|
|
||||||
|
## Delete the temporary branch
|
||||||
|
|
||||||
|
```sh
|
||||||
|
git checkout master
|
||||||
|
git branch -D release # delete local branch
|
||||||
|
git push origin :release # delete remote branch
|
||||||
|
```
|
||||||
|
|
||||||
|
[the releases page]: https://github.com/electron/electron/releases
|
||||||
|
[this bump commit]: https://github.com/electron/electron/commit/78ec1b8f89b3886b856377a1756a51617bc33f5a
|
||||||
|
[electron-versioning]: /docs/tutorial/electron-versioning.md
|
|
@ -27,6 +27,7 @@
|
||||||
"scripts": {
|
"scripts": {
|
||||||
"bootstrap": "python ./script/bootstrap.py",
|
"bootstrap": "python ./script/bootstrap.py",
|
||||||
"browserify": "browserify",
|
"browserify": "browserify",
|
||||||
|
"bump-version": "./script/bump-version.py",
|
||||||
"build": "python ./script/build.py -c D",
|
"build": "python ./script/build.py -c D",
|
||||||
"clean": "python ./script/clean.py",
|
"clean": "python ./script/clean.py",
|
||||||
"coverage": "npm run instrument-code-coverage && npm test -- --use-instrumented-asar",
|
"coverage": "npm run instrument-code-coverage && npm test -- --use-instrumented-asar",
|
||||||
|
@ -38,6 +39,7 @@
|
||||||
"lint-api-docs-js": "standard-markdown docs && standard-markdown docs-translations",
|
"lint-api-docs-js": "standard-markdown docs && standard-markdown docs-translations",
|
||||||
"lint-api-docs": "electron-docs-linter docs/api --version=$npm_package_version --outfile=out/electron-api.json",
|
"lint-api-docs": "electron-docs-linter docs/api --version=$npm_package_version --outfile=out/electron-api.json",
|
||||||
"preinstall": "node -e 'process.exit(0)'",
|
"preinstall": "node -e 'process.exit(0)'",
|
||||||
|
"release": "./script/upload.py -p",
|
||||||
"repl": "python ./script/start.py --interactive",
|
"repl": "python ./script/start.py --interactive",
|
||||||
"start": "python ./script/start.py",
|
"start": "python ./script/start.py",
|
||||||
"test": "python ./script/test.py"
|
"test": "python ./script/test.py"
|
||||||
|
|
Loading…
Reference in a new issue