|
| 1 | +# Releasing OpenTelemetry Rust |
| 2 | + |
| 3 | +The primary audience for this is the SIG Maintainers. It provides the list of steps for how to release the crates and the |
| 4 | +considerations to make before releasing the crate. It may provide use to consumers of the crate if/when we develop a |
| 5 | +release cadence. |
| 6 | + |
| 7 | +## Release cadence |
| 8 | + |
| 9 | +As of Feb 2024, there is no established cadence for the OpenTelemetry crates. The balance is required between too many |
| 10 | +breaking changes in a single release, and since we have instability flipping between implementations across 0.x |
| 11 | +releases. Perhaps once we've established a 1.0 we can consider adopting a consistent release cadence. |
| 12 | + |
| 13 | +## Considerations |
| 14 | + |
| 15 | +A draft PR can be created, but before releasing consider the following: |
| 16 | + |
| 17 | +* Are there any pending pull requests which should be included in the next release? |
| 18 | + * Are they blockers? |
| 19 | +* Are there any unresolved issues which should be resolved before the next release? |
| 20 | +* Bring it up at a SIG meeting, this can usually get some of these questions answered sooner than later. It will also |
| 21 | + help establish a person to perform the release. Ideally this can be someone different each time to ensure that the |
| 22 | + process is documented. |
| 23 | + |
| 24 | +## Steps to Release |
| 25 | + |
| 26 | +1. Create a release PR |
| 27 | + - For each crate |
| 28 | + - Bump appropriate version |
| 29 | + - Update change logs to reflect release version. |
| 30 | + - Update API/SDK version as necessary |
| 31 | + - Attach `integration test` label to the PR to run integration tests |
| 32 | + - If there's a large enough set of changes, consider writing a migration guide. |
| 33 | +2. Merge the PR |
| 34 | + - Get reviews from other Maintainers |
| 35 | + - Ensure that there haven't been any interfering PRs |
| 36 | +3. Tag the release commit based on the [tagging convention](#tagging-convention). It should usually be a bump on minor version before 1.0 |
| 37 | +4. Create Github Release |
| 38 | +5. [Publish](#publishing-crates) to crates.io using the version as of the release commit |
| 39 | +6. Post to [#otel-rust](https://cloud-native.slack.com/archives/C03GDP0H023) on CNCF Slack. |
| 40 | + |
| 41 | + |
| 42 | +## Tagging Convention |
| 43 | + |
| 44 | +For each crate: it should be `<crate-name>-<version>` `<version>` being the simple `X.Y.Z`. |
| 45 | + |
| 46 | +## Publishing Crates |
| 47 | + |
| 48 | +For now we use the [basic procedure](https://doc.rust-lang.org/cargo/reference/publishing.html) from crates.io. |
| 49 | + |
| 50 | +Follow this for each crate as necessary. |
| 51 | + |
| 52 | +For any new crates remember to add open-telemetry/rust-maintainers to the list. |
0 commit comments