Use [START_DIR]/cipd as a location for CIPD packages

This is to avoid polluting the global CIPD cache.

Change-Id: I91f218390fce1f5e10b8a69e83c1214baaab7733
diff --git a/recipe_modules/goma/api.py b/recipe_modules/goma/api.py
index 6bfea25..e0bcda9 100644
--- a/recipe_modules/goma/api.py
+++ b/recipe_modules/goma/api.py
@@ -67,23 +67,20 @@
     def ensure_goma(self, canary=False):
         with self.m.step.nest('ensure_goma'):
             with self.m.step.context({'infra_step': True}):
-                try:
-                    self.m.cipd.set_service_account_credentials(
-                        self.service_account_json_path)
+                self.m.cipd.set_service_account_credentials(
+                    self.service_account_json_path)
 
-                    self.m.cipd.install_client()
-                    goma_package = ('infra_internal/goma/client/%s' %
-                        self.m.cipd.platform_suffix())
-                    ref='release'
-                    if canary:
-                        ref='candidate'
-                    self._goma_dir = self.m.path['cache'].join('cipd', 'goma')
+                self.m.cipd.install_client()
+                goma_package = ('infra_internal/goma/client/%s' %
+                    self.m.cipd.platform_suffix())
+                ref='release'
+                if canary:
+                    ref='candidate'
+                self._goma_dir = self.m.path['start_dir'].join('cipd', 'goma')
 
-                    self.m.cipd.ensure(self._goma_dir, {goma_package: ref})
+                self.m.cipd.ensure(self._goma_dir, {goma_package: ref})
 
-                    return self._goma_dir
-                except self.m.step.StepFailure: # pragma: no cover
-                    return None
+                return self._goma_dir
 
     @property
     def goma_ctl(self):
diff --git a/recipe_modules/jiri/api.py b/recipe_modules/jiri/api.py
index 067d649..f967ee7 100644
--- a/recipe_modules/jiri/api.py
+++ b/recipe_modules/jiri/api.py
@@ -19,14 +19,19 @@
         jiri_cmd = [self._jiri_executable]
         return self.m.step(name, jiri_cmd + list(args), **kwargs)
 
-    def ensure_jiri(self):
-        self.m.cipd.install_client()
-        jiri_package = ('fuchsia/tools/jiri/%s' %
-            self.m.cipd.platform_suffix())
-        cipd_dir = self.m.path['cache'].join('cipd')
-        self.m.cipd.ensure(cipd_dir, { jiri_package: 'latest' })
-        self._jiri_executable = cipd_dir.join('jiri')
-        return self._jiri_executable
+    def ensure_jiri(self, version=None):
+        with self.m.step.nest('ensure_jiri'):
+            with self.m.step.context({'infra_step': True}):
+                self.m.cipd.install_client()
+                jiri_package = ('fuchsia/tools/jiri/%s' %
+                    self.m.cipd.platform_suffix())
+                cipd_dir = self.m.path['start_dir'].join('cipd', 'jiri')
+
+                self.m.cipd.ensure(cipd_dir,
+                                   {jiri_package: version or 'latest'})
+                self._jiri_executable = cipd_dir.join('jiri')
+
+                return self._jiri_executable
 
     @property
     def jiri(self):