Release v1.7.0 (#1920)

* updating release instructions

* learning more about git push --atomic

* tweak

* tweak
This commit is contained in:
Tig Kindel
2022-07-28 15:02:24 -04:00
committed by GitHub
parent c182077dcb
commit 21ec8698ec

View File

@@ -43,31 +43,21 @@ dotnet-gitversion /updateprojectfiles
dotnet build -c Release
```
**DO NOT COMMIT AFTER USING `/updateprojectfiles`!**
Doing so will update the `.csproj` files in your branch with version info, which we do not want.
## Publishing a Release of Terminal.Gui
To release a new version (e.g. with a higher `major`, `minor`, or `patch` value) tag a commit using `git tag` and then push that tag directly to the upstream repo.
To release a new version (e.g. with a higher `major`, `minor`, or `patch` value) tag a commit using `git tag` and then push that tag directly to the `main` branch on `github.com/gui-cs/Terminal.Gui` (`upstream`).
The `tag` must be of the form `v<major>.<minor>.<patch>`, e.g. `v1.2.3`.
```powershell
git tag vmajor.minor.patch -a -m "Release vmajor.minor.patch"
git push upstream vmajor.minor.patch
```
The `tag` must be of the form `v<major>.<minor>.<patch>`, e.g. `v2.3.4`.
`patch` can indicate pre-release or not (e.g. `pre`, `beta`, `rc`, etc...).
For example, to launch v1.3.4-beta.5 as a Pre-Release nuget package, do the following:
```powershell
git tag v1.3.4-beta.5 -a -m "v1.3.4 Beta 5"
git push upstream v1.3.4-beta.5
```
### 1) Generate release notes with the list of PRs since the last release
## To launch version 2.3.4 as a Release nuget package do this:
1) Generate release notes with the list of PRs since the last release
Use `gh` to get list with just titles to make it easy to paste into release notes:
Use `gh` to get a list with just titles to make it easy to paste into release notes:
```powershell
gh pr list --limit 500 --search "is:pr is:closed is:merged closed:>=2021-05-18"
@@ -75,57 +65,72 @@ gh pr list --limit 500 --search "is:pr is:closed is:merged closed:>=2021-05-18"
Use the output to update `./Terminal.Gui/Terminal.Gui.csproj` with latest release notes
2) Update the API documentation
### 2) Update the API documentation
See `./docfx/README.md`.
3) Create a PR for the release
### 3) Create a PR for the release in the `develop` branch
The PR title should be "Release v2.3.4"
```powershell
git checkout develop
git pull -all
git checkout -b v_2_3_4
git add .
git commit -m "Release v2.3.4"
git push
```
4) On github.co, verify the build action worked on your fork, then merge the PR
### 4) On github.com, verify the build action worked on your fork, then merge the PR
5) Pull the merged main
### 5) Pull the merged `develop` from `upstream`
```powershell
git pull upstream main
git pull upstream `develop`
```
6) Create a new tag for the release
### 6) Merge `develop` into `main`
```powershell
git checkout main
git merge develop
```
Fix any merge errors.
### 7) Create a new annotated tag for the release
```powershell
git tag v2.3.4 -a -m "Release v2.3.4"
```
7) Push new tag to `main`
### 8) Push the new tag to `main` on `origin`
```powershell
git push upstream v2.3.4
git push --atomic upstream main v2.3.4
```
8) Monitor Github actions to ensure it worked.
*See https://stackoverflow.com/a/3745250/297526*
9) Check nuget to see new package (wait a few minutes)
### 9) Monitor Github actions to ensure the Nuget publishing worked.
### 10) Check Nuget to see the new package version (wait a few minutes):
https://www.nuget.org/packages/Terminal.Gui
10) Add a new Release in Github: https://github.com/gui-cs/Terminal.Gui/releases
### 11) Add a new Release in Github: https://github.com/gui-cs/Terminal.Gui/releases
### 12) Tweet about it
## Nuget
https://www.nuget.org/packages/Terminal.Gui
When a new version tag is defined, and merged into main, a nuget package will be generated.
When a new version tag is defined and merged into `main`, a Nuget package will be generated by a Github Action.
If the version is pre-release (includes a hyphen, e.g. `1.3.4-beta.5`) the Nuget package will be tagged as pre-release.
Miguel can hide defunct/old nuget packages.
Miguel & Tig can hide defunct/old Nuget packages.
## Contributing