Update dependencies and tooling #462
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: Tests | |
on: | |
push: | |
branches: | |
- main | |
pull_request: | |
jobs: | |
linting: | |
name: Linting | |
runs-on: ubuntu-latest | |
steps: | |
- uses: actions/checkout@v4 | |
- name: Install uv | |
uses: astral-sh/setup-uv@v5 | |
with: | |
enable-cache: true | |
cache-dependency-glob: uv.lock | |
- name: Set up Python | |
uses: actions/setup-python@v5 | |
with: | |
python-version-file: pyproject.toml | |
- name: Test lock | |
run: uv lock --check | |
- name: Install project | |
run: uv sync --locked --all-extras --dev | |
- name: Format | |
run: uv run ruff format --check | |
- name: Check | |
run: uv run ruff check | |
- name: Type check | |
run: uv run pyright jekyllnb | |
test: | |
name: ${{ matrix.os.name }} / ${{ matrix.python-version }} | |
needs: linting | |
runs-on: ${{ matrix.os.image }} | |
defaults: | |
run: | |
shell: bash | |
strategy: | |
matrix: | |
os: | |
- name: Ubuntu | |
image: ubuntu-latest | |
- name: macOS aarch64 | |
image: macos-latest | |
- name: macOS x86_64 | |
image: macos-13 | |
- name: Windows | |
image: windows-latest | |
python-version: | |
- "3.9" | |
- "3.10" | |
- "3.11" | |
- "3.12" | |
- "3.13" | |
fail-fast: false | |
steps: | |
- name: Checkout | |
uses: actions/checkout@v4 | |
- name: Install uv | |
uses: astral-sh/setup-uv@v5 | |
with: | |
enable-cache: true | |
cache-dependency-glob: uv.lock | |
- name: Set up Python ${{ matrix.python-version }} | |
uses: actions/setup-python@v5 | |
with: | |
python-version: ${{ matrix.python-version }} | |
- name: Install project | |
run: | | |
uv sync --locked --all-extras --dev | |
uv pip install pytest-github-actions-annotate-failures | |
- name: Run tests | |
run: uv run pytest --cov-report xml:coverage.xml | |
- name: Upload coverage report | |
uses: codecov/codecov-action@v5 | |
if: success() | |
with: | |
files: coverage.xml | |
fail_ci_if_error: true | |
token: ${{ secrets.CODECOV_TOKEN }} | |
- name: Send Slack message on failure | |
uses: lazy-actions/slatify@v3.0.0 | |
if: failure() | |
with: | |
type: ${{ job.status }} | |
job_name: '${{ runner.os }} :snake: ${{ matrix.python-version }} Tests' | |
url: ${{ secrets.SLACK_WEBHOOK }} | |
commit: true | |
token: ${{ secrets.GITHUB_TOKEN }} | |
slack: | |
name: Slack | |
runs-on: ubuntu-latest | |
needs: test | |
steps: | |
- name: Send Slack message | |
uses: lazy-actions/slatify@v3.0.0 | |
if: always() | |
with: | |
type: ${{ job.status }} | |
job_name: ':snake: Tests' | |
url: ${{ secrets.SLACK_WEBHOOK }} | |
commit: true | |
token: ${{ secrets.GITHUB_TOKEN }} |