This document describes how to create a new release of fmriprep-workbench.
Releases are triggered manually using a flag file system. This prevents automatic releases on every push and gives you full control over when releases happen.
Before creating a release, ensure:
- All changes for the release are merged to
mainbranch - All tests are passing
- Documentation is up to date
- You have an
ANTHROPIC_API_KEYsecret configured in GitHub repository settings
The quickest way to trigger a release is using the included helper script:
# For a patch release (0.2.0 -> 0.2.1)
./trigger-release.sh patch
# For a minor release (0.2.0 -> 0.3.0)
./trigger-release.sh minor
# For a major release (0.2.0 -> 1.0.0)
./trigger-release.sh majorThe script will:
- ✅ Validate your input
- ✅ Show the current and next version
- ✅ Display commits since the last release
- ✅ Ask for confirmation
- ✅ Create and commit the
.release-readyfile - ✅ Push to trigger the release workflow
- ✅ Provide a link to monitor the workflow
-
Create the release flag file with the desired version bump type:
# For a patch release (0.2.0 -> 0.2.1) echo "patch" > .release-ready # For a minor release (0.2.0 -> 0.3.0) echo "minor" > .release-ready # For a major release (0.2.0 -> 1.0.0) echo "major" > .release-ready
-
Commit and push the flag file:
git add .release-ready git commit -m "chore: trigger release" git push origin main -
Monitor the release workflow:
- Go to the Actions tab in your GitHub repository
- Watch the "Release" workflow execute
- The AI-powered changelog will be generated automatically
- The
.release-readyfile will be automatically removed after successful release
Alternatively, you can trigger a release manually through GitHub's UI:
- Go to Actions tab in your GitHub repository
- Select the Release workflow from the left sidebar
- Click Run workflow button
- Select the version bump type (major, minor, or patch)
- Click Run workflow
- patch: Bug fixes and minor updates (0.2.0 → 0.2.1)
- minor: New features, backwards-compatible (0.2.0 → 0.3.0)
- major: Breaking changes (0.2.0 → 1.0.0)
The release workflow automatically:
- ✅ Reads the version bump type from
.release-readyfile - ✅ Calculates the new version number
- ✅ Uses the changelog-drafter AI agent to generate human-readable release notes from commits
- ✅ Updates
CHANGELOG.mdwith the new version entry - ✅ Creates and pushes a git tag (e.g.,
v0.2.1) - ✅ Creates a GitHub release with AI-generated notes
- ✅ Removes the
.release-readyfile to prevent re-triggering - ✅ Commits all changes back to the main branch
The release workflow uses the changelog-drafter agent to automatically:
- Analyze all commits since the last release
- Translate technical commit messages into user-friendly language
- Categorize changes into sections:
- 🚀 Features
- 🐛 Bug Fixes
- 📚 Documentation
- 🔧 Maintenance
- 💥 Breaking Changes
- Generate clear, descriptive release notes
- Ensure
.release-readyfile was committed and pushed tomainbranch - Check the file contains exactly one of:
major,minor, orpatch - Verify the workflow file exists at
.github/workflows/release.yml
The workflow has a fallback mechanism. If the AI agent fails, it will:
- Generate a simple commit-based changelog
- Still create the release successfully
- Log the error for investigation
- Check the workflow logs for errors in the "Remove release flag" step
- Manually remove the file with:
git rm .release-ready && git commit -m "chore: remove release flag" && git push
Ensure these secrets are configured in your repository settings:
ANTHROPIC_API_KEY: Your Anthropic API key for the changelog-drafter agentGITHUB_TOKEN: Automatically provided by GitHub Actions
- Review changes before release: Always review the commits that will be included
- Update docs first: Ensure documentation reflects the changes being released
- Choose version bump carefully: Follow semantic versioning principles
- Check workflow logs: Monitor the release workflow to ensure everything succeeds
- Verify the release: After creation, verify the release notes and download artifacts
# Make your bug fix commits
git commit -m "fix: correct subject counting logic"
git push origin main
# Trigger patch release
echo "patch" > .release-ready
git add .release-ready
git commit -m "chore: trigger v0.2.1 release"
git push origin main# Make your feature commits
git commit -m "feat: add skip-tar flag for step 2"
git push origin main
# Trigger minor release
echo "minor" > .release-ready
git add .release-ready
git commit -m "chore: trigger v0.3.0 release"
git push origin main# Make your breaking change commits
git commit -m "feat!: migrate to YAML configuration"
git push origin main
# Trigger major release
echo "major" > .release-ready
git add .release-ready
git commit -m "chore: trigger v1.0.0 release"
git push origin mainIf you encounter issues with the release process, check:
- GitHub Actions workflow logs
- Repository issues for known problems
- Contact the maintainer for assistance