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

docs: Add some more details about the release #5574

Merged
merged 1 commit into from
Aug 25, 2023
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
55 changes: 45 additions & 10 deletions docs/contributors/releasing.md
Original file line number Diff line number Diff line change
Expand Up @@ -31,16 +31,21 @@ title: Making a release

First of all, if you are bumping the minor part of the version choose a new
metal or an alloy as a new for the release! Use that in the release notes and in
the release title on GitHub. Otherwie, use the metals from the previous release.
the release title on GitHub. Otherwise, use the metal from the previous release.

You might use the `./bin/merged_prs.sc` script to generate merged PRs list
between two last release tags. It can be run using scala-cli:
You might use the `./bin/merged_prs.sc` script to generate a draft of release
notes with merged PRs list between two last release tags. It can be run using
scala-cli:

```
cs install scala-cli
scala-cli ./bin/merged_prs.scala -- <tag1> <tag2> "<github_api_token>"
```

Make sure that required tags, the previous one and the new one, are available.
You might need to do `git fetch <main_fork> --tags` to fetch the older tag. You
need to create the new one.

It will need a [basic github API token](https://github.com/settings/tokens)
(don't need any additional scopes) to run, which may be specified via the last
argument.
Expand All @@ -49,7 +54,15 @@ The script will generate a new markdown file in `website/blog` filled with a
basic release template.

You can fill in the number of closed issues from the last milestone, though you
will need to make sure everything is included there.
will need to make sure everything is included there. In most cases you can just
add all the closed issues since the last milestone.

Please also fill in any missing details like the author or author image.

To write the actual release notes you can look through the list of closed PR,
put any smaller changes that you think are worth mentioning to the users in the
`Miscellaneous` section and any large ones as their own section with more
explanation and examples.

### Update Metals version

Expand All @@ -62,11 +75,23 @@ will need to make sure everything is included there.

### Open a PR with release notes

Open the PR to the repo https://github.com/scalameta/metals/releases/new.
Open the PR to the repo and wait until they are approved to merge them. This
might take some time if the release is large enough.

### Start the release process:

- `git push upstream --tags` will trigger release workflow
- `git push <main_fork> <tag_name>` will trigger release workflow on the main
fork of the metals repository. This for example can be
`git push [email protected]:scalameta/metals.git v1.0.0` or if you have the
remote set up:

```bash
> git remote -v
primary [email protected]:scalameta/metals.git (fetch)
primary [email protected]:scalameta/metals.git (push)
> git push primary v1.0.0
```

- Do not create a release on GitHub just yet. Creating a release on GitHub sends
out a notification to repository watchers, and the release isn't ready for
that yet.
Expand Down Expand Up @@ -99,8 +124,9 @@ Open the PR to the repo https://github.com/scalameta/metals/releases/new.
yet available on Maven Central run:
`./bin/test-release.sh $VERSION -r sonatype:public`

- Make sure all docs are up to date.

- Double check if the release starts up and some basic features work.
- Merge the release notes PR
- Wait until it's available on https://scalameta.org/metals/blog/
- Upgrade downstream projects:

- https://github.com/scalameta/metals-vscode:
Expand All @@ -114,8 +140,11 @@ Open the PR to the repo https://github.com/scalameta/metals/releases/new.
`build.sbt`
- open a PR, feel free to merge after CI is green
- open the last generated release draft, tag with a new version and publish
the release. This will start github actions job and publish the extension
to both the Visual Studio Code Code Marketplace and openvsx.
the release. The new version should always be the next minor since patches
are used for prerelease versions, so if the last full release was `1.24.0`
then the next should be `1.25.0`. This will start github actions job and
publish the extension to both the Visual Studio Code Marketplace and
openvsx.

### Official release

Expand All @@ -131,6 +160,12 @@ Open the PR to the repo https://github.com/scalameta/metals/releases/new.
- Announce the new release with the link to the release notes:
- on [Discord](https://discord.com/invite/RFpSVth)

### Post release

See if any docs need to be updated due to the changes in the last PR. This could
potentially be done also before the release, but might be easier as a follow up
afterwards without the release pressure.

## Sanity check

- [ ] draft release notes and create with PR with them
Expand Down
Loading