Skip to content

fix: add setuptools_scm raw-options for CI builds #3

fix: add setuptools_scm raw-options for CI builds

fix: add setuptools_scm raw-options for CI builds #3

name: Release Python SDK
on:
push:
tags:
- 'python-sdk-v*'
jobs:
test:
name: Test Python SDK
runs-on: ubuntu-latest
strategy:
matrix:
python-version: ['3.10', '3.11', '3.12']
steps:
- name: Checkout code
uses: actions/checkout@v4
with:
fetch-depth: 0 # Required for hatch-vcs to work
- name: Set up Python ${{ matrix.python-version }}
uses: actions/setup-python@v5
with:
python-version: ${{ matrix.python-version }}
- name: Install UV
uses: astral-sh/setup-uv@v4
with:
version: "latest"
- name: Install dependencies
run: |
cd sdk/python
uv sync --dev
- name: Run tests
run: |
cd sdk/python
uv run pytest
build:
name: Build Python SDK
runs-on: ubuntu-latest
needs: test
steps:
- name: Checkout code
uses: actions/checkout@v4
with:
fetch-depth: 0 # Required for hatch-vcs to work
- name: Set up Python
uses: actions/setup-python@v5
with:
python-version: '3.11'
- name: Install build dependencies
run: |
python -m pip install --upgrade pip
pip install build hatchling hatch-vcs twine
- name: Get version from tag
id: tag
run: |
VERSION=${GITHUB_REF#refs/tags/python-sdk-v}
echo "version=$VERSION" >> $GITHUB_OUTPUT
echo "Version: $VERSION"
- name: Build package
run: |
cd sdk/python
python -m build
- name: Check package
run: |
cd sdk/python
python -m twine check dist/*
- name: Upload artifacts
uses: actions/upload-artifact@v4
with:
name: polos-sdk
path: sdk/python/dist/*
if-no-files-found: error
release:
name: Create Release and Publish
needs: build
runs-on: ubuntu-latest
permissions:
contents: write
id-token: write # For PyPI trusted publishing (optional, if using it)
steps:
- name: Checkout code
uses: actions/checkout@v4
with:
fetch-depth: 0
- name: Download artifacts
uses: actions/download-artifact@v4
with:
name: polos-sdk
path: dist
- name: Get version from tag
id: tag
run: |
VERSION=${GITHUB_REF#refs/tags/python-sdk-v}
echo "version=$VERSION" >> $GITHUB_OUTPUT
- name: Generate release notes
id: release_notes
run: |
CURRENT_TAG="python-sdk-v${{ steps.tag.outputs.version }}"
# Find previous python-sdk-v tag
PREV_TAG=$(git tag -l "python-sdk-v*" --sort=-version:refname | sed -n "2p" || echo "")
if [ -z "$PREV_TAG" ]; then
# First release, get all commits up to this tag
NOTES=$(git log --pretty=format:"- %s (%h)" ${CURRENT_TAG} 2>/dev/null || echo "Initial release")
else
# Get commits since last python-sdk-v tag
NOTES=$(git log --pretty=format:"- %s (%h)" ${PREV_TAG}..${CURRENT_TAG} 2>/dev/null || echo "No commits found")
fi
echo "notes<<EOF" >> $GITHUB_OUTPUT
echo "$NOTES" >> $GITHUB_OUTPUT
echo "EOF" >> $GITHUB_OUTPUT
- name: Create GitHub Release
uses: softprops/action-gh-release@v1
with:
files: dist/*
name: Python SDK v${{ steps.tag.outputs.version }}
body: |
## Python SDK v${{ steps.tag.outputs.version }}
### Changes
${{ steps.release_notes.outputs.notes }}
### Installation
```bash
pip install polos-sdk==${{ steps.tag.outputs.version }}
```
draft: false
prerelease: false
- name: Publish to PyPI
env:
TWINE_USERNAME: __token__
TWINE_PASSWORD: ${{ secrets.PYPI_API_TOKEN }}
run: |
python -m pip install --upgrade pip
pip install twine
python -m twine upload dist/*