FF-2945 feat: Python SDK #31
Workflow file for this run
This file contains 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
# This file is autogenerated by maturin v1.7.0 | |
# To update, run | |
# | |
# maturin generate-ci -o .github/workflows/python.yml --pytest --manifest-path ./python-sdk/Cargo.toml github | |
# | |
# Manually modified: | |
# - tag filter in Release job to only trigger on python-sdk@ tags | |
# - added checkout with submodules | |
# - replaced `pytest` with `npm run with-server test:python` | |
name: Python SDK | |
on: | |
push: | |
branches: | |
- main | |
- master | |
tags: | |
- '*' | |
pull_request: | |
workflow_dispatch: | |
permissions: | |
contents: read | |
jobs: | |
linux: | |
runs-on: ${{ matrix.platform.runner }} | |
strategy: | |
matrix: | |
platform: | |
- runner: ubuntu-latest | |
target: x86_64 | |
- runner: ubuntu-latest | |
target: x86 | |
- runner: ubuntu-latest | |
target: aarch64 | |
- runner: ubuntu-latest | |
target: armv7 | |
- runner: ubuntu-latest | |
target: s390x | |
- runner: ubuntu-latest | |
target: ppc64le | |
steps: | |
- uses: actions/checkout@v4 | |
with: | |
submodules: true | |
- uses: actions/setup-python@v5 | |
with: | |
python-version: 3.x | |
- name: Build wheels | |
uses: PyO3/maturin-action@v1 | |
if: ${{ startsWith(matrix.platform.target, 'x86') }} | |
with: | |
target: ${{ matrix.platform.target }} | |
args: --release --out dist --find-interpreter --manifest-path ./python-sdk/Cargo.toml | |
sccache: 'true' | |
manylinux: auto | |
before-script-linux: | | |
yum install -y perl-IPC-Cmd devtoolset-10-libatomic-devel | |
- name: Build wheels | |
uses: PyO3/maturin-action@v1 | |
if: ${{ !startsWith(matrix.platform.target, 'x86') }} | |
with: | |
target: ${{ matrix.platform.target }} | |
args: --release --out dist --find-interpreter --manifest-path ./python-sdk/Cargo.toml | |
sccache: 'true' | |
manylinux: auto | |
before-script-linux: | | |
apt-get update | |
apt-get install --no-install-recommends -y libssl-dev | |
- name: Upload wheels | |
uses: actions/upload-artifact@v4 | |
with: | |
name: wheels-linux-${{ matrix.platform.target }} | |
path: dist | |
- name: pytest | |
if: ${{ startsWith(matrix.platform.target, 'x86_64') }} | |
shell: bash | |
run: | | |
set -ex | |
python3 -m venv .venv | |
source .venv/bin/activate | |
pip install eppo-server-sdk --find-links dist --force-reinstall | |
pip install pytest cachetools | |
npm ci | |
npm run with-server test:python | |
- name: pytest | |
if: ${{ !startsWith(matrix.platform.target, 'x86') && matrix.platform.target != 'ppc64' }} | |
uses: uraimo/run-on-arch-action@v2 | |
with: | |
arch: ${{ matrix.platform.target }} | |
distro: ubuntu22.04 | |
githubToken: ${{ github.token }} | |
install: | | |
apt-get update | |
apt-get install -y --no-install-recommends python3 python3-pip nodejs npm | |
pip3 install -U pip pytest cachetools | |
run: | | |
set -ex | |
pip3 install eppo-server-sdk --find-links dist --force-reinstall | |
npm ci | |
npm run with-server test:python | |
musllinux: | |
runs-on: ${{ matrix.platform.runner }} | |
strategy: | |
matrix: | |
platform: | |
- runner: ubuntu-latest | |
target: x86_64 | |
- runner: ubuntu-latest | |
target: x86 | |
- runner: ubuntu-latest | |
target: aarch64 | |
- runner: ubuntu-latest | |
target: armv7 | |
steps: | |
- uses: actions/checkout@v4 | |
with: | |
submodules: true | |
- uses: actions/setup-python@v5 | |
with: | |
python-version: 3.x | |
- name: Build wheels | |
uses: PyO3/maturin-action@v1 | |
with: | |
target: ${{ matrix.platform.target }} | |
args: --release --out dist --find-interpreter --manifest-path ./python-sdk/Cargo.toml | |
sccache: 'true' | |
manylinux: musllinux_1_2 | |
- name: Upload wheels | |
uses: actions/upload-artifact@v4 | |
with: | |
name: wheels-musllinux-${{ matrix.platform.target }} | |
path: dist | |
- name: pytest | |
if: ${{ startsWith(matrix.platform.target, 'x86_64') }} | |
uses: addnab/docker-run-action@v3 | |
with: | |
image: alpine:latest | |
options: -v ${{ github.workspace }}:/io -w /io | |
run: | | |
set -ex | |
apk add py3-pip py3-virtualenv nodejs npm | |
python3 -m virtualenv .venv | |
source .venv/bin/activate | |
pip install eppo-server-sdk --no-index --find-links dist --force-reinstall | |
pip install pytest cachetools | |
npm ci | |
npm run with-server test:python | |
- name: pytest | |
# `npm ci` just hangs on Alpine armv7 now. | |
# Disabling tests until this issue is fixed: | |
# https://github.com/nodejs/docker-node/issues/1829 | |
if: ${{ !startsWith(matrix.platform.target, 'x86') && matrix.platform.target != 'armv7' }} | |
uses: uraimo/run-on-arch-action@v2 | |
with: | |
arch: ${{ matrix.platform.target }} | |
distro: alpine_latest | |
githubToken: ${{ github.token }} | |
install: | | |
apk add py3-virtualenv nodejs npm | |
run: | | |
set -ex | |
python3 -m virtualenv .venv | |
source .venv/bin/activate | |
pip install pytest cachetools | |
pip install eppo-server-sdk --find-links dist --force-reinstall | |
npm ci | |
npm run with-server test:python | |
windows: | |
runs-on: ${{ matrix.platform.runner }} | |
strategy: | |
matrix: | |
platform: | |
- runner: windows-latest | |
target: x64 | |
- runner: windows-latest | |
target: x86 | |
steps: | |
- uses: actions/checkout@v4 | |
with: | |
submodules: true | |
- uses: actions/setup-python@v5 | |
with: | |
python-version: 3.x | |
architecture: ${{ matrix.platform.target }} | |
- name: Build wheels | |
uses: PyO3/maturin-action@v1 | |
with: | |
target: ${{ matrix.platform.target }} | |
args: --release --out dist --find-interpreter --manifest-path ./python-sdk/Cargo.toml | |
sccache: 'true' | |
- name: Upload wheels | |
uses: actions/upload-artifact@v4 | |
with: | |
name: wheels-windows-${{ matrix.platform.target }} | |
path: dist | |
- name: pytest | |
if: ${{ !startsWith(matrix.platform.target, 'aarch64') }} | |
shell: bash | |
run: | | |
set -ex | |
python3 -m venv .venv | |
source .venv/Scripts/activate | |
pip install eppo-server-sdk --find-links dist --force-reinstall | |
pip install pytest cachetools | |
npm ci | |
npm run with-server test:python | |
macos: | |
runs-on: ${{ matrix.platform.runner }} | |
strategy: | |
matrix: | |
platform: | |
- runner: macos-12 | |
target: x86_64 | |
- runner: macos-14 | |
target: aarch64 | |
steps: | |
- uses: actions/checkout@v4 | |
with: | |
submodules: true | |
- uses: actions/setup-python@v5 | |
with: | |
python-version: 3.x | |
- name: Build wheels | |
uses: PyO3/maturin-action@v1 | |
with: | |
target: ${{ matrix.platform.target }} | |
args: --release --out dist --find-interpreter --manifest-path ./python-sdk/Cargo.toml | |
sccache: 'true' | |
- name: Upload wheels | |
uses: actions/upload-artifact@v4 | |
with: | |
name: wheels-macos-${{ matrix.platform.target }} | |
path: dist | |
- name: pytest | |
run: | | |
set -ex | |
python3 -m venv .venv | |
source .venv/bin/activate | |
pip install eppo-server-sdk --find-links dist --force-reinstall | |
pip install pytest cachetools | |
npm ci | |
npm run with-server test:python | |
sdist: | |
runs-on: ubuntu-latest | |
steps: | |
- uses: actions/checkout@v4 | |
- name: Build sdist | |
uses: PyO3/maturin-action@v1 | |
with: | |
command: sdist | |
args: --out dist --manifest-path ./python-sdk/Cargo.toml | |
- name: Upload sdist | |
uses: actions/upload-artifact@v4 | |
with: | |
name: wheels-sdist | |
path: dist | |
release: | |
name: Release | |
runs-on: ubuntu-latest | |
if: "startsWith(github.ref, 'refs/tags/python-sdk@')" | |
needs: [linux, musllinux, windows, macos, sdist] | |
steps: | |
- uses: actions/download-artifact@v4 | |
- name: Publish to PyPI | |
uses: PyO3/maturin-action@v1 | |
env: | |
MATURIN_PYPI_TOKEN: ${{ secrets.PYPI_API_TOKEN }} | |
with: | |
command: upload | |
args: --non-interactive --skip-existing wheels-*/* |