CI #101
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: | |
schedule: | |
- cron: "0 0 1 * *" # Run every month | |
# This way, we can make sure code doesn't break via external dependencies | |
push: | |
pull_request: | |
env: | |
POETRY_VERSION: 1.5.1 | |
jobs: | |
test: | |
strategy: | |
matrix: | |
python-version: | |
- 3.8 | |
- 3.9 | |
- "3.10" | |
- "3.11" | |
- "3.12" | |
os: [ubuntu-latest, macos-latest, windows-latest] | |
runs-on: ${{ matrix.os }} | |
steps: | |
- name: Check out repository code | |
uses: actions/checkout@v3 | |
- name: Set up Python ${{ matrix.python-version }} | |
uses: actions/setup-python@v4 | |
with: | |
python-version: ${{ matrix.python-version }} | |
- uses: actions/cache@v3 | |
with: | |
path: | | |
.venv | |
.pytest_cache | |
key: ${{ runner.os }}-pip-${{ hashFiles('**/poetry.lock') }} | |
restore-keys: | | |
${{ runner.os }}-pip- | |
- name: Install Poetry and Poe (UNIX) | |
if: runner.os != 'Windows' | |
run: python3 -m pip install poetry==$POETRY_VERSION poethepoet | |
- name: Install Poetry and Poe (Windows) | |
if: runner.os == 'Windows' | |
run: python -m pip install poetry==$env:POETRY_VERSION poethepoet | |
- name: Install dependencies | |
run: | | |
poetry config virtualenvs.in-project true | |
poetry install | |
poetry install # Second time to install the project | |
- name: Run test suite | |
run: poe ci | |
- name: Upload to CodeCov | |
uses: codecov/codecov-action@v2 | |
docs: | |
runs-on: ubuntu-latest | |
steps: | |
- name: Check out repository code | |
uses: actions/checkout@v3 | |
- uses: actions/setup-python@v4 | |
with: | |
python-version: 3 | |
- uses: actions/cache@v3 | |
with: | |
path: .venv | |
key: ${{ runner.os }}-pip-${{ hashFiles('**/poetry.lock') }} | |
restore-keys: | | |
${{ runner.os }}-pip- | |
- name: Install dependencies | |
run: | | |
python3 -m pip install --upgrade pip poetry==$POETRY_VERSION poethepoet | |
poetry config virtualenvs.in-project true | |
poetry install | |
poetry install # Second time to install the project | |
- name: Build docs | |
run: poe docs | |
build: | |
runs-on: ubuntu-latest | |
steps: | |
- name: Check out repository code | |
uses: actions/checkout@v3 | |
- uses: actions/setup-python@v4 | |
with: | |
python-version: 3 | |
- name: Install Poetry $POETRY_VERSION | |
run: python3 -m pip install --upgrade pip poetry==$POETRY_VERSION | |
- name: Build project | |
run: poetry build | |
lints: | |
runs-on: ubuntu-latest | |
steps: | |
- name: Check out repository code | |
uses: actions/checkout@v3 | |
- name: Set up Python | |
uses: actions/setup-python@v4 | |
with: | |
python-version: 3 | |
- uses: actions/cache@v3 | |
with: | |
path: .venv | |
key: ${{ runner.os }}-pip-${{ hashFiles('**/poetry.lock') }} | |
restore-keys: | | |
${{ runner.os }}-pip- | |
- name: Install dependencies | |
run: | | |
python3 -m pip install --upgrade pip poetry==$POETRY_VERSION poethepoet | |
poetry config virtualenvs.in-project true | |
poetry install | |
poetry install # Second time to install the project | |
- name: Run style lints | |
run: poe style | |
- name: Run ruff lints | |
run: poe codebase | |
- name: Run mypy lints | |
run: poe mypy | |