README
GitLab Versioning and Release Management
Overview
This directory contains comprehensive documentation for versioning, release automation, and changelog generation in the Agent Platform. We follow Semantic Versioning with automated version bumping through Conventional Commits and a release branch model.
Quick Links
- Semantic Versioning Guide - Understanding SemVer 2.0.0
- Automated Version Bumping - CI/CD automation with semantic-release
- Release Branch Strategy - Using release/vX.Y.x branches
- Changelog Generation - Automated changelog with Keep a Changelog format
- GitLab Releases - Creating releases with assets and evidence
- Conventional Commits - Commit message standards
- Multi-Project Versioning - Coordinating versions across 60+ projects
Agent Platform Versioning Strategy
Current Approach
Platform Version: v0.3.x
Release Branch: release/v0.3.x
Auto-patch: v0.3.0 v0.3.1 v0.3.2 ...
Core Projects: Synchronized (all v0.3.x)
Agent Projects: Independent versions
Key Principles
- Semantic Versioning - Follow SemVer 2.0.0 strictly
- Conventional Commits - Automate version bumping from commit messages
- Release Branches - Long-lived
release/vX.Y.xbranches for each minor version - Auto-patching - CI/CD automatically increments patch version on merge
- Group Milestones - Coordinate work across projects
- Automated Everything - Versions, changelogs, releases all automated
Workflow Summary
For Developers
# 1. Create issue with milestone glab issue create --milestone v0.3.x --title "Add OAuth2 support" # 2. GitLab creates branch: 106-add-oauth2-support # 3. Work in worktree cd .worktrees/2026-01-08/openstandardagents/106-add-oauth2-support/ # 4. Commit with conventional format git commit -m "feat(auth): add OAuth2 authentication" # 5. Push and create MR git push origin 106-add-oauth2-support glab mr create --target-branch release/v0.3.x --milestone v0.3.x # 6. On merge: CI automatically creates v0.3.5
For Release Managers
# 1. Monitor milestone progress glab api "/groups/blueflyio%2Fagent-platform/milestones?title=v0.3.x" # 2. Review pending releases glab mr list --milestone v0.3.x --state merged # 3. Trigger release (manual approval in CI) # CI calculates version, generates changelog, creates release # 4. Verify release glab release view v0.3.5 # 5. Close milestone when series complete glab milestone close v0.3.x
Documentation Guide
Getting Started
- New to versioning? Start with Semantic Versioning Guide
- Setting up automation? Read Automated Version Bumping
- Understanding our workflow? See Release Branch Strategy
Deep Dives
- Changelog automation Changelog Generation
- GitLab releases GitLab Releases
- Commit standards Conventional Commits
- Multi-project coordination Multi-Project Versioning
Quick Reference
Version Format
vMAJOR.MINOR.PATCH
v0.3.5
Auto-incremented by CI on each merge
Determined by release branch (release/v0.3.x)
Determined by release branch
Commit Types
| Type | Description | Example |
|---|---|---|
feat | New feature | feat(auth): add OAuth2 |
fix | Bug fix | fix(api): resolve memory leak |
docs | Documentation | docs: update API guide |
refactor | Code refactoring | refactor: simplify auth logic |
perf | Performance | perf: optimize queries |
test | Tests | test: add integration tests |
chore | Maintenance | chore: update dependencies |
Branch Structure
main
release/v0.3.x v0.3.0, v0.3.1, v0.3.2, ...
106-issue-slug (feature branches)
Common Tasks
Creating a New Release Branch
# From main git checkout main git pull origin main # Create release branch git checkout -b release/v0.4.x git push origin release/v0.4.x # Create group milestone glab milestone create v0.4.x \ --group blueflyio/agent-platform \ --title "v0.4.x Release Series"
Triggering a Release
# Merge MR to release branch # CI pipeline runs automatically # Stage: calculate-version # - Determines next patch version # Stage: build-artifacts # - Builds binaries and packages # Stage: generate-release-notes # - Creates changelog from commits # Stage: create-gitlab-release (manual trigger) # - Creates git tag # - Creates GitLab release # - Uploads assets # - Collects evidence
Hotfixing an Old Version
# 1. Create fix on latest release branch first (upstream-first) git checkout release/v0.3.x git pull origin release/v0.3.x # 2. Create hotfix branch git checkout -b hotfix/150-critical-fix # 3. Develop fix git commit -m "fix: resolve critical security issue" git push origin hotfix/150-critical-fix # 4. Create MR targeting release/v0.3.x glab mr create --target-branch release/v0.3.x # 5. After merge: CI creates v0.3.6 # 6. If needed, backport to older release branch git checkout release/v0.2.x git cherry-pick <commit-hash> git push origin release/v0.2.x # CI creates v0.2.7
Checking Version Synchronization
# Core projects should be synchronized ./scripts/check-core-sync.sh v0.3.5 # Output: # agent-core: v0.3.5 # agent-sdk: v0.3.5 # agent-cli: v0.3.5 # agent-registry: v0.3.5 # agent-gateway: v0.3.5
Tools and Configuration
Required Tools
- Node.js - Runtime for automation tools
- semantic-release - Version bumping and release automation
- commitlint - Validate conventional commits
- glab - GitLab CLI for API operations
- git - Version control
Installation
# Install semantic-release and plugins npm install --save-dev \ semantic-release \ @semantic-release/git \ @semantic-release/gitlab \ @semantic-release/changelog \ @semantic-release/commit-analyzer \ @semantic-release/release-notes-generator # Install commitlint npm install --save-dev \ @commitlint/cli \ @commitlint/config-conventional # Install husky for git hooks npm install --save-dev husky npx husky init
Configuration Files
[object Object] - Semantic Release
{ "branches": [ "main", { "name": "release/v+([0-9])?(.{+([0-9]),x}).x", "prerelease": false } ], "plugins": [ "@semantic-release/commit-analyzer", "@semantic-release/release-notes-generator", "@semantic-release/changelog", "@semantic-release/gitlab", "@semantic-release/git" ] }
[object Object] - Commitlint
module.exports = { extends: ['@commitlint/config-conventional'], rules: { 'type-enum': [2, 'always', [ 'feat', 'fix', 'docs', 'style', 'refactor', 'perf', 'test', 'chore', 'ci', 'revert' ]] } };
[object Object] - Git Hook
#!/bin/sh npx --no-install commitlint --edit $1
CI/CD Pipeline
Pipeline Stages
stages: - validate # Validate commits and version format - test # Run tests - build # Build artifacts - version # Calculate next version - release # Create release (manual trigger) - publish # Publish to registries
Key Jobs
- validate-commits - Ensure conventional commit format
- calculate-version - Determine next patch version
- build-artifacts - Create distribution packages
- generate-release-notes - Create changelog
- create-gitlab-release - Tag and release (manual)
Best Practices
DO
- Follow Semantic Versioning strictly
- Use Conventional Commits consistently
- Let CI/CD handle versioning automatically
- Document breaking changes clearly
- Link commits to issues
- Test before releasing
- Review generated release notes
- Coordinate core project releases
- Maintain compatibility matrix
DON'T
- Manually edit version numbers
- Skip commit message validation
- Create arbitrary git tags
- Modify released versions
- Rush releases without testing
- Forget to update documentation
- Mix manual and automated processes
- Break backward compatibility in patches
Troubleshooting
Common Issues
Invalid Commit Messages
Problem: CI fails with "invalid commit format"
Solution: Follow conventional commits:
# Bad git commit -m "fixed bug" # Good git commit -m "fix(api): resolve null pointer exception"
Version Already Exists
Problem: Tag v0.3.5 already exists
Solution: CI automatically calculates next available version
Release Branch Mismatch
Problem: MR targets wrong release branch
Solution: Update target branch:
glab mr update <MR_ID> --target-branch release/v0.3.x
Core Projects Out of Sync
Problem: Core projects have different versions
Solution: Trigger synchronized release
Getting Help
- Check documentation in this directory
- Review CI/CD pipeline logs
- Validate commits:
echo "feat: test" | npx commitlint - Test semantic-release:
npx semantic-release --dry-run - Contact tech lead for complex issues
Resources
External Documentation
- Semantic Versioning 2.0.0
- Conventional Commits
- Keep a Changelog
- semantic-release
- GitLab Releases
- GitLab Changelog API
Internal Documentation
Contributing
Improving Documentation
To improve this documentation:
- Create issue with suggested changes
- Follow standard workflow
- Submit MR with updates
- Request review from tech lead
Reporting Issues
Found a problem with versioning or releases?
- Create issue with
versioninglabel - Include:
- What happened
- What you expected
- Steps to reproduce
- CI/CD logs if applicable
Changelog
This documentation follows Keep a Changelog format.
[1.0.0] - 2026-01-08
Added
- Initial versioning documentation
- Semantic versioning guide
- Automated version bumping guide
- Release branch strategy
- Changelog generation guide
- GitLab releases guide
- Conventional commits guide
- Multi-project versioning guide
Last Updated: 2026-01-08 Maintainer: Agent Platform Team Contact: tech-lead@agent-platform.io