Skip to content

Commit 01e8789

Browse files
authored
Add release_process.md (grpc#646)
1 parent 74c195c commit 01e8789

File tree

1 file changed

+46
-0
lines changed

1 file changed

+46
-0
lines changed

doc/release_process.md

+46
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,46 @@
1+
# Release Process for grpc-dotnet
2+
3+
This document describes the steps to create a new release of grpc-dotnet.
4+
The release process is based on the release process used by the [grpc/grpc](https://github.com/grpc/grpc) repository.
5+
6+
Releases follow the [gRPC-wide release schedule](https://github.com/grpc/grpc/blob/master/doc/grpc_release_schedule.md).
7+
There might be a slight delay if there are release blockers to resolve and/or we need to wait for the Grpc.Core.Api
8+
release that the new release depends on.
9+
10+
## Releasing a new version of grpc-dotnet (every 6 weeks)
11+
12+
- Before cutting the release branch
13+
- If needed, on the master branch update the `<GrpcPackageVersion>` dependency version in [dependencies.props](https://github.com/grpc/grpc-dotnet/blob/master/build/dependencies.props)
14+
to the latest pre-release of `Grpc.Core.Api` (that was just released as part of the grpc/grpc release process)
15+
- Make sure that any patches/bugfixes from the last released branch have been applied to the master branch as well.
16+
17+
- Cut the release branch from master branch (the branch format is `v2.25.x`, `v2.26.x`, ...).
18+
This release branch will be used for all subsequent pre-releases and patch releases within the same release cycle.
19+
20+
- On the release branch, replace the `-dev` suffix by `-pre1` under `<GrpcDotnetVersion>` version release number in [version.props](https://github.com/grpc/grpc-dotnet/blob/master/build/version.props)
21+
to prepare for building the pre-release nugets.
22+
Also check that the minor version number matches the branch name.
23+
24+
- Build the signed nuget packages and push them to nuget.org (internal process). **These are the pre-release packages.**
25+
26+
- Create a new release and tag in https://github.com/grpc/grpc-dotnet/releases (by creating the tag from the current release branch).
27+
Mark the release as "pre-release" in the github UI. Fill in the release notes.
28+
29+
- Wait for the stable release of `Grpc.Core.Api` (as scheduled by the release schedule), keep checking the issue tracker for problems with the new grpc-dotnet pre-release packages.
30+
If problems are discovered and they need to be fixed, the release manager might choose to release more pre-releases (`-pre2`, `-pre3`, ...) before deciding to release as stable.
31+
32+
- Once stable version of `Grpc.Core.Api` is pushed, remove `-pre1` suffix of the `<GrpcDotnetVersion>` version release number in [version.props](https://github.com/grpc/grpc-dotnet/blob/master/build/version.props) to prepare for the stable release.
33+
34+
- Build the signed nuget packages and push them to nuget.org (internal process). **These are the stable grpc-dotnet packages.**
35+
36+
- Create a new release and tag in https://github.com/grpc/grpc-dotnet/releases (by creating the tag from the current release branch).
37+
This is the stable release. Fill in the release notes.
38+
39+
### After the release
40+
41+
On the master branch, increase the version number to indicate start of a new release cycle (v2.25.0-dev become v2.26.0-dev)
42+
43+
## Process for patch releases
44+
45+
- Patch releases are created from an existing release branch by bumping the patch component of the version number
46+
- When bugfixes are merged to a release branch, make sure they are synced into the master branch as well (otherwise the fixes might be missing in the next release cycle)

0 commit comments

Comments
 (0)