ci: publish Python SDK with trusted publishing #9
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| 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 |