|
| 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