Speeding up Elixir project build times on Travis CI

By: Brian Cardarella
faster

Elixir is fast, very fast. So fast that a good chunk of Continuous Integration jobs on Travis CI for our Phoenix projects were spent in fetching dependencies (this is very small, but still a few seconds) and then compiling all of the dependencies.

If you’re willing to deal with getting a failed build once in a while then you can significantly speed up the CI jobs by caching certain assets. Specifically the _build/ and deps/ directories.

This strategy can be used on any CI service but the example here is for Travis CI. Simply add the following to your .travis.yml file:

cache:
  directories:
    - _build
    - deps

We saw a big reduction in total Pull Request CI test run time total-jobs

Here is a comparison of the individual jobs

Before:

before

After:

after

If you are getting a failing build when you believe you shouldn’t, the issue could be the cache. You can simply clear the cache and start it from scratch at any time.