Skip to content

Merge pull request #212 from alisaifee/dependabot/pip/sphinx-autobuil… #1178

Merge pull request #212 from alisaifee/dependabot/pip/sphinx-autobuil…

Merge pull request #212 from alisaifee/dependabot/pip/sphinx-autobuil… #1178

Workflow file for this run

name: CI
on: [push, pull_request]
jobs:
lint:
runs-on: ubuntu-latest
strategy:
matrix:
python-version: [3.8, 3.9, "3.10", "3.11"]
steps:
- uses: actions/checkout@v3
- name: Cache dependencies
uses: actions/cache@v3
with:
path: ~/.cache/pip
key: ${{ runner.os }}-pip-${{ hashFiles('requirements/**') }}
restore-keys: |
${{ runner.os }}-pip-
- name: Set up Python ${{ matrix.python-version }}
uses: actions/setup-python@v3
with:
python-version: ${{ matrix.python-version }}
- name: Install dependencies
run: |
python -m pip install "pip<22"
python -m pip install --upgrade setuptools wheel
pip install --no-binary protobuf -r requirements/ci.txt
- name: Lint with ruff
run: |
ruff check --select I
ruff format --check limits tests
ruff limits tests
- name: Check types
run: |
mypy limits
test:
strategy:
fail-fast: false
matrix:
python-version: [3.8]
marker: [not (integration or benchmark)]
os: [ubuntu-latest]
include:
- python-version: 3.9
marker: 'not benchmark'
os: ubuntu-latest
- python-version: "3.10"
marker: 'not benchmark'
os: ubuntu-latest
- python-version: "3.11"
marker: 'not benchmark'
os: ubuntu-latest
runs-on: "${{ matrix.os }}"
steps:
- uses: actions/checkout@v3
- name: Cache dependencies
uses: actions/cache@v3
with:
path: ~/.cache/pip
key: ${{ runner.os }}-pip-${{ hashFiles('requirements/**') }}
restore-keys: |
${{ runner.os }}-pip-
- name: Set up Python ${{ matrix.python-version }}
uses: actions/setup-python@v3
with:
python-version: ${{ matrix.python-version }}
- name: Install dependencies
run: |
python -m pip install "pip<22"
python -m pip install --upgrade setuptools wheel
pip install --no-binary protobuf -r requirements/ci.txt
- name: Tests
env:
CI: "True"
run: |
py.test -m "${{ matrix.marker }}" --cov-report=xml --cov-branch --max-runs=3
- name: Upload coverage to Codecov
uses: codecov/codecov-action@v3
benchmark:
needs: [test]
runs-on: ubuntu-latest
strategy:
matrix:
python-version: ["3.11"]
steps:
- uses: actions/checkout@v3
- name: Cache dependencies
uses: actions/cache@v3
with:
path: ~/.cache/pip
key: ${{ runner.os }}-pip-${{ hashFiles('requirements/**') }}
restore-keys: |
${{ runner.os }}-pip-
- name: Set up Python ${{ matrix.python-version }}
uses: actions/setup-python@v3
with:
python-version: ${{ matrix.python-version }}
- name: Install dependencies
run: |
python -m pip install "pip<22"
python -m pip install --upgrade setuptools wheel
pip install --no-binary protobuf -r requirements/ci.txt
- name: Benchmark
env:
CI: "True"
run: |
py.test -W ignore -m "benchmark" --benchmark-min-rounds=1000 --benchmark-histogram=.benchmarks/benchmark
- name: Upload benchmark results
uses: actions/upload-artifact@v2
with:
name: benchmark
path: .benchmarks/*
build_wheels:
needs: [lint]
name: Build wheel
runs-on: ubuntu-20.04
steps:
- uses: actions/checkout@v3
with:
fetch-depth: 0
- name: Build wheels
run: |
python -m pip install build
python -m build --wheel
- uses: actions/upload-artifact@v2
with:
path: ./dist/*.whl
build_sdist:
needs: [lint]
name: Build source distribution
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
with:
fetch-depth: 0
- name: Build sdist
run: |
pipx run build --sdist
- uses: actions/upload-artifact@v2
with:
path: dist/*.tar.gz
upload_pypi:
needs: [test, build_wheels, build_sdist]
runs-on: ubuntu-latest
if: github.ref == 'refs/heads/master'
steps:
- uses: actions/download-artifact@v2
with:
name: artifact
path: dist
- uses: pypa/gh-action-pypi-publish@v1.4.2
with:
user: __token__
password: ${{ secrets.TEST_PYPI_API_TOKEN }}
repository_url: https://test.pypi.org/legacy/
skip_existing: true
upload_pypi_release:
needs: [test, benchmark, build_wheels, build_sdist]
runs-on: ubuntu-latest
if: github.event_name == 'push' && startsWith(github.ref, 'refs/tags/')
steps:
- uses: actions/download-artifact@v2
with:
name: artifact
path: dist
- uses: pypa/gh-action-pypi-publish@v1.4.2
with:
user: __token__
password: ${{ secrets.PYPI_API_TOKEN }}
github_release:
needs: [upload_pypi_release]
name: Create Release
runs-on: ubuntu-latest
if: github.event_name == 'push' && startsWith(github.ref, 'refs/tags/')
steps:
- name: Checkout code
uses: actions/checkout@v3
with:
fetch-depth: 0
- name: Download artifacts
uses: actions/download-artifact@v2
with:
name: artifact
path: dist
- name: Download benchmark results
uses: actions/download-artifact@v2
with:
name: benchmark
path: .benchmarks
- name: Generate release notes
run: |
./scripts/github_release_notes.sh > release_notes.md
- name: Create Release
uses: ncipollo/release-action@v1
with:
artifacts: "dist/*,.benchmarks/*"
bodyFile: release_notes.md
token: ${{ secrets.GITHUB_TOKEN }}