Skip to content

Releases ​

Geko uses a manual release system with version bumping based on the type of changes.

Overview ​

Geko consists of several projects across multiple repositories:

  • Project Description located in project-description defines the core interfaces
  • Geko located in geko - CLI tool
  • Desktop located in geko - is a companion application for interacting with the project via a UI.
  • GekoPlugins located in geko-plugins - TBD

Each component has its own release cycle.

How it works ​

1. Commit conventions ​

We use custom formats to structure our commit messages. This allows our tooling to determine version bumps, and generate appropriate changelogs.

  • Geko Format: Geko [patch/minor/major] description
  • Desktop Format: Desktop [patch/minor/major] description
  • Project Description Format: [patch/minor/major] description
  • GekoPlugins Format: TBD

Bump types and their impact ​

TypeDescriptionVersion ImpactExample
patchBackward-compatible changesPatch version bump (x.y.Z)[patch] added tests
minorBackward-compatible new featuresMinor version bump (x.Y.z)[minor] added new flag for generate command
majorIncompatible API changesMajor version bump (X.y.z)[major] remove deprecated API

3. Release pipeline ​

When release pipeline started:

  1. Version calculation: The pipeline determines the next version number from commit messages
  2. Changelog generation: creates a changelog from commit messages
  3. Build process: The utility(or plugin) is built and tested
  4. Release creation: A GitHub release is created with artifacts

Writing good commit messages ​

Since commit messages directly influence release notes, it's important to write clear, descriptive messages:

Do: ​

  • Use present tense: "add feature" not "added feature"
  • Be concise but descriptive
  • Include the scope when changes are component-specific
  • Reference issues when applicable: geko [patch] Fixed graph build-time (#1234)

Don't: ​

  • Use vague messages like "fix bug" or "update code"
  • Mix multiple unrelated changes in one commit
  • Forget to include breaking change information

Release workflows ​

The release workflows are defined in:

  • Geko - .github/workflows/release.yml
  • Desktop - .github/workflows/release_desktop.yml
  • Project Description - .github/workflows/release.yml
  • GekoPlugins - TBD

Each workflow:

  • triggered manually
  • Uses custom change detection
  • Handles the entire release process

Monitoring releases ​

You can monitor releases through: