Skip to content

Continuous integration

  • readthedocs will handle docs building.
  • Jenkins with Flatiron cluster for any tests requiring GPUs or more time/resources than can be obtained through Github actions.
  • Github actions for everything else (see here) for resources):
  • use matrix to test on multiple python versions and OSs.
  • pytest tests/, see here
  • that all notebooks can run (only done on github actions if using .ipynb files, but done by readthedocs for mkdocs-gallery)
    • for notebooks that take too long to run on runners, use papermill to parametrize them to reduce runtime
  • running linters with tox
  • generating test coverage report: coveralls. any PR must maintain or increase coverage in order to be merged.
  • use alls-green or similar ot check that all tests ran successfully (so only have a single check for branch protection rule)
  • think about how frequently to run tests. one good possibility: weekly, manually, and on every PR:
    on:
    workflow_dispatch:
    schedule:
    - cron: 0 0 * * 0     # weekly
    pull_request:
      branches:
      - main
      - development
    
  • trigger the connect.yml github action for debuging, it will allow you to ssh connect to the runner
  • deploy to pypi on release (test using test.pypi.org, test installation and tests run, then deploy)