Skip to content
Snippets Groups Projects
release_process.md 2.47 KiB
Newer Older
# 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.

Consent

On this website, we use the web analytics service Matomo to analyze and review the use of our website. Through the collected statistics, we can improve our offerings and make them more appealing for you. Here, you can decide whether to allow us to process your data and set corresponding cookies for these purposes, in addition to technically necessary cookies. Further information on data protection—especially regarding "cookies" and "Matomo"—can be found in our privacy policy. You can withdraw your consent at any time.