This project uses semantic-release to automate version management and the release process. This ensures consistent versioning based on commit messages and streamlines the release workflow.
We follow the Conventional Commits specification for commit messages. This standardizes commit messages and makes them more readable and useful.
<type>[optional scope]: <description>
[optional body]
[optional footer(s)]
feat: A new feature (corresponds to a MINOR version increment)fix: A bug fix (corresponds to a PATCH version increment)docs: Documentation only changesstyle: Changes that don't affect code logic (formatting, etc.)refactor: Code change that neither fixes a bug nor adds a featureperf: Performance improvementstest: Adding or correcting testsbuild: Changes to build system or dependenciesci: Changes to CI configurationchore: Other changes that don't modify src or test files
Add BREAKING CHANGE: in the footer to indicate a breaking change (corresponds to a MAJOR version increment):
feat: allow provided config object to extend other configs
BREAKING CHANGE: `extends` key in config file is now used for extending other config files
When you push commits to the main branch, semantic-release automatically:
- Analyzes commit messages to determine the next version number
- Generates release notes and updates CHANGELOG.md
- Updates version in project files (YnabMcpServer.csproj and Directory.Build.props)
- Creates a Git tag for the new version
- Creates a GitHub release
- Builds and publishes Docker images to Docker Hub
For the automated release process to work, the following secrets must be configured in your GitHub repository:
GH_TOKEN: A GitHub Personal Access Token with repository accessDOCKER_USERNAME: Your Docker Hub usernameDOCKER_PAT: Your Docker Hub Personal Access Token
To manually trigger a release, you can use the GitHub Actions workflow dispatch feature from the Actions tab in your repository.