Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Five ways to use GitHub to automate scholarly work

Five ways to use GitHub to automate scholarly work

In this presentation I explain how GitHub's API and GitHub Actions can be used to automate common scholarly tasks and improve the reliability of our work.


Arfon Smith

June 17, 2021


  1. Five ways to use GitHub to automate scholarly work GitHub

    Presented by @arfon
  2. GitHub

  3. GitHub

  4. Platform APIs REST (v3) GraphQL https://docs.github.com/en/rest https://docs.github.com/en/graphql

  5. GitHub Actions – Platform Automation

  6. Automated scholarly documents 1

  7. Markdown paper in repository

  8. GitHub Action configured to compile paper

  9. Pull request triggers recompilation

  10. Paper compiled and available to download

  11. Notebook CI 2

  12. Jupyter Notebooks for JWST data analysis

  13. Contributing a notebook

  14. Fixing the notebook ‘build’

  15. Jupyter Notebooks for JWST data analysis

  16. Archiving repositories with Zenodo 3

  17. Powered by the GitHub API (webhooks) https://guides.github.com/activities/citable-code/

  18. Zenodo landing page https://guides.github.com/activities/citable-code/

  19. DOI per-release https://guides.github.com/activities/citable-code/

  20. DOI per-release https://guides.github.com/activities/citable-code/

  21. Reproducible compute environments 4

  22. repo2docker https://github.com/jupyterhub/repo2docker

  23. Define dependencies, add binder badge

  24. Build Docker container image and launch

  25. Interactive versioned compute environment

  26. Flat 5

  27. Automatically sync data with GitHub https://octo.github.com/projects/flat-data

  28. GitHub Action to sync data from sources https://github.com/marketplace/actions/flat-data

  29. Cron job periodically syncs data https://github.com/marketplace/actions/flat-data

  30. Live, always up to date COVID dashboard https://githubocto.github.io/flat-demo-covid-dashboard/state/new-york

  31. Thanks! arfon@github.com @arfon