Continuous integration of LaTeX documents with travis-ci

Continuous integration is a software development practice which advocates for frequent code commits and automated build/test environments. The basic idea is to always have your code/software in a functional state by automatically testing it.

In the case of LaTeX documents, every time I commit my changes, Travis-CI will instantiate a new enviornment, install texlive, compile the document and then push the completed PDF to github for hosting.

To beign, this assumes you already have a git repository for your document. You can follow the tutorial to get started.

Then simply add the following to .travis.yml in your repo:

sudo: require
dist: focal
language: bash
before_install:
  - sudo apt-get -qq update
  - sudo apt-get install -y texlive-full
script:
- latexmk -pdf -interaction=nonstopmode -halt-on-error manuscript.tex
after_success: 
deploy:
  provider: releases
  api_key:
    secure: <api key>
  file: manuscript.pdf
  skip_cleanup: true
  on:
    repo: <repo name>
    tags: true

To allow for automatic releases to github, you can setup a secure API key by following these instructions.