Skip to content

ReleaseV2 (TestPyPI) #10

ReleaseV2 (TestPyPI)

ReleaseV2 (TestPyPI) #10

Workflow file for this run

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
environment: ci
outputs:
version: ${{ steps.get_version.outputs.version }}
steps:
- name: Checkout repository
uses: actions/checkout@v4
- name: Install uv and set the python version
uses: astral-sh/setup-uv@v5
with:
python-version: ${{ github.event.inputs.python-version || '3.12' }}
- name: Sync environment & install dev extras
run: |
uv sync --all-packages --all-extras --dev --all-groups
- name: Build core distributions
run: |
uv build -o dist
- 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
env:
TWINE_USERNAME: __token__
TWINE_PASSWORD: ${{ secrets.TEST_PYPI_API_TOKEN }}
run: |
uv pip install --upgrade twine
twine upload --repository-url https://test.pypi.org/legacy/ dist/*
- name: Install core from TestPyPI using uv
run: |
uv pip install --index-url https://test.pypi.org/simple/ "getstream==${{ needs.build-core.outputs.version }}"
- name: Run core tests against TestPyPI artifact
env:
STREAM_BASE_URL: ${{ vars.STREAM_BASE_URL }}
STREAM_API_KEY: ${{ vars.STREAM_API_KEY }}
STREAM_API_SECRET: ${{ secrets.STREAM_API_SECRET }}
run: |
UV_NO_SOURCES=1 uv run pytest --ignore=getstream/plugins
build-plugins:
name: Build & Test Plugin Packages
runs-on: ubuntu-latest
needs: build-core
environment: ci
env:
CORE_VERSION: ${{ needs.build-core.outputs.version }}
UV_NO_SOURCES: "1"
steps:
- name: Checkout repository
uses: actions/checkout@v4
- name: Install uv and set the python version
uses: astral-sh/setup-uv@v5
with:
python-version: ${{ github.event.inputs.python-version || '3.12' }}
- name: Install new core from TestPyPI using uv (for plugin builds/tests)
run: |
uv pip install --index-url https://test.pypi.org/simple/ getstream==${CORE_VERSION}
- name: Sync environment & install dev extras
run: |
uv sync --all-packages --all-extras --dev --all-groups
- name: Build all plugin dists
run: |
uv build --all-packages -o dist-plugins --wheel --sdist
- name: Run plugin tests (local wheels, core from TestPyPI)
env:
STREAM_BASE_URL: ${{ vars.STREAM_BASE_URL }}
STREAM_API_KEY: ${{ vars.STREAM_API_KEY }}
STREAM_API_SECRET: ${{ secrets.STREAM_API_SECRET }}
run: |
# Install all built plugin wheels using uv
uv pip install dist-plugins/*.whl
uv run pytest getstream/plugins
- name: Publish plugins to TestPyPI
env:
TWINE_USERNAME: __token__
TWINE_PASSWORD: ${{ secrets.TEST_PYPI_API_TOKEN }}
run: |
uv pip install --upgrade twine
twine upload --repository-url https://test.pypi.org/legacy/ dist-plugins/*
- 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: build-plugins
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