Release process
Since gtk-rs has multiple crates which have inter-dependencies, it's a bit painful to make a new release. So here are the multiple steps:
- Merge
master
branch intocrate
branch in every repository (starting withsys
and ending withgtk
). (/!\cairo-sys
is incairo
repository, notsys
/!) - Update crate version in
Cargo.toml
and the number of itsgtk-rs
dependencies. - Open pull requests to
crate
branches to corresponding repositories. - Once pull requests have been merged, publish all crates to
crates.io
(using thecargo publish
command). - Generate new docs (don't forget
--all-features
when usingcargo doc
!). To do so, go togtk
directory (incrate
branch) and runcargo doc --features=embed-lgpl-docs
. Then runcp -r target/doc/* ../docs
(wheredocs
is the corresponding directory for thegtk-rs/docs
repository). Commit then push the changes to thedocs
(make a pull request and all the usual stuff...). - Merge
pending
branch intomaster
in thegtk-rs/examples
repository (by opening a pull request of course). - Update badges version number in the
_data/crates.json
in thegtk-rs/gtk-rs.github.io
repositoryz. - Write a blog post (add the file into
_posts
folder ingtk-rs.github.io
repository) announcing the new release.
NOTE: Pull requests on the crate
branch aren't build.
Using this tool
I don't recommend it if you're not a member of the gtk-rs
organization but just in case:
python3 src/release.py -m MEDIUM -t [Your github token here]