Skip to content

Commit 4d2861e

Browse files
docs: Document the current release process (#2745)
1 parent ed3617c commit 4d2861e

File tree

1 file changed

+43
-8
lines changed

1 file changed

+43
-8
lines changed

docs/release_process.md

Lines changed: 43 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,29 +1,64 @@
1+
---
2+
myst:
3+
heading_anchors: 4
4+
---
5+
16
# Release Process
27

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+
310
## PyPI releases
411

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.
620

7-
### Feature releases
21+
#### Feature releases
822

923
Feature releases are the primary way that new features are added to the Singer SDK. They are released on a roughly monthly cadence.
1024

11-
### Patch releases
25+
#### Patch releases
1226

1327
Patch releases are released as needed to fix bugs or security issues. They are released on an as-needed basis.
1428

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
1637

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
1853

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`.
2055

2156
## Deprecation policy
2257

2358
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.
2459

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:
2661

2762
```console
28-
$ pytest -W error::singer_sdk.utils.deprecation.SingerSDKDeprecationWarning
63+
$ pytest -W error::singer_sdk.helpers._compat.SingerSDKDeprecationWarning
2964
```

0 commit comments

Comments
 (0)