Skip to content

[BLY-64] Python Spiral v1, and docs #38

[BLY-64] Python Spiral v1, and docs

[BLY-64] Python Spiral v1, and docs #38

Workflow file for this run

name: Build Python SDK
env:
BLYSS_STAGING_SERVER: ${{ vars.BLYSS_STAGING_SERVER }}
BLYSS_STAGING_API_KEY: ${{ secrets.BLYSS_STAGING_API_KEY }}
on:
push:
branches: [ "main" ]
pull_request:
branches: [ "main" ]
paths-ignore:
- 'docs/**'
- 'examples/**'
- '**.md'
- 'js/**'
workflow_dispatch:
inputs:
publish:
description: 'Should packages be published to PyPI?'
required: true
default: false
type: boolean
permissions:
contents: read
jobs:
linux:
runs-on: ubuntu-latest
strategy:
matrix:
target: [x86_64, aarch64]
steps:
- uses: actions/checkout@v3
- uses: actions/setup-python@v4
with:
python-version: '3.10'
- name: Install Python SDK
working-directory: python
shell: bash
run: pip install .
- name: Test Python SDK
working-directory: python
shell: bash
run: python tests/test_service.py
- name: Build wheels
uses: PyO3/maturin-action@v1
with:
working-directory: python
target: ${{ matrix.target }}
args: --release --out dist --find-interpreter
sccache: 'true'
manylinux: auto
- name: Upload wheels
uses: actions/upload-artifact@v3
with:
name: wheels
path: python/dist
# only run docs on target x86_64
- name: Build Python docs
if: matrix.target == 'x86_64'
working-directory: python
shell: bash
# TODO: pdoc is documenting the installed module, not the source folder.
# pdoc's import-based docs don't play well with maturin's structure.
run: |
pip install pdoc
pdoc -o pdoc -d google -n blyss --no-search
- name: Upload Python docs
if: matrix.target == 'x86_64'
uses: actions/upload-pages-artifact@v2
with:
path: python/pdoc
windows:
runs-on: windows-latest
needs: [linux]
strategy:
matrix:
target: [x64]
steps:
- uses: actions/checkout@v3
- uses: actions/setup-python@v4
with:
python-version: '3.10'
architecture: ${{ matrix.target }}
- name: Build wheels
uses: PyO3/maturin-action@v1
with:
working-directory: python
target: ${{ matrix.target }}
args: --release --out dist --find-interpreter
sccache: 'true'
- name: Upload wheels
uses: actions/upload-artifact@v3
with:
name: wheels
path: python/dist
macos:
runs-on: macos-latest
needs: [linux]
strategy:
matrix:
target: [x86_64, aarch64]
steps:
- uses: actions/checkout@v3
- uses: actions/setup-python@v4
with:
python-version: '3.10'
- name: Build wheels
uses: PyO3/maturin-action@v1
with:
working-directory: python
target: ${{ matrix.target }}
args: --release --out dist --find-interpreter
sccache: 'false'
- name: Upload wheels
uses: actions/upload-artifact@v3
with:
name: wheels
path: python/dist
sdist:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- name: Build sdist
uses: PyO3/maturin-action@v1
with:
working-directory: python
command: sdist
args: --out dist
- name: Upload sdist
uses: actions/upload-artifact@v3
with:
name: wheels
path: python/dist
publish:
name: Publish
runs-on: ubuntu-latest
if: ${{ inputs.publish || github.ref == 'refs/heads/main' }}
needs: [linux, macos, windows, sdist]
steps:
- uses: actions/download-artifact@v3
with:
name: wheels
- name: Publish to PyPI
uses: PyO3/maturin-action@v1
env:
MATURIN_PYPI_TOKEN: ${{ secrets.PYPI_API_TOKEN }}
with:
command: upload
args: --skip-existing *