Search code examples
pythoncontinuous-integrationjupyter-notebookipythontravis-ci

How to test Jupyter notebooks on Travis CI?


Is there a way to deploy Jupyter Notebooks on Travis CI and test running all the cells?

My Jupyter Notebooks use IPython Kernel, and I have a conda environment file.


Solution

  • I've been wondering something similar and have compiled some information but haven't fully tested it yet.

    Firstly, you can rely on jupyter nbconvert execute notebooks, where you can then look for errors. There's an example set up with Travis CI and Conda at ghego/travis_anaconda_jupyter. I believe Travis CI relies on pytest too to catch issues, though I'm not entirely sure how this fits together.

    Another way you can run this is with pytest-notebook, which relies on you having a working version of the notebooks you want in some environment. This package's main purpose is to detect if changes to the environment will create issues within the notebooks. This can also potentially be used in conjunction with the above method, though it might be redundant.

    It might be additionally beneficial for version management (tracking, seeing diffs, legibility) to write your notebooks in markdown format and then use jupytext to convert them into a .ipynb file to then run with the above options. jupytext can also execute notebooks directly with the --execute flag, so perhaps there's an even simpler way to integrate such a workflow!

    I will be testing this in the coming weeks and will update this comment if I learn anything new.