33 lines
1.2 KiB
Markdown
33 lines
1.2 KiB
Markdown
# How to release new versions of the Ruma crates
|
|
|
|
Releasing one of the crates is very simple since it is entirely automated.
|
|
The only thing you have to do is to run
|
|
|
|
```
|
|
cargo xtask release {crate} {version}
|
|
```
|
|
|
|
The `xtask` script will then take care of
|
|
|
|
* updating all affected `Cargo.toml`s
|
|
* adding a new version header to the changelog
|
|
* collecting the changes from the changelog
|
|
* creating a release commit
|
|
* publishing the new release to [crates.io](https://crates.io/)
|
|
* creating a release tag and GitHub release if applicable
|
|
|
|
If some part of `cargo xtask release` fails, for example because of internet
|
|
connectivity issues, you can run the exact same command again to retry. Steps
|
|
that were already completed will be detected and an option to continue with
|
|
the next step will be given.
|
|
|
|
## Dependencies
|
|
|
|
Dependencies obviously need to be released before dependents. Also, a breaking
|
|
change release in a dependency should usually be followed by a new release of
|
|
all dependents.
|
|
|
|

|
|
|
|
<small><code>cargo depgraph --all-features --dedup-transitive-deps --workspace-only --build-deps --exclude hello_isahc,hello_world,joke_bot,message_log,xtask | dot -Tpng > contrib/workspace_deps.png</code></small>
|