testcontainers 11.5.0 → 11.6.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/build/container-runtime/auth/credential-provider.d.ts +0 -1
- package/build/container-runtime/auth/credential-provider.js +1 -29
- package/build/container-runtime/auth/credential-provider.js.map +1 -1
- package/build/container-runtime/utils/pull-image.js +3 -3
- package/build/container-runtime/utils/pull-image.js.map +1 -1
- package/build/version.d.ts +1 -1
- package/build/version.js +1 -1
- package/package.json +7 -7
|
@@ -4,6 +4,5 @@ export declare abstract class CredentialProvider implements RegistryAuthLocator
|
|
|
4
4
|
abstract getName(): string;
|
|
5
5
|
abstract getCredentialProviderName(registry: string, dockerConfig: ContainerRuntimeConfig): string | undefined;
|
|
6
6
|
getAuthConfig(registry: string, dockerConfig: ContainerRuntimeConfig): Promise<AuthConfig | undefined>;
|
|
7
|
-
private listCredentials;
|
|
8
7
|
private runCredentialProvider;
|
|
9
8
|
}
|
|
@@ -3,7 +3,6 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
3
3
|
exports.CredentialProvider = void 0;
|
|
4
4
|
const child_process_1 = require("child_process");
|
|
5
5
|
const common_1 = require("../../common");
|
|
6
|
-
const registry_matches_1 = require("./registry-matches");
|
|
7
6
|
class CredentialProvider {
|
|
8
7
|
async getAuthConfig(registry, dockerConfig) {
|
|
9
8
|
const credentialProviderName = this.getCredentialProviderName(registry, dockerConfig);
|
|
@@ -12,40 +11,13 @@ class CredentialProvider {
|
|
|
12
11
|
}
|
|
13
12
|
const programName = `docker-credential-${credentialProviderName}`;
|
|
14
13
|
common_1.log.debug(`Executing Docker credential provider "${programName}"`);
|
|
15
|
-
const credentials = await this.listCredentials(programName);
|
|
16
|
-
const credentialForRegistry = Object.keys(credentials).find((aRegistry) => (0, registry_matches_1.registryMatches)(aRegistry, registry));
|
|
17
|
-
if (!credentialForRegistry) {
|
|
18
|
-
common_1.log.debug(`No credential found for registry "${registry}"`);
|
|
19
|
-
return undefined;
|
|
20
|
-
}
|
|
21
14
|
const response = await this.runCredentialProvider(registry, programName);
|
|
22
15
|
return {
|
|
23
16
|
username: response.Username,
|
|
24
17
|
password: response.Secret,
|
|
25
|
-
registryAddress: response.ServerURL ??
|
|
18
|
+
registryAddress: response.ServerURL ?? registry,
|
|
26
19
|
};
|
|
27
20
|
}
|
|
28
|
-
listCredentials(providerName) {
|
|
29
|
-
return new Promise((resolve, reject) => {
|
|
30
|
-
(0, child_process_1.exec)(`${providerName} list`, (err, stdout, stderr) => {
|
|
31
|
-
if (err) {
|
|
32
|
-
if (stderr === "list is unimplemented\n") {
|
|
33
|
-
return resolve({});
|
|
34
|
-
}
|
|
35
|
-
common_1.log.error(`An error occurred listing credentials: ${err}`);
|
|
36
|
-
return reject(new Error("An error occurred listing credentials"));
|
|
37
|
-
}
|
|
38
|
-
try {
|
|
39
|
-
const response = JSON.parse(stdout);
|
|
40
|
-
return resolve(response);
|
|
41
|
-
}
|
|
42
|
-
catch (e) {
|
|
43
|
-
common_1.log.error(`Unexpected response from Docker credential provider LIST command: "${stdout}"`);
|
|
44
|
-
return reject(new Error("Unexpected response from Docker credential provider LIST command"));
|
|
45
|
-
}
|
|
46
|
-
});
|
|
47
|
-
});
|
|
48
|
-
}
|
|
49
21
|
runCredentialProvider(registry, providerName) {
|
|
50
22
|
return new Promise((resolve, reject) => {
|
|
51
23
|
const sink = (0, child_process_1.spawn)(providerName, ["get"]);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"credential-provider.js","sourceRoot":"","sources":["../../../src/container-runtime/auth/credential-provider.ts"],"names":[],"mappings":";;;AAAA,
|
|
1
|
+
{"version":3,"file":"credential-provider.js","sourceRoot":"","sources":["../../../src/container-runtime/auth/credential-provider.ts"],"names":[],"mappings":";;;AAAA,iDAAsC;AACtC,yCAAmC;AAInC,MAAsB,kBAAkB;IAKtC,KAAK,CAAC,aAAa,CAAC,QAAgB,EAAE,YAAoC;QACxE,MAAM,sBAAsB,GAAG,IAAI,CAAC,yBAAyB,CAAC,QAAQ,EAAE,YAAY,CAAC,CAAC;QACtF,IAAI,CAAC,sBAAsB,EAAE,CAAC;YAC5B,OAAO,SAAS,CAAC;QACnB,CAAC;QAED,MAAM,WAAW,GAAG,qBAAqB,sBAAsB,EAAE,CAAC;QAClE,YAAG,CAAC,KAAK,CAAC,yCAAyC,WAAW,GAAG,CAAC,CAAC;QAEnE,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,qBAAqB,CAAC,QAAQ,EAAE,WAAW,CAAC,CAAC;QAEzE,OAAO;YACL,QAAQ,EAAE,QAAQ,CAAC,QAAQ;YAC3B,QAAQ,EAAE,QAAQ,CAAC,MAAM;YACzB,eAAe,EAAE,QAAQ,CAAC,SAAS,IAAI,QAAQ;SAChD,CAAC;IACJ,CAAC;IAEO,qBAAqB,CAAC,QAAgB,EAAE,YAAoB;QAClE,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;YACrC,MAAM,IAAI,GAAG,IAAA,qBAAK,EAAC,YAAY,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC;YAE1C,MAAM,MAAM,GAAa,EAAE,CAAC;YAC5B,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,MAAM,EAAE,CAAC,KAAK,EAAE,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC;YAEtD,IAAI,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC,IAAI,EAAE,EAAE;gBACxB,IAAI,IAAI,KAAK,CAAC,EAAE,CAAC;oBACf,YAAG,CAAC,KAAK,CAAC,2CAA2C,IAAI,EAAE,CAAC,CAAC;oBAC7D,OAAO,MAAM,CAAC,IAAI,KAAK,CAAC,wCAAwC,CAAC,CAAC,CAAC;gBACrE,CAAC;gBAED,MAAM,QAAQ,GAAG,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;gBACjC,IAAI,CAAC;oBACH,MAAM,cAAc,GAAG,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;oBAC5C,OAAO,OAAO,CAAC,cAAc,CAAC,CAAC;gBACjC,CAAC;gBAAC,OAAO,CAAC,EAAE,CAAC;oBACX,YAAG,CAAC,KAAK,CAAC,qEAAqE,QAAQ,GAAG,CAAC,CAAC;oBAC5F,OAAO,MAAM,CAAC,IAAI,KAAK,CAAC,iEAAiE,CAAC,CAAC,CAAC;gBAC9F,CAAC;YACH,CAAC,CAAC,CAAC;YAEH,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,QAAQ,IAAI,CAAC,CAAC;YAClC,IAAI,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC;QACnB,CAAC,CAAC,CAAC;IACL,CAAC;CACF;AAlDD,gDAkDC"}
|
|
@@ -11,10 +11,10 @@ const image_exists_1 = require("./image-exists");
|
|
|
11
11
|
const pullImage = async (dockerode, indexServerAddress, options) => {
|
|
12
12
|
try {
|
|
13
13
|
if (!options.force && (await (0, image_exists_1.imageExists)(dockerode, options.imageName))) {
|
|
14
|
-
common_1.log.debug(`Not pulling image "${options.imageName}" as it already exists`);
|
|
14
|
+
common_1.log.debug(`Not pulling image "${options.imageName.string}" as it already exists`);
|
|
15
15
|
return;
|
|
16
16
|
}
|
|
17
|
-
common_1.log.info(`Pulling image "${options.imageName}"...`);
|
|
17
|
+
common_1.log.info(`Pulling image "${options.imageName.string}"...`);
|
|
18
18
|
const authconfig = await (0, get_auth_config_1.getAuthConfig)(options.imageName.registry ?? indexServerAddress);
|
|
19
19
|
const stream = await dockerode.pull(options.imageName.string, { authconfig });
|
|
20
20
|
return new Promise((resolve) => {
|
|
@@ -27,7 +27,7 @@ const pullImage = async (dockerode, indexServerAddress, options) => {
|
|
|
27
27
|
});
|
|
28
28
|
}
|
|
29
29
|
catch (err) {
|
|
30
|
-
common_1.log.error(`Failed to pull image "${options.imageName}": ${err}`);
|
|
30
|
+
common_1.log.error(`Failed to pull image "${options.imageName.string}": ${err}`);
|
|
31
31
|
throw err;
|
|
32
32
|
}
|
|
33
33
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"pull-image.js","sourceRoot":"","sources":["../../../src/container-runtime/utils/pull-image.ts"],"names":[],"mappings":";;;;;;AAAA,oDAA4B;AAE5B,yCAA4C;AAC5C,6DAAwD;AAExD,iDAA6C;AAOtC,MAAM,SAAS,GAAG,KAAK,EAC5B,SAAoB,EACpB,kBAA0B,EAC1B,OAAyB,EACV,EAAE;IACjB,IAAI,CAAC;QACH,IAAI,CAAC,OAAO,CAAC,KAAK,IAAI,CAAC,MAAM,IAAA,0BAAW,EAAC,SAAS,EAAE,OAAO,CAAC,SAAS,CAAC,CAAC,EAAE,CAAC;YACxE,YAAG,CAAC,KAAK,CAAC,sBAAsB,OAAO,CAAC,SAAS,wBAAwB,CAAC,CAAC;
|
|
1
|
+
{"version":3,"file":"pull-image.js","sourceRoot":"","sources":["../../../src/container-runtime/utils/pull-image.ts"],"names":[],"mappings":";;;;;;AAAA,oDAA4B;AAE5B,yCAA4C;AAC5C,6DAAwD;AAExD,iDAA6C;AAOtC,MAAM,SAAS,GAAG,KAAK,EAC5B,SAAoB,EACpB,kBAA0B,EAC1B,OAAyB,EACV,EAAE;IACjB,IAAI,CAAC;QACH,IAAI,CAAC,OAAO,CAAC,KAAK,IAAI,CAAC,MAAM,IAAA,0BAAW,EAAC,SAAS,EAAE,OAAO,CAAC,SAAS,CAAC,CAAC,EAAE,CAAC;YACxE,YAAG,CAAC,KAAK,CAAC,sBAAsB,OAAO,CAAC,SAAS,CAAC,MAAM,wBAAwB,CAAC,CAAC;YAClF,OAAO;QACT,CAAC;QAED,YAAG,CAAC,IAAI,CAAC,kBAAkB,OAAO,CAAC,SAAS,CAAC,MAAM,MAAM,CAAC,CAAC;QAC3D,MAAM,UAAU,GAAG,MAAM,IAAA,+BAAa,EAAC,OAAO,CAAC,SAAS,CAAC,QAAQ,IAAI,kBAAkB,CAAC,CAAC;QACzF,MAAM,MAAM,GAAG,MAAM,SAAS,CAAC,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,MAAM,EAAE,EAAE,UAAU,EAAE,CAAC,CAAC;QAC9E,OAAO,IAAI,OAAO,CAAO,CAAC,OAAO,EAAE,EAAE;YACnC,IAAA,gBAAM,EAAC,MAAM,CAAC,CAAC,EAAE,CAAC,MAAM,EAAE,CAAC,IAAI,EAAE,EAAE;gBACjC,IAAI,gBAAO,CAAC,OAAO,EAAE,EAAE,CAAC;oBACtB,gBAAO,CAAC,KAAK,CAAC,IAAI,EAAE,EAAE,SAAS,EAAE,OAAO,CAAC,SAAS,CAAC,MAAM,EAAE,CAAC,CAAC;gBAC/D,CAAC;YACH,CAAC,CAAC,CAAC;YACH,MAAM,CAAC,EAAE,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;QAC5B,CAAC,CAAC,CAAC;IACL,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,YAAG,CAAC,KAAK,CAAC,yBAAyB,OAAO,CAAC,SAAS,CAAC,MAAM,MAAM,GAAG,EAAE,CAAC,CAAC;QACxE,MAAM,GAAG,CAAC;IACZ,CAAC;AACH,CAAC,CAAC;AA1BW,QAAA,SAAS,aA0BpB"}
|
package/build/version.d.ts
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
export declare const LIB_VERSION = "11.
|
|
1
|
+
export declare const LIB_VERSION = "11.6.0";
|
package/build/version.js
CHANGED
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "testcontainers",
|
|
3
|
-
"version": "11.
|
|
3
|
+
"version": "11.6.0",
|
|
4
4
|
"author": "Cristian Greco",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"keywords": [
|
|
@@ -31,20 +31,20 @@
|
|
|
31
31
|
},
|
|
32
32
|
"dependencies": {
|
|
33
33
|
"@balena/dockerignore": "^1.0.2",
|
|
34
|
-
"@types/dockerode": "^3.3.
|
|
34
|
+
"@types/dockerode": "^3.3.43",
|
|
35
35
|
"archiver": "^7.0.1",
|
|
36
36
|
"async-lock": "^1.4.1",
|
|
37
37
|
"byline": "^5.0.0",
|
|
38
|
-
"debug": "^4.4.
|
|
39
|
-
"docker-compose": "^1.
|
|
40
|
-
"dockerode": "^4.0.
|
|
38
|
+
"debug": "^4.4.3",
|
|
39
|
+
"docker-compose": "^1.3.0",
|
|
40
|
+
"dockerode": "^4.0.8",
|
|
41
41
|
"get-port": "^7.1.0",
|
|
42
42
|
"proper-lockfile": "^4.1.2",
|
|
43
43
|
"properties-reader": "^2.3.0",
|
|
44
44
|
"ssh-remote-port-forward": "^1.0.4",
|
|
45
45
|
"tar-fs": "^3.1.0",
|
|
46
|
-
"tmp": "^0.2.
|
|
47
|
-
"undici": "^7.
|
|
46
|
+
"tmp": "^0.2.5",
|
|
47
|
+
"undici": "^7.16.0"
|
|
48
48
|
},
|
|
49
49
|
"devDependencies": {
|
|
50
50
|
"@types/archiver": "^6.0.3",
|