diff --git a/lib/manager/bundler/artifacts.js b/lib/manager/bundler/artifacts.js
index 86b3eee06e60419f38a7c3a3a95e2d2df744e38a..57e38f37d32e2b295de26964ab80b7d2a7216907 100644
--- a/lib/manager/bundler/artifacts.js
+++ b/lib/manager/bundler/artifacts.js
@@ -144,12 +144,14 @@ async function getArtifacts(
       }
     }
     logger.debug('Returning updated Gemfile.lock');
-    return {
-      file: {
-        name: lockFileName,
-        contents: await fs.readFile(localLockFileName, 'utf8'),
+    return [
+      {
+        file: {
+          name: lockFileName,
+          contents: await fs.readFile(localLockFileName, 'utf8'),
+        },
       },
-    };
+    ];
   } catch (err) {
     if (
       err.stdout &&
diff --git a/lib/manager/cargo/artifacts.js b/lib/manager/cargo/artifacts.js
index 723409b2d1d8f7acaafe0512168213ad185b9d97..48e287f0917d0af73fe6c156ec29be5e9ec4a1dc 100644
--- a/lib/manager/cargo/artifacts.js
+++ b/lib/manager/cargo/artifacts.js
@@ -15,11 +15,13 @@ async function getArtifacts(cargoTomlFileName) {
       { err, message: err.message },
       'Failed to update Cargo lock file'
     );
-    return {
-      artifactError: {
-        lockFile: cargoLockFileName,
-        stderr: err.message,
+    return [
+      {
+        artifactError: {
+          lockFile: cargoLockFileName,
+          stderr: err.message,
+        },
       },
-    };
+    ];
   }
 }
diff --git a/lib/manager/composer/artifacts.js b/lib/manager/composer/artifacts.js
index 5c3d893d674055e2cfb030e12622ded02f59805f..a244b34db3be2b9935b39a30d8e6f9392e45759f 100644
--- a/lib/manager/composer/artifacts.js
+++ b/lib/manager/composer/artifacts.js
@@ -151,12 +151,14 @@ async function getArtifacts(
       }
     }
     logger.debug('Returning updated composer.lock');
-    return {
-      file: {
-        name: lockFileName,
-        contents: await fs.readFile(localLockFileName, 'utf8'),
+    return [
+      {
+        file: {
+          name: lockFileName,
+          contents: await fs.readFile(localLockFileName, 'utf8'),
+        },
       },
-    };
+    ];
   } catch (err) {
     if (
       err.message &&
@@ -171,11 +173,13 @@ async function getArtifacts(
         'Failed to generate composer.lock'
       );
     }
-    return {
-      artifactError: {
-        lockFile: lockFileName,
-        stderr: err.message,
+    return [
+      {
+        artifactError: {
+          lockFile: lockFileName,
+          stderr: err.message,
+        },
       },
-    };
+    ];
   }
 }
diff --git a/lib/manager/gomod/artifacts.js b/lib/manager/gomod/artifacts.js
index f21f604dfb15239aa57412084c9edd5063ba65d3..3437d3d0cb47af745a291f805b80f9e97e5f8c8c 100644
--- a/lib/manager/gomod/artifacts.js
+++ b/lib/manager/gomod/artifacts.js
@@ -93,19 +93,23 @@ async function getArtifacts(
       }
     }
     logger.debug('Returning updated go.sum');
-    return {
-      file: {
-        name: sumFileName,
-        contents: await fs.readFile(localGoSumFileName, 'utf8'),
+    return [
+      {
+        file: {
+          name: sumFileName,
+          contents: await fs.readFile(localGoSumFileName, 'utf8'),
+        },
       },
-    };
+    ];
   } catch (err) {
     logger.warn({ err, message: err.message }, 'Failed to update go.sum');
-    return {
-      artifactError: {
-        lockFile: sumFileName,
-        stderr: err.message,
+    return [
+      {
+        artifactError: {
+          lockFile: sumFileName,
+          stderr: err.message,
+        },
       },
-    };
+    ];
   }
 }
diff --git a/lib/manager/pipenv/artifacts.js b/lib/manager/pipenv/artifacts.js
index 1dd4a10e36a929e813723bccae4321d93f99b97c..228f490ae6833952abd3aae683ea81871adedede 100644
--- a/lib/manager/pipenv/artifacts.js
+++ b/lib/manager/pipenv/artifacts.js
@@ -86,19 +86,23 @@ async function getArtifacts(
       }
     }
     logger.debug('Returning updated Pipfile.lock');
-    return {
-      file: {
-        name: lockFileName,
-        contents: await fs.readFile(localLockFileName, 'utf8'),
+    return [
+      {
+        file: {
+          name: lockFileName,
+          contents: await fs.readFile(localLockFileName, 'utf8'),
+        },
       },
-    };
+    ];
   } catch (err) {
     logger.warn({ err, message: err.message }, 'Failed to update Pipfile.lock');
-    return {
-      artifactError: {
-        lockFile: lockFileName,
-        stderr: err.message,
+    return [
+      {
+        artifactError: {
+          lockFile: lockFileName,
+          stderr: err.message,
+        },
       },
-    };
+    ];
   }
 }
diff --git a/lib/workers/branch/get-updated.js b/lib/workers/branch/get-updated.js
index 58967385785a806c2c404afdd0ecb0dd4ecfe68e..62e396bedf5eff4e9169fa607c05a8d2db5ba43c 100644
--- a/lib/workers/branch/get-updated.js
+++ b/lib/workers/branch/get-updated.js
@@ -1,3 +1,4 @@
+const is = require('@sindresorhus/is');
 const { get } = require('../../manager');
 
 module.exports = {
@@ -63,18 +64,20 @@ async function getUpdatedPackageFiles(config) {
     const updatedDeps = packageFileUpdatedDeps[packageFile.name];
     const getArtifacts = get(manager, 'getArtifacts');
     if (getArtifacts) {
-      const res = await getArtifacts(
+      const results = await getArtifacts(
         packageFile.name,
         updatedDeps,
         packageFile.contents,
         config
       );
-      if (res) {
-        const { file, artifactError } = res;
-        if (file) {
-          updatedArtifacts.push(file);
-        } else if (artifactError) {
-          artifactErrors.push(artifactError);
+      if (is.nonEmptyArray(results)) {
+        for (const res of results) {
+          const { file, artifactError } = res;
+          if (file) {
+            updatedArtifacts.push(file);
+          } else if (artifactError) {
+            artifactErrors.push(artifactError);
+          }
         }
       }
     }
diff --git a/test/manager/cargo/__snapshots__/artifacts.spec.js.snap b/test/manager/cargo/__snapshots__/artifacts.spec.js.snap
index f8966d6004b43be27b985b8e494943ab066e0b19..b5ff11202e4189cad93eda61dca677b7f9734b03 100644
--- a/test/manager/cargo/__snapshots__/artifacts.spec.js.snap
+++ b/test/manager/cargo/__snapshots__/artifacts.spec.js.snap
@@ -1,10 +1,12 @@
 // Jest Snapshot v1, https://goo.gl/fbAQLP
 
 exports[`cargo.getArtifacts() catches errors 1`] = `
-Object {
-  "artifactError": Object {
-    "lockFile": undefined,
-    "stderr": "Cannot read property 'replace' of undefined",
+Array [
+  Object {
+    "artifactError": Object {
+      "lockFile": undefined,
+      "stderr": "Cannot read property 'replace' of undefined",
+    },
   },
-}
+]
 `;
diff --git a/test/manager/composer/__snapshots__/artifacts.spec.js.snap b/test/manager/composer/__snapshots__/artifacts.spec.js.snap
index d5576599a94b239d1fea4f1e32934f115096e004..f4b89c9286ad5052fb255fcb6bb5cab5e51243dc 100644
--- a/test/manager/composer/__snapshots__/artifacts.spec.js.snap
+++ b/test/manager/composer/__snapshots__/artifacts.spec.js.snap
@@ -1,19 +1,23 @@
 // Jest Snapshot v1, https://goo.gl/fbAQLP
 
 exports[`.getArtifacts() catches errors 1`] = `
-Object {
-  "artifactError": Object {
-    "lockFile": "composer.lock",
-    "stderr": "not found",
+Array [
+  Object {
+    "artifactError": Object {
+      "lockFile": "composer.lock",
+      "stderr": "not found",
+    },
   },
-}
+]
 `;
 
 exports[`.getArtifacts() catches unmet requirements errors 1`] = `
-Object {
-  "artifactError": Object {
-    "lockFile": "composer.lock",
-    "stderr": "fooYour requirements could not be resolved to an installable set of packages.bar",
+Array [
+  Object {
+    "artifactError": Object {
+      "lockFile": "composer.lock",
+      "stderr": "fooYour requirements could not be resolved to an installable set of packages.bar",
+    },
   },
-}
+]
 `;
diff --git a/test/manager/gomod/__snapshots__/artifacts.spec.js.snap b/test/manager/gomod/__snapshots__/artifacts.spec.js.snap
index 15e0db1f79abc2d69d474530dda33be222957119..1ea549e9ed2f6f0bfcad40c5170c82f7005395fd 100644
--- a/test/manager/gomod/__snapshots__/artifacts.spec.js.snap
+++ b/test/manager/gomod/__snapshots__/artifacts.spec.js.snap
@@ -1,10 +1,12 @@
 // Jest Snapshot v1, https://goo.gl/fbAQLP
 
 exports[`.getArtifacts() catches errors 1`] = `
-Object {
-  "artifactError": Object {
-    "lockFile": "go.sum",
-    "stderr": "This update totally doesnt work",
+Array [
+  Object {
+    "artifactError": Object {
+      "lockFile": "go.sum",
+      "stderr": "This update totally doesnt work",
+    },
   },
-}
+]
 `;
diff --git a/test/manager/pipenv/__snapshots__/artifacts.spec.js.snap b/test/manager/pipenv/__snapshots__/artifacts.spec.js.snap
index 444dc17b12f9e029128178ee1c1c80a0465e56a3..29d6b76183fd554d658f694165e4599502b529d3 100644
--- a/test/manager/pipenv/__snapshots__/artifacts.spec.js.snap
+++ b/test/manager/pipenv/__snapshots__/artifacts.spec.js.snap
@@ -1,10 +1,12 @@
 // Jest Snapshot v1, https://goo.gl/fbAQLP
 
 exports[`.getArtifacts() catches errors 1`] = `
-Object {
-  "artifactError": Object {
-    "lockFile": "Pipfile.lock",
-    "stderr": "not found",
+Array [
+  Object {
+    "artifactError": Object {
+      "lockFile": "Pipfile.lock",
+      "stderr": "not found",
+    },
   },
-}
+]
 `;
diff --git a/test/workers/branch/get-updated.spec.js b/test/workers/branch/get-updated.spec.js
index f1766028c31bc9d01d726f73eccd366137bae22d..19294d0b761053bf30f478084a086706a35d3d86 100644
--- a/test/workers/branch/get-updated.spec.js
+++ b/test/workers/branch/get-updated.spec.js
@@ -49,12 +49,14 @@ describe('workers/branch/get-updated', () => {
         manager: 'composer',
       });
       composer.updateDependency.mockReturnValue('some new content');
-      composer.getArtifacts.mockReturnValue({
-        file: {
-          name: 'composer.json',
-          contents: 'some contents',
+      composer.getArtifacts.mockReturnValue([
+        {
+          file: {
+            name: 'composer.json',
+            contents: 'some contents',
+          },
         },
-      });
+      ]);
       const res = await getUpdatedPackageFiles(config);
       expect(res).toMatchSnapshot();
     });
@@ -64,12 +66,14 @@ describe('workers/branch/get-updated', () => {
         manager: 'composer',
       });
       composer.updateDependency.mockReturnValue('some new content');
-      composer.getArtifacts.mockReturnValue({
-        artifactError: {
-          name: 'composer.lock',
-          stderr: 'some error',
+      composer.getArtifacts.mockReturnValue([
+        {
+          artifactError: {
+            name: 'composer.lock',
+            stderr: 'some error',
+          },
         },
-      });
+      ]);
       const res = await getUpdatedPackageFiles(config);
       expect(res).toMatchSnapshot();
     });