Summary:
This diff adds a small abstraction that allows for uploading
and downloading from an artifact cache.
We try to download from this cache at build time, but will only
try to populate it for continuous builds--those are built from
code that has been reviewed and landed on master. This restriction
helps to avoid thrashing the cache with works in progress and
results in a slightly more trustworthy state of the cache contents.
In addition to this, we choose only to cache third party projects.
The rationale is that our first party projects move too quickly to
be worth caching, especially since the cache granularity is for
the whole project rather than just changed elements of a given
project.
In a later diff I will introduce some implementations of the
cache class that work with eg: Travis or Circle CI caching.
Reviewed By: simpkins
Differential Revision: D16873307
fbshipit-source-id: 2bfb69e36615791747b499073586562f2ca48be9