Skip to content

docs: restructure documentation into logical sections #151

docs: restructure documentation into logical sections

docs: restructure documentation into logical sections #151

Workflow file for this run

name: CI
on:
push:
branches: [master]
pull_request:
branches: [master]
concurrency:
group: ${{ github.workflow }}-${{ github.ref }}
cancel-in-progress: true
jobs:
lint:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v6
- name: Set up Python
uses: actions/setup-python@v6
with:
python-version: "3.12"
- name: Install Rust
uses: dtolnay/rust-toolchain@stable
with:
components: rustfmt, clippy
- name: Rust cache
uses: Swatinem/rust-cache@v2.8.2
- name: Cargo fmt
run: cargo fmt --all --check
- name: Cargo clippy
run: cargo clippy --all-targets --all-features -- -D warnings
- name: Install uv
uses: astral-sh/setup-uv@v7
with:
version: "0.10.12"
cache-dependency-glob: uv.lock
- name: Install Python dev deps
run: uv sync --extra dev
- name: Ruff check
run: uv run ruff check py_src/ tests/
- name: Ruff format check
run: uv run ruff format --check py_src/ tests/
- name: Mypy
run: uv run mypy py_src/taskito/ tests/python/ --no-incremental
dashboard-lint:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v6
- name: Set up Node.js
uses: actions/setup-node@v4
with:
node-version: "22"
cache: "npm"
cache-dependency-path: dashboard/package-lock.json
- name: Install dependencies
run: cd dashboard && npm ci
- name: Biome lint + format check
run: cd dashboard && npx biome ci src/
- name: TypeScript check
run: cd dashboard && npx tsc --noEmit
- name: Build check
run: cd dashboard && npx vite build
rust-test:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v6
- name: Set up Python
uses: actions/setup-python@v6
with:
python-version: "3.12"
- name: Install Rust
uses: dtolnay/rust-toolchain@stable
- name: Rust cache
uses: Swatinem/rust-cache@v2.8.2
with:
save-if: false
- name: Run Rust tests
run: cargo test --workspace
env:
LD_LIBRARY_PATH: ${{ env.pythonLocation }}/lib
- name: Check Rust (postgres features)
run: cargo check --workspace --features postgres
- name: Check Rust (redis features)
run: cargo check --workspace --features redis
- name: Check Rust (native-async features)
run: cargo check --workspace --features native-async
test:
needs: lint
runs-on: ${{ matrix.os }}
strategy:
matrix:
os: [ubuntu-latest]
python-version: ["3.10", "3.11", "3.12", "3.13"]
include:
- os: macos-latest
python-version: "3.13"
- os: macos-latest
python-version: "3.10"
- os: windows-latest
python-version: "3.13"
- os: windows-latest
python-version: "3.10"
steps:
- uses: actions/checkout@v6
- name: Set up Python
uses: actions/setup-python@v6
with:
python-version: ${{ matrix.python-version }}
- name: Install Rust
uses: dtolnay/rust-toolchain@stable
- name: Rust cache
uses: Swatinem/rust-cache@v2.8.2
with:
save-if: ${{ matrix.os != 'ubuntu-latest' }}
- name: Install uv
uses: astral-sh/setup-uv@v7
with:
version: "0.10.12"
cache-dependency-glob: uv.lock
- name: Install dependencies
run: uv sync --extra dev
- name: Build native extension
uses: PyO3/maturin-action@v1
with:
command: develop
args: --release --features native-async
- name: Run Python tests
run: |
set +e
uv run python -m pytest tests/python/ -v --junitxml=test-results.xml
PYTEST_EXIT=$?
if [ $PYTEST_EXIT -eq 0 ]; then exit 0; fi
# SIGABRT (134) during interpreter shutdown is a known PyO3 issue;
# check junit XML to confirm all tests actually passed.
if [ $PYTEST_EXIT -eq 134 ] && [ -f test-results.xml ]; then
FAILURES=$(python -c "
import xml.etree.ElementTree as ET
r = ET.parse('test-results.xml').getroot()
print(int(r.get('failures',0)) + int(r.get('errors',0)))
")
if [ "$FAILURES" = "0" ]; then
echo "::warning::Tests passed but process crashed during cleanup (known PyO3 issue)"
exit 0
fi
fi
exit $PYTEST_EXIT
shell: bash