diff --git a/RELEASES.md b/RELEASES.md index 78807076..14db3640 100644 --- a/RELEASES.md +++ b/RELEASES.md @@ -22,8 +22,11 @@ We don't update the MSRV in a patch release, unless we really, really need to. # Release process +* [ ] copy this checklist to a new egui issue, called "Release 0.xx.y" +* [ ] close all issues in the milestone for this release + ## Patch release -* [ ] Make a branch off of the latest release +* [ ] make a branch off of the latest release * [ ] cherry-pick what you want to release * [ ] run `cargo semver-checks` @@ -49,7 +52,10 @@ We don't update the MSRV in a patch release, unless we really, really need to. * [ ] run `scripts/generate_example_screenshots.sh` if needed * [ ] write a short release note that fits in a bluesky post * [ ] record gif for `CHANGELOG.md` release note (and later bluesky post) -* [ ] update changelogs using `scripts/generate_changelog.py --version 0.x.0 --write` +* [ ] update changelogs + * [ ] run `scripts/generate_changelog.py --version 0.x.0 --write` + * [ ] read changelogs and clean them up if needed + * [ ] write a good intro with highlight for the main changelog * [ ] bump version numbers in workspace `Cargo.toml` ## Actual release @@ -57,7 +63,7 @@ I usually do this all on the `main` branch, but doing it in a release branch is * [ ] Run `typos` * [ ] `git commit -m 'Release 0.x.0 - '` -* [ ] `cargo publish` (see below) +* [ ] Publish the crates by running `scripts/publish_crates.sh` * [ ] `git tag -a 0.x.0 -m 'Release 0.x.0 - '` * [ ] `git pull --tags ; git tag -d latest && git tag -a latest -m 'Latest release' && git push --tags origin latest --force ; git push --tags` * [ ] merge release PR or push to `main` @@ -66,23 +72,6 @@ I usually do this all on the `main` branch, but doing it in a release branch is * Follow the format of the last release * [ ] wait for documentation to build: https://docs.rs/releases/queue -### `cargo publish`: -``` -(cd crates/emath && cargo publish --quiet) && echo "✅ emath" -(cd crates/ecolor && cargo publish --quiet) && echo "✅ ecolor" -(cd crates/epaint_default_fonts && cargo publish --quiet) && echo "✅ epaint_default_fonts" -(cd crates/epaint && cargo publish --quiet) && echo "✅ epaint" -(cd crates/egui && cargo publish --quiet) && echo "✅ egui" -(cd crates/egui-winit && cargo publish --quiet) && echo "✅ egui-winit" -(cd crates/egui-wgpu && cargo publish --quiet) && echo "✅ egui-wgpu" -(cd crates/eframe && cargo publish --quiet) && echo "✅ eframe" -(cd crates/egui_kittest && cargo publish --quiet) && echo "✅ egui_kittest" -(cd crates/egui_extras && cargo publish --quiet) && echo "✅ egui_extras" -(cd crates/egui_demo_lib && cargo publish --quiet) && echo "✅ egui_demo_lib" -(cd crates/egui_glow && cargo publish --quiet) && echo "✅ egui_glow" -``` - -\ ## Announcements * [ ] [Bluesky](https://bsky.app/profile/ernerfeldt.bsky.social) @@ -91,6 +80,7 @@ I usually do this all on the `main` branch, but doing it in a release branch is * [ ] [r/programming](https://www.reddit.com/r/programming/comments/1bocsf6/announcing_egui_027_an_easytouse_crossplatform/) * [ ] [This Week in Rust](https://github.com/rust-lang/this-week-in-rust/pull/5167) + ## After release * [ ] publish new `eframe_template` * [ ] publish new `egui_plot` @@ -98,3 +88,9 @@ I usually do this all on the `main` branch, but doing it in a release branch is * [ ] publish new `egui_tiles` * [ ] make a PR to `egui_commonmark` * [ ] make a PR to `rerun` + + +## Finally +* [ ] Close the milestone +* [ ] Close this issue +* [ ] Improve `RELEASES.md` with what you learned this time around diff --git a/scripts/generate_changelog.py b/scripts/generate_changelog.py index 7e3ae428..61986ee8 100755 --- a/scripts/generate_changelog.py +++ b/scripts/generate_changelog.py @@ -192,7 +192,9 @@ def remove_prefix(text, prefix): def print_section(heading: str, content: str) -> None: if content != "": print(f"## {heading}") - print(content) + print(content.strip()) + print() + print() print() @@ -345,11 +347,8 @@ def main() -> None: print() for crate in crate_names: if crate in crate_sections: - prs = crate_sections[crate] - print_section(crate, changelog_from_prs(prs, crate)) - print() + print_section(crate, changelog_from_prs(crate_sections[crate], crate)) print_section("Unsorted PRs", "\n".join([f"* {item}" for item in unsorted_prs])) - print() print_section( "Unsorted commits", "\n".join([f"* {item}" for item in unsorted_commits]) ) diff --git a/scripts/publish_crates.sh b/scripts/publish_crates.sh new file mode 100644 index 00000000..705b88c4 --- /dev/null +++ b/scripts/publish_crates.sh @@ -0,0 +1,14 @@ +#!/usr/bin/env bash + +(cd crates/emath && cargo publish --quiet) && echo "✅ emath" +(cd crates/ecolor && cargo publish --quiet) && echo "✅ ecolor" +(cd crates/epaint_default_fonts && cargo publish --quiet) && echo "✅ epaint_default_fonts" +(cd crates/epaint && cargo publish --quiet) && echo "✅ epaint" +(cd crates/egui && cargo publish --quiet) && echo "✅ egui" +(cd crates/egui-winit && cargo publish --quiet) && echo "✅ egui-winit" +(cd crates/egui-wgpu && cargo publish --quiet) && echo "✅ egui-wgpu" +(cd crates/eframe && cargo publish --quiet) && echo "✅ eframe" +(cd crates/egui_kittest && cargo publish --quiet) && echo "✅ egui_kittest" +(cd crates/egui_extras && cargo publish --quiet) && echo "✅ egui_extras" +(cd crates/egui_demo_lib && cargo publish --quiet) && echo "✅ egui_demo_lib" +(cd crates/egui_glow && cargo publish --quiet) && echo "✅ egui_glow"