diff --git a/.github/workflows/ibis-ci.yml b/.github/workflows/ibis-ci.yml index e0c191fd3..f7bc65112 100644 --- a/.github/workflows/ibis-ci.yml +++ b/.github/workflows/ibis-ci.yml @@ -55,13 +55,14 @@ jobs: ~/.cargo/registry/index/ ~/.cargo/registry/cache/ ~/.cargo/git/db/ - ibis-server/rust/target/ - key: ${{ runner.os }}-cargo-${{ hashFiles('ibis-server/rust/Cargo.lock') }} - - name: Test rust code - working-directory: ./ibis-server/rust - run: cargo test - - name: Build rust code be a python dependency - run: poetry run maturin develop + wren-modeling-py/target/ + key: ${{ runner.os }}-cargo-${{ hashFiles('wren-modeling-py/Cargo.lock') }} + - uses: PyO3/maturin-action@v1 + working-directory: wren-modeling-py + with: + command: build + - name: Install wren-modeling-py + run: poetry run pip install ./wren-modeling-py/target/wheels/wren_modeling_py-*.whl - name: Run tests env: WREN_ENGINE_ENDPOINT: http://localhost:8080 diff --git a/.github/workflows/modeling-py-ci.yml b/.github/workflows/modeling-py-ci.yml new file mode 100644 index 000000000..8ceb69203 --- /dev/null +++ b/.github/workflows/modeling-py-ci.yml @@ -0,0 +1,199 @@ +# This file is autogenerated by maturin v1.6.0 +# To update, run +# +# maturin generate-ci --pytest github +# +name: Modeling Python CI + +on: + push: + branches: + - main + tags: + - '*' + pull_request: + paths: + - 'wren-modeling-py/**' + workflow_dispatch: + +concurrency: + group: ${{ github.workflow }}-${{ github.event.number }} + cancel-in-progress: true + +defaults: + run: + working-directory: wren-modeling-py + +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 + steps: + - uses: actions/checkout@v4 + - uses: actions/setup-python@v5 + with: + python-version: 3.11 + - name: Build wheels + uses: PyO3/maturin-action@v1 + with: + target: ${{ matrix.platform.target }} + args: --find-interpreter + sccache: 'true' + manylinux: auto + - name: pytest + if: ${{ startsWith(matrix.platform.target, 'x86_64') }} + shell: bash + run: | + set -e + python3 -m venv .venv + source .venv/bin/activate + pip install wren-modeling-py --find-links dist --force-reinstall + pip install pytest + pytest + - 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 + pip3 install -U pip pytest + run: | + set -e + pip3 install wren-modeling-py --find-links dist --force-reinstall + pytest + + 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 + - uses: actions/setup-python@v5 + with: + python-version: 3.11 + - name: Build wheels + uses: PyO3/maturin-action@v1 + with: + target: ${{ matrix.platform.target }} + args: --find-interpreter + sccache: 'true' + manylinux: musllinux_1_2 + - 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 -e + apk add py3-pip py3-virtualenv + python3 -m virtualenv .venv + source .venv/bin/activate + pip install wren-modeling-py --no-index --find-links dist --force-reinstall + pip install pytest + pytest + - name: pytest + if: ${{ !startsWith(matrix.platform.target, 'x86') }} + uses: uraimo/run-on-arch-action@v2 + with: + arch: ${{ matrix.platform.target }} + distro: alpine_latest + githubToken: ${{ github.token }} + install: | + apk add py3-virtualenv + run: | + set -e + python3 -m virtualenv .venv + source .venv/bin/activate + pip install pytest + pip install wren-modeling-py --find-links dist --force-reinstall + pytest + + windows: + runs-on: ${{ matrix.platform.runner }} + strategy: + matrix: + platform: + - runner: windows-latest + target: x64 + - runner: windows-latest + target: x86 + steps: + - uses: actions/checkout@v4 + - uses: actions/setup-python@v5 + with: + python-version: 3.11 + architecture: ${{ matrix.platform.target }} + - name: Build wheels + uses: PyO3/maturin-action@v1 + with: + target: ${{ matrix.platform.target }} + args: --find-interpreter + sccache: 'true' + - name: pytest + if: ${{ !startsWith(matrix.platform.target, 'aarch64') }} + shell: bash + run: | + set -e + python3 -m venv .venv + source .venv/Scripts/activate + pip install wren-modeling-py --find-links dist --force-reinstall + pip install pytest + pytest + + macos: + runs-on: ${{ matrix.platform.runner }} + strategy: + matrix: + platform: + - runner: macos-12 + target: x86_64 + - runner: macos-14 + target: aarch64 + - runner: macos-14 + target: arm64 + steps: + - uses: actions/checkout@v4 + - uses: actions/setup-python@v5 + with: + python-version: 3.11 + - name: Build wheels + uses: PyO3/maturin-action@v1 + with: + target: ${{ matrix.platform.target }} + args: --find-interpreter + sccache: 'true' + - name: pytest + run: | + set -e + python3 -m venv .venv + source .venv/bin/activate + pip install wren-modeling-py --find-links dist --force-reinstall + pip install pytest + pytest