Skip to content

Conversation

@serdarozerr
Copy link
Contributor

@serdarozerr serdarozerr commented Dec 10, 2025

Context

In the original repositories, each storage CLI had its own release pipeline responsible for tagging, creating releases, and uploading artifacts to an S3 bucket.

Solution

We introduced a unified release pipeline that runs unit tests as a sanity check and then performs the following steps in order:

  • Bumps the version according to the defined logic
  • Generates the changelog
  • Builds the source code for Linux and Windows
  • Publishes the release on GitHub

Release Versioning

Version Bump Rules:

  • feat: - New feature → Minor version bump (v1.2.0 → v1.3.0)
  • BREAKING CHANGE: - Breaking changes → Major version bump (v1.2.0 → v2.0.0)
  • Patch version bump (v1.2.0 → v1.2.1)
    • fix: - Bug fix
    • docs: - Documentation changes
    • chore: - Maintenance tasks (dependencies, build config, tooling)
    • refactor: - Code restructuring without behavior changes
    • test: - Test updates
    • style: - Formatting and whitespace
    • ci: - CI/CD configuration changes
    • perf: - Performance improvements
    • build: - Dependabot commits
    • no conventional commits - text without specifying any of above

Commit Message Examples

# Patch release (v1.2.3 → v1.2.4)
git commit -m "fix: resolve upload timeout issue"

# Minor release (v1.2.3 → v1.3.0)
git commit -m "feat: add retry logic for failed uploads"

# Major release (v1.2.3 → v2.0.0)
git commit -m "feat: redesign upload API

BREAKING CHANGE: Upload() signature changed to return structured error"

# No release
git commit -m "docs: update Azure Blob Storage usage examples"
git commit -m "chore: upgrade dependencies"

@serdarozerr serdarozerr marked this pull request as ready for review December 10, 2025 19:29
@aramprice aramprice requested review from a team, a-b and gururajsh and removed request for a team December 11, 2025 16:02
@aramprice aramprice moved this from Inbox to Pending Review | Discussion in Foundational Infrastructure Working Group Dec 11, 2025

on:
push:
branches: [ main ]
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Do we really want to have a release per commit?
At least now when storage-cli is still under heavy development, this is maybe a bit too much noise.

I would start with manual releases and later e.g. weekly releases.

- unit test and linting  added as pre step
- tag created with action and exported into github env
- changelog created with action
- Build done both for linux and windows
- artifacts uploaded both github and s3
- for feat: will create minor, for fix: will create patch, and for token BREAKING CHANGE: will create major release
- for rest like docs:, chore:, test:, refactore:, ci:, perf:, build: will not create any release
- if none of above token found in commits, will continue with DEFAULT_BUMP which is patch
@serdarozerr serdarozerr force-pushed the feature/release-pipeline branch from 4f659dd to dbf34ef Compare December 18, 2025 08:39
@rkoster rkoster marked this pull request as draft December 18, 2025 15:44
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

Status: Pending Review | Discussion

Development

Successfully merging this pull request may close these issues.

2 participants