From cc4df96fe2b8bcd951cae20d1af6e70258a9eec0 Mon Sep 17 00:00:00 2001 From: Rhys Arkins <rhys@arkins.net> Date: Fri, 23 Mar 2018 15:56:44 +0100 Subject: [PATCH] fix: return early if docker token acquisition fails --- lib/datasource/docker.js | 31 ++++++++++++++++++++++++------- 1 file changed, 24 insertions(+), 7 deletions(-) diff --git a/lib/datasource/docker.js b/lib/datasource/docker.js index 23fb2efb17..4a115d0d49 100644 --- a/lib/datasource/docker.js +++ b/lib/datasource/docker.js @@ -38,13 +38,21 @@ async function getAuthHeaders(registry, repository) { Authorization: `Bearer ${token}`, Accept: 'application/vnd.docker.distribution.manifest.v2+json', }; - } catch (err) { - // istanbul ignore if + } catch (err) /* istanbul ignore next */ { + if (err.statusCode === 401) { + logger.info({ registry, repository }, 'Unauthorized docker lookup'); + logger.debug({ + err, + message: err.message, + body: err.response ? err.response.body : undefined, + }); + return null; + } if (err.statusCode >= 500 && err.statusCode < 600) { logger.warn({ err }, 'docker registry failure: internal error'); throw new Error('registry-failure'); } - logger.info('Error obtaining docker token'); + logger.warn('Error obtaining docker token'); return null; } } @@ -56,6 +64,10 @@ async function getDigest(registry, name, tag = 'latest') { try { const url = `${massagedRegistry}/v2/${repository}/manifests/${tag}`; const headers = await getAuthHeaders(massagedRegistry, repository); + if (!headers) { + logger.info('No docker auth found - returning'); + return null; + } headers.accept = 'application/vnd.docker.distribution.manifest.v2+json'; const digest = (await got(url, { json: true, headers, timeout: 10000 })) .headers['docker-content-digest']; @@ -63,10 +75,12 @@ async function getDigest(registry, name, tag = 'latest') { return digest; } catch (err) /* istanbul ignore next */ { if (err.statusCode === 401) { - logger.info( - { err, body: err.response ? err.response.body : undefined, name, tag }, - 'Lookup is unauthorized (private image)' - ); + logger.info({ registry, repository }, 'Unauthorized docker lookup'); + logger.debug({ + err, + message: err.message, + body: err.response ? err.response.body : undefined, + }); return null; } if (err.statusCode === 404) { @@ -106,6 +120,9 @@ async function getTags(registry, name) { try { let url = `${massagedRegistry}/v2/${repository}/tags/list?n=10000`; const headers = await getAuthHeaders(massagedRegistry, repository); + if (!headers) { + return null; + } let tags = []; let page = 1; do { -- GitLab