Skip to content

Merge pull request #116 from Janelia-Trackathon-2023/docs-metrics-pages #451

Merge pull request #116 from Janelia-Trackathon-2023/docs-metrics-pages

Merge pull request #116 from Janelia-Trackathon-2023/docs-metrics-pages #451

Workflow file for this run

name: CI
on:
push:
branches:
- main
tags:
- "v*"
pull_request:
workflow_dispatch:
concurrency:
group: ${{ github.workflow }}-${{ github.ref }}
cancel-in-progress: true
jobs:
# check-manifest:
# runs-on: ubuntu-latest
# steps:
# - uses: actions/checkout@v4
# - run: pipx run check-manifest
test:
name: ${{ matrix.platform }} (${{ matrix.python-version }})
runs-on: ${{ matrix.platform }}
strategy:
fail-fast: false
matrix:
python-version: ["3.9", "3.10", "3.11"]
platform: [ubuntu-latest, macos-latest, windows-latest]
steps:
- uses: actions/checkout@v4
- name: Set up Python ${{ matrix.python-version }}
uses: actions/setup-python@v5
with:
python-version: ${{ matrix.python-version }}
cache-dependency-path: "pyproject.toml"
cache: "pip"
- name: Install dependencies
run: |
python -m pip install -U pip
python -m pip install -e .[test]
- name: Test
run: pytest --color=yes --cov --cov-report=xml --cov-report=term-missing
- name: Coverage
uses: codecov/codecov-action@v4
benchmark:
name: Benchmark
runs-on: ubuntu-latest
if: github.event_name == 'pull_request'
steps:
- uses: actions/checkout@v4
with:
fetch-depth: 50 # this is to make sure we obtain the target base commit
- name: Set up Python
uses: actions/setup-python@v5
with:
python-version: 3.11
cache-dependency-path: "pyproject.toml"
cache: "pip"
- name: Install dependencies
run: |
python -m pip install -U pip
python -m pip install -e .[test]
python -m pip install tabulate
- name: Retrieve cached baseline if available
uses: actions/cache/restore@v4
id: cache
with:
path: baseline.json
key: ${{ github.event.pull_request.base.sha }}
- name: Run baseline benchmark if not in cache
if: steps.cache.outputs.cache-hit != 'true'
run: |
git checkout ${{ github.event.pull_request.base.sha }}
pytest tests/bench.py --benchmark-json baseline.json
- name: Cache baseline results
uses: actions/cache/save@v4
if: steps.cache.outputs.cache-hit != 'true'
with:
path: baseline.json
key: ${{ github.event.pull_request.base.sha }}
- name: Run benchmark on PR head commit
run: |
git checkout ${{ github.event.pull_request.head.sha }}
pytest tests/bench.py --benchmark-json pr.json
- name: Generate report
run: python .github/workflows/benchmark-pr.py baseline.json pr.json report.md
- name: Comment on commit with report for non-forks
uses: peter-evans/commit-comment@v3
if: github.event.pull_request.head.repo.fork == false
with:
body-path: report.md
deploy:
name: Deploy
needs: test
if: success() && startsWith(github.ref, 'refs/tags/')
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Set up Python
uses: actions/setup-python@v5
with:
python-version: "3.x"
- name: install
run: |
git tag
pip install -U pip build twine
python -m build
twine check dist/*
ls -lh dist
- name: Build and publish
run: twine upload dist/*
env:
TWINE_USERNAME: __token__
TWINE_PASSWORD: ${{ secrets.TWINE_API_KEY }}
- uses: softprops/action-gh-release@v2
with:
generate_release_notes: true