Hi Björn,
I converged to the same workflow. I write a simulation code in Fortran
(check into git), which generates a log file (not checked in). Then I
have an jupyter notebook that parses the log file and generates
graphs. I check in the notebook, but without output cells. Then it's
small, the "git diff" is very readable (say if I improve a plot in a
new commit) etc.
Finally, and I don't have it setup yet, the goal is for the CI to run
the test (Fortran code) on some very small problem (for example, if I
use FFT and I need 256^3 and 20,000 time steps to get fully converged
results, I would run it with 16^3 PW and 20 time steps, so that it
runs in few seconds), and then I test the notebook that it runs using
nbconvert, exactly as you posted, to check that the analysis still
runs.
That way things should be 100% robust, and I can regenerate the graphs
any time I want, yet no big files or binary blobs are checked into a
git repository.
Ondrej