From 48dfb354c45d7898cbbfbcde753443815996d19b Mon Sep 17 00:00:00 2001 From: Nelson Parente Date: Fri, 27 Feb 2026 15:05:04 +0000 Subject: [PATCH 1/7] Release 1.17.0 Bump version from 1.17.0rc5 to 1.17.0 across all packages: - Main SDK (dapr) - All extensions (workflow, fastapi, grpc, flask, langgraph, strands) - Example requirements Signed-off-by: Nelson Parente --- dapr/version/version.py | 2 +- examples/demo_actor/demo_actor/requirements.txt | 2 +- examples/demo_workflow/demo_workflow/requirements.txt | 2 +- examples/invoke-simple/requirements.txt | 4 ++-- examples/workflow/requirements.txt | 4 ++-- ext/dapr-ext-fastapi/dapr/ext/fastapi/version.py | 2 +- ext/dapr-ext-fastapi/setup.cfg | 2 +- ext/dapr-ext-grpc/dapr/ext/grpc/version.py | 2 +- ext/dapr-ext-grpc/setup.cfg | 2 +- ext/dapr-ext-langgraph/dapr/ext/langgraph/version.py | 2 +- ext/dapr-ext-langgraph/setup.cfg | 2 +- ext/dapr-ext-strands/dapr/ext/strands/version.py | 2 +- ext/dapr-ext-strands/setup.cfg | 2 +- ext/dapr-ext-workflow/dapr/ext/workflow/version.py | 2 +- ext/dapr-ext-workflow/setup.cfg | 2 +- ext/flask_dapr/flask_dapr/version.py | 2 +- ext/flask_dapr/setup.cfg | 2 +- 17 files changed, 19 insertions(+), 19 deletions(-) diff --git a/dapr/version/version.py b/dapr/version/version.py index 3f05a366..fdf522d6 100644 --- a/dapr/version/version.py +++ b/dapr/version/version.py @@ -13,4 +13,4 @@ limitations under the License. """ -__version__ = '1.17.0rc5' +__version__ = '1.17.0' diff --git a/examples/demo_actor/demo_actor/requirements.txt b/examples/demo_actor/demo_actor/requirements.txt index d25bd73c..e7dfbbb4 100644 --- a/examples/demo_actor/demo_actor/requirements.txt +++ b/examples/demo_actor/demo_actor/requirements.txt @@ -1 +1 @@ -dapr-ext-fastapi>=1.17.0rc5 +dapr-ext-fastapi>=1.17.0 diff --git a/examples/demo_workflow/demo_workflow/requirements.txt b/examples/demo_workflow/demo_workflow/requirements.txt index a37eb649..21aa9945 100644 --- a/examples/demo_workflow/demo_workflow/requirements.txt +++ b/examples/demo_workflow/demo_workflow/requirements.txt @@ -1 +1 @@ -dapr-ext-workflow>=1.17.0rc5 +dapr-ext-workflow>=1.17.0 diff --git a/examples/invoke-simple/requirements.txt b/examples/invoke-simple/requirements.txt index 5594afea..9f43b9d7 100644 --- a/examples/invoke-simple/requirements.txt +++ b/examples/invoke-simple/requirements.txt @@ -1,2 +1,2 @@ -dapr-ext-grpc >= 1.17.0rc5 -dapr >= 1.17.0rc5 +dapr-ext-grpc >= 1.17.0 +dapr >= 1.17.0 diff --git a/examples/workflow/requirements.txt b/examples/workflow/requirements.txt index 3a14e4b3..90995fd6 100644 --- a/examples/workflow/requirements.txt +++ b/examples/workflow/requirements.txt @@ -1,2 +1,2 @@ -dapr-ext-workflow>=1.17.0rc5 -dapr>=1.17.0rc5 +dapr-ext-workflow>=1.17.0 +dapr>=1.17.0 diff --git a/ext/dapr-ext-fastapi/dapr/ext/fastapi/version.py b/ext/dapr-ext-fastapi/dapr/ext/fastapi/version.py index 3f05a366..fdf522d6 100644 --- a/ext/dapr-ext-fastapi/dapr/ext/fastapi/version.py +++ b/ext/dapr-ext-fastapi/dapr/ext/fastapi/version.py @@ -13,4 +13,4 @@ limitations under the License. """ -__version__ = '1.17.0rc5' +__version__ = '1.17.0' diff --git a/ext/dapr-ext-fastapi/setup.cfg b/ext/dapr-ext-fastapi/setup.cfg index a4c2f362..0e34f2bf 100644 --- a/ext/dapr-ext-fastapi/setup.cfg +++ b/ext/dapr-ext-fastapi/setup.cfg @@ -25,7 +25,7 @@ python_requires = >=3.10 packages = find_namespace: include_package_data = True install_requires = - dapr >= 1.17.0rc5 + dapr >= 1.17.0 uvicorn >= 0.11.6 fastapi >= 0.60.1 diff --git a/ext/dapr-ext-grpc/dapr/ext/grpc/version.py b/ext/dapr-ext-grpc/dapr/ext/grpc/version.py index 3f05a366..fdf522d6 100644 --- a/ext/dapr-ext-grpc/dapr/ext/grpc/version.py +++ b/ext/dapr-ext-grpc/dapr/ext/grpc/version.py @@ -13,4 +13,4 @@ limitations under the License. """ -__version__ = '1.17.0rc5' +__version__ = '1.17.0' diff --git a/ext/dapr-ext-grpc/setup.cfg b/ext/dapr-ext-grpc/setup.cfg index ddf54f70..98bfb36e 100644 --- a/ext/dapr-ext-grpc/setup.cfg +++ b/ext/dapr-ext-grpc/setup.cfg @@ -24,7 +24,7 @@ python_requires = >=3.10 packages = find_namespace: include_package_data = True install_requires = - dapr >= 1.17.0rc5 + dapr >= 1.17.0 cloudevents >= 1.0.0 [options.packages.find] diff --git a/ext/dapr-ext-langgraph/dapr/ext/langgraph/version.py b/ext/dapr-ext-langgraph/dapr/ext/langgraph/version.py index dbbeed39..3c617896 100644 --- a/ext/dapr-ext-langgraph/dapr/ext/langgraph/version.py +++ b/ext/dapr-ext-langgraph/dapr/ext/langgraph/version.py @@ -13,4 +13,4 @@ limitations under the License. """ -__version__ = '1.17.0rc5' +__version__ = '1.17.0' diff --git a/ext/dapr-ext-langgraph/setup.cfg b/ext/dapr-ext-langgraph/setup.cfg index 3c93439e..3ceb5bbd 100644 --- a/ext/dapr-ext-langgraph/setup.cfg +++ b/ext/dapr-ext-langgraph/setup.cfg @@ -24,7 +24,7 @@ python_requires = >=3.10 packages = find_namespace: include_package_data = True install_requires = - dapr >= 1.17.0rc5 + dapr >= 1.17.0 langgraph >= 0.3.6 langchain >= 0.1.17 python-ulid >= 3.0.0 diff --git a/ext/dapr-ext-strands/dapr/ext/strands/version.py b/ext/dapr-ext-strands/dapr/ext/strands/version.py index dbbeed39..3c617896 100644 --- a/ext/dapr-ext-strands/dapr/ext/strands/version.py +++ b/ext/dapr-ext-strands/dapr/ext/strands/version.py @@ -13,4 +13,4 @@ limitations under the License. """ -__version__ = '1.17.0rc5' +__version__ = '1.17.0' diff --git a/ext/dapr-ext-strands/setup.cfg b/ext/dapr-ext-strands/setup.cfg index 0dfbd87a..5b828e04 100644 --- a/ext/dapr-ext-strands/setup.cfg +++ b/ext/dapr-ext-strands/setup.cfg @@ -24,7 +24,7 @@ python_requires = >=3.10 packages = find_namespace: include_package_data = True install_requires = - dapr >= 1.17.0rc5 + dapr >= 1.17.0 strands-agents strands-agents-tools python-ulid >= 3.0.0 diff --git a/ext/dapr-ext-workflow/dapr/ext/workflow/version.py b/ext/dapr-ext-workflow/dapr/ext/workflow/version.py index 3f05a366..fdf522d6 100644 --- a/ext/dapr-ext-workflow/dapr/ext/workflow/version.py +++ b/ext/dapr-ext-workflow/dapr/ext/workflow/version.py @@ -13,4 +13,4 @@ limitations under the License. """ -__version__ = '1.17.0rc5' +__version__ = '1.17.0' diff --git a/ext/dapr-ext-workflow/setup.cfg b/ext/dapr-ext-workflow/setup.cfg index 5f413f2d..bd5a4153 100644 --- a/ext/dapr-ext-workflow/setup.cfg +++ b/ext/dapr-ext-workflow/setup.cfg @@ -24,7 +24,7 @@ python_requires = >=3.10 packages = find_namespace: include_package_data = True install_requires = - dapr >= 1.17.0rc5 + dapr >= 1.17.0 durabletask-dapr >= 0.2.0a19 [options.packages.find] diff --git a/ext/flask_dapr/flask_dapr/version.py b/ext/flask_dapr/flask_dapr/version.py index 3f05a366..fdf522d6 100644 --- a/ext/flask_dapr/flask_dapr/version.py +++ b/ext/flask_dapr/flask_dapr/version.py @@ -13,4 +13,4 @@ limitations under the License. """ -__version__ = '1.17.0rc5' +__version__ = '1.17.0' diff --git a/ext/flask_dapr/setup.cfg b/ext/flask_dapr/setup.cfg index 2755f5bc..05ebd59e 100644 --- a/ext/flask_dapr/setup.cfg +++ b/ext/flask_dapr/setup.cfg @@ -26,7 +26,7 @@ include_package_data = true zip_safe = false install_requires = Flask >= 1.1 - dapr >= 1.17.0rc5 + dapr >= 1.17.0 [options.package_data] flask_dapr = From ec220991dcd576dbee62e8895ba85b8950414c25 Mon Sep 17 00:00:00 2001 From: Nelson Parente Date: Fri, 27 Feb 2026 16:17:04 +0000 Subject: [PATCH 2/7] fix(examples): fix invoke-binding port conflicts in CI Add explicit --dapr-http-port and --dapr-grpc-port to both receiver and publisher apps to prevent random port collisions when running concurrently in CI. Remove deprecated docker-compose version attribute. Co-Authored-By: Claude Opus 4.6 Signed-off-by: Nelson Parente --- examples/invoke-binding/README.md | 4 ++-- examples/invoke-binding/docker-compose-single-kafka.yml | 1 - 2 files changed, 2 insertions(+), 3 deletions(-) diff --git a/examples/invoke-binding/README.md b/examples/invoke-binding/README.md index c90ff1df..e92d9c65 100644 --- a/examples/invoke-binding/README.md +++ b/examples/invoke-binding/README.md @@ -47,7 +47,7 @@ sleep: 5 2. Start Receiver (expose gRPC server receiver on port 50051) ```bash -dapr run --app-id receiver --app-protocol grpc --app-port 50051 --resources-path ./components python3 invoke-input-binding.py +dapr run --app-id receiver --app-protocol grpc --app-port 50051 --dapr-http-port 3501 --dapr-grpc-port 50101 --resources-path ./components python3 invoke-input-binding.py ``` @@ -67,7 +67,7 @@ sleep: 5 --> ```bash -dapr run --app-id publisher --app-protocol grpc --resources-path ./components python3 invoke-output-binding.py +dapr run --app-id publisher --app-protocol grpc --dapr-http-port 3502 --dapr-grpc-port 50102 --resources-path ./components python3 invoke-output-binding.py ``` diff --git a/examples/invoke-binding/docker-compose-single-kafka.yml b/examples/invoke-binding/docker-compose-single-kafka.yml index 01dfa394..b6dee6e9 100644 --- a/examples/invoke-binding/docker-compose-single-kafka.yml +++ b/examples/invoke-binding/docker-compose-single-kafka.yml @@ -11,7 +11,6 @@ # limitations under the License. # ------------------------------------------------------------ -version: '2' services: zookeeper: image: wurstmeister/zookeeper:latest From f5de88de5b2c6aa879a3bb09ac45ddbd8f69cf1c Mon Sep 17 00:00:00 2001 From: Nelson Parente Date: Fri, 27 Feb 2026 16:40:05 +0000 Subject: [PATCH 3/7] fix(examples): fix workflow cross-app port conflicts in CI Add explicit --dapr-http-port and --dapr-grpc-port flags to all three cross-app workflow example blocks to prevent random port collisions when running concurrently in CI. Signed-off-by: Nelson Parente --- examples/workflow/README.md | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/examples/workflow/README.md b/examples/workflow/README.md index e27f4c78..22a55e86 100644 --- a/examples/workflow/README.md +++ b/examples/workflow/README.md @@ -361,9 +361,9 @@ sleep: 20 --> ```sh -dapr run --app-id wfexample3 python3 cross-app3.py & -dapr run --app-id wfexample2 python3 cross-app2.py & -dapr run --app-id wfexample1 python3 cross-app1.py +dapr run --app-id wfexample3 --dapr-http-port 3503 --dapr-grpc-port 50103 -- python3 cross-app3.py & +dapr run --app-id wfexample2 --dapr-http-port 3502 --dapr-grpc-port 50102 -- python3 cross-app2.py & +dapr run --app-id wfexample1 --dapr-http-port 3501 --dapr-grpc-port 50101 -- python3 cross-app1.py ``` @@ -404,9 +404,9 @@ sleep: 20 ```sh export ERROR_ACTIVITY_MODE=true -dapr run --app-id wfexample3 python3 cross-app3.py & -dapr run --app-id wfexample2 python3 cross-app2.py & -dapr run --app-id wfexample1 python3 cross-app1.py +dapr run --app-id wfexample3 --dapr-http-port 3503 --dapr-grpc-port 50103 -- python3 cross-app3.py & +dapr run --app-id wfexample2 --dapr-http-port 3502 --dapr-grpc-port 50102 -- python3 cross-app2.py & +dapr run --app-id wfexample1 --dapr-http-port 3501 --dapr-grpc-port 50101 -- python3 cross-app1.py ``` @@ -445,9 +445,9 @@ sleep: 20 ```sh export ERROR_WORKFLOW_MODE=true -dapr run --app-id wfexample3 python3 cross-app3.py & -dapr run --app-id wfexample2 python3 cross-app2.py & -dapr run --app-id wfexample1 python3 cross-app1.py +dapr run --app-id wfexample3 --dapr-http-port 3503 --dapr-grpc-port 50103 -- python3 cross-app3.py & +dapr run --app-id wfexample2 --dapr-http-port 3502 --dapr-grpc-port 50102 -- python3 cross-app2.py & +dapr run --app-id wfexample1 --dapr-http-port 3501 --dapr-grpc-port 50101 -- python3 cross-app1.py ``` From 60705a976d879d6fffb0d9a881d3c92a547e1a3f Mon Sep 17 00:00:00 2001 From: Nelson Parente Date: Fri, 27 Feb 2026 16:44:15 +0000 Subject: [PATCH 4/7] ci: re-trigger CI after transient dashboard download failure Signed-off-by: Nelson Parente From 4d4f9bbc94d2698b9eae31f40ad1998fd3add51f Mon Sep 17 00:00:00 2001 From: Nelson Parente Date: Fri, 27 Feb 2026 16:51:31 +0000 Subject: [PATCH 5/7] fix(ci): fix version detection to prefer stable over prerelease The sort -r on GitHub API release output caused prerelease versions (e.g. 1.17.0-rc.9) to sort lexicographically above stable releases (1.17.0). The GitHub API already returns releases sorted by creation date (newest first), so the sort was unnecessary and harmful. Signed-off-by: Nelson Parente --- .github/workflows/validate_examples.yaml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/validate_examples.yaml b/.github/workflows/validate_examples.yaml index 46b1c7af..0f915e85 100644 --- a/.github/workflows/validate_examples.yaml +++ b/.github/workflows/validate_examples.yaml @@ -67,12 +67,12 @@ jobs: - uses: azure/setup-helm@v4 - name: Determine latest Dapr Runtime version (including prerelease) run: | - RUNTIME_VERSION=$(curl -s "https://api.github.com/repos/dapr/dapr/releases" | sort -r | grep '"tag_name"' | head -n 1 | cut -d ':' -f2 | tr -d '",v ') + RUNTIME_VERSION=$(curl -s "https://api.github.com/repos/dapr/dapr/releases" | grep '"tag_name"' | head -n 1 | cut -d ':' -f2 | tr -d '",v ') echo "DAPR_RUNTIME_VER=$RUNTIME_VERSION" >> $GITHUB_ENV echo "Found $RUNTIME_VERSION" - name: Determine latest Dapr Cli version (including prerelease) run: | - CLI_VERSION=$(curl -s "https://api.github.com/repos/dapr/cli/releases" | sort -r | grep '"tag_name"' | head -n 1 | cut -d ':' -f2 | tr -d '",v ') + CLI_VERSION=$(curl -s "https://api.github.com/repos/dapr/cli/releases" | grep '"tag_name"' | head -n 1 | cut -d ':' -f2 | tr -d '",v ') echo "DAPR_CLI_VER=$CLI_VERSION" >> $GITHUB_ENV echo "Found $CLI_VERSION" - name: Set up Python ${{ matrix.python_ver }} From 23177c7df1f5f4954dc8b55487f1fa06d37be7b4 Mon Sep 17 00:00:00 2001 From: Nelson Parente Date: Fri, 27 Feb 2026 16:55:08 +0000 Subject: [PATCH 6/7] fix(ci): add retry logic to dapr init for transient download failures GitHub CDN can return EOF errors when downloading release assets, especially for newly published releases. Retry up to 3 times with a 10 second delay between attempts. Signed-off-by: Nelson Parente --- .github/workflows/validate_examples.yaml | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/.github/workflows/validate_examples.yaml b/.github/workflows/validate_examples.yaml index 0f915e85..a02f52bd 100644 --- a/.github/workflows/validate_examples.yaml +++ b/.github/workflows/validate_examples.yaml @@ -120,7 +120,11 @@ jobs: - name: Initialize Dapr runtime ${{ env.DAPR_RUNTIME_VER }} run: | dapr uninstall --all - dapr init --runtime-version ${{ env.DAPR_RUNTIME_VER }} + for i in 1 2 3; do + dapr init --runtime-version ${{ env.DAPR_RUNTIME_VER }} && break + echo "Attempt $i failed, retrying in 10 seconds..." + sleep 10 + done - name: Build and override daprd with referenced commit. if: env.DAPR_REF != '' run: | From e38e95ce3b240dd004ee9141e6f478f07ace04c7 Mon Sep 17 00:00:00 2001 From: "nelson.parente" Date: Fri, 27 Feb 2026 17:01:16 +0000 Subject: [PATCH 7/7] Revert "fix(ci): add retry logic to dapr init for transient download failures" This reverts commit 23177c7df1f5f4954dc8b55487f1fa06d37be7b4. Signed-off-by: Nelson Parente --- .github/workflows/validate_examples.yaml | 6 +----- 1 file changed, 1 insertion(+), 5 deletions(-) diff --git a/.github/workflows/validate_examples.yaml b/.github/workflows/validate_examples.yaml index a02f52bd..0f915e85 100644 --- a/.github/workflows/validate_examples.yaml +++ b/.github/workflows/validate_examples.yaml @@ -120,11 +120,7 @@ jobs: - name: Initialize Dapr runtime ${{ env.DAPR_RUNTIME_VER }} run: | dapr uninstall --all - for i in 1 2 3; do - dapr init --runtime-version ${{ env.DAPR_RUNTIME_VER }} && break - echo "Attempt $i failed, retrying in 10 seconds..." - sleep 10 - done + dapr init --runtime-version ${{ env.DAPR_RUNTIME_VER }} - name: Build and override daprd with referenced commit. if: env.DAPR_REF != '' run: |