Google Sign-In Required

Use your company Google account to access the BetterFleet private content.

Back to private home

BetterFleet Support Private
Skip to content
BetterFleet Dev Wiki
0010 - Use semantic release
Initializing search
    bf-dev
    • Home
    • Product Capabilities
    • Process
    • Current Work
    • System Design
    • Software Reference
    • Operations
    bf-dev
    • Home
      • Overview
      • Manage
      • Overview
      • Product Engineering Workflow
      • Product Engineering Delivery
      • Product Engineering Workflow in Linear
        • GitLab Feature Flags
        • In-App Docs Authoring
        • Release Notes
      • Templates
      • Publishing
      • Workflow Companions
      • Overview
      • Active Artifacts
      • Backlog Artifacts
      • Archived Artifacts
      • Overview
      • Microgrid
      • OSCP
        • Challenge
        • Specification
        • Spec
        • Architecture
        • Overview
        • Script Runtime Model
        • Compose Profiles and Modes
        • Repo Topology
        • CI and Release Integration
        • Overview
        • Internal Application Diagrams
          • Overview
          • Web Model
          • Core Model
        • Service Interaction Flows
        • Data and State
          • Index
          • bf-manage-web
          • bf-manage-core
          • bf-manage-connect
          • bf-manage-sitepwrmon
          • bf-manage-incidents
          • bf-telematics
          • bf-depot-sim
          • bf-manage-roaming
          • bf-support-microsite
          • bf-digital-twin
          • bf-schedule-creator
        • Overview
        • Internal Application Diagrams
        • Migration and Flags
        • Simulation Request Lifecycle
          • Index
          • bf-bnl-ui
          • bf-bnl-settings
          • bf-bnl-schedule-analysis-compute
          • bf-route-modelling
          • bf-schedule-creator
          • bf-digital-twin
        • Overview
        • Secrets and Env Strategy
        • Vendors and Local Dependencies
        • ADRs
        • Service Matrix
        • Cloud Dependencies
        • Ports and URLs
      • Onboarding
      • Daily Operations Runbook
        • Overview
        • Staging Hotfix Release
        • Production Hotfix Release
        • Terraform Plan Dry Runs
      • Troubleshooting
      • Testing Guide
    • Date
    • Status
    • Context
    • Decision
    • Consequences

    0010 - Use semantic release¶

    Date¶

    2023-01-10

    Status¶

    Accepted

    Context¶

    Ensuring that tasks related to release, such as bumping versions, creating changelogs, tagging git, are difficult to manage consistently across repos and tools without quite a lot of effort. There is a tool semantic-release that can manage a number of these items that will help us maintain consistnecy and automate such task within the CI.

    The tools can be found here in it's original version for Node: https://semantic-release.gitbook.io/semantic-release/ And here in a python version: https://python-semantic-release.readthedocs.io/en/latest/

    Both have similar usage patterns.

    Decision¶

    We are proposing to implement semantic-release as part of the CI pipeline across all repositories.

    Consequences¶

    This will make it easier to:

    • Have consistent versioning for features, fixes and breaking
    • Automatically create repo level changelogs, filtered appopriately for features and fixes
    • Support the creation of Product release notes -- NOTE this is a manual step, made easier by the changelogs
    • Ensure that git versions are tagged and maintained
    • Support CD through automatic version management

    In order to make full use of the tooling, we will have to:

    • Have an agreed and consistent approach to creating commits, which we follow see: https://www.conventionalcommits.org/en/v1.0.0/
    • Update all repos with the appropriate libraries, buld tools and pipelines to use semantic-release
    • Correctly configure the semantic-release tool within each repo
    • Create a CHANGELOG.md file in each repo, which can be the basis for the changleog: https://keepachangelog.com/en/1.0.0/
    • Create notifications from the release page on gitlab to appropriate slack channels

    Further notes on the evenergi usage of these tools and configuration support can be found here: Semantic Release (https://app.clickup.com/6917829/docs/6k3p5-20387/6k3p5-39656)

    Made with Material for MkDocs