Release Process¶
The Singer SDK currently follows roughly a ZeroVer versioning scheme. Starting with the Singer SDK 1.0, version numbers will use semantic versioning.
PyPI releases¶
Stable releases¶
The following steps are required to create a stable release:
- Trigger the - .github/workflows/version_bump.ymlworkflow from the GitHub Actions tab, or from the CLI with- gh workflow run version_bump.yml.
- Wait for the workflow to complete. It will create a new PR with the version bump, and also a draft release. 
- Review the PR for any errors in the changelog and version bumps, then merge it. 
- Publish the draft release from the GitHub Releases tab. 
Feature releases¶
Feature releases are the primary way that new features are added to the Singer SDK. They are released on a roughly monthly cadence.
Patch releases¶
Patch releases are released as needed to fix bugs or security issues. They are released on an as-needed basis.
Release Highlights¶
Once the release is published, we manually add a section to the changelog with the release highlights. This section should include a brief description of the most important changes in the release. For example:
## v0.41.0 (2024-10-02)
### Highlights
- It's easier now for SQL tap developers to customize the mapping from SQL column types to JSON schema. See [the guide](https://sdk.meltano.com/en/v0.41.0/guides/sql-tap.html#custom-type-mapping) for details.
Pre-releases¶
git tag v0.42.0a3
git push origin v0.42.0a3
Pre-releases are normal tags with pre-release identifiers. They are used to test new features before a stable release. Pre-releases are triggered by pushing a tag with a pre-release identifier, e.g. v0.42.0a3.
We don’t generate release notes for pre-releases, nor do we update the changelog so creating a pre-release is as simple as pushing a tag:
Release cadence¶
The Singer SDK follows a roughly monthly release cadence. Milestones are used to track the progress of each release. The milestones are named after the release version, e.g. v0.42.0.
Deprecation policy¶
A feature release may deprecate a feature, but it will not remove it until the next major release. A deprecation will be clearly documented in the changelog and in the code.
All deprecated features will emit a SingerSDKDeprecationWarning when used, so users can raise them as exceptions when running their tests to ensure that they are not using any deprecated features:
$ pytest -W error::singer_sdk.helpers._compat.SingerSDKDeprecationWarning