Spaces:
Sleeping
Sleeping
Release Management
This project uses towncrier for automated changelog management and releases.
Release Workflow
1. During Development
As you make changes, create changelog fragments:
# Create a feature fragment
echo "Added new task type to environment" > .changelog.d/123.feature.md
# Create a bug fix fragment
echo "Fixed STDOUT format parsing error" > .changelog.d/124.bugfix.md
# Create a documentation fragment
echo "Updated README with new API documentation" > .changelog.d/125.doc.md
# Create a miscellaneous fragment (no details in changelog)
echo "Code cleanup and refactoring" > .changelog.d/126.misc.md
Fragment format:
- File name:
.changelog.d/<ID>.<TYPE>.md <ID>: PR number, commit hash, or any unique identifier<TYPE>:feature,bugfix,doc, ormisc- Content: One-line description of the change
2. Before Release
When ready to release, use the GitHub Actions workflow:
- Go to: https://github.com/SupreethRao99/veriRL/actions
- Click "Release" workflow
- Click "Run workflow"
- Enter version (e.g.,
0.2.1) - Workflow will:
- Run
towncrier build --version 0.2.1 - Update CHANGELOG.md
- Update pyproject.toml version
- Commit changes
- Create git tag
v0.2.1 - Push to GitHub
- Create GitHub Release with changelog
- Run
3. Manual Release (if workflow fails)
# Install towncrier
uv pip install towncrier
# Generate changelog and update version
towncrier build --version 0.2.1
# Review changes
git status
# Commit
git add CHANGELOG.md pyproject.toml .changelog.d/
git commit -m "Release v0.2.1"
# Create tag
git tag -a v0.2.1 -m "Release v0.2.1"
# Push
git push origin main v0.2.1
# Create release on GitHub (via web UI or gh CLI)
gh release create v0.2.1 --title "v0.2.1" --notes-file CHANGELOG.md
Version Numbering
Uses Semantic Versioning:
- MAJOR (0.X.0): Breaking changes, major architecture updates
- MINOR (0.1.X): New features, new tasks, significant enhancements
- PATCH (0.1.1): Bug fixes, documentation updates, minor improvements
Examples:
- Initial release:
0.1.0 - Add new task:
0.2.0(minor bump) - Fix bug:
0.2.1(patch bump) - Breaking change:
1.0.0(major bump)
Viewing Releases
- Changelog: https://github.com/SupreethRao99/veriRL/blob/main/CHANGELOG.md
- Releases: https://github.com/SupreethRao99/veriRL/releases
- Tags: https://github.com/SupreethRao99/veriRL/tags
Fragment Types Reference
feature
New functionality, new tasks, new endpoints, new capabilities.
Example: 0001.feature.md
Added AXI-Stream FIFO task with 34 test assertions
bugfix
Bug fixes, corrections, error handling improvements.
Example: 0002.bugfix.md
Fixed STDOUT format to remove extraneous validation output
doc
Documentation updates, README changes, new guides.
Example: 0003.doc.md
Updated deployment guide with GitHub Actions instructions
misc
Internal changes, refactoring, code cleanup (not shown in changelog).
Example: 0004.misc.md
Refactor environment initialization for clarity
Changelog Format
Generated CHANGELOG.md follows this structure:
## [0.2.0] - 2026-04-04
### Features
- Feature 1 (PR #123)
- Feature 2 (PR #124)
### Bug Fixes
- Fix 1 (PR #125)
- Fix 2 (PR #126)
### Documentation
- Doc update 1 (PR #127)
- Doc update 2 (PR #128)
Tips
- Create fragments frequently — one per PR or significant change
- Use clear descriptions — fragments become the changelog, so be descriptive
- Keep it user-facing — describe what users/judges care about
- Test release locally — run
towncrier build --draftto preview - One release per version — don't release twice for the same version
Troubleshooting
Fragment not appearing in changelog
- Check file name format:
.changelog.d/<ID>.<TYPE>.md - Verify
<TYPE>is one of: feature, bugfix, doc, misc - Ensure file is in
.changelog.d/directory
Changelog build fails
- Check pyproject.toml
[tool.towncrier]configuration - Verify all fragments have valid type
- Run with
--draftflag to preview without modifying files
Version not updating
- Check pyproject.toml has
version = "0.1.0"field - Towncrier auto-updates this during
buildcommand