Skip to content
Merged
Show file tree
Hide file tree
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
13 changes: 0 additions & 13 deletions .github/workflows/build-tag.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -4,12 +4,6 @@ on:
push:
tags:
- v*
- workflow-v*
- grpc-v*
- flask-v*
- fastapi-v*
- langgraph-v*
- strands-v*
workflow_dispatch:

jobs:
Expand Down Expand Up @@ -79,54 +73,47 @@ jobs:
python -m pip install --upgrade pip
pip install setuptools wheel twine tox
- name: Build and publish Dapr Python SDK
if: startsWith(github.ref_name, 'v')
env:
TWINE_PASSWORD: ${{ secrets.PYPI_UPLOAD_PASS }}
run: |
python setup.py sdist bdist_wheel
twine upload dist/*
- name: Build and publish dapr-ext-workflow
if: startsWith(github.ref_name, 'workflow-v')
env:
TWINE_PASSWORD: ${{ secrets.PYPI_UPLOAD_PASS }}
run: |
cd ext/dapr-ext-workflow
python setup.py sdist bdist_wheel
twine upload dist/*
- name: Build and publish Dapr Flask Extension
if: startsWith(github.ref_name, 'flask-v')
env:
TWINE_PASSWORD: ${{ secrets.PYPI_UPLOAD_PASS }}
run: |
cd ext/flask_dapr
python setup.py sdist bdist_wheel
twine upload dist/*
- name: Build and publish dapr-ext-grpc
if: startsWith(github.ref_name, 'grpc-v')
env:
TWINE_PASSWORD: ${{ secrets.PYPI_UPLOAD_PASS }}
run: |
cd ext/dapr-ext-grpc
python setup.py sdist bdist_wheel
twine upload dist/*
- name: Build and publish dapr-ext-fastapi
if: startsWith(github.ref_name, 'fastapi-v')
env:
TWINE_PASSWORD: ${{ secrets.PYPI_UPLOAD_PASS }}
run: |
cd ext/dapr-ext-fastapi
python setup.py sdist bdist_wheel
twine upload dist/*
- name: Build and publish dapr-ext-langgraph
if: startsWith(github.ref_name, 'langgraph-v')
env:
TWINE_PASSWORD: ${{ secrets.PYPI_UPLOAD_PASS }}
run: |
cd ext/dapr-ext-langgraph
python setup.py sdist bdist_wheel
twine upload dist/*
- name: Build and publish dapr-ext-strands
if: startsWith(github.ref_name, 'strands-v')
env:
TWINE_PASSWORD: ${{ secrets.PYPI_UPLOAD_PASS }}
run: |
Expand Down
6 changes: 0 additions & 6 deletions .github/workflows/fossa.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -22,12 +22,6 @@ on:
- feature/*
tags:
- v*
- workflow-v*
- grpc-v*
- flask-v*
- fastapi-v*
- langgraph-v*
- strands-v*
pull_request:
branches:
- main
Expand Down
6 changes: 0 additions & 6 deletions .github/workflows/validate_examples.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -7,12 +7,6 @@ on:
- feature/*
tags:
- v*
- workflow-v*
- grpc-v*
- fastapi-v*
- flask-v*
- langgraph-v*
- strands-v*
pull_request:
branches:
- main
Expand Down
2 changes: 1 addition & 1 deletion AGENTS.md
Original file line number Diff line number Diff line change
Expand Up @@ -157,7 +157,7 @@ MyPy is configured to check: `dapr/actor/`, `dapr/clients/`, `dapr/conf/`, `dapr
- **DCO required**: Every commit must include a `Signed-off-by` line. Use `git commit -s` to add it automatically.
- **CI checks**: Linting (ruff), unit tests (Python 3.10-3.14), type checking (mypy), and DCO verification run on all PRs.
- **Branch targets**: PRs go to `main` or `release-*` branches.
- **Tag-based releases**: Tags like `v*`, `workflow-v*`, `grpc-v*`, `fastapi-v*`, `flask-v*`, `langgraph-v*`, `strands-v*` trigger PyPI publishing for the corresponding package.
- **Tag-based releases**: A single `v*` tag triggers PyPI publishing for all packages (core SDK and all extensions).

## Agent task checklist

Expand Down
65 changes: 27 additions & 38 deletions RELEASE.md
Original file line number Diff line number Diff line change
@@ -1,17 +1,21 @@
# Release process

This document describes the release process for the Dapr Python SDK.
It covers all packages published from this repository:

| Tag prefix | PyPI package |
|---|---|
| `v*` | `dapr` (core SDK) |
| `workflow-v*` | `dapr-ext-workflow` |
| `grpc-v*` | `dapr-ext-grpc` |
| `fastapi-v*` | `dapr-ext-fastapi` |
| `flask-v*` | `flask_dapr` |
| `langgraph-v*` | `dapr-ext-langgraph` |
| `strands-v*` | `dapr-ext-strands` |

A single tag (`v*`) triggers the release of **all packages** published from this repository:

| PyPI package |
|---|
| `dapr` (core SDK) |
| `dapr-ext-workflow` |
| `dapr-ext-grpc` |
| `dapr-ext-fastapi` |
| `flask_dapr` |
| `dapr-ext-langgraph` |
| `dapr-ext-strands` |

You can also create the tag via a **GitHub Release**, which auto-creates the tag and provides
a changelog UI.

## Overview

Expand Down Expand Up @@ -102,26 +106,20 @@ Open a PR targeting `main` to align it with the new release version:
- In all seven version files: change the previous dev version to `X.Y.0.dev`
- In all six extension `setup.cfg` files: change the previous `dapr >= ...dev` to `dapr >= X.Y.0.dev`

### 4. Push the tags
### 4. Push the tag

Once the version bump PR on `release-X.Y` is merged, create and push the tags from the
Once the version bump PR on `release-X.Y` is merged, create and push the tag from the
**tip of `release-X.Y`**:

```bash
git checkout release-X.Y
git pull upstream release-X.Y

git tag vX.Y.0rc0 && git push upstream vX.Y.0rc0
git tag workflow-vX.Y.0rc0 && git push upstream workflow-vX.Y.0rc0
git tag grpc-vX.Y.0rc0 && git push upstream grpc-vX.Y.0rc0
git tag flask-vX.Y.0rc0 && git push upstream flask-vX.Y.0rc0
git tag fastapi-vX.Y.0rc0 && git push upstream fastapi-vX.Y.0rc0
git tag langgraph-vX.Y.0rc0 && git push upstream langgraph-vX.Y.0rc0
git tag strands-vX.Y.0rc0 && git push upstream strands-vX.Y.0rc0
git tag vX.Y.0rc0 && git push upstream vX.Y.0rc0
```

Each tag push triggers the `dapr-python-release` workflow which builds and uploads the
corresponding package to PyPI.
The tag push triggers the `dapr-python-release` workflow which builds and uploads
all packages to PyPI.

## Scenario B — Ship a new release candidate

Expand All @@ -134,21 +132,15 @@ Open a PR **targeting `release-X.Y`** that does:
- In all seven version files: change `X.Y.0rc(N-1)` → `X.Y.0rcN`
- In all six extension `setup.cfg` files: change `dapr >= X.Y.0rc(N-1)` → `dapr >= X.Y.0rcN`

### 2. Push the tags
### 2. Push the tag

Once the PR is merged:

```bash
git checkout release-X.Y
git pull upstream release-X.Y

git tag vX.Y.0rcN && git push upstream vX.Y.0rcN
git tag workflow-vX.Y.0rcN && git push upstream workflow-vX.Y.0rcN
git tag grpc-vX.Y.0rcN && git push upstream grpc-vX.Y.0rcN
git tag flask-vX.Y.0rcN && git push upstream flask-vX.Y.0rcN
git tag fastapi-vX.Y.0rcN && git push upstream fastapi-vX.Y.0rcN
git tag langgraph-vX.Y.0rcN && git push upstream langgraph-vX.Y.0rcN
git tag strands-vX.Y.0rcN && git push upstream strands-vX.Y.0rcN
git tag vX.Y.0rcN && git push upstream vX.Y.0rcN
```

## Scenario C — Ship the stable release (and patch releases)
Expand All @@ -163,23 +155,20 @@ Open a PR **targeting `release-X.Y`** that does:
- In all seven version files: change `X.Y.ZrcN` → `X.Y.Z` (drop the `rcN` suffix)
- In all six extension `setup.cfg` files: change `dapr >= X.Y.ZrcN` → `dapr >= X.Y.Z`

### 2. Push the tags
### 2. Push the tag

Once the PR is merged:

```bash
git checkout release-X.Y
git pull upstream release-X.Y

git tag vX.Y.Z && git push upstream vX.Y.Z
git tag workflow-vX.Y.Z && git push upstream workflow-vX.Y.Z
git tag grpc-vX.Y.Z && git push upstream grpc-vX.Y.Z
git tag flask-vX.Y.Z && git push upstream flask-vX.Y.Z
git tag fastapi-vX.Y.Z && git push upstream fastapi-vX.Y.Z
git tag langgraph-vX.Y.Z && git push upstream langgraph-vX.Y.Z
git tag strands-vX.Y.Z && git push upstream strands-vX.Y.Z
git tag vX.Y.Z && git push upstream vX.Y.Z
```

Alternatively, create a **GitHub Release** targeting `release-X.Y` with tag `vX.Y.Z` — this
creates the tag and triggers the publish workflow automatically.

## Backporting changes

Bug fixes and small improvements that should appear in both `main` and an active release
Expand Down
Loading