Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

V4.2.5 proposal #4768

Merged
merged 191 commits into from
Jan 20, 2016
Merged
Changes from 1 commit
Commits
Show all changes
191 commits
Select commit Hold shift + click to select a range
31b4091
debugger: also exit when the repl emits 'exit'
fb55 Aug 13, 2015
ae8e3af
doc: update irc channels: #node.js and #node-dev
nelsonpecora Sep 8, 2015
8a9869e
module: fix column offsets in errors
tflanagan Sep 14, 2015
80b4ba2
build: Updates for AIX npm support - part 1
mhdawson Sep 29, 2015
3d81ea9
lib,test: update let to const where applicable
thefourtheye Oct 8, 2015
efa30dd
tools: enable prefer-const eslint rule
thefourtheye Oct 8, 2015
f31d23c
doc: add TSC meeting minutes 2015-09-30
rvagg Oct 7, 2015
b9c6996
doc: add TSC meeting minutes 2015-10-07
rvagg Oct 14, 2015
2d5380e
util: fix constructor/instanceof checks
mscdex Oct 15, 2015
f413fae
tools: add tap output to cpplint
jbergstroem Oct 20, 2015
49f16d7
async_wrap: allow some hooks to be optional
trevnorris Oct 20, 2015
a8b45e9
async_wrap: new instances get uid
trevnorris Oct 19, 2015
5533681
async_wrap: call callback in destructor
trevnorris Oct 20, 2015
2e623ff
doc: add TSC meeting minutes 2015-10-14
rvagg Oct 21, 2015
1f78bff
doc: add TSC meeting minutes 2015-10-21
rvagg Oct 22, 2015
166523d
test: fix race condition in unrefd interval test
mcornac Oct 27, 2015
7ffd299
doc: add final full stop in CONTRIBUTING.md
emilyaviva Oct 29, 2015
46c59b7
doc: add CTC meeting minutes 2015-10-28
rvagg Nov 4, 2015
e6c2533
build: omit -gline-tables-only for --enable-asan
bnoordhuis Nov 5, 2015
70c95ea
doc: add warning about Windows process groups
r-52 Nov 5, 2015
e2141cb
test: skip instead of fail when mem constrained
mcornac Nov 6, 2015
32801de
tools: Use `throw new Error()` consistently
Trott Nov 8, 2015
3ee1670
tools: enforce `throw new Error()` with lint rule
Trott Nov 8, 2015
8c5b847
doc: Describe FIPSDIR environment variable
stefanmb Nov 6, 2015
b7c3fb7
crypto: disable crypto.createCipher in FIPS mode
stefanmb Nov 9, 2015
22d2887
test: add OS X to module loading error test
evanlucas Nov 18, 2015
5bf5688
fs,doc: use `target` instead of `destination`
yorkie Nov 25, 2015
f55491a
doc: move fs.existsSync() deprecation message
martfors Nov 20, 2015
a7367fd
net: small code cleanup
jscissr Nov 20, 2015
22b88e1
test: add TAP diagnostic message for retried tests
Trott Nov 21, 2015
3f0ff87
test: fix time resolution constraint
gireeshpunathil Nov 23, 2015
bb158f8
doc: s/node.js/Node.js in readme
rvagg Nov 24, 2015
a320045
buffer: default to UTF8 in byteLength()
tomgco Nov 24, 2015
a77dcfe
test: use platform-based timeout for reliability
Trott Nov 25, 2015
b8e75de
crypto: fix native module compilation with FIPS
stefanmb Nov 25, 2015
e2fe214
doc: add links and backticks around names
Nov 27, 2015
b71a3b3
doc: fixup socket.remoteAddress
baloo Dec 8, 2015
6dd375c
doc: document backlog for server.listen() variants
jscissr Nov 25, 2015
86b47e8
timers: optimize callback call: bind -> arrow
bsnote Nov 26, 2015
2ee7853
test: fix http-many-ended-pipelines flakiness
santigimeno Nov 26, 2015
22ba1b4
test: eliminate multicast test FreeBSD flakiness
Trott Nov 26, 2015
ac939d5
test: improve cluster-disconnect-handles test
mscdex Dec 1, 2015
c9100d7
test: fix flaky test-net-socket-local-address
Trott Dec 1, 2015
c96eca1
src: don't print garbage errors
cjihrig Dec 2, 2015
90498e2
test: skip long path tests on non-Windows
rsp Dec 2, 2015
abe4528
doc: url.format - true slash postfix behaviour
Dec 2, 2015
39364c4
doc: improve child_process.markdown wording
yorkie Dec 3, 2015
17b06df
doc: add zkat to collaborators
zkat Dec 3, 2015
683d8dd
doc: add JungMinu to collaborators
JungMinu Dec 3, 2015
27b9b72
doc: add iarna to collaborators
iarna Dec 3, 2015
830caeb
doc, test: symbols as event names
bengl Dec 4, 2015
c5f71ac
build: add "--partly-static" build options
medns Dec 4, 2015
c6dc2a1
buffer: Prevent Buffer constructor deopt
brycebaril Dec 4, 2015
6f4ab1d
test: mark test-cluster-shared-leak flaky
Trott Dec 5, 2015
70974e9
src: use GetCurrentProcessId() for process.pid
bnoordhuis Dec 4, 2015
06113b8
node: s/doNTCallbackX/nextTickCallbackWithXArgs/
rvagg Dec 6, 2015
d480667
repl: display error message when loading directory
princejwesley Dec 6, 2015
1c34b13
doc: add brief Node.js overview to README
Dec 7, 2015
8d676ef
doc: change references from node to Node.js
r-52 Dec 7, 2015
990e7ff
doc: update AUTHORS list
rvagg Dec 8, 2015
6235fdf
doc: copyedit addons doc
Trott Dec 8, 2015
c35a409
doc: clarify assert.fail doc
Trott Dec 8, 2015
7920f8d
doc: copyedit buffer doc
Trott Dec 8, 2015
2e64205
doc: copyedit child_process doc
Trott Dec 8, 2015
0efc35e
tls_wrap: slice buffer properly in `ClearOut`
indutny Dec 8, 2015
c41b280
test: fix tls-inception
santigimeno Dec 8, 2015
d00b9fc
test: fix tls-inception flakiness
santigimeno Dec 8, 2015
481d59a
configure: fix arm vfpv2
joerg-krause Dec 8, 2015
6bc1b1c
test: don't assume openssl s_client supports -ssl3
bnoordhuis Dec 8, 2015
9a0f156
test: fix domain-top-level-error-handler-throw
santigimeno Dec 20, 2015
5140c40
doc: harmonize description of `ca` argument
bnoordhuis Dec 9, 2015
bfe1a6b
doc: add calvinmetcalf to collaborators
calvinmetcalf Dec 9, 2015
59654c2
doc: add rmg to collaborators
rmg Dec 9, 2015
4ccf04c
doc: add mcollina to collaborators
mcollina Dec 9, 2015
fb8e8db
doc: copyedit console doc
Trott Dec 10, 2015
cf214e5
doc: move description of 'equals' method to right place
janriemer Dec 10, 2015
6c30d08
doc: Fixing broken links to the v8 wiki
tomgco Dec 11, 2015
fd250b8
test: parallelize test-repl-persistent-history
Fishrock123 Dec 11, 2015
15c295a
test: use regular timeout times for ARMv8
Fishrock123 Dec 10, 2015
5ba08fb
src: fix line numbers on core errors
cjihrig Dec 11, 2015
7983577
doc: fix improper http.get sample code
hidekiy Dec 13, 2015
03e9495
node: remove unused variables in AppendExceptionLine
yorkie Dec 13, 2015
5b695d0
tls_wrap: inherit from the `AsyncWrap` first
indutny Dec 14, 2015
d47f6ba
src: fix deprecation message for ErrnoException
gagern Dec 14, 2015
d87ad30
doc: clarify error events in HTTP module documentation
Dec 14, 2015
61f91b2
doc: fix, modernize examples in docs
jasnell Dec 14, 2015
73e7811
test: add test for tls.parseCertString
evanlucas Dec 15, 2015
764df21
doc: document the cache parameter for fs.realpathSync
JacksonTian Dec 15, 2015
dd0c925
udp: remove a needless instanceof Buffer check
Dec 16, 2015
44dbe15
test: fix debug-port-cluster flakiness
bnoordhuis Dec 16, 2015
fe693b7
doc: Typo in buffer.markdown referencing buf.write()
chrisJohn404 Dec 17, 2015
ed87873
doc: fix link in addons.markdown
secretfader Dec 17, 2015
2b142fd
doc: catch the WORKING_GROUPS.md bootstrap docs up to date
jasnell Dec 20, 2015
2b1804f
doc: copyedit releases.md
Trott Dec 21, 2015
2b8a32a
src: refactor vcbuild configure args creation
rvagg Oct 16, 2015
1ebb0c0
deps: upgrade libuv to 1.8.0
saghul Dec 13, 2015
1bc44e7
test: try other ipv6 localhost alternatives
mscdex Dec 17, 2015
9808521
test: fix flaky test-net-error-twice
mscdex Dec 18, 2015
761af37
test: fix race condition in test-http-client-onerror
dnakamura Dec 18, 2015
823269d
doc: improve assert.markdown copy
jasnell Dec 20, 2015
29804e0
test: use platformTimeout() in more places
mscdex Dec 22, 2015
6c00213
test: refactor test-net-connect-options-ipv6
Trott Dec 23, 2015
abb17cc
doc: fix spelling error in lib/url.js comment
nikolas Dec 22, 2015
df7e128
doc: improvements to console.markdown copy
jasnell Dec 26, 2015
e244d56
doc: improvements to debugger.markdown copy
jasnell Dec 27, 2015
74bcad0
doc: improvements to dgram.markdown copy
jasnell Dec 27, 2015
c3a9d8a
deps: backport 200315c from V8 upstream
vkurchatkin Dec 3, 2015
1bf84b9
util,src: allow lookup of hidden values
cjihrig Nov 23, 2015
422a865
util: add decorateErrorStack()
cjihrig Nov 25, 2015
93afc39
repl: attach location info to syntax errors
cjihrig Nov 25, 2015
0ae90ec
module,repl: remove repl require() hack
bnoordhuis Nov 25, 2015
6a7c9d9
util: move .decorateErrorStack to internal/util
bnoordhuis Nov 25, 2015
acc3d66
test: move ArrayStream to common
cjihrig Nov 25, 2015
b421119
util: determine object types in C++
cjihrig Dec 1, 2015
3080bdc
src: define Is* util functions with macros
cjihrig Dec 2, 2015
41882e4
repl: fix require('3rdparty') regression
bnoordhuis Dec 9, 2015
d795301
test: remove unnecessary assignments
Trott Dec 24, 2015
f5bfacd
test: remove unused `util` imports
Trott Dec 23, 2015
9baa561
deps: backport 066747e from upstream V8
ofrobots Jan 11, 2016
9855fab
repl: use String#repeat instead of Array#join
evanlucas Nov 18, 2015
f441410
util: faster arrayToHash
JacksonTian Nov 22, 2015
4856420
child_process: flush consuming streams
Nov 30, 2015
db0e906
repl: Fixed node repl history edge case.
zeusdeux Dec 1, 2015
d19da66
crypto: load PFX chain the same way as regular one
indutny Dec 5, 2015
39dc054
http: remove excess calls to removeSocket
Dec 6, 2015
f613b30
test: add test-domain-exit-dispose-again back
Dec 12, 2015
8ce6843
os: fix crash in GetInterfaceAddresses
martinbark Dec 14, 2015
3ff2373
http: Remove an unnecessary assignment
gigabo Dec 17, 2015
138d004
buffer: faster case for create Buffer from new Buffer(0)
JacksonTian Dec 17, 2015
901172a
assert: typed array deepequal performance fix
claudiorodriguez Dec 17, 2015
44ee33f
buffer: refactor create buffer
JacksonTian Dec 18, 2015
751fbd8
https: use `servername` in agent key
indutny Dec 22, 2015
53dcbb6
repl: remove unused function
Trott Dec 23, 2015
c77fc71
test: remove unused var from test-assert.js
Trott Dec 23, 2015
41fcda8
http: use `self.keepAlive` instead of `self.options.keepAlive`
dschenkelman Dec 23, 2015
35e3298
child_process: guard against race condition
Trott Dec 24, 2015
e70c88d
test: remove unused assert module imports
Trott Dec 27, 2015
506f2f8
doc: add anchors for _transform _flush _writev in stream.markdown
iamchenxin Dec 28, 2015
ceea6df
doc: improvements to dns.markdown copy
jasnell Dec 27, 2015
d927c51
doc: improvements to errors.markdown copy
jasnell Dec 28, 2015
bf56d50
doc: explain ClientRequest#setTimeout time unit
bripkens Dec 28, 2015
1ae0e35
test: improve assert message
Trott Dec 29, 2015
0ceb314
doc: improvements to events.markdown copy
jasnell Dec 29, 2015
610727d
test: clarify role of domains in test
Trott Dec 31, 2015
7ca3c6c
test: refactor test-fs-empty-readStream
Trott Dec 30, 2015
7dc90e9
test: remove time check
Trott Dec 31, 2015
c24fa14
test: inherit JOBS from environment
jbergstroem Dec 31, 2015
b8f097e
test: fix flaky streams test
Trott Jan 3, 2016
25c41d0
test: remove flaky designations for tests
Trott Jan 3, 2016
7caf87b
test: fix flaky test-http-agent-keepalive
Trott Jan 4, 2016
a7bcf8b
doc: close backtick in process.title description
Jan 5, 2016
8574d91
doc: stronger suggestion for userland assert
geek Jan 5, 2016
0cd2252
doc: fix numbering in stream.markdown
richardsun29 Jan 5, 2016
5d6bed8
doc: bring releases.md up to date
cjihrig Jan 5, 2016
54977e6
doc: add missing backtick for readline
mscdex Jan 6, 2016
e20b1f6
doc: add Myles Borins to Release Team
Jan 8, 2016
0b12bcb
doc: add Evan Lucas to Release Team
evanlucas Jan 8, 2016
bcd2cbb
doc: fix description about the latest-codename
JungMinu Jan 8, 2016
bd31740
doc: label http.IncomingMessage as a Class
Sequoia Jan 8, 2016
5b45a46
doc: document http's server.listen return value
Sequoia Jan 8, 2016
2f40715
doc: adds usage of readline line-by-line parsing
eljefedelrodeodeljefe Jan 10, 2016
18f5cd8
doc: update stylesheet to match frontpage
silverwind Jan 11, 2016
295ca5b
doc: add branch-diff example to releases.md
Jan 12, 2016
50b72aa
docs: fix npm command in releases.md
Jan 13, 2016
82cbfcd
docs: update gpg key for Myles Borins
Jan 13, 2016
c4eeb88
test: fix flaky cluster-disconnect-race
mscdex Dec 28, 2015
253fe3e
dns: remove nonexistant exports.ADNAME
silverwind Sep 27, 2015
dffe83c
test: remove unused modules
Trott Dec 30, 2015
7a1a0a0
lib: remove unused modules
Trott Dec 23, 2015
2f4538d
test: remove unused vars
Trott Dec 27, 2015
13241bd
test: remove unused vars in ChildProcess tests
Trott Dec 26, 2015
da9e5c1
test: remove unused variables from net tests
Trott Dec 26, 2015
7b1aa04
test: remove unused variables from HTTPS tests
Trott Dec 26, 2015
6e4598d
test: remove unused variables from TLS tests
Trott Dec 26, 2015
0d5a508
test: extend timeout in Debug mode
Trott Dec 26, 2015
b4964b0
test: remove unused variables form http tests
Trott Dec 25, 2015
f183770
test: remove unused vars from parallel tests
Trott Jan 2, 2016
69fef19
tools: implement no-unused-vars for eslint
Trott Dec 23, 2015
5f4aa79
doc: clarify explanation of first stream section
vccortez Dec 10, 2015
4d37472
tls_wrap: clear errors on return
indutny Jan 3, 2016
6b2ef0e
test: make temp path customizable
jbergstroem Oct 12, 2015
350fa66
test: don't assume a certain folder structure
jbergstroem Dec 30, 2015
b6124ea
test: write to tmp dir rather than fixture dir
Trott Dec 30, 2015
33e72e1
doc: update links to use https where possible
Dec 2, 2015
46d8c93
test: don't use cwd for relative path
jbergstroem Dec 30, 2015
8c2b65a
doc: clarify protocol default in http.request()
cjihrig Jan 15, 2016
f61412c
test: mark test-debug-no-context is flaky
Trott Dec 25, 2015
87181cd
assert: accommodate ES6 classes that extend Error
Trott Dec 6, 2015
628cb86
tools: add .editorconfig
ronkorving Sep 22, 2015
e6ca04c
2016-01-20, Version 4.2.5 "Argon" (LTS) Release
Jan 19, 2016
8a0cc64
Working on v4.2.6
Jan 20, 2016
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Prev Previous commit
Next Next commit
doc: bring releases.md up to date
Refs: #3254
PR-URL: #4540
Reviewed-By: James M Snell <jasnell@gmail.com>
  • Loading branch information
cjihrig authored and Myles Borins committed Jan 19, 2016
commit 5d6bed895ca871e943368347b2b7fe4cb7e47cb7
166 changes: 107 additions & 59 deletions doc/releases.md
Original file line number Diff line number Diff line change
Expand Up @@ -50,19 +50,42 @@ Notes:
- Dates listed below as _"YYYY-MM-DD"_ should be the date of the release **as UTC**. Use `date -u +'%Y-%m-%d'` to find out what this is.
- Version strings are listed below as _"vx.y.z"_. Substitute for the release version.

### 1. Ensure that HEAD Is Stable
### 1. Cherry-picking from `master` and other branches

Run a **[node-test-pull-request](https://ci.nodejs.org/job/node-test-pull-request/)** test run to ensure that the build is stable and the HEAD commit is ready for release.
Create a new branch named _"vx.y.z-proposal"_, or something similar. Using `git cherry-pick`, bring the appropriate commits into your new branch. To determine the relevant commits, use [`branch-diff`](https://github.com/rvagg/branch-diff) and [`changelog-maker`](https://github.com/rvagg/changelog-maker/) (both are available on npm and should be installed globally). These tools depend on our commit metadata, as well as the `semver-minor` and `semver-major` GitHub labels. One drawback is that when the `PR-URL` metadata is accidentally omitted from a commit, the commit will show up because it's unsure if it's a duplicate or not.

### 2. Produce a Nightly Build _(optional)_
Carefully review the list of commits looking for errors (incorrect `PR-URL`, incorrect semver, etc.). Commits labeled as semver minor or semver major should only be cherry-picked when appropriate for the type of release being made. Previous release commits and version bumps do not need to be cherry-picked.

If there is a reason to produce a test release for the purpose of having others try out installers or specifics of builds, produce a nightly build using **[iojs+release](https://ci.nodejs.org/job/iojs+release/)** and wait for it to drop in <https://nodejs.org/download/nightly/>. Follow the directions and enter a proper length commit SHA, enter a date string, and select "nightly" for "disttype".
### 2. Update `src/node_version.h`

This is particularly recommended if there has been recent work relating to the OS X or Windows installers as they are not tested in any way by CI.
Set the version for the proposed release using the following macros, which are already defined in `src/node_version.h`:

### 3. Update the _CHANGELOG.md_
```
#define NODE_MAJOR_VERSION x
#define NODE_MINOR_VERSION y
#define NODE_PATCH_VERSION z
```

Collect a formatted list of commits since the last release. Use [changelog-maker](https://github.com/rvagg/changelog-maker) (available from npm: `npm install changelog-maker -g`) to do this.
Set the `NODE_VERSION_IS_RELEASE` macro value to `1`. This causes the build to be produced with a version string that does not have a trailing pre-release tag:

```
#define NODE_VERSION_IS_RELEASE 1
```

**Also consider whether to bump `NODE_MODULE_VERSION`**:

This macro is used to signal an ABI version for native addons. It currently has two common uses in the community:

* Determining what API to work against for compiling native addons, e.g. [NAN](https://github.com/rvagg/nan) uses it to form a compatibility-layer for much of what it wraps.
* Determining the ABI for downloading pre-built binaries of native addons, e.g. [node-pre-gyp](https://github.com/mapbox/node-pre-gyp) uses this value as exposed via `process.versions.modules` to help determine the appropriate binary to download at install-time.

The general rule is to bump this version when there are _breaking ABI_ changes and also if there are non-trivial API changes. The rules are not yet strictly defined, so if in doubt, please confer with someone that will have a more informed perspective, such as a member of the NAN team.

**Note** that it is current TSC policy to bump major version when ABI changes. If you see a need to bump `NODE_MODULE_VERSION` then you should consult the TSC. Commits may need to be reverted or a major version bump may need to happen.

### 3. Update `CHANGELOG.md`

Collect a formatted list of commits since the last release. Use [`changelog-maker`](https://github.com/rvagg/changelog-maker) to do this.

```
$ changelog-maker --group
Expand All @@ -74,10 +97,10 @@ Note that changelog-maker counts commits since the last tag and if the last tag
$ changelog-maker --group --start-ref v2.3.1
```

The _CHANGELOG.md_ entry should take the following form:
The `CHANGELOG.md` entry should take the following form:

```
## YYYY-MM-DD, Version x.y.z, @releaser
## YYYY-MM-DD, Version x.y.z (Release Type), @releaser

### Notable changes

Expand All @@ -95,55 +118,46 @@ See https://github.com/nodejs/node/labels/confirmed-bug for complete and current

### Commits

* Include the full list of commits since the last release here
* Include the full list of commits since the last release here. Do not include "Working on X.Y.Z+1" commits.
```

### 4. Update _src/node_version.h_
The release type should be either Stable, LTS, or Maintenance, depending on the type of release being produced.

The following macros should already be set for the release since they will have been updated directly following the last release. They shouldn't require changing:
### 4. Create Release Commit

```
#define NODE_MAJOR_VERSION x
#define NODE_MINOR_VERSION y
#define NODE_PATCH_VERSION z
```

However, the `NODE_VERSION_IS_RELEASE` macro needs to be set to `1` for the build to be produced with a version string that does not have a trailing pre-release tag:
The `CHANGELOG.md` and `src/node_version.h` changes should be the final commit that will be tagged for the release. When committing these to git, use the following message format:

```
#define NODE_VERSION_IS_RELEASE 1
```
YYYY-MM-DD, Version x.y.z (Release Type)

**Also consider whether to bump `NODE_MODULE_VERSION`**:
Notable changes:

This macro is used to signal an ABI version for native addons. It currently has two common uses in the community:
* Copy the notable changes list here, reformatted for plain-text
```

* Determining what API to work against for compiling native addons, e.g. [NAN](https://github.com/rvagg/nan) uses it to form a compatibility-layer for much of what it wraps.
* Determining the ABI for downloading pre-built binaries of native addons, e.g. [node-pre-gyp](https://github.com/mapbox/node-pre-gyp) uses this value as exposed via `process.versions.modules` to help determine the appropriate binary to download at install-time.
### 5. Propose Release on GitHub

The general rule is to bump this version when there are _breaking ABI_ changes and also if there are non-trivial API changes. The rules are not yet strictly defined, so if in doubt, please confer with someone that will have a more informed perspective, such as a member of the NAN team.
Push the release branch to `nodejs/node`, not to your own fork. This allows release branches to more easily be passed between members of the release team if necessary.

**Note** that it is current TSC policy to bump major version when ABI changes. If you see a need to bump `NODE_MODULE_VERSION` then you should consult the TSC. Commits may need to be reverted or a major version bump may need to happen.
Create a pull request targeting the correct release line. For example, a v5.3.0-proposal PR should target v5.x, not master. Paste the CHANGELOG modifications into the body of the PR so that collaborators can see what is changing. These PRs should be left open for at least 24 hours, and can be updated as new commits land.

### 5. Create Release Commit
If you need any additional information about any of the commits, this PR is a good place to @-mention the relevant contributors.

The _CHANGELOG.md_ and _src/node_version.h_ changes should be the final commit that will be tagged for the release.
This is also a good time to update the release commit to include `PR-URL` metadata.

When committing these to git, use the following message format:
### 6. Ensure that the Release Branch is Stable

```
YYYY-MM-DD node.js vx.y.z Release
Run a **[node-test-pull-request](https://ci.nodejs.org/job/node-test-pull-request/)** test run to ensure that the build is stable and the HEAD commit is ready for release.

Notable changes:
Perform some smoke-testing. We have [citgm](https://github.com/nodejs/citgm) for this. You can also manually test important modules from the ecosystem. Remember that node-gyp and npm both take a `--nodedir` flag to point to your local repository so that you can test unreleased versions without needing node-gyp to download headers for you.

* Copy the notable changes list here, reformatted for plain-text
```
### 7. Produce a Nightly Build _(optional)_

### 6. Push to GitHub
If there is a reason to produce a test release for the purpose of having others try out installers or specifics of builds, produce a nightly build using **[iojs+release](https://ci.nodejs.org/job/iojs+release/)** and wait for it to drop in <https://nodejs.org/download/nightly/>. Follow the directions and enter a proper length commit SHA, enter a date string, and select "nightly" for "disttype".

Note that it is not essential that the release builds be created from the Node.js repository. They may be created from your own fork if you desire. It is preferable, but not essential, that the commits remain the same between that used to build and the tagged commit in the Node.js repository.
This is particularly recommended if there has been recent work relating to the OS X or Windows installers as they are not tested in any way by CI.

### 7. Produce Release Builds
### 8. Produce Release Builds

Use **[iojs+release](https://ci.nodejs.org/job/iojs+release/)** to produce release artifacts. Enter the commit that you want to build from and select "release" for "disttype".

Expand All @@ -153,44 +167,62 @@ All release slaves should achieve "SUCCESS" (and be green, not red). A release w

You can rebuild the release as many times as you need prior to promoting them if you encounter problems.

Note that you do not have to wait for the ARM builds if they take longer than the others. It is only necessary to have the main Linux (x64 and x86), OS X .pkg and .tar.gz, Windows (x64 and x86) .msi and .exe, source, headers and docs (both produced currently by an OS X slave). That is, the slaves with "arm" in their name don't need to have finished to progress to the next step. However, **if you promote builds _before_ ARM builds have finished, you must repeat the promotion step for the ARM builds when they are ready**.
If you have an error on Windows and need to start again, be aware that you'll get immediate failure unless you wait up to 2 minutes for the linker to stop from previous jobs. i.e. if a build fails after having started compiling, that slave will still have a linker process that's running for another couple of minutes which will prevent Jenkins from clearing the workspace to start a new one. This isn't a big deal, it's just a hassle because it'll result in another failed build if you start again!

ARMv7 takes the longest to compile. Unfortunately ccache isn't as effective on release builds, I think it's because of the additional macro settings that go in to a release build that nullify previous builds. Also most of the release build machines are separate to the test build machines so they don't get any benefit from ongoing compiles between releases. You can expect 1.5 hours for the ARMv7 builder to complete and you should normally wait for this to finish. It is possible to rush a release out if you want and add additional builds later but we normally provide ARMv7 from initial promotion.

### 8. Tag and Sign the Release Commit
You do not have to wait for the ARMv6 / Raspberry PI builds if they take longer than the others. It is only necessary to have the main Linux (x64 and x86), OS X .pkg and .tar.gz, Windows (x64 and x86) .msi and .exe, source, headers and docs (both produced currently by an OS X slave). **If you promote builds _before_ ARM builds have finished, you must repeat the promotion step for the ARM builds when they are ready**.

Tag the release as <b><code>vx.y.z</code></b> and sign **using the same GPG key that will be used to sign SHASUMS256.txt**.
### 9. Test the Build

Jenkins collects the artifacts from the builds, allowing you to download and install the new build. Make sure that the build appears correct. Check the version numbers, and perform some basic checks to confirm that all is well with the build before moving forward.

### 10. Tag and Sign the Release Commit

Once you have produced builds that you're happy with, create a new tag. By waiting until this stage to create tags, you can discard a proposed release if something goes wrong or additional commits are required. Once you have created a tag and pushed it to GitHub, you ***should not*** delete and re-tag. If you make a mistake after tagging then you'll have to version-bump and start again and count that tag/version as lost.

Tag summaries have a predictable format, look at a recent tag to see, `git tag -v v5.3.0`. The message should look something like `2015-12-16 Node.js v5.3.0 (Stable) Release`.

Create a tag using the following command:

```
$ git tag <vx.y.z> <commit-sha> -sm 'YYYY-MM-DD node.js vz.y.x Release'
$ git tag <vx.y.z> <commit-sha> -sm 'YYYY-MM-DD Node.js vx.y.z (Release Type) Release'
```

Push the tag to GitHub.
The tag **must** be signed using the GPG key that's listed for you on the project README.

Push the tag to the repo before you promote the builds. If you haven't pushed your tag first, then build promotion won't work properly. Push the tag using the following command:

```
$ git push origin <vx.y.z>
$ git push <remote> <vx.y.z>
```

### 9. Set Up For the Next Release
### 11. Set Up For the Next Release

Edit _src/node_version.h_ again and:
On release proposal branch, edit `src/node_version.h` again and:

* Increment `NODE_PATCH_VERSION` by one
* Change `NODE_VERSION_IS_RELEASE` back to `0`

Commit this change with:
Commit this change with the following commit message format:

```
$ git commit -am 'Working on vx.y.z' # where 'z' is the incremented patch number
Working on vx.y.z # where 'z' is the incremented patch number

PR-URL: <full URL to your release proposal PR>
```

This sets up the branch so that nightly builds are produced with the next version number _and_ a pre-release tag.

### 10. Promote and Sign the Release Builds
Merge your release branch into the stable branch that you are releasing from (not master).

**It is important that the same individual who signed the release tag be the one to promote the builds as the SHASUMS256.txt file needs to be signed with the same GPG key!**
Cherry-pick the release commit to `master`. After cherry-picking, edit `src/node_version.h` to ensure the version macros contain whatever values were previously on `master`. `NODE_VERSION_IS_RELEASE` should be `0`.

When you are confident that the build slaves have properly produced usable artifacts and uploaded them to the web server, you can promote them to release status. This is done by interacting with the web server via the _dist_ user.
### 12. Promote and Sign the Release Builds

The _tools/release.sh_ script should be used to promote and sign the build. When run, it will perform the following actions:
**It is important that the same individual who signed the release tag be the one to promote the builds as the SHASUMS256.txt file needs to be signed with the same GPG key!**

Use `tools/release.sh` to promote and sign the build. When run, it will perform the following actions:

**a.** Select a GPG key from your private keys. It will use a command similar to: `gpg --list-secret-keys` to list your keys. If you don't have any keys, it will bail. (Why are you releasing? Your tag should be signed!) If you have only one key, it will use that. If you have more than one key it will ask you to select one from the list. Be sure to use the same key that you signed your git tag with.

Expand All @@ -204,20 +236,36 @@ The _tools/release.sh_ script should be used to promote and sign the build. When

**f.** Output an ASCII armored version of your public GPG key using a command similar to: `gpg --default-key YOURKEY --armor --export --output /path/to/SHASUMS256.txt.gpg`. This does not require your password and is mainly a convenience for users, although not the recommended way to get a copy of your key.

**g.** Upload the SHASUMS256.txt\* files back to the server into the release directory.
**g.** Upload the SHASUMS256.txt files back to the server into the release directory.

If you didn't wait for ARM builds in the previous step before promoting the release, you should re-run _tools/release.sh_ after the ARM builds have finished. That will move the ARM artifacts into the correct location. You will be prompted to re-sign SHASUMS256.txt.
If you didn't wait for ARM builds in the previous step before promoting the release, you should re-run `tools/release.sh` after the ARM builds have finished. That will move the ARM artifacts into the correct location. You will be prompted to re-sign SHASUMS256.txt.

### 11. Check the Release
### 13. Check the Release

Your release should be available at <https://nodejs.org/dist/vx.y.z/> and <https://nodejs.org/dist/latest/>. Check that the appropriate files are in place. You may want to check that the binaries are working as appropriate and have the right internal version strings. Check that the API docs are available at <https://nodejs.org/api/>. Check that the release catalog files are correct at <https://nodejs.org/dist/index.tab> and <https://nodejs.org/dist/index.json>.

### 12. Announce
### 14. Create a Blog Post

There is an automatic build that is kicked off when you promote new builds, so within a few minutes nodejs.org will be listing your new version as the latest release. However, the blog post is not yet fully automatic.

Create a new blog post by running the [nodejs.org release-post.js script](https://github.com/nodejs/nodejs.org/blob/master/scripts/release-post.js). This script will use the promoted builds and changelog to generate the post. Run `npm serve` to preview the post locally before pushing to the [nodejs.org](https://github.com/nodejs/nodejs.org) repo.

* You can add a short blurb just under the main heading if you want to say something important, otherwise the text should be publication ready.
* The links to the download files won't be complete unless you waited for the ARMv6 builds. Any downloads that are missing will have `*Coming soon*` next to them. It's your responsibility to manually update these later when you have the outstanding builds.
* The SHASUMS256.txt.asc content is at the bottom of the post. When you update the list of tarballs you'll need to copy/paste the new contents of this file to reflect those changes.
* Always use pull-requests on the nodejs.org repo. Be respectful of that working group, but you shouldn't have to wait for PR sign-off. Opening a PR and merging it immediately _should_ be fine.
* Changes to `master` on the nodejs.org repo will trigger a new build of nodejs.org so your changes should appear in a few minutes after pushing.

### 15. Announce

The nodejs.org website will automatically rebuild and include the new version. You simply need to announce the build, preferably via Twitter with a message such as:

> v5.3.0 of @nodejs is out @ https://nodejs.org/dist/latest/ changelog @ https://github.com/nodejs/node/blob/master/CHANGELOG.md#2015-12-16-version-530-stable-cjihrig … something here about notable changes

The nodejs.org website will automatically rebuild and include the new version. You simply need to announce the build, preferably via twitter with a message such as:
### 16. Cleanup

> v2.3.2 of @official_iojs is out @ https://nodejs.org/dist/latest/ changelog @ https://github.com/nodejs/node/blob/master/CHANGELOG.md#2015-07-01-version-232-rvagg … something here about notable changes
Close your release proposal PR and remove the proposal branch.

### 13. Celebrate
### 17. Celebrate

_In whatever form you do this..._