Skip to content

Commit e2818d9

Browse files
committed
Creating release process docs for signer
1 parent 5efaf3e commit e2818d9

File tree

2 files changed

+94
-0
lines changed

2 files changed

+94
-0
lines changed

libsigner/CHANGELOG.md

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
# Changelog
2+
3+
All notable changes to this project will be documented in this file.
4+
5+
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
6+
and this project adheres to the versioning scheme outlined in the [README.md](README.md).
7+
8+
## [Unreleased]
9+

libsigner/release-process.md

Lines changed: 85 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,85 @@
1+
# Release Process
2+
3+
## Platform support
4+
5+
| Platform | Supported |
6+
| --------------------------- | ------------------------------------ |
7+
| Linux 64-bit | :white_check_mark: |
8+
| MacOS 64-bit | :white_check_mark: |
9+
| Windows 64-bit | :white_check_mark: |
10+
| MacOS Apple Silicon (ARM64) | _builds are provided but not tested_ |
11+
| Linux ARMv7 | _builds are provided but not tested_ |
12+
| Linux ARM64 | _builds are provided but not tested_ |
13+
14+
15+
## Release Schedule and Hotfixes
16+
17+
Normal releases in this repository that add new or updated features shall be released in an ad-hoc manner. The currently staged changes for such releases
18+
are in the [develop branch](https://github.com/stacks-network/stacks-core/tree/develop). It is generally safe to run a `stacks-signer` from that branch, though it has received less rigorous testing than release branches. If bugs are found in the `develop` branch, please do [report them as issues](https://github.com/stacks-network/stacks-core/issues) on this repository.
19+
20+
For fixes that impact the correct functioning or liveness of the signer, _hotfixes_ may be issued. These hotfixes are categorized by priority
21+
according to the following rubric:
22+
23+
- **High Priority**. Any fix for an issue that could deny service to the network as a whole, e.g., an issue where a particular kind of invalid transaction would cause nodes to stop processing requests or shut down unintentionally.
24+
- **Medium Priority**. ny fix for an issue that could deny service to individual nodes.
25+
- **Low Priority**. Any fix for an issue that is not high or medium priority.
26+
27+
## Versioning
28+
29+
This project uses a 6 part version number. When there is a stacks-core release, `stacks-signer` will assume the same version as the tagged `stacks-core` release (5 part version). When there are changes in-between stacks-core releases, the signer binary will assume a 6 part version.
30+
31+
```
32+
X.Y.Z.A.n.x
33+
34+
X = 2 and does not change in practice unless there’s another Stacks 2.0 type event
35+
Y increments on consensus-breaking changes
36+
Z increments on non-consensus-breaking changes that require a fresh chainstate (akin to semantic MAJOR)
37+
A increments on non-consensus-breaking changes that do not require a fresh chainstate, but introduce new features (akin to semantic MINOR)
38+
n increments on patches and hot-fixes (akin to semantic PATCH)
39+
x increments on the current stacks-core release version
40+
```
41+
42+
For example, if there is a stacks-core release of 2.6.0.0.0, `stacks-signer` will also be versioned as 2.6.0.0.0. If a change is needed in the signer, it may be released apart from the stacks-core as version 2.6.0.0.0.1 and will increment until the next stacks-core release.
43+
44+
## Release Process
45+
46+
47+
1. The release must be timed so that it does not interfere with a _prepare
48+
phase_. The timing of the next Stacking cycle can be found
49+
[here](https://stx.eco/dao/tools). A release should happen
50+
at least 48 hours before the start of a new cycle, to avoid interfering
51+
with the prepare phase.
52+
53+
2. Before creating the release, the release manager must determine the _version
54+
number_ for this release, and create a release branch in the format: `release/signer-X.Y.Z.A.n.x`.
55+
The factors that determine the version number are discussed in [Versioning](#versioning).
56+
57+
3. _Blocking_ PRs or issues are enumerated and a label should be applied to each
58+
issue/PR such as `signer-X.Y.Z.A.n.x-blocker`. The Issue/PR owners for each should be pinged
59+
for updates on whether or not those issues/PRs have any blockers or are waiting on feedback.
60+
__Note__: It may be necessary to cherry-pick these PR's into the target branch `release/signer-X.Y.Z.A.n.x`
61+
62+
4. The [CHANGELOG.md](./CHANGELOG.md) file shall be updated with summaries of what
63+
was `Added`, `Changed`, and `Fixed` in the base branch. For example, pull requests
64+
merged into `develop` can be found [here](https://github.com/stacks-network/stacks-blockchain/pulls?q=is%3Apr+is%3Aclosed+base%3Adevelop+sort%3Aupdated-desc).
65+
Note, however, that GitHub apparently does not allow sorting by _merge time_,
66+
so, when sorting by some proxy criterion, some care should be used to understand
67+
which PR's were _merged_ after the last release.
68+
69+
5. Once any blocker PRs have merged, a new tag will be created
70+
by manually triggering the [`CI` Github Actions workflow](https://github.com/stacks-network/stacks-core/actions/workflows/ci.yml)
71+
against the `release/signer-X.Y.Z.A.n.x` branch.
72+
73+
6. Ecosystem participants will be notified of the release candidate in order
74+
to test the release on various staging infrastructure.
75+
76+
7. If bugs or issues emerge from the rollout on staging infrastructure, the release
77+
will be delayed until those regressions are resolved. As regressions are resolved,
78+
additional release candidates shall be tagged.
79+
80+
8. Once the final release candidate has rolled out successfully without issue on staging
81+
infrastructure, the tagged release shall no longer marked as Pre-Release on the [Github releases](https://github.com/stacks-network/stacks-blockchain/releases/)
82+
page. Announcements will then be shared in the `#stacks-core-devs` channel in the
83+
Stacks Discord, as well as the [mailing list](https://groups.google.com/a/stacks.org/g/announce).
84+
85+
9. Finally, the release branch `release/signer-X.Y.Z.A.n.x` will be PR'ed into the `master` branch, and once merged, a PR for `master->develop` will be opened.

0 commit comments

Comments
 (0)