Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Update release procedure #838

Merged
merged 1 commit into from
Jul 18, 2022
Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
115 changes: 75 additions & 40 deletions RELEASES.md
Original file line number Diff line number Diff line change
Expand Up @@ -3,44 +3,80 @@
This document explains the release procedure. It is only relevant for maintainers.


## 1. Create release branch
## 1. Prepare file for release announcement

```
git switch -c release
```
The release announcement lives on the website, and needs to be created in the [website repository](https://github.com/hannobraun/www.fornjot.app).

## 2. Update changelog
We need to make the release announcement available on the website, without publishing it to the blog or RSS feed at first:

Add a changelog entry for the new version. Use the entry for the previous version as a template. Remember to thank the contributors.
1. Create directory for release announcement. Copy previous one and adapt name.
2. Remove the `date` key from the Markdown front matter.
3. Add a `path` key to explicitly specify the path of the announcement.
4. Update the `extra.version` key.

The list of pull request since the last release is available here:
https://github.com/hannobraun/Fornjot/pulls?q=is%3Apr+merged%3A%3E2022-07-07+sort%3Acreated-asc+

Replace the date near the end of that URL with the day before the previous release.
## 2. Write release announcement

Commit these changes: `git commit -m "Update changelog"`
Use the previously prepared file and create the release announcement:

1. Remove any content left form the previous announcement, leave structure.
2. Go through all pull requests, add them to the draft.
- Get list of pull requests from GitHub
https://github.com/hannobraun/Fornjot/pulls?q=is%3Apr+merged%3A%3E%3D2022-07-04+sort%3Acreated-asc+
- Thank all contributors
- new contributors: "special thanks go to first-time contributor `@name`!"
- other contributors: "thank you `@name`!"
- Make notes for introduction
3. Write introduction
- Ideally, you already have a list of notes from adding the pull requests.
- Highlight contributions.
4. Update list of sponsors
- https://github.com/sponsors/hannobraun/dashboard/activity
- Mention all sponsors at $32 / month and above by name.
5. Write *Issue of the Week*
See notes below.
6. Write *Outlook*

Use previous release announcement as template for all of this. When done, deploy to the website.

### Issue of the week

Potential new issues of the week:

- https://github.com/hannobraun/Fornjot/issues/794
- https://github.com/hannobraun/Fornjot/issues/798
- https://github.com/hannobraun/Fornjot/issues/805

Already mentioned issues of the week (remove, once closed):

- 2022-07-18: https://github.com/hannobraun/Fornjot/issues/815
- 2022-07-11: https://github.com/hannobraun/Fornjot/issues/793
- 2022-07-04: https://github.com/hannobraun/Fornjot/issues/479

## 3. Write release announcement

Use the previous release announcement as a template, but make the following changes:
## 3. Create release branch

1. Place the directory in `static/blog/` instead of `content/blog/`.
2. Add the `index.md` file as `content/release.md`.
3. Remove the `date` key from the Markdown front matter.
4. Add a `path` key to explicitly specify the path.
In the main Fornjot repository, do this:

The path should be identical to where the page would be, if it were added to `content/blog/`. This will result in the page being and all static assets being available at their final URLs, without the page being listed on the blog page, or being picked up by the Atom/RSS feed.
```
git switch -c release
```

## 4. Update changelog

Add a changelog entry for the new version. Copy the summary of pull requests from the release announcements and add it to the changelog.

Deploy the release announcement in this form to the website.
Commit these changes: `git commit -m "Update changelog"`


## 4. Update versions
## 5. Update versions

In the release branch, update the version numbers in the `Cargo.toml` files of all crates in the `crates/` directory to the new version. Also update the version numbers of the dependencies between the crates.


## 5. Publish the release
## 6. Publish the release

**TASK: Make sure #788 is fixed.**

Push the release branch, create a pull request, and label it as `release`. Once the CI build completed successfully, merge the pull-request and mention the new version in the commit, e.g. `Release v0.1.2`.

Expand All @@ -49,46 +85,45 @@ The [release-operator](./tools/release-operator) will run in the scope of GitHub
It will also `cargo publish` all crates to [crates.io](https://crates.io/).


## 6. Update release on GitHub
## 7. Update release on GitHub

The GitHub Release has been created by automation in the previous step. Copy the release announcement from the website (in HTML form), using the following procedure:
The GitHub Release has been created by automation in the previous step. Copy the Markdown source from the release announcement into the GitHub release. Update as necessary.

1. Take contents of `<main>`
2. Replace `href="/` with `href="https://www.fornjot.app/`.
3. Replace `src="/` with `src="https://www.fornjot.app/`.
4. Add note up top, linking to the release announcement on the website.
Add note up top, linking to the release announcement on the website.


## 7. Finish publishing release announcement
## 8. Finish publishing release announcement

To publish the release on the website properly, do the following:

1. Move the directory with the static assets to `content/blog/`.
2. Move `content/release.md` to the directory with the other assets, as `index.md`.
3. Add the `date` key to the front matter.
4. Remove the `path` key.
1. Add a `date` key to the front matter.
2. Remove the `path` key.

Now the announcement should show up on the blog page and the Atom/RSS feed.

Deploy the announcement to the website.


## 8. Promote release announcement
## 9. Promote release announcement

Post the release announcement in the official Fornjot channels:

- Matrix channel
- Mailing list
- Matrix channel

Post it on the following sites:

- /r/rust: https://www.reddit.com/r/rust/
- Rust Users: https://users.rust-lang.org/
- This Week in Rust: https://github.com/rust-lang/this-week-in-rust
Post it in the following channels:

Use the previous release announcement posted there as a template.
- Reddit
- https://www.reddit.com/r/rust/
- Use previous post as template
- Make sure title describes how it relates to Rust
- Add comment with short explanation, offer to answer questions
- Rust Users
https://users.rust-lang.org/t/fornjot-code-cad-in-rust-weekly-dev-log/71783
- This Week in Rust
https://github.com/rust-lang/this-week-in-rust


## 9. Improve release procedure
## 10. Improve release procedure

You are done. Figure out what didn't go optimally, and update this release procedure accordingly.