This document outlines the standard workflow for version management in the Strain Seer project. Following these guidelines ensures consistent and professional version control practices.
We follow Semantic Versioning (SemVer) for our version numbers in the format x.y.z
:
-
Major Version (x): Breaking changes that are not backward compatible
- Example:
1.0.0
→2.0.0
- Use when: Removing features, changing API contracts
- Conventional commit:
feat!: remove deprecated API endpoints
- Example:
-
Minor Version (y): New features that maintain backward compatibility
- Example:
1.0.0
→1.1.0
- Use when: Adding new features, enhancing existing functionality
- Conventional commit:
feat: add new visualization component
- Example:
-
Patch Version (z): Bug fixes and minor improvements
- Example:
1.0.0
→1.0.1
- Use when: Fixing bugs, improving performance
- Conventional commit:
fix: resolve memory leak in data processing
- Example:
-
Include Version Bump in Feature Branch
-
When creating a feature/fix branch, include version bump if needed
-
Use appropriate version level based on changes:
poetry version <major|minor|patch>
-
Commit the version bump with conventional commit message:
chore(release): bump version to vX.Y.Z
-
-
Create Pull Request
- Push your branch
- Create a pull request for review
- Include version bump details in the PR description if applicable
- Follow regular PR process
-
Review and Merge
- Review the pull request including version changes
- Ensure version bump is appropriate for the changes
- Merge the pull request
-
Create Git Tag
git tag -s v$(poetry version --short) -m "v$(poetry version --short) - Summary of changes"
Example:
git tag -s v1.2.0 -m "v1.2.0 - Add new visualization features and performance improvements"
-
Push Changes and Tags
git push origin v$(poetry version --short)
-
Create GitHub Release
- Go to GitHub repository → Releases → Create new release
- Select the newly created tag
- Add detailed release notes
- Publish release
Upon release creation:
- GitHub Actions automatically builds the Docker image
- Image is published to GitHub Container Registry (ghcr.io)
Repository owners maintain project integrity and security:
- Version Control: Create tags and releases to ensure stable release points
- Code Quality: Review and merge PRs to maintain code standards
- Security: Manage access and sensitive configurations
Contributors follow these guidelines to maintain project quality:
-
Branch Workflow: Create feature branches with your username
feature/add-new-visualization/KemingHe test/improved-core-coverage/KemingHe fix/memory-leak/KemingHe
-
PR Process: Submit PRs for all changes and address review feedback
-
Version Control: Include version bumps in feature PRs when needed
-
Version Management
- Bump versions based on impact: major (breaking), minor (features), patch (fixes)
- Document breaking changes to help users migrate smoothly
# Breaking Changes in v2.0.0 - Removed deprecated API endpoints - New authentication flow required Migration guide: [link]
-
Code Quality
- Write clear commit messages that explain the "why" not just the "what"
# Good feat(auth): implement OAuth2 for better security # Bad feat(auth): add OAuth2
- Keep changes focused and atomic for easier review and rollback
-
Release Process
- Sign tags for security and traceability
- Write meaningful release notes that highlight user-impacting changes
# Release v1.2.0 ## Features - New visualization component for strain analysis - Improved performance in data processing ## Breaking Changes - None