Skip to content

Commit bef210f

Browse files
committed
Updating stacks-core release process
1 parent ee2a2c2 commit bef210f

File tree

1 file changed

+18
-33
lines changed

1 file changed

+18
-33
lines changed

docs/release-process.md

Lines changed: 18 additions & 33 deletions
Original file line numberDiff line numberDiff line change
@@ -11,13 +11,12 @@
1111
| Linux ARMv7 | _builds are provided but not tested_ |
1212
| Linux ARM64 | _builds are provided but not tested_ |
1313

14-
For help cross-compiling on memory-constrained devices (such as a Raspberry Pi), please see the community supported documentation here: [Cross Compiling](https://github.com/dantrevino/cross-compiling-stacks-blockchain/blob/master/README.md).
1514

1615
## Release Schedule and Hotfixes
1716

1817
Normal releases in this repository that add features such as improved RPC endpoints, improved boot-up time, new event
1918
observer fields or event types, etc., are released on a monthly schedule. The currently staged changes for such releases
20-
are in the [develop branch](https://github.com/stacks-network/stacks-blockchain/tree/develop). It is generally safe to run
19+
are in the [develop branch](https://github.com/stacks-network/stacks-core/tree/develop). It is generally safe to run
2120
a `stacks-node` from that branch, though it has received less rigorous testing than release tags. If bugs are found in
2221
the `develop` branch, please do report them as issues on this repository.
2322

@@ -52,46 +51,39 @@ For non-consensus breaking releases, this project uses the following release pro
5251

5352
1. The release must be timed so that it does not interfere with a _prepare
5453
phase_. The timing of the next Stacking cycle can be found
55-
[here](https://stacking.club/cycles/next). A release to `mainnet` should happen
54+
[here](https://stx.eco/dao/tools?tool=2). A release should happen
5655
at least 24 hours before the start of a new cycle, to avoid interfering
5756
with the prepare phase. So, start by being aware of when the release can
5857
happen.
5958

6059
1. Before creating the release, the release manager must determine the _version
61-
number_ for this release. The factors that determine the version number are
60+
number_ for this release, and create a release branch in the format: `release/X.Y.Z.A.n`.
61+
The factors that determine the version number are
6262
discussed in [Versioning](#versioning). We assume, in this section,
6363
that the change is not consensus-breaking. So, the release manager must first
6464
determine whether there are any "non-consensus-breaking changes that require a
6565
fresh chainstate". This means, in other words, that the database schema has
6666
changed, but an automatic migration was not implemented. Then, the release manager
6767
should determine whether this is a feature release, as opposed to a hotfix or a
6868
patch. Given the answers to these questions, the version number can be computed.
69-
69+
7070
1. The release manager enumerates the PRs or issues that would _block_
7171
the release. A label should be applied to each such issue/PR as
72-
`2.0.x.y.z-blocker`. The release manager should ping these
72+
`X.Y.Z.A.n-blocker`. The release manager should ping these
7373
issue/PR owners for updates on whether or not those issues/PRs have
7474
any blockers or are waiting on feedback.
7575

76-
1. The release manager should open a `develop -> master` PR. This can be done before
77-
all the blocker PRs have merged, as it is helpful for the manager and others
78-
to see the staged changes.
79-
8076
1. The release manager must update the `CHANGELOG.md` file with summaries what
8177
was `Added`, `Changed`, and `Fixed`. The pull requests merged into `develop`
8278
can be found
83-
[here](https://github.com/stacks-network/stacks-blockchain/pulls?q=is%3Apr+is%3Aclosed+base%3Adevelop+sort%3Aupdated-desc). Note, however, that GitHub apparently does not allow sorting by
79+
[here](https://github.com/stacks-network/stacks-core/pulls?q=is%3Apr+is%3Aclosed+base%3Adevelop+sort%3Aupdated-desc). Note, however, that GitHub apparently does not allow sorting by
8480
_merge time_, so, when sorting by some proxy criterion, some care should
85-
be used to understand which PR's were _merged_ after the last `develop ->
86-
master` release PR. This `CHANGELOG.md` should also be used as the description
87-
of the `develop -> master` so that it acts as _release notes_ when the branch
88-
is tagged.
81+
be used to understand which PR's were _merged_ after the last release.
8982

9083
1. Once the blocker PRs have merged, the release manager will create a new tag
91-
by manually triggering the [`stacks-blockchain` Github Actions workflow](https://github.com/stacks-network/stacks-blockchain/actions/workflows/stacks-blockchain.yml)
92-
against the `develop` branch, inputting the release candidate tag, `2.0.x.y.z-rc0`,
93-
in the Action's input textbox.
94-
84+
by manually triggering the [`CI` Github Actions workflow](https://github.com/stacks-network/stacks-core/actions/workflows/ci.yml)
85+
against the `release/X.Y.Z.A.n` branch.
86+
9587
1. Once the release candidate has been built, and docker images, etc. are available,
9688
the release manager will notify various ecosystem participants to test the release
9789
candidate on various staging infrastructure:
@@ -104,7 +96,7 @@ master` release PR. This `CHANGELOG.md` should also be used as the description
10496
Stacks Discord. For coordinating rollouts on specific infrastructure, the release
10597
manager should contact the above participants directly either through e-mail or
10698
Discord DM. The release manager should also confirm that the built release on the
107-
[Github releases](https://github.com/stacks-network/stacks-blockchain/releases/)
99+
[Github releases](https://github.com/stacks-network/stacks-core/releases/)
108100
page is marked as `Pre-Release`.
109101

110102
1. The release manager will test that the release candidate successfully syncs with
@@ -119,16 +111,9 @@ master` release PR. This `CHANGELOG.md` should also be used as the description
119111
even if other community members and developers may be addressing the discovered
120112
issues.
121113

122-
1. Once the final release candidate has rolled out successfully without issue on the
123-
above staging infrastructure, the release manager tags 2 additional `stacks-blockchain`
124-
team members to review the `develop -> master` PR. If there is a merge conflict in this
125-
PR, this is the protocol: open a branch off of develop, merge master into that branch,
126-
and then open a PR from this side branch to develop. The merge conflicts will be
127-
resolved.
128-
129-
1. Once reviewed and approved, the release manager merges the PR, and tags the release
130-
via the [`stacks-blockchain` Github action](https://github.com/stacks-network/stacks-blockchain/actions/workflows/stacks-blockchain.yml)
131-
by clicking "Run workflow" and providing the release version as the tag (e.g.,
132-
`2.0.11.1.0`) This creates a release and release images. Once the release has been
133-
created, the release manager should update the Github release text with the
134-
`CHANGELOG.md` "top-matter" for the release.
114+
1. Once the final release candidate has rolled out successfully without issue on staging
115+
infrastructure, the tagged release shall no longer marked as Pre-Release on the [Github releases](https://github.com/stacks-network/stacks-core/releases/) page.
116+
Announcements will then be shared in the `#stacks-core-devs` channel in the
117+
Stacks Discord, as well as the [mailing list](https://groups.google.com/a/stacks.org/g/announce).
118+
119+
1. Finally, the release branch `release/X.Y.Z.A.n` will be PR'ed into the `master` branch, and once merged, a PR for `master->develop` will be opened.

0 commit comments

Comments
 (0)