You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: develop-docs/sdk/processes/releases.mdx
+61-3Lines changed: 61 additions & 3 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -47,8 +47,8 @@ We're just interested in making a GitHub release and a PyPI release so our
47
47
```yaml
48
48
minVersion: 0.28.1
49
49
targets:
50
-
- name: pypi
51
-
- name: github
50
+
- name: pypi
51
+
- name: github
52
52
```
53
53
54
54
### `scripts/bump-version.sh`
@@ -147,6 +147,64 @@ add a label to.
147
147
148
148
[issue in `publish`]: https://github.com/getsentry/publish/issues
149
149
150
+
## Version name conventions
151
+
152
+
To keep versioning consistent across SDKs, we generally follow [semantic versioning (semver)](https://semver.org/), with language- or platform-specific conventions around semver (if applicable).
153
+
Craft has some precautionary checks to ensure we only publish valid, semver-like versions.
154
+
Specifically, craft expects versions following this format:
While the major, minor and patch version numbers are required, pre-release and build properties are optional but can also be combined.
161
+
162
+
### Pre-releases (`<prerelease>`)
163
+
164
+
If you want to create a preview or pre-release of your SDK, you can append a pre-release identifier, as well as an optional incremental pre-release number to your version.
165
+
This will ensure that various craft publishing targets will treat the release as a pre-release, meaning for example that it will not get assigned a `latest` tag in package repositories.
166
+
Likewise, pre-releases will not be inserted into our internal release-registry, which is used by the Sentry product as well as our docs and other tools to query the latest or specific releases of our packages.
167
+
168
+
Importantly, we have strict rules around which identifiers we accept as a pre-release, meaning the `<prerelease>` part of your version has to be one of the following: `preview|pre|rc|dev|alpha|beta|unstable|a|b`.
169
+
Therefore, we **do not accept** arbitrary strings as pre-release identifiers. Using any other identifiers will result in a release being considered stable instead. This means, it will get assigned a `latest` tag in package repositories and inserted into our release-registry.
170
+
171
+
Examples:
172
+
173
+
```txt
174
+
// valid
175
+
1.0.0-preview
176
+
1.0.0-alpha.0
177
+
1.0.0-beta.1
178
+
1.0.0-rc.20
179
+
1.0.0-a
180
+
181
+
// invalid or incorrectly treated
182
+
1.0.0-foo
183
+
1.0.0-canary.0
184
+
```
185
+
186
+
#### Special Case: Post Releases
187
+
188
+
Python has the concept of post releases, which craft handles implicitly. A post release is indicated by a `-\d+` suffix to the semver version, for example: `1.0.0-1`.
189
+
Given that we only consider certain identifiers as [valid pre-release identifiers](#pre-releases-prerelease), post releases are considered stable releases.
190
+
191
+
### Build identifiers (`<build>`)
192
+
193
+
In some cases, you can append a build identifier to your version, for example if you release the same package version for different platforms or architectures.
194
+
You can also combine build and pre-release identifiers but in this case, the pre-release identifier has to come first.
195
+
196
+
Examples:
197
+
198
+
```txt
199
+
// valid
200
+
1.0.0+x86_64
201
+
1.0.0-rc.1+x86_64
202
+
203
+
// invalid or incorrectly treated
204
+
1.0.0+rc.1+x86_64
205
+
1.0.0+x86_64-beta.0
206
+
```
207
+
150
208
## [Optional] Using Multiple Craft Configs in a Repo
151
209
152
210
In some cases, we need to maintain multiple or diverging publishing configs in a repository.
@@ -165,7 +223,7 @@ Add `craft_config_from_merge_target: true` when calling `getsentry/action-prepar
0 commit comments