-
Notifications
You must be signed in to change notification settings - Fork 0
Release Process
Danny Volz edited this page Jul 5, 2025
·
1 revision
Coda uses an automated release process based on conventional commits. Releases are triggered automatically when specific types of commits are merged to the main branch.
Coda uses date-based versioning in the format: year.month.day.HHMM
- Example:
2025.1.3.1430for January 3, 2025 at 14:30 UTC - Versions are automatically updated during the release process
- No manual version bumping is required
Releases are automatically created when commits with the following prefixes are merged to main:
-
feat:orfeature:- New features (triggers release) -
fix:orbugfix:- Bug fixes (triggers release) -
perf:- Performance improvements (triggers release) -
refactor:- Code refactoring (triggers release)
Commits that do NOT trigger releases:
-
docs:- Documentation changes -
style:- Code style changes -
test:- Test additions or changes -
chore:- Build process or auxiliary tool changes
Follow the Conventional Commits specification:
<type>(<scope>): <subject>
<body>
<footer>
# Feature
feat(cli): add support for multiple providers
# Bug fix
fix(oci): handle streaming timeout errors
# Breaking change
feat(api)!: redesign provider interface
BREAKING CHANGE: The provider interface has been completely redesigned.
Old providers will need to be updated to the new interface.
# With GitHub issue reference
fix(cli): correct version display format
Fixes #123- Automatic Trigger: When commits are pushed to main, the release workflow checks for releasable commits
- Version Update: The version is automatically updated to the current timestamp
- Tests Run: All unit tests are executed to ensure quality
-
Build: The package is built using
uv build - Changelog Generation: A changelog is automatically generated from commit messages
- GitHub Release: A new release is created with the changelog and built artifacts
- PyPI Upload: If configured, the package is uploaded to PyPI
To force a release without conventional commits:
- Go to Actions → Release workflow
- Click "Run workflow"
- Check "Force a release even without conventional commits"
- Click "Run workflow"
To skip the release process for a commit, include [skip ci] or [skip release] in the commit message:
git commit -m "chore: update dependencies [skip release]"To manually update the version locally:
make versionBefore major releases:
- All tests passing
- Documentation updated
- CHANGELOG reviewed
- Breaking changes documented
- Migration guide provided (if needed)
- Check that your commit message follows conventional commits format
- Ensure the commit type is one that triggers releases
- Check GitHub Actions for any workflow errors
- The version is only updated during the release process
- Local development always shows the last released version
- Use
make versionto update locally if needed
- Ensure
PYPI_API_TOKENis set in repository secrets - Check that the package name is available on PyPI
- Verify the build artifacts are valid
- Use conventional commits: This ensures automatic releases work correctly
- Write descriptive commit messages: They become part of the changelog
- Group related changes: Use feature branches to group related commits
- Test before merging: Ensure all tests pass before merging to main
-
Document breaking changes: Use the
BREAKING CHANGE:footer when needed
- Development-Guide - Development setup and contributing guidelines
- Roadmap - Project roadmap and version history