11# Release process
22
33This document describes the release process for the Dapr Python SDK.
4- It covers all packages published from this repository:
5-
6- | Tag prefix | PyPI package |
7- | ---| ---|
8- | ` v* ` | ` dapr ` (core SDK) |
9- | ` workflow-v* ` | ` dapr-ext-workflow ` |
10- | ` grpc-v* ` | ` dapr-ext-grpc ` |
11- | ` fastapi-v* ` | ` dapr-ext-fastapi ` |
12- | ` flask-v* ` | ` flask_dapr ` |
13- | ` langgraph-v* ` | ` dapr-ext-langgraph ` |
14- | ` strands-v* ` | ` dapr-ext-strands ` |
4+
5+ A single tag (` v* ` ) triggers the release of ** all packages** published from this repository:
6+
7+ | PyPI package |
8+ | ---|
9+ | ` dapr ` (core SDK) |
10+ | ` dapr-ext-workflow ` |
11+ | ` dapr-ext-grpc ` |
12+ | ` dapr-ext-fastapi ` |
13+ | ` flask_dapr ` |
14+ | ` dapr-ext-langgraph ` |
15+ | ` dapr-ext-strands ` |
16+
17+ You can also create the tag via a ** GitHub Release** , which auto-creates the tag and provides
18+ a changelog UI.
1519
1620## Overview
1721
@@ -102,26 +106,20 @@ Open a PR targeting `main` to align it with the new release version:
102106- In all seven version files: change the previous dev version to ` X.Y.0.dev `
103107- In all six extension ` setup.cfg ` files: change the previous ` dapr >= ...dev ` to ` dapr >= X.Y.0.dev `
104108
105- ### 4. Push the tags
109+ ### 4. Push the tag
106110
107- Once the version bump PR on ` release-X.Y ` is merged, create and push the tags from the
111+ Once the version bump PR on ` release-X.Y ` is merged, create and push the tag from the
108112** tip of ` release-X.Y ` ** :
109113
110114``` bash
111115git checkout release-X.Y
112116git pull upstream release-X.Y
113117
114- git tag vX.Y.0rc0 && git push upstream vX.Y.0rc0
115- git tag workflow-vX.Y.0rc0 && git push upstream workflow-vX.Y.0rc0
116- git tag grpc-vX.Y.0rc0 && git push upstream grpc-vX.Y.0rc0
117- git tag flask-vX.Y.0rc0 && git push upstream flask-vX.Y.0rc0
118- git tag fastapi-vX.Y.0rc0 && git push upstream fastapi-vX.Y.0rc0
119- git tag langgraph-vX.Y.0rc0 && git push upstream langgraph-vX.Y.0rc0
120- git tag strands-vX.Y.0rc0 && git push upstream strands-vX.Y.0rc0
118+ git tag vX.Y.0rc0 && git push upstream vX.Y.0rc0
121119```
122120
123- Each tag push triggers the ` dapr-python-release ` workflow which builds and uploads the
124- corresponding package to PyPI.
121+ The tag push triggers the ` dapr-python-release ` workflow which builds and uploads
122+ all packages to PyPI.
125123
126124## Scenario B — Ship a new release candidate
127125
@@ -134,21 +132,15 @@ Open a PR **targeting `release-X.Y`** that does:
134132- In all seven version files: change ` X.Y.0rc(N-1) ` → ` X.Y.0rcN `
135133- In all six extension ` setup.cfg ` files: change ` dapr >= X.Y.0rc(N-1) ` → ` dapr >= X.Y.0rcN `
136134
137- ### 2. Push the tags
135+ ### 2. Push the tag
138136
139137Once the PR is merged:
140138
141139``` bash
142140git checkout release-X.Y
143141git pull upstream release-X.Y
144142
145- git tag vX.Y.0rcN && git push upstream vX.Y.0rcN
146- git tag workflow-vX.Y.0rcN && git push upstream workflow-vX.Y.0rcN
147- git tag grpc-vX.Y.0rcN && git push upstream grpc-vX.Y.0rcN
148- git tag flask-vX.Y.0rcN && git push upstream flask-vX.Y.0rcN
149- git tag fastapi-vX.Y.0rcN && git push upstream fastapi-vX.Y.0rcN
150- git tag langgraph-vX.Y.0rcN && git push upstream langgraph-vX.Y.0rcN
151- git tag strands-vX.Y.0rcN && git push upstream strands-vX.Y.0rcN
143+ git tag vX.Y.0rcN && git push upstream vX.Y.0rcN
152144```
153145
154146## Scenario C — Ship the stable release (and patch releases)
@@ -163,23 +155,20 @@ Open a PR **targeting `release-X.Y`** that does:
163155- In all seven version files: change ` X.Y.ZrcN ` → ` X.Y.Z ` (drop the ` rcN ` suffix)
164156- In all six extension ` setup.cfg ` files: change ` dapr >= X.Y.ZrcN ` → ` dapr >= X.Y.Z `
165157
166- ### 2. Push the tags
158+ ### 2. Push the tag
167159
168160Once the PR is merged:
169161
170162``` bash
171163git checkout release-X.Y
172164git pull upstream release-X.Y
173165
174- git tag vX.Y.Z && git push upstream vX.Y.Z
175- git tag workflow-vX.Y.Z && git push upstream workflow-vX.Y.Z
176- git tag grpc-vX.Y.Z && git push upstream grpc-vX.Y.Z
177- git tag flask-vX.Y.Z && git push upstream flask-vX.Y.Z
178- git tag fastapi-vX.Y.Z && git push upstream fastapi-vX.Y.Z
179- git tag langgraph-vX.Y.Z && git push upstream langgraph-vX.Y.Z
180- git tag strands-vX.Y.Z && git push upstream strands-vX.Y.Z
166+ git tag vX.Y.Z && git push upstream vX.Y.Z
181167```
182168
169+ Alternatively, create a ** GitHub Release** targeting ` release-X.Y ` with tag ` vX.Y.Z ` — this
170+ creates the tag and triggers the publish workflow automatically.
171+
183172## Backporting changes
184173
185174Bug fixes and small improvements that should appear in both ` main ` and an active release
0 commit comments