Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
28 commits
Select commit Hold shift + click to select a range
ce1480f
add delete_messages field to banrequest
varbhat May 9, 2025
775e90d
added client.py for moderation
vishalnarkhede May 19, 2025
50af6c7
Merge pull request #85 from GetStream/moderation-endpoints-1
vishalnarkhede May 19, 2025
33de372
chore(release): 2.2.1
May 19, 2025
dff86ae
Merge pull request #86 from GetStream/release-2.2.1
vishalnarkhede May 19, 2025
8800fdd
Merge branch 'main' into softdelete
varbhat May 26, 2025
7f9827b
latest spec
tbarbugli Jun 23, 2025
d59ac12
Merge pull request #87 from GetStream/sync-spec
tbarbugli Jun 23, 2025
7982c1b
chore: add new release workflow
vivekd22 Jul 3, 2025
6dd83c0
chore: add new release workflow
vivekd22 Jul 3, 2025
ab639b4
Merge pull request #89 from GetStream/chore-add-release-workflow
vivekd22 Jul 3, 2025
152a064
call status
tbarbugli Jul 9, 2025
d381180
codegen
tbarbugli Jul 11, 2025
9bc6cf1
Merge pull request #91 from GetStream/status-endpoint
tbarbugli Jul 11, 2025
70ac662
chore(release): 2.2.2
Jul 11, 2025
befc4ae
Merge pull request #92 from GetStream/release-2.2.2
tbarbugli Jul 11, 2025
a47f242
sync with openapi spec
vishalnarkhede Aug 13, 2025
fd4903a
Merge pull request #93 from GetStream/sync-moderation-endpoints
vishalnarkhede Aug 13, 2025
63565bc
chore(release): 2.3.0
Aug 13, 2025
7e44d93
Merge pull request #94 from GetStream/release-2.3.0
vishalnarkhede Aug 13, 2025
4f936b4
more call metrics
tbarbugli Aug 15, 2025
d711f7a
regen
tbarbugli Aug 15, 2025
a64d29f
Merge branch 'main' into more-metrics
tbarbugli Aug 15, 2025
58eaea2
regen
tbarbugli Aug 15, 2025
514a52e
Merge pull request #95 from GetStream/more-metrics
tbarbugli Aug 15, 2025
24ec347
chore(release): 2.3.1
Aug 15, 2025
663f3e8
Merge pull request #96 from GetStream/release-2.3.1
tbarbugli Aug 15, 2025
1dff127
Merge branch 'main' into softdelete
varbhat Aug 20, 2025
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
181 changes: 181 additions & 0 deletions .github/workflows/release-v2.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,181 @@
name: ReleaseV2 (TestPyPI)

on:
workflow_dispatch:
inputs:
python-version:
description: "Python version to use"
default: "3.12"
required: false

permissions:
contents: read
id-token: write # required for OIDC publishing to TestPyPI via trusted publisher

jobs:
build-core:
name: Build & Test Core SDK
runs-on: ubuntu-latest
outputs:
version: ${{ steps.get_version.outputs.version }}
steps:
- name: Checkout repository
uses: actions/checkout@v4

- name: Set up Python ${{ github.event.inputs.python-version || '3.12' }}
uses: actions/setup-python@v5
with:
python-version: ${{ github.event.inputs.python-version || '3.12' }}

- name: Install build tooling (uv & test deps)
run: |
python -m pip install --upgrade pip
# Install uv (once) using pip, then use uv for the rest
python -m pip install uv
uv pip install pytest pytest-asyncio coverage[toml]

- name: Sync environment & install dev extras
run: |
uv sync --dev --all-packages --all-groups --all-extras

- name: Build core distributions
run: |
uv build -o dist

- name: Run tests with coverage (core only)
env:
PYTHONPATH: "${{ github.workspace }}"
run: |
uv run pytest --cov=getstream --cov-report=xml --ignore=getstream/plugins

- name: Upload coverage artifact
uses: actions/upload-artifact@v4
with:
name: core-coverage-xml
path: coverage.xml

- name: Extract package version
id: get_version
run: |
python - <<'PY'
import tomllib, pathlib, os
meta = tomllib.loads(pathlib.Path('pyproject.toml').read_text())
version = meta['project']['version']
with open(os.environ['GITHUB_OUTPUT'], 'a') as fh:
fh.write(f'version={version}\n')
PY

- name: Publish core to TestPyPI
uses: pypa/gh-action-pypi-publish@release/v1
with:
repository-url: https://test.pypi.org/legacy/
packages-dir: dist
environment:
name: testpypi

test-core-index:
name: Verify Core from TestPyPI
needs: build-core
runs-on: ubuntu-latest
env:
UV_NO_SOURCES: "1"
steps:
- name: Set up Python
uses: actions/setup-python@v5
with:
python-version: ${{ github.event.inputs.python-version || '3.12' }}

- name: Install uv and testing tools
run: |
python -m pip install uv
uv pip install pytest pytest-asyncio

- name: Install core from TestPyPI using uv
run: |
uv pip install --index-url https://test.pypi.org/simple/ --extra-index-url https://pypi.org/simple getstream==${{ needs.build-core.outputs.version }}

- name: Run core tests against TestPyPI artifact
run: |
UV_NO_SOURCES=1 uv run pytest tests/ --ignore=getstream/plugins

build-plugins:
name: Build & Test Plugin Packages
runs-on: ubuntu-latest
needs: test-core-index
env:
CORE_VERSION: ${{ needs.build-core.outputs.version }}
UV_NO_SOURCES: "1"
steps:
- uses: actions/checkout@v4

- uses: actions/setup-python@v5
with:
python-version: ${{ github.event.inputs.python-version || '3.12' }}

- name: Install uv & tooling
run: |
python -m pip install uv
uv pip install pytest pytest-asyncio

- name: Install new core from TestPyPI using uv (for plugin builds/tests)
run: |
uv pip install --index-url https://test.pypi.org/simple/ --extra-index-url https://pypi.org/simple getstream==${CORE_VERSION}

- name: Build all plugin dists (no workspace sources)
run: |
UV_NO_SOURCES=1 uv build --all-packages -o dist-plugins --wheel --sdist

- name: Run plugin tests (local wheels, core from TestPyPI)
run: |
# Install all built plugin wheels using uv
uv pip install dist-plugins/*.whl
uv run pytest getstream/plugins

- name: Publish plugins to TestPyPI
uses: pypa/gh-action-pypi-publish@release/v1
with:
repository-url: https://test.pypi.org/legacy/
packages-dir: dist-plugins
environment:
name: testpypi

test-plugins-index:
name: Verify Plugins from TestPyPI
runs-on: ubuntu-latest
needs: build-plugins
env:
CORE_VERSION: ${{ needs.build-core.outputs.version }}
UV_NO_SOURCES: "1"
steps:
- uses: actions/setup-python@v5
with:
python-version: ${{ github.event.inputs.python-version || '3.12' }}

- name: Install uv & test tools
run: |
python -m pip install uv
uv pip install pytest pytest-asyncio

- name: Install core and plugins from TestPyPI using uv
run: |
uv pip install --index-url https://test.pypi.org/simple/ --extra-index-url https://pypi.org/simple getstream==${CORE_VERSION}
uv pip install --index-url https://test.pypi.org/simple/ --extra-index-url https://pypi.org/simple "getstream-plugins-*"

- name: Run all plugin tests against TestPyPI artifacts
run: |
uv run pytest getstream/plugins

summarize:
name: Publish Test Deployment Report
runs-on: ubuntu-latest
needs: test-plugins-index
steps:
- name: Generate summary
run: |
echo "### Release V2 Test Report" >> $GITHUB_STEP_SUMMARY
echo "* Core Version: ${{ needs.build-core.outputs.version }}" >> $GITHUB_STEP_SUMMARY
echo "* Core build & tests: ✅" >> $GITHUB_STEP_SUMMARY
echo "* Core published to TestPyPI: ✅" >> $GITHUB_STEP_SUMMARY
echo "* Plugins built & tests: ✅" >> $GITHUB_STEP_SUMMARY
echo "* Plugins published to TestPyPI: ✅" >> $GITHUB_STEP_SUMMARY
echo "* Tests against TestPyPI packages: ✅" >> $GITHUB_STEP_SUMMARY
Loading