From 635288590e0eae4cb633e833a67d97fe908c72c0 Mon Sep 17 00:00:00 2001 From: Cristian Greco Date: Fri, 23 Dec 2022 12:15:20 +0000 Subject: [PATCH 1/3] Remove path from default registry --- src/registry-auth-locator/auths.ts | 2 +- .../credential-provider.ts | 28 ++++++++++++------- src/registry-auth-locator/index.ts | 2 +- 3 files changed, 20 insertions(+), 12 deletions(-) diff --git a/src/registry-auth-locator/auths.ts b/src/registry-auth-locator/auths.ts index d3152861c..0eb933137 100644 --- a/src/registry-auth-locator/auths.ts +++ b/src/registry-auth-locator/auths.ts @@ -40,7 +40,7 @@ export class Auths implements RegistryAuthLocator { const authEntries = dockerConfig.auths ?? {}; for (const key in authEntries) { - if (key === registry || key.includes(`://${registry}`)) { + if (key.includes(registry)) { return authEntries[key]; } } diff --git a/src/registry-auth-locator/credential-provider.ts b/src/registry-auth-locator/credential-provider.ts index 4d8870ff2..1d978a99a 100644 --- a/src/registry-auth-locator/credential-provider.ts +++ b/src/registry-auth-locator/credential-provider.ts @@ -19,12 +19,14 @@ export abstract class CredentialProvider implements RegistryAuthLocator { log.debug(`Executing Docker credential provider: ${programName}`); const credentials = await this.listCredentials(programName); - if (!Object.keys(credentials).some((credential) => credential.includes(registry))) { + + const resolvedRegistry = Object.keys(credentials).find((credential) => credential.includes(registry)); + if (resolvedRegistry === undefined) { log.debug(`No credential found for registry: "${registry}"`); return undefined; } - const response = await this.runCredentialProvider(registry, programName); + const response = await this.runCredentialProvider(resolvedRegistry, programName); const authConfig: AuthConfig = { username: response.Username, password: response.Secret, @@ -40,15 +42,17 @@ export abstract class CredentialProvider implements RegistryAuthLocator { return new Promise((resolve, reject) => { exec(`${providerName} list`, (err, stdout) => { if (err) { - log.error(`An error occurred listing credentials: ${err}`); - return reject(new Error("An error occurred listing credentials")); + const errorMessage = `An error occurred listing credentials: ${err}`; + log.error(errorMessage); + return reject(new Error(errorMessage)); } try { const response = JSON.parse(stdout); return resolve(response); } catch (e) { - log.error(`Unexpected response from Docker credential provider LIST command: "${stdout}"`); - return reject(new Error("Unexpected response from Docker credential provider LIST command")); + const errorMessage = `Unexpected response from Docker credential provider LIST command: "${stdout}"`; + log.error(errorMessage); + return reject(new Error(errorMessage)); } }); }); @@ -63,8 +67,11 @@ export abstract class CredentialProvider implements RegistryAuthLocator { sink.on("close", (code) => { if (code !== 0) { - log.error(`An error occurred getting a credential: ${code}`); - return reject(new Error("An error occurred getting a credential")); + const errorMessage = `An error occurred getting a credential. Exit code: ${code}. Message: ${chunks.join( + "" + )}`; + log.error(errorMessage); + return reject(new Error(errorMessage)); } const response = chunks.join(""); @@ -72,8 +79,9 @@ export abstract class CredentialProvider implements RegistryAuthLocator { const parsedResponse = JSON.parse(response); return resolve(parsedResponse); } catch (e) { - log.error(`Unexpected response from Docker credential provider GET command: "${response}"`); - return reject(new Error("Unexpected response from Docker credential provider GET command")); + const errorMessage = `Unexpected response from Docker credential provider GET command: "${response}"`; + log.error(errorMessage); + return reject(new Error(errorMessage)); } }); diff --git a/src/registry-auth-locator/index.ts b/src/registry-auth-locator/index.ts index bfd4cda81..2109c247e 100644 --- a/src/registry-auth-locator/index.ts +++ b/src/registry-auth-locator/index.ts @@ -9,7 +9,7 @@ import { RegistryAuthLocator } from "./registry-auth-locator"; import { log } from "../logger"; import { AuthConfig } from "../docker/types"; -const DEFAULT_REGISTRY = "https://index.docker.io/v1/"; +const DEFAULT_REGISTRY = "https://index.docker.io"; const dockerConfigLocation = process.env.DOCKER_CONFIG || `${os.homedir()}/.docker`; From 814f7ce381c815247349c426ab9a79f10f8c2376 Mon Sep 17 00:00:00 2001 From: Cristian Greco Date: Fri, 23 Dec 2022 12:16:13 +0000 Subject: [PATCH 2/3] Rename --- src/registry-auth-locator/credential-provider.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/registry-auth-locator/credential-provider.ts b/src/registry-auth-locator/credential-provider.ts index 1d978a99a..9a0bbeaeb 100644 --- a/src/registry-auth-locator/credential-provider.ts +++ b/src/registry-auth-locator/credential-provider.ts @@ -20,7 +20,7 @@ export abstract class CredentialProvider implements RegistryAuthLocator { const credentials = await this.listCredentials(programName); - const resolvedRegistry = Object.keys(credentials).find((credential) => credential.includes(registry)); + const resolvedRegistry = Object.keys(credentials).find((aRegistry) => aRegistry.includes(registry)); if (resolvedRegistry === undefined) { log.debug(`No credential found for registry: "${registry}"`); return undefined; From 28e6beca01b02bbaea4fbe1d81f319c59525210d Mon Sep 17 00:00:00 2001 From: Cristian Greco Date: Fri, 23 Dec 2022 12:17:00 +0000 Subject: [PATCH 3/3] Refactor --- src/registry-auth-locator/credential-provider.ts | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/src/registry-auth-locator/credential-provider.ts b/src/registry-auth-locator/credential-provider.ts index 9a0bbeaeb..0f4298c8d 100644 --- a/src/registry-auth-locator/credential-provider.ts +++ b/src/registry-auth-locator/credential-provider.ts @@ -67,9 +67,7 @@ export abstract class CredentialProvider implements RegistryAuthLocator { sink.on("close", (code) => { if (code !== 0) { - const errorMessage = `An error occurred getting a credential. Exit code: ${code}. Message: ${chunks.join( - "" - )}`; + const errorMessage = `An error occurred getting a credential. Code: ${code}. Message: ${chunks.join("")}`; log.error(errorMessage); return reject(new Error(errorMessage)); }