Skip to content

noraml-saturday: let there be rust #696

noraml-saturday: let there be rust

noraml-saturday: let there be rust #696

Workflow file for this run

name: Flag Engine Pull Request
on:
pull_request:
types: [opened, synchronize, reopened, ready_for_review]
branches:
- main
push:
branches:
- main
jobs:
test:
runs-on: ubuntu-latest
name: Flag engine Unit tests
strategy:
max-parallel: 4
matrix:
python-version: ['3.9', '3.10', '3.11', '3.12', '3.13']
steps:
- name: Cloning repo
uses: actions/checkout@v4
with:
fetch-depth: 0
submodules: recursive
- name: Set up Python ${{ matrix.python-version }}
uses: actions/setup-python@v5
with:
python-version: ${{ matrix.python-version }}
- name: Install Dependencies
run: |
python -m pip install --upgrade pip
pip install -r requirements.txt -r requirements-dev.txt
- name: Check Typing
run: mypy --strict .
- name: Run Tests
run: pytest -p no:warnings
- name: Check Coverage
uses: 5monkeys/cobertura-action@v14
with:
minimum_coverage: 100
fail_below_threshold: true
show_missing: true
- name: Run Benchmarks
if: ${{ matrix.python-version == '3.12' }}
uses: CodSpeedHQ/action@v3
with:
token: ${{ secrets.CODSPEED_TOKEN }}
run: pytest --codspeed --no-cov
test-rust:
runs-on: ubuntu-latest
name: Flag engine with Rust (Experimental)
steps:
- name: Cloning Python repo
uses: actions/checkout@v4
with:
fetch-depth: 0
- name: Cloning Rust repo
uses: actions/checkout@v4
with:
repository: Flagsmith/flagsmith-rust-flag-engine
ref: fix/who-needs-python
path: rust-engine
- name: Set up Python 3.12
uses: actions/setup-python@v5
with:
python-version: '3.12'
- name: Install Rust toolchain
uses: dtolnay/rust-toolchain@stable
- name: Install maturin
run: pip install maturin
- name: Build Rust extension
run: |
cd rust-engine
maturin develop --release --features python
- name: Install Python Dependencies
run: |
python -m pip install --upgrade pip
pip install -r requirements.txt -r requirements-dev.txt
- name: Run Tests with Rust
env:
FLAGSMITH_USE_RUST: '1'
run: pytest -p no:warnings