* Break the CI steps into separate jobs so they run in parallel and are easier to distinguish * Cache yarn more aggressively * Re-use actions in different jobs