docs: restructure documentation into logical sections #151
Workflow file for this run
This file contains hidden or 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
| 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 |