Newer
Older
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
# Implementation of Semantic Versioning and Git Tagging for Release Management
- Status: Draft
- Date: 2024-08-26
Technical Story:
https://gitlab.opencode.de/opencode-analyzer/management/-/issues/94
## Context and Problem Statement
Our current release management process lacks a standardized method for
versioning and tracking changes across releases, making release
identification hard. This impacts our ability to efficiently manage and
rollback releases and complicates communication about changes and
features included in each release. Further, it complicates compatibility
tracking between components (mainly `DatProvider` and `dashboard`).
## Considered Options
- Calendar Versioning (CalVer): Calendar Versioning is a convention
based on dates for release versioning used by popular projects like
Ubuntu. However, there is no clear reason to use it in our context
based on ("When to use
CalVer")\[https://calver.org/#when-to-use-calver\].
- Continuous Releases based on commit IDs: Using commit id's for
release management is a viable path on rapidly changing projects
with the ambition to be able to roll-out any and every commit.
However, in our context we prefer more control over the release
process and compatibility between the components.
## Decision Outcome
We will adopt Semantic Versioning for our software releases and use Git
tagging to mark these releases in our version control system. This
approach will standardize our release process, providing clear,
version-controlled, and easily identifiable releases.
### Consequences
- Introduces a systematic approach to versioning that is widely
recognized and understood.
- Facilitates easier tracking of features, fixes, and breaking changes
across releases.
- Enhances rollback capabilities by providing clear rollback targets.
- Requires training and discipline to ensure all team members follow
the release guidelines consistently.
- Initial setup involves modifying existing CI/CD scripts to
incorporate versioning and tagging steps, based on current research
steps include:
- Introducing a VERSION file in the repository.
- Selecting and implementing a tool to bump major/minor/patch
versions predictably.
- Selecting and implementing a tool to generate release notes
based on commits.
- Modification of existing software and build process to include
the version from the VERSION file on API route or in the
frontend.