Skip to content

ci: publish Python SDK with trusted publishing #9

ci: publish Python SDK with trusted publishing

ci: publish Python SDK with trusted publishing #9

Workflow file for this run

name: CI
on:
push:
branches: [main]
pull_request:
branches: [main]
permissions:
contents: read
jobs:
unit-tests:
name: Unit Tests
runs-on: ubuntu-latest
strategy:
matrix:
python-version: ["3.11", "3.12", "3.13", "3.14"]
steps:
- uses: actions/checkout@v7
- uses: actions/setup-python@v6
with:
python-version: ${{ matrix.python-version }}
- name: Install dependencies
run: |
pip install -e .
pip install pytest pytest-asyncio
- name: Run unit tests
run: python -m pytest tests/ --ignore=tests/test_integration.py -v
package:
name: Package
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v7
- uses: actions/setup-python@v6
with:
python-version: "3.11"
- name: Install build tools
run: python -m pip install --upgrade build twine
- name: Check Python syntax
run: python -m compileall -q insforge tests
- name: Build distributions
run: python -m build
- name: Check distribution metadata
run: python -m twine check dist/*
- name: Smoke test wheel
run: |
python -m venv /tmp/insforge-wheel-test
/tmp/insforge-wheel-test/bin/python -m pip install dist/*.whl
cd /tmp
/tmp/insforge-wheel-test/bin/python -c 'import insforge; from importlib.metadata import version; print(version("insforge"))'
integration-tests:
name: Integration Tests
runs-on: ubuntu-latest
needs: unit-tests
if: github.event_name == 'push' && github.ref == 'refs/heads/main'
steps:
- uses: actions/checkout@v7
- uses: actions/setup-python@v6
with:
python-version: "3.13"
- name: Install dependencies
run: |
pip install -e .
pip install pytest pytest-asyncio
- name: Run integration tests
env:
INSFORGE_API_KEY: ${{ secrets.INSFORGE_API_KEY }}
INSFORGE_API_BASE_URL: ${{ secrets.INSFORGE_API_BASE_URL }}
INSFORGE_TEST_EMAIL: ${{ secrets.INSFORGE_TEST_EMAIL }}
INSFORGE_TEST_PASSWORD: ${{ secrets.INSFORGE_TEST_PASSWORD }}
INSFORGE_FUNCTION_SLUG: ${{ secrets.INSFORGE_FUNCTION_SLUG }}
INSFORGE_TABLE_NAME: ${{ secrets.INSFORGE_TABLE_NAME }}
run: python -m pytest tests/test_integration.py -v