messing with CI #23
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
name: CI | |
on: | |
push: | |
branches: | |
- main | |
pull_request: | |
permissions: | |
contents: write | |
jobs: | |
linux: | |
runs-on: ubuntu-latest | |
strategy: | |
matrix: | |
python-version: ['3.8', '3.9', '3.10', '3.11'] # Python versions as strings | |
steps: | |
# Step 1: Checkout the code | |
- name: Checkout the code | |
uses: actions/checkout@v4 | |
# Step 2: Set up Python versions | |
- name: Set up Python ${{ matrix.python-version }} | |
uses: actions/setup-python@v4 | |
with: | |
python-version: ${{ matrix.python-version }} | |
# Step 3: Cache pip dependencies | |
- name: Cache pip | |
uses: actions/cache@v3 | |
with: | |
path: ~/.cache/pip | |
key: ${{ runner.os }}-pip-${{ hashFiles('requirements.txt') }} | |
restore-keys: | | |
${{ runner.os }}-pip- | |
# Step 4: Set up and activate virtual environment | |
- name: Set up and activate virtual environment | |
id: activate-venv | |
run: | | |
python -m venv venv | |
source venv/bin/activate || .\venv\Scripts\activate | |
shell: bash | |
# Step 5: Install dependencies (including maturin and project dependencies) | |
- name: Install dependencies | |
run: | | |
pip install --upgrade pip | |
pip install maturin | |
pip install -r requirements.txt | |
shell: bash | |
# Step 6: Run Ruff linter and fail on any issues | |
- name: Run Ruff (Python linter) | |
run: | | |
ruff check . | |
shell: bash | |
# Step 7: Run Black formatter | |
- name: Run Black (Python formatter) | |
run: | | |
black --check . | |
shell: bash | |
# Step 8: Build and install the Rust library using Maturin (in release mode) | |
- name: Build and install Rust library (release mode) | |
run: | | |
source venv/bin/activate || .\venv\Scripts\activate | |
maturin develop --release # Build the Rust library and install it | |
shell: bash | |
# Step 9: Run Python tests with pytest | |
- name: Run Python tests with pytest | |
run: | | |
source venv/bin/activate || .\venv\Scripts\activate | |
pytest tests/ # Run tests | |
shell: bash | |
# Separate job for deploying the documentation | |
deploy: | |
runs-on: ubuntu-latest | |
needs: linux # Ensure this job only runs after the matrix job completes | |
steps: | |
# Step 1: Checkout the code | |
- name: Checkout the code | |
uses: actions/checkout@v4 | |
# Step 2: Set up Python | |
- name: Set up Python | |
uses: actions/setup-python@v4 | |
with: | |
python-version: '3.10' # Just need a single Python version to build docs | |
# Step 3: Set up and activate virtual environment for Sphinx | |
- name: Set up and activate virtual environment | |
run: | | |
python -m venv venv | |
source venv/bin/activate || .\venv\Scripts\activate | |
shell: bash | |
# Step 4: Install dependencies for docs | |
- name: Install dependencies for docs | |
run: | | |
pip install --upgrade pip | |
pip install -r requirements.txt | |
shell: bash | |
# Step 5: Build Sphinx documentation | |
- name: Build Sphinx documentation | |
run: | | |
source venv/bin/activate || .\venv\Scripts\activate # Activate virtual environment | |
cd docs | |
make html | |
shell: bash | |
# Step 6: Deploy to GitHub Pages | |
- name: Deploy to GitHub Pages | |
uses: peaceiris/actions-gh-pages@v3 | |
with: | |
github_token: ${{ secrets.GITHUB_TOKEN }} | |
publish_dir: docs/_build/html |