You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
**Dev Leads* for each of the components of the node
9
11
10
12
# Release Process
11
13
12
14
This is the release process for node releases
13
15
14
-
1. Release Squad Lead will work with rotating engineer and dev leads to determine where to cut the releases from ledger, network and node. These will be published via CHaP and will follow the defined process of the team for versioning, etc...
16
+
1. Release Squad Lead will work with Release Engineer and Dev Leads to determine where to cut the releases from ledger,
17
+
network and node. These will be published via CHaP and will follow the defined process of the team for versioning, etc...
15
18
2. These will be integrated up the stack to the node to produce a release branch
16
-
3. Release Squad Lead will work with Test/Performance sub-teams to initiate a testing round. This may be a tagged release, a commit based off of master, or a commit
17
-
based off of a previously released version as a hotfix
19
+
3. Release Engineer will work with Test/Performance sub-teams to initiate a testing round.
20
+
This may use a tagged release, a commit taken from master,
21
+
or a hotfix branch based on a previously released version.
18
22
4. A release candidate will be deployed to preview/preprod by SRE
19
23
5. Community will be notified of release candidate and given a few days to provide feedback
20
-
6. Release Squad Lead will draft Release notes
21
-
7. Head of Engineering will meet with release team and identify if release should be published as stable or beta (pre-release) in GitHub. Stable releases can go all the way to mainnet, beta should only go to preprod and wait for that release to be relabeled as stable or a new stable release to be cut.
22
-
8. Release is published
24
+
6. Release Engineer will create a draft GitHub Release containing an empty template for the notes
25
+
7. Release Engineer will ask Dev Leads to fill out their section of the high-level changelog in the release notes
26
+
8. Release Squad Lead will finalize the Release notes
27
+
9. Head of Engineering will meet with release team and identify if release should be published as stable or beta (pre-release)
28
+
in GitHub.
29
+
Stable releases can go all the way to mainnet, beta should only go to preprod and wait for that release to be relabeled as stable or a new stable release to be cut.
30
+
10. GitHub release is published
23
31
24
32
# Rotating Release Engineer Role
25
33
26
-
All sprints are aligned across the node and it's components. At the end of a sprint cycle the new rotating release engineer is decided on by the leadership team.
34
+
All sprints are aligned across the node and it's components. At the end of a sprint cycle the new rotating Release Engineer is decided on by the leadership team.
27
35
This person's primary duties are integration of new releases of dependencies up the stack to the node. They serve this role until the release is finalized
28
36
according to the above release process (ideally 1 sprint cycle).
37
+
The Release Engineer works with the Dev Leads to decide which changes should be included in their component, including any in-flight PRs that haven't been merged yet.
29
38
30
39
## Sub-Teams
31
40
@@ -36,7 +45,7 @@ testnets, public testnets and production systems. They are responsible for updat
36
45
37
46
### DevX (Developer Experience)
38
47
39
-
The DevX team is responsible for CI/CD, the building process (using nix and compiling manually), OCI images (e.g. docker containers), systemd services
48
+
The DevX team is responsible for CI/CD, the building process (using nix and compiling manually), OCI images (e.g. docker containers), systemd services,
40
49
and helper scripts associated in running the node for local development and remote deployment purposes.
41
50
42
51
### Test Engineers
@@ -61,6 +70,8 @@ Not all releases are declared stable. Releases that aren't stable will be releas
61
70
for running on production networks. The same version can be re-released without the pre tag without making any code changes by submitting a new tag without the
62
71
`pre` suffix. This means stable could jump from `8.0.0 -> 8.3.0` without ever releasing `8.1.0`, `8.1.1`, `8.2.0`, etc...
63
72
73
+
Note that the version always has three parts, so a major release has a trailing `.0`.
74
+
64
75
# Collaboration
65
76
66
77
The release team meets for a quick touch-point weekly where all team leads are invited. Currently these calls are closed to the public, but in the future we expect
@@ -72,25 +83,37 @@ The release notes are drafted and published via the GitHub releases UI.
72
83
Our current template contains the following sections.
73
84
74
85
- (no header) A very-high level summary of the release.
75
-
For larger release, it may be best for the Cardano Head of Product to draft this summary instead of the release engineer, since they have more context.
86
+
For a larger release, it may be best for the Cardano Head of Product to draft this summary instead of the Release Engineer, since they have more context.
76
87
- Known Issues
77
88
- Technical Specification (usually unchanged)
78
89
- Links to `cardano-node` documentation
79
90
It seems to be a judgement call whether each of these should specify the upstream version.
80
91
- Changelogs
81
-
- Summaries of the major dependencies' changelogs.
82
-
These are written as a few sentences that an interested user and/or dev would find helpful.
83
-
It may be best for the individual teams to draft these summaries instead of the release engineer, since they have more context.
84
-
- Links to the individual changelog of each upstream package that IOG maintains.
85
-
See the script explained below.
92
+
+ Summaries of the major dependencies' changelogs.
93
+
These are written as a few sentences that an interested user and/or dev would find helpful.
94
+
It may be best for the individual teams to draft these summaries instead of the Release Engineer, since they have more context.
95
+
+ Links to the individual changelog of each upstream package that IOG maintains.
96
+
See the script explained below.
97
+
98
+
Usually the release notes from the previous release are copied and used as a template.
86
99
87
100
## Detailed changelog table
88
101
89
102
There's a script (`scripts/generate-release-changelog-links.hs`) that generates a table of changelogs for each of the package versions included in a given `cardano-node` release. The script takes a cabal-generated `plan.json` and a GitHub API access token, and outputs a large table which contains links to the `CHANGELOG.md` file (if one exists) for each of the package versions contained in the build plan.
90
103
91
-
> example usage (be sure to run `cabal build all` at least once beforehand):
Note that this is a cabal script and may take a while to build all the dependencies. You will need to have the `zlib` native library available, either installed via your OS package manager or by using `nix-shell -p zlib`.
0 commit comments