Skip to content
This repository was archived by the owner on Apr 13, 2020. It is now read-only.

Commit 8e66cc3

Browse files
[DOC] Versioning and release (#525)
* Initial draft * Spelling Co-authored-by: Dennis Seah <[email protected]>
1 parent e433182 commit 8e66cc3

File tree

1 file changed

+79
-0
lines changed

1 file changed

+79
-0
lines changed

technical-docs/designs/Versioning.md

+79
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,79 @@
1+
# Software Design Document
2+
3+
Reference: Versioning and release guidance Authors: Andre Briggs
4+
5+
| Revision | Date | Author | Remarks |
6+
| -------: | ------------ | ------------ | ------------- |
7+
| 0.1 | Apr-06, 2020 | Andre Briggs | Initial Draft |
8+
9+
## 1. Overview
10+
11+
Consumers of the Bedrock CLI should have guidance on what the versioning and
12+
release strategy is.
13+
14+
## 2. Out of Scope
15+
16+
This document does not cover what a customer should do if they want a new
17+
feature in an older version of the Bedrock CLI.
18+
19+
## 3. Proposal
20+
21+
The proposal is that we use semantic versioning for the Bedrock CLI. This means
22+
that Bedrock CLI versions have a `MAJOR.MINOR.PATCH` (e.g. `0.6.0`). Semantic
23+
versioning is a well known pattern that consists of:
24+
25+
```text
26+
MAJOR version when you make incompatible API changes
27+
MINOR version when you add functionality in a backwards compatible manner
28+
PATCH version when you make backwards compatible bug fixes
29+
```
30+
31+
### 3.1 What is included in a release
32+
33+
All releases will have a git tag in the
34+
[releases](https://github.com/CatalystCode/spk/releases) section of the Bedrock
35+
CLI repository. Each release will mention:
36+
37+
- What has been added
38+
- What has been modified
39+
- What has been removed
40+
41+
Additionally, the generated operational level documenentation can provide a more
42+
specific changefeed on interface changes to the CLI. An
43+
[example](https://github.com/dennisseah/simple/blob/master/design-docs/documents/changesInCommandsOverReleases.md)
44+
describes how this would look.
45+
46+
If any new dependencies are required for the Bedrock CLI to operate they will
47+
also be documented.
48+
49+
### 3.2 How users decide how to upgrade
50+
51+
Taking on new software is always risk. We reccomend that existing users of the
52+
Bedrock CLI implement canary deployment techniques to ensure that their existing
53+
environments can remain intact while confirming that new version work for them.
54+
55+
### 3.3 How to tell what open source dependences have changed
56+
57+
User want to know what OSS the Bedrock CLI uses can refer to `yarn.lock` in the
58+
Bedrock CLI repository.
59+
60+
## 4. Dependencies
61+
62+
One strategy to completely control variables is to run the Bedrock CLI in a
63+
controlled environment such as a
64+
[custom build agent](https://github.com/andrebriggs/bedrock-agents) that has all
65+
the dependencies necessary. This will minimize the chance of external
66+
dependencies not being available (e.g. cloud outages) and will allow easier
67+
rollback.
68+
69+
## 5. Known issues
70+
71+
## 6. Risks & Mitigations
72+
73+
## 7. Documentations
74+
75+
## 8. Appendix
76+
77+
- [Semantic Versioning](https://semver.org)
78+
- [Custom Build Agents with Bedrock](https://github.com/andrebriggs/bedrock-agents)
79+
- [Seeing command changes over releases](https://github.com/dennisseah/simple/blob/master/design-docs/documents/changesInCommandsOverReleases.md)

0 commit comments

Comments
 (0)