Skip to content

Commit ea7173e

Browse files
ghubertpalojpraynaud
authored andcommitted
first draft of the release process
1 parent 9355d03 commit ea7173e

File tree

1 file changed

+58
-0
lines changed

1 file changed

+58
-0
lines changed

docs/adr/003-release.md

Lines changed: 58 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,58 @@
1+
---
2+
slug: 3
3+
title: |
4+
3. Release process and versioning
5+
authors: [Jean-Philippe Raynaud, Denis Jouenne, Grégoire Hubert]
6+
tags: [Draft]
7+
---
8+
9+
## Status
10+
11+
**draft**
12+
13+
## Context
14+
15+
In order to deliver regularly the software to our users, we should implement a release process based on a predictable versioning scheme.
16+
17+
### Versioning
18+
19+
A Release Version determines a distribution of determined node versions and underlying libraries.
20+
21+
* our softwares must be able to interact seamlessly with other Mithril software
22+
* our softwares must be able to be hosted on crates.io
23+
* must clearly indicate compatibility with other Mithril components to end users
24+
25+
26+
### Release process
27+
28+
A Release is a software package that is built once and then promoted from the testing environment to the production environment. It can be signed.
29+
30+
* Keep it simple
31+
* Automated as much as possible: all points not requiring human decision shall be automated
32+
* Minimize the mean time to release
33+
34+
## Decision
35+
36+
There are 3 versioned layers in the Mithril stack:
37+
38+
* HTTP API protocol to ensure compatibility in the communication between nodes (use Semver)
39+
* Crate version: each node & library has its own version (use Semver) the commit digest is automatically added to the version by the CI pipeline.
40+
* Release Version: the distribution version (use version scheme YYWW.patch|YYWW.patch-name). The VERSION file is computed by the pipeline from the tag release.
41+
42+
The documentation is tied to a Release Version.
43+
44+
### Release Process
45+
46+
Starting just after a new release has been made:
47+
48+
1. Develop on a dedicated development branch
49+
1. When merging PR on main: update the `Cargo.toml` files with version of the updated nodes
50+
1. Once merged, the CI creates an `unstable` tag & release which is deployed on testing environment
51+
1. Push a tag using the distribution version format on this commit with a `-pre_release` suffix.
52+
1. The CI gets the built artifacts associated with this commit and generates a named pre-release which is deployed on `pre-release` for testing.
53+
1. Push a tag using the distribution version format on this commit without the `-pre_release` suffix.
54+
1. The CI gets the built artifacts associated with this commit and generates a named release which is deployed on `pre-release` for testing.
55+
1. In the release GitHub interface, edit the newly generated release, uncheck the `This is a pre-release` tick box.
56+
1. The CI gets the built artifacts associated with this commit and generates a named release which is deployed on `release`.
57+
1. Update the documentation website from future to current.
58+

0 commit comments

Comments
 (0)