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
45 changes: 45 additions & 0 deletions .github/workflows/release-python-sdk.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,45 @@
# .github/workflows/release-python-sdk.yml

name: Release Python SDK

# This workflow runs when a tag starting with 'sdks/python/v' is pushed
on:
push:
tags:
- 'sdks/python/v*'
workflow_dispatch:

permissions:
contents: write

jobs:
build-and-upload:
name: Build Python SDK artifact
runs-on: ubuntu-latest

steps:
- name: Checkout repository
uses: actions/checkout@v4

- name: Set up Python
uses: actions/setup-python@v5
with:
python-version: '3.10'

- name: Install build dependencies
run: pip install build twine

- name: Build Python wheel and source distribution
run: python3 -m build
working-directory: ./sdks/python

- name: Create GitHub Release and Upload Artifacts
uses: softprops/action-gh-release@v2
with:
# This will upload all files from the build output directory
# (e.g., your-package-0.2.0-py3-none-any.whl and your-package-0.2.0.tar.gz)
files: sdks/python/dist/*
# This will create a draft release require teammate to manually publish, once
# we are confident with the release process, we can set draft: false, which
# will automatic create the release.
draft: true
25 changes: 25 additions & 0 deletions CONTRIBUTING.md
Original file line number Diff line number Diff line change
Expand Up @@ -91,3 +91,28 @@ After a new `test-server` binary is released, you need to update the checksums p
6. Publish the new version to npm following internal guidance at go/wombat-dressing-room. (When prompted,
create a package specific publish token for `test-server-sdk`.)

### Release python sdk

Publishing Python sdk is a relatively independent process, you can release python sdk without
any change on golang `test-server` binary.

1. Ensure your local `main` branch is up-to-date and clean:
```sh
git checkout main && git pull origin main && git clean -xdf
```
2. Update the version in `sdks/python/pyproject.toml`, create and merge the PR.
```
git add .
git commit -m "chore: Prepare for Python SDK release v0.1.0"
git push origin release/python-v0.1.0
```
4. Find the current version of the python sdk in `sdks/python/pyproject.toml`. And
find the current golang test-server version, make sure
`sdks/python/src/test-server-sdk/checksums.json` include this version.
3. Create and push a new version tag. For example, for version `sdks/python/v0.1.0-core.0.2.8`:
```sh
git tag -a sdks/python/v0.1.0-core.0.2.8 -m "Release Python SDK v0.1.0 for Core v0.2.8"
git push origin sdks/python/v0.1.0-core.0.2.8
```
4. Find the draft release, verify the executable is built and uplaoaded successfully.
5. Publish the relase
Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Is there a command for this?

Copy link
Copy Markdown
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I think npm and pip support this most seamlessly, golang is more on the fetch the code directly, dotnet and java may need some workaround, they might need to download the artifact and install from local.

As of now JS and Dotnet has already been published, this exercises is trying to not avoid publishing the python test-server-sdk itself as a product.

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Ack. For the 'publish the release' step is there a command for this?

Copy link
Copy Markdown
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

When you click into the draft release, it looks like this
Screenshot 2025-09-12 at 10 04 34 AM

We can make the release public by clicking the publish button on the bottom.

Loading