mirror of
https://github.com/RGBCube/nu_scripts
synced 2025-08-01 22:57:46 +00:00
update the make_release/Readme.md
with the whole process (#541)
* update the `make_release/Readme.md` with the whole process * complete the release process of `reedline` and `nu-ansi-term` * make the 0 section title more clear * make the Git remotes more general and be clear about that * use `v0.xx.0` tags for both `reedline` and `nu-ansi-term`
This commit is contained in:
parent
a61256da0e
commit
3c436c4153
1 changed files with 90 additions and 26 deletions
|
@ -1,35 +1,99 @@
|
|||
# The release process of Nushell
|
||||
## 0. Release direct dependencies
|
||||
> **Note**
|
||||
> the following procedure is the same for `nu-ansi-term` and `reedline` and needs to be repeated
|
||||
|
||||
### How to run nu_deps.nu
|
||||
> **Warning**
|
||||
> release `nu-ansi-term` **before** `reedline` and `reedline` **before** Nushell
|
||||
|
||||
```rust
|
||||
cd <your nushell repo>
|
||||
nu nu_deps.nu
|
||||
```
|
||||
> **Note**
|
||||
> `nu-ansi-term` is typically released only when there are changes to publish.
|
||||
> `reedline` is typically released on the same schedule as Nushell.
|
||||
|
||||
## The release note
|
||||
> **Note**
|
||||
> in the following, `dep` denotes either the `reedline` or the `nu-ansi-term` remote
|
||||
> e.g. *https://github.com/nushell/reedline* or *git@github.com:nushell/nu-ansi-term*,
|
||||
> depending on the dependency being installed
|
||||
|
||||
- [ ] bump the version (example with [`reedline`][reedline bump example] and [`nu-ansi-term`][nu-ansi-term bump example])
|
||||
- [ ] get the latest revision with `git pull dep main`
|
||||
- [ ] publish the crate with `cargo publish` (*need to be a member of the publishing team*)
|
||||
- [ ] tag the project with `git tag v0.xx.0`
|
||||
- [ ] push the release tag with `git push dep main --tags`
|
||||
- [ ] publish the release (include the (breaking) changes and take inspiration from the [other releases](https://github.com/nushell/reedline/releases))
|
||||
- [ ] bump the version on the Nushell side ([example with `reedline`][reedline pin example]) (reference the release notes for courtesy)
|
||||
|
||||
## 1. Minor bump of the version ([example][nushell bump example])
|
||||
- [ ] bump the version with `sd 'version = "0.xx.1"' 'version = "0.xx+1.0"' **/Cargo.toml`
|
||||
- [ ] commit `Cargo.lock`
|
||||
|
||||
## 2. Tag the [`nushell`] repo
|
||||
> **Warning**
|
||||
> this is maybe the most critical step of the whole release process!!
|
||||
> this step, once pushed to *GitHub* will trigger the release workflows.
|
||||
|
||||
> **Note**
|
||||
> in the following, `nushell` will be used to pull and push to the [`nushell`] repo,
|
||||
> e.g. the `nushell` remote would be *https://github.com/nushell/nushell* or *git@github.com:nushell/nushell*
|
||||
|
||||
- [ ] get the latest version bump commit with `git pull nushell main`
|
||||
- [ ] run `cargo build` to check if it's ok and check last features
|
||||
- [ ] tag the project with `git tag 0.xx.0`
|
||||
- [ ] :warning: push the release tag to *GitHub* `git push nushell main --tags` :warning:
|
||||
|
||||
:point_right: check the [CI jobs](https://github.com/nushell/nushell/actions)
|
||||
:point_right: check that there is the same number of targets compared to [last release](https://github.com/nushell/nushell/releases/latest)
|
||||
|
||||
## 3. Publish `nu` to *crates.io*
|
||||
- [ ] check the order of dependencies with `nushell/nu_scripts/make_release/nu_deps.nu` from the `nushell` repo
|
||||
- [ ] release the Nushell crates `nushell/nu_scripts/make_release/nu_release.nu` from the `nushell` repo
|
||||
|
||||
> **Note**
|
||||
> if there is a new crate, you must add it to the `github:nushell:publishing` group (`cargo owner --list`)
|
||||
|
||||
> **Note**
|
||||
> if a step fails
|
||||
> - ask the owner to `cargo owner --add github:nushell:publishing`
|
||||
> - edit the `nu_release.nu` script to start again where it failed
|
||||
> - re-run the script
|
||||
|
||||
## 4. Publish the release note on the website
|
||||
> **Note**
|
||||
> the scripts have been written in such a way they can be run from anywhere
|
||||
|
||||
### Inspect the merged PRs to write changelogs
|
||||
```nu
|
||||
./make_release/release-note/list-merged-prs nushell/nushell
|
||||
```
|
||||
- [ ] inspect the merged PRs to write changelogs with `./make_release/release-note/list-merged-prs nushell/nushell`
|
||||
- [ ] reorder sections by priority, what makes the most sense to the user?
|
||||
- [ ] paste the output of `./make_release/release-note/list-merged-prs nushell/nushell --label breaking-change --pretty --no-author` to the "*Breaking changes*" section
|
||||
- [ ] make sure breaking changes titles are clear enough
|
||||
- [ ] paste the output of `./make_release/release-note/get-full-changelog` to the "*Full changelog*" section
|
||||
- [ ] mark as *ready for review* when uploading to *crates.io*
|
||||
- [ ] land when
|
||||
- **fully uploaded** to *crates.io*
|
||||
- **before** the *GitHub* release
|
||||
|
||||
### Complete the previous release note
|
||||
1. paste the output of
|
||||
```nu
|
||||
./make_release/release-note/get-full-changelog
|
||||
```
|
||||
to the "*Full changelog*" section.
|
||||
## 5. Publish the release on *GitHub*
|
||||
- [ ] go to the draft release on the [release page](https://github.com/nushell/nushell/releases)
|
||||
- [ ] grab the message of [last one](https://github.com/nushell/nushell/releases/latest)
|
||||
- [ ] wait for the website to publish the release (in the [actions](https://github.com/nushell/nushell.github.io/actions) tab and on the [website](https://www.nushell.sh/blog/))
|
||||
- [ ] publish the release on *GitHub*
|
||||
|
||||
2. paste the output of
|
||||
```nu
|
||||
./make_release/release-note/list-merged-prs nushell/nushell --label breaking-change --pretty --no-author
|
||||
```
|
||||
to the "*Breaking changes*" section.
|
||||
## 6. social media
|
||||
- [ ] post a status update on Discord
|
||||
- [ ] tweet about the new release
|
||||
|
||||
### Create the release note PR on the website after the release
|
||||
see
|
||||
```nu
|
||||
./make_release/release-note/create-pr --help
|
||||
```
|
||||
## 7. Create the next release note PR on the website
|
||||
- [ ] run `./make_release/release-note/create-pr 0.xx.0 ((date now) + 4wk | date format "%Y-%m-%d" | into datetime)`
|
||||
|
||||
## 8. Bump the version as development
|
||||
- [ ] bump the patch version on [`nushell`] ([example][nushell dev example])
|
||||
|
||||
|
||||
[reedline bump example]: https://github.com/nushell/reedline/pull/596/files
|
||||
[nu-ansi-term bump example]: https://github.com/nushell/nu-ansi-term/pull/45/files
|
||||
[reedline pin example]: https://github.com/nushell/nushell/pull/9532
|
||||
[nushell bump example]: https://github.com/nushell/nushell/pull/9530/files
|
||||
[nushell dev example]: https://github.com/nushell/nushell/pull/9543
|
||||
|
||||
[`nushell`]: https://github.com/nushell/nushell
|
||||
[`reedline`]: https://github.com/nushell/reedline
|
||||
[`nu-ansi-term`]: https://github.com/nushell/nu-ansi-term
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue