|
| 1 | +--- |
| 2 | +myst: |
| 3 | + heading_anchors: 4 |
| 4 | +--- |
| 5 | + |
1 | 6 | # Release Process
|
2 | 7 |
|
| 8 | +The Singer SDK currently follows roughly a [ZeroVer versioning scheme](https://0ver.org/). Starting with the Singer SDK 1.0, version numbers will use [semantic versioning](https://semver.org/). |
| 9 | + |
3 | 10 | ## PyPI releases
|
4 | 11 |
|
5 |
| -Releases are published to PyPI by a GitHub Actions workflow, triggered when a GitHub [Release](https://github.com/meltano/sdk/releases) is published. |
| 12 | +### Stable releases |
| 13 | + |
| 14 | +The following steps are required to create a stable release: |
| 15 | + |
| 16 | +1. Trigger the `.github/workflows/version_bump.yml` workflow from the GitHub Actions tab, or from the CLI with `gh workflow run version_bump.yml`. |
| 17 | +2. Wait for the workflow to complete. It will create a new PR with the version bump, and also a draft release. |
| 18 | +3. Review the PR for any errors in the changelog and version bumps, then merge it. |
| 19 | +4. Publish the draft release from the GitHub Releases tab. |
6 | 20 |
|
7 |
| -### Feature releases |
| 21 | +#### Feature releases |
8 | 22 |
|
9 | 23 | Feature releases are the primary way that new features are added to the Singer SDK. They are released on a roughly monthly cadence.
|
10 | 24 |
|
11 |
| -### Patch releases |
| 25 | +#### Patch releases |
12 | 26 |
|
13 | 27 | Patch releases are released as needed to fix bugs or security issues. They are released on an as-needed basis.
|
14 | 28 |
|
15 |
| -## Release cadence |
| 29 | +#### Release Highlights |
| 30 | + |
| 31 | +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: |
| 32 | + |
| 33 | +```markdown |
| 34 | +## v0.41.0 (2024-10-02) |
| 35 | + |
| 36 | +### Highlights |
16 | 37 |
|
17 |
| -Starting with the Singer SDK 1.0, version numbers will use a loose form of [semantic versioning](https://semver.org/). |
| 38 | +- 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. |
| 39 | +``` |
| 40 | + |
| 41 | +### Pre-releases |
| 42 | + |
| 43 | +```bash |
| 44 | +git tag v0.42.0a3 |
| 45 | +git push origin v0.42.0a3 |
| 46 | +``` |
| 47 | + |
| 48 | +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`. |
| 49 | + |
| 50 | +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: |
| 51 | + |
| 52 | +## Release cadence |
18 | 53 |
|
19 |
| -SemVer makes it easier to see at a glance how compatible releases are with each other. It also helps to anticipate when compatibility shims will be removed. |
| 54 | +The Singer SDK follows a roughly monthly release cadence. [Milestones](https://github.com/meltano/sdk/milestones) are used to track the progress of each release. The milestones are named after the release version, e.g. `v0.42.0`. |
20 | 55 |
|
21 | 56 | ## Deprecation policy
|
22 | 57 |
|
23 | 58 | A [feature release](#feature-releases) 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.
|
24 | 59 |
|
25 |
| -All deprecated features will emit a `SingerDeprecationWarning` when used, so users can raise them as exceptions when running their tests to ensure that they are not using any deprecated features: |
| 60 | +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: |
26 | 61 |
|
27 | 62 | ```console
|
28 |
| -$ pytest -W error::singer_sdk.utils.deprecation.SingerSDKDeprecationWarning |
| 63 | +$ pytest -W error::singer_sdk.helpers._compat.SingerSDKDeprecationWarning |
29 | 64 | ```
|
0 commit comments