@metaplay/metaplay-auth 1.4.1 → 1.4.2

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/CHANGELOG.md CHANGED
@@ -1,5 +1,11 @@
1
1
  # Changelog
2
2
 
3
+ ## [1.4.2] - 2024-04-24
4
+
5
+ ### Added
6
+
7
+ * Support deploying docker images directly from the target environment's registry in `deploy-server`.
8
+
3
9
  ## [1.4.1] - 2024-04-24
4
10
 
5
11
  ### Added
package/dist/index.js CHANGED
@@ -7,7 +7,6 @@ import { checkGameServerDeployment } from './src/deployment.js';
7
7
  import { logger, setLogLevel } from './src/logging.js';
8
8
  import { isValidFQDN, executeCommand } from './src/utils.js';
9
9
  import { exit } from 'process';
10
- import { ECRClient, GetAuthorizationTokenCommand } from '@aws-sdk/client-ecr';
11
10
  import { tmpdir } from 'os';
12
11
  import { join } from 'path';
13
12
  import { randomBytes } from 'crypto';
@@ -45,7 +44,7 @@ const program = new Command();
45
44
  program
46
45
  .name('metaplay-auth')
47
46
  .description('Authenticate with Metaplay and get AWS and Kubernetes credentials for game servers.')
48
- .version('1.4.1')
47
+ .version('1.4.2')
49
48
  .option('-d, --debug', 'enable debug output')
50
49
  .hook('preAction', (thisCommand) => {
51
50
  // Handle debug flag for all commands.
@@ -262,36 +261,14 @@ program.command('get-docker-login')
262
261
  const tokens = await loadTokens();
263
262
  const stackApi = new StackAPI(tokens.access_token, options.stackApi);
264
263
  const gameserverId = resolveGameserverId(gameserver, options);
265
- // Fetch AWS credentials from Metaplay cloud
266
- logger.debug('Get AWS credentials from Metaplay');
267
- const credentials = await stackApi.getAwsCredentials(gameserverId);
268
264
  // Get environment info (region is needed for ECR)
269
265
  logger.debug('Get environment info');
270
266
  const environment = await stackApi.getEnvironmentDetails(gameserverId);
271
- const awsRegion = environment.deployment.aws_region;
272
267
  const dockerRepo = environment.deployment.ecr_repo;
273
- // Create ECR client with credentials
274
- logger.debug('Create ECR client');
275
- const client = new ECRClient({
276
- credentials: {
277
- accessKeyId: credentials.AccessKeyId,
278
- secretAccessKey: credentials.SecretAccessKey,
279
- sessionToken: credentials.SessionToken
280
- },
281
- region: awsRegion
282
- });
283
- // Fetch the ECR docker authentication token
284
- logger.debug('Fetch ECR login credentials from AWS');
285
- const command = new GetAuthorizationTokenCommand({});
286
- const response = await client.send(command);
287
- if (!response.authorizationData || response.authorizationData.length === 0 || !response.authorizationData[0].authorizationToken) {
288
- throw new Error('Received an empty authorization token response for ECR repository');
289
- }
290
- // Parse username and password from the response (separated by a ':')
291
- logger.debug('Parse ECR response');
292
- const authorization64 = response.authorizationData[0].authorizationToken;
293
- const authorization = Buffer.from(authorization64, 'base64').toString();
294
- const [username, password] = authorization.split(':');
268
+ // Resolve docker credentials for remote registry
269
+ logger.debug('Get docker credentials');
270
+ const dockerCredentials = await stackApi.getDockerCredentials(gameserverId);
271
+ const { username, password } = dockerCredentials;
295
272
  // Output the docker repo & credentials
296
273
  if (options.format === 'env') {
297
274
  console.log(`export DOCKER_REPO=${dockerRepo}`);
@@ -351,36 +328,12 @@ program.command('push-docker-image')
351
328
  const tokens = await loadTokens();
352
329
  const stackApi = new StackAPI(tokens.access_token, options.stackApi);
353
330
  const gameserverId = resolveGameserverId(gameserver, options);
354
- // Fetch AWS credentials from Metaplay cloud
355
- logger.debug('Get AWS credentials from Metaplay');
356
- const credentials = await stackApi.getAwsCredentials(gameserverId);
357
331
  // Get environment info (region is needed for ECR)
358
332
  logger.debug('Get environment info');
359
333
  const envInfo = await stackApi.getEnvironmentDetails(gameserverId);
360
- const awsRegion = envInfo.deployment.aws_region;
361
- // Create ECR client with credentials
362
- logger.debug('Create ECR client');
363
- const client = new ECRClient({
364
- credentials: {
365
- accessKeyId: credentials.AccessKeyId,
366
- secretAccessKey: credentials.SecretAccessKey,
367
- sessionToken: credentials.SessionToken
368
- },
369
- region: awsRegion
370
- });
371
- // Fetch the ECR docker authentication token
372
- logger.debug('Fetch ECR login credentials from AWS');
373
- const command = new GetAuthorizationTokenCommand({});
374
- const response = await client.send(command);
375
- if (!response.authorizationData || response.authorizationData.length === 0 || !response.authorizationData[0].authorizationToken) {
376
- throw new Error('Received an empty authorization token response for ECR repository');
377
- }
378
- // Parse username and password from the response (separated by a ':')
379
- logger.debug('Parse ECR response');
380
- const authorization64 = response.authorizationData[0].authorizationToken;
381
- const authorization = Buffer.from(authorization64, 'base64').toString();
382
- const [username, password] = authorization.split(':');
383
- const authConfig = { username, password, serveraddress: '' }; // \todo serveraddress value? https://stackoverflow.com/questions/54252777/how-to-push-image-with-dockerode-image-not-pushed-but-no-error
334
+ // Resolve docker credentials for remote registry
335
+ logger.debug('Get docker credentials');
336
+ const dockerCredentials = await stackApi.getDockerCredentials(gameserverId);
384
337
  // Resolve tag from src image
385
338
  if (!imageName) {
386
339
  throw new Error('Must specify a valid docker image name as the image-name argument');
@@ -404,9 +357,10 @@ program.command('push-docker-image')
404
357
  // Push the image
405
358
  logger.debug(`Push image ${dstImageName}`);
406
359
  const dstDockerImage = dockerApi.getImage(dstImageName);
360
+ const authConfig = { username: dockerCredentials.username, password: dockerCredentials.password, serveraddress: dockerCredentials.registryUrl };
407
361
  const pushStream = await dstDockerImage.push({ authconfig: authConfig, tag: options.imageTag });
408
362
  // Follow push progress & wait until completed
409
- logger.debug('Following push stream...');
363
+ logger.debug('Following image push stream...');
410
364
  await new Promise((resolve, reject) => {
411
365
  dockerApi.modem.followProgress(pushStream, (error, result) => {
412
366
  if (error) {
@@ -458,20 +412,72 @@ program.command('deploy-server')
458
412
  throw new Error('Must specify a valid docker image tag as the image-tag argument, usually the SHA of the build');
459
413
  }
460
414
  if (!options.deploymentName) {
461
- throw new Error(`Invalid Helm deployment name '${options.deploymentName}'`);
415
+ throw new Error(`Invalid Helm deployment name '${options.deploymentName}'; specify one with --deployment-name or use the default`);
462
416
  }
417
+ // Fetch Docker credentials for target environment registry
418
+ const dockerCredentials = await stackApi.getDockerCredentials(gameserverId);
463
419
  // Resolve information about docker image
420
+ // const dockerApi = new Docker({
421
+ // host: dockerCredentials.registryUrl,
422
+ // port: 443,
423
+ // protocol: 'https',
424
+ // username: dockerCredentials.username,
425
+ // headers: {
426
+ // Authorization: `Bearer ${dockerCredentials.password}`,
427
+ // Host: dockerCredentials.registryUrl.replace('https://', ''),
428
+ // }
429
+ // })
430
+ const dockerApi = new Docker();
464
431
  const dockerRepo = envInfo.deployment.ecr_repo;
465
432
  const imageName = `${dockerRepo}:${imageTag}`;
466
- logger.debug(`Fetch docker image information for ${imageName}`);
433
+ logger.debug(`Fetch docker image labels for ${imageName}`);
467
434
  let imageLabels;
468
435
  try {
469
- const dockerApi = new Docker();
470
- const dockerImage = dockerApi.getImage(imageName);
471
- imageLabels = (await dockerImage.inspect()).Config.Labels || {};
436
+ const localDockerImage = dockerApi.getImage(imageName);
437
+ imageLabels = (await localDockerImage.inspect()).Config.Labels || {};
472
438
  }
473
439
  catch (err) {
474
- throw new Error(`Unable to fetch metadata for docker image ${imageName}: ${err}`);
440
+ logger.debug(`Failed to resolve docker image metadata from local image ${imageName}: ${err}`);
441
+ }
442
+ // If wasn't able to resolve the images, pull image from the target environment registry & resolve labels
443
+ if (imageLabels === undefined) {
444
+ // Pull the image from remote registry
445
+ try {
446
+ console.log(`Image ${imageName} not found locally -- pulling docker image from target environment registry...`);
447
+ const authConfig = { username: dockerCredentials.username, password: dockerCredentials.password, serveraddress: dockerCredentials.registryUrl };
448
+ const pullStream = await dockerApi.pull(imageName, { authconfig: authConfig });
449
+ // Follow pull progress & wait until completed
450
+ logger.debug('Following image pull stream...');
451
+ await new Promise((resolve, reject) => {
452
+ dockerApi.modem.followProgress(pullStream, (error, result) => {
453
+ if (error) {
454
+ logger.debug('Failed to pull image:', error);
455
+ reject(error);
456
+ }
457
+ else {
458
+ // result contains an array of all the progress objects
459
+ logger.debug('Succesfully finished pulling image');
460
+ resolve(result);
461
+ }
462
+ }, (obj) => {
463
+ // console.log('Progress:', obj)
464
+ // { status: 'Preparing', progressDetail: {}, id: '82730adcaeb0' }
465
+ // { status: 'Layer already exists', progressDetail: {}, id: '7cd701fff13a' }
466
+ });
467
+ });
468
+ }
469
+ catch (err) {
470
+ throw new Error(`Failed to fetch docker image ${imageName} from target environment registry: ${err}`);
471
+ }
472
+ // Resolve the labels
473
+ try {
474
+ logger.debug('Get docker labels again (with pulled image)');
475
+ const localDockerImage = dockerApi.getImage(imageName);
476
+ imageLabels = (await localDockerImage.inspect()).Config.Labels || {};
477
+ }
478
+ catch (err) {
479
+ throw new Error(`Failed to resolve docker image metadata from pulled image ${imageName}: ${err}`);
480
+ }
475
481
  }
476
482
  // Try to resolve SDK version and Helm repo and chart version from the docker labels
477
483
  // \note These only exist for SDK R28 and newer images
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../index.ts"],"names":[],"mappings":"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"}
@@ -2,6 +2,7 @@ import { isValidFQDN, getGameserverAdminUrl } from './utils.js';
2
2
  import { logger } from './logging.js';
3
3
  import { dump } from 'js-yaml';
4
4
  import { getUserinfo } from './auth.js';
5
+ import { ECRClient, GetAuthorizationTokenCommand } from '@aws-sdk/client-ecr';
5
6
  export class StackAPI {
6
7
  accessToken;
7
8
  _stackApiBaseUrl;
@@ -260,5 +261,42 @@ export class StackAPI {
260
261
  }
261
262
  return await response.json();
262
263
  }
264
+ async getDockerCredentials(gameserverId) {
265
+ // Get environment info (for AWS region)
266
+ logger.debug('Get environment info');
267
+ const envInfo = await this.getEnvironmentDetails(gameserverId);
268
+ // Fetch AWS credentials from Metaplay cloud
269
+ logger.debug('Get AWS credentials from Metaplay');
270
+ const awsCredentials = await this.getAwsCredentials(gameserverId);
271
+ // Create ECR client with credentials
272
+ logger.debug('Create ECR client');
273
+ const client = new ECRClient({
274
+ credentials: {
275
+ accessKeyId: awsCredentials.AccessKeyId,
276
+ secretAccessKey: awsCredentials.SecretAccessKey,
277
+ sessionToken: awsCredentials.SessionToken
278
+ },
279
+ region: envInfo.deployment.aws_region
280
+ });
281
+ // Fetch the ECR docker authentication token
282
+ logger.debug('Fetch ECR login credentials from AWS');
283
+ const command = new GetAuthorizationTokenCommand({});
284
+ const response = await client.send(command);
285
+ if (!response.authorizationData || response.authorizationData.length === 0 || !response.authorizationData[0].authorizationToken || !response.authorizationData[0].proxyEndpoint) {
286
+ throw new Error('Received an empty authorization token response for ECR repository');
287
+ }
288
+ // Parse username and password from the response (separated by a ':')
289
+ logger.debug('Parse ECR response');
290
+ const registryUrl = response.authorizationData[0].proxyEndpoint;
291
+ const authorization64 = response.authorizationData[0].authorizationToken;
292
+ const authorization = Buffer.from(authorization64, 'base64').toString();
293
+ const [username, password] = authorization.split(':');
294
+ logger.debug(`ECR: username=${username}, proxyEndpoint=${registryUrl}`);
295
+ return {
296
+ username,
297
+ password,
298
+ registryUrl
299
+ };
300
+ }
263
301
  }
264
302
  //# sourceMappingURL=stackapi.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"stackapi.js","sourceRoot":"","sources":["../../src/stackapi.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"stackapi.js","sourceRoot":"","sources":["../../src/stackapi.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,qBAAqB,EAAE,MAAM,YAAY,CAAA;AAC/D,OAAO,EAAE,MAAM,EAAE,MAAM,cAAc,CAAA;AACrC,OAAO,EAAE,IAAI,EAAE,MAAM,SAAS,CAAA;AAC9B,OAAO,EAAE,WAAW,EAAE,MAAM,WAAW,CAAA;AACvC,OAAO,EAAE,SAAS,EAAE,4BAA4B,EAAE,MAAM,qBAAqB,CAAA;AA4E7E,MAAM,OAAO,QAAQ;IACF,WAAW,CAAQ;IAEnB,gBAAgB,CAAQ;IAEzC,YAAa,WAAmB,EAAE,eAAmC;QACnE,IAAI,WAAW,IAAI,IAAI,EAAE;YACvB,MAAM,IAAI,KAAK,CAAC,8BAA8B,CAAC,CAAA;SAChD;QAED,IAAI,CAAC,WAAW,GAAG,WAAW,CAAA;QAE9B,IAAI,eAAe,EAAE;YACnB,IAAI,CAAC,gBAAgB,GAAG,eAAe,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,CAAA,CAAC,wBAAwB;SACpF;aAAM;YACL,IAAI,CAAC,gBAAgB,GAAG,uCAAuC,CAAA;SAChE;IACH,CAAC;IAED,KAAK,CAAC,iBAAiB,CAAE,EAAgB;QACvC,IAAI,GAAG,GAAG,EAAE,CAAA;QACZ,IAAI,EAAE,CAAC,UAAU,IAAI,IAAI,EAAE;YACzB,IAAI,WAAW,CAAC,EAAE,CAAC,UAAU,CAAC,EAAE;gBAC9B,MAAM,QAAQ,GAAG,qBAAqB,CAAC,EAAE,CAAC,UAAU,CAAC,CAAA;gBACrD,GAAG,GAAG,WAAW,QAAQ,yBAAyB,CAAA;aACnD;iBAAM;gBACL,GAAG,GAAG,GAAG,IAAI,CAAC,gBAAgB,mBAAmB,EAAE,CAAC,UAAU,MAAM,CAAA;aACrE;SACF;aAAM,IAAI,EAAE,CAAC,YAAY,IAAI,IAAI,IAAI,EAAE,CAAC,OAAO,IAAI,IAAI,IAAI,EAAE,CAAC,WAAW,IAAI,IAAI,EAAE;YAClF,GAAG,GAAG,GAAG,IAAI,CAAC,gBAAgB,eAAe,EAAE,CAAC,YAAY,IAAI,EAAE,CAAC,OAAO,IAAI,EAAE,CAAC,WAAW,kBAAkB,CAAA;SAC/G;aAAM;YACL,MAAM,IAAI,KAAK,CAAC,yCAAyC,CAAC,CAAA;SAC3D;QAED,MAAM,CAAC,KAAK,CAAC,gCAAgC,GAAG,KAAK,CAAC,CAAA;QACtD,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,GAAG,EAAE;YAChC,MAAM,EAAE,MAAM;YACd,OAAO,EAAE;gBACP,aAAa,EAAE,UAAU,IAAI,CAAC,WAAW,EAAE;gBAC3C,cAAc,EAAE,kBAAkB;aACnC;SACF,CAAC,CAAA;QAEF,IAAI,QAAQ,CAAC,MAAM,KAAK,GAAG,EAAE;YAC3B,MAAM,IAAI,KAAK,CAAC,oCAAoC,QAAQ,CAAC,UAAU,mBAAmB,QAAQ,CAAC,MAAM,EAAE,CAAC,CAAA;SAC7G;QAED,OAAO,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAA;IAC9B,CAAC;IAED,KAAK,CAAC,aAAa,CAAE,EAAgB;QACnC,IAAI,GAAG,GAAG,EAAE,CAAA;QACZ,IAAI,EAAE,CAAC,UAAU,IAAI,IAAI,EAAE;YACzB,IAAI,WAAW,CAAC,EAAE,CAAC,UAAU,CAAC,EAAE;gBAC9B,MAAM,QAAQ,GAAG,qBAAqB,CAAC,EAAE,CAAC,UAAU,CAAC,CAAA;gBACrD,GAAG,GAAG,WAAW,QAAQ,yBAAyB,CAAA;aACnD;iBAAM;gBACL,GAAG,GAAG,GAAG,IAAI,CAAC,gBAAgB,mBAAmB,EAAE,CAAC,UAAU,MAAM,CAAA;aACrE;SACF;aAAM,IAAI,EAAE,CAAC,YAAY,IAAI,IAAI,IAAI,EAAE,CAAC,OAAO,IAAI,IAAI,IAAI,EAAE,CAAC,WAAW,IAAI,IAAI,EAAE;YAClF,GAAG,GAAG,GAAG,IAAI,CAAC,gBAAgB,eAAe,EAAE,CAAC,YAAY,IAAI,EAAE,CAAC,OAAO,IAAI,EAAE,CAAC,WAAW,kBAAkB,CAAA;SAC/G;aAAM;YACL,MAAM,IAAI,KAAK,CAAC,qCAAqC,CAAC,CAAA;SACvD;QAED,MAAM,CAAC,KAAK,CAAC,2BAA2B,GAAG,KAAK,CAAC,CAAA;QAEjD,IAAI,QAAQ,CAAA;QACZ,IAAI;YACF,QAAQ,GAAG,MAAM,KAAK,CAAC,GAAG,EAAE;gBAC1B,MAAM,EAAE,MAAM;gBACd,OAAO,EAAE;oBACP,aAAa,EAAE,UAAU,IAAI,CAAC,WAAW,EAAE;oBAC3C,cAAc,EAAE,kBAAkB;iBACnC;aACF,CAAC,CAAA;SACH;QAAC,OAAO,KAAU,EAAE;YACnB,MAAM,CAAC,KAAK,CAAC,mCAAmC,GAAG,EAAE,CAAC,CAAA;YACtD,MAAM,CAAC,KAAK,CAAC,sBAAsB,EAAE,KAAK,CAAC,CAAA;YAC3C,IAAI,KAAK,CAAC,KAAK,EAAE,IAAI,KAAK,iCAAiC,EAAE;gBAC3D,MAAM,IAAI,KAAK,CAAC,wEAAwE,GAAG,8DAA8D,CAAC,CAAA;aAC3J;YACD,MAAM,IAAI,KAAK,CAAC,mCAAmC,GAAG,KAAK,KAAK,EAAE,CAAC,CAAA;SACpE;QAED,IAAI,QAAQ,CAAC,MAAM,KAAK,GAAG,EAAE;YAC3B,MAAM,IAAI,KAAK,CAAC,gCAAgC,QAAQ,CAAC,UAAU,EAAE,CAAC,CAAA;SACvE;QAED,OAAO,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAA;IAC9B,CAAC;IAED;;;;;OAKG;IACH,KAAK,CAAC,2BAA2B,CAAE,EAAgB;QACjD,IAAI,GAAG,GAAG,EAAE,CAAA;QACZ,IAAI,MAAM,GAAG,EAAE,CAAA;QACf,MAAM,QAAQ,GAAG,CAAC,+BAA+B,CAAC,CAAA;QAClD,IAAI,EAAE,CAAC,UAAU,IAAI,IAAI,EAAE;YACzB,MAAM,QAAQ,GAAG,qBAAqB,CAAC,EAAE,CAAC,UAAU,CAAC,CAAA;YACrD,GAAG,GAAG,WAAW,QAAQ,6CAA6C,CAAA;YACtE,MAAM,GAAG,EAAE,CAAC,UAAU,CAAA;YACtB,QAAQ,CAAC,IAAI,CAAC,cAAc,EAAE,EAAE,CAAC,UAAU,CAAC,CAAA;SAC7C;aAAM,IAAI,EAAE,CAAC,YAAY,IAAI,IAAI,IAAI,EAAE,CAAC,OAAO,IAAI,IAAI,IAAI,EAAE,CAAC,WAAW,IAAI,IAAI,EAAE;YAClF,GAAG,GAAG,GAAG,IAAI,CAAC,gBAAgB,eAAe,EAAE,CAAC,YAAY,IAAI,EAAE,CAAC,OAAO,IAAI,EAAE,CAAC,WAAW,sCAAsC,CAAA;YAClI,MAAM,GAAG,GAAG,EAAE,CAAC,YAAY,IAAI,EAAE,CAAC,OAAO,IAAI,EAAE,CAAC,WAAW,EAAE,CAAA;YAC7D,QAAQ,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,YAAY,IAAI,EAAE,CAAC,OAAO,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC,CAAA;SACpE;aAAM;YACL,MAAM,IAAI,KAAK,CAAC,mDAAmD,CAAC,CAAA;SACrE;QAED,MAAM,CAAC,KAAK,CAAC,sCAAsC,GAAG,KAAK,CAAC,CAAA;QAE5D,IAAI,QAAQ,CAAA;QACZ,IAAI;YACF,QAAQ,GAAG,MAAM,KAAK,CAAC,GAAG,EAAE;gBAC1B,MAAM,EAAE,MAAM;gBACd,OAAO,EAAE;oBACP,aAAa,EAAE,UAAU,IAAI,CAAC,WAAW,EAAE;oBAC3C,cAAc,EAAE,kBAAkB;iBACnC;aACF,CAAC,CAAA;SACH;QAAC,OAAO,KAAU,EAAE;YACnB,MAAM,CAAC,KAAK,CAAC,mCAAmC,GAAG,EAAE,CAAC,CAAA;YACtD,MAAM,CAAC,KAAK,CAAC,sBAAsB,EAAE,KAAK,CAAC,CAAA;YAC3C,IAAI,KAAK,CAAC,KAAK,EAAE,IAAI,KAAK,iCAAiC,EAAE;gBAC3D,MAAM,IAAI,KAAK,CAAC,wEAAwE,GAAG,8DAA8D,CAAC,CAAA;aAC3J;YACD,MAAM,IAAI,KAAK,CAAC,mCAAmC,GAAG,KAAK,KAAK,EAAE,CAAC,CAAA;SACpE;QAED,IAAI,QAAQ,CAAC,MAAM,KAAK,GAAG,EAAE;YAC3B,MAAM,IAAI,KAAK,CAAC,0CAA0C,QAAQ,CAAC,UAAU,EAAE,CAAC,CAAA;SACjF;QAED,gGAAgG;QAChG,IAAI,kBAAkB,CAAA;QACtB,IAAI;YACF,kBAAkB,GAAG,MAAM,QAAQ,CAAC,IAAI,EAAwB,CAAA;SACjE;QAAC,MAAM;YACN,MAAM,IAAI,KAAK,CAAC,wEAAwE,CAAC,CAAA;SAC1F;QAED,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,OAAO,EAAE;YACpC,MAAM,IAAI,KAAK,CAAC,uDAAuD,CAAC,CAAA;SACzE;QAED,IAAI,SAAS,GAAG,SAAS,CAAA;QACzB,IAAI,IAAI,GAAG,MAAM,CAAA;QAEjB,IAAI;YACF,MAAM,WAAW,GAAG,MAAM,IAAI,CAAC,qBAAqB,CAAC,EAAE,CAAC,CAAA;YACxD,SAAS,GAAG,WAAW,CAAC,UAAU,EAAE,oBAAoB,IAAI,SAAS,CAAA;SACtE;QAAC,OAAO,CAAC,EAAE;YACV,MAAM,CAAC,KAAK,CAAC,mDAAmD,EAAE,CAAC,CAAC,CAAA;SACrE;QAED,IAAI;YACF,MAAM,QAAQ,GAAG,MAAM,WAAW,CAAC,IAAI,CAAC,WAAW,CAAC,CAAA;YACpD,IAAI,GAAG,QAAQ,CAAC,GAAG,IAAI,IAAI,CAAA;SAC5B;QAAC,OAAO,CAAC,EAAE;YACV,MAAM,CAAC,KAAK,CAAC,wCAAwC,EAAE,CAAC,CAAC,CAAA;SAC1D;QAED,MAAM,UAAU,GAAe;YAC7B,UAAU,EAAE,IAAI;YAChB,IAAI,EAAE,QAAQ;YACd,iBAAiB,EAAE,MAAM;YACzB,QAAQ,EAAE;gBACR;oBACE,OAAO,EAAE;wBACP,4BAA4B,EAAE,kBAAkB,CAAC,IAAI,CAAC,OAAO,CAAC,wBAAwB;wBACtF,MAAM,EAAE,kBAAkB,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM;qBAC/C;oBACD,IAAI,EAAE,kBAAkB,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM;iBAC7C;aACF;YACD,QAAQ,EAAE;gBACR;oBACE,OAAO,EAAE;wBACP,OAAO,EAAE,kBAAkB,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM;wBAC/C,SAAS;wBACT,IAAI;qBACL;oBACD,IAAI,EAAE,MAAM;iBACb;aACF;YACD,KAAK,EAAE;gBACL;oBACE,IAAI,EAAE,IAAI;oBACV,IAAI,EAAE;wBACJ,IAAI,EAAE;4BACJ,UAAU,EAAE,sCAAsC;4BAClD,OAAO,EAAE,eAAe;4BACxB,IAAI,EAAE,QAAQ;yBACf;qBACF;iBACF;aACF;SACF,CAAA;QAED,wCAAwC;QACxC,OAAO,IAAI,CAAC,UAAU,CAAC,CAAA;IACzB,CAAC;IAED,KAAK,CAAC,qBAAqB,CAAE,EAAgB;QAC3C,IAAI,GAAG,GAAG,EAAE,CAAA;QACZ,IAAI,EAAE,CAAC,UAAU,IAAI,IAAI,EAAE;YACzB,IAAI,WAAW,CAAC,EAAE,CAAC,UAAU,CAAC,EAAE;gBAC9B,MAAM,QAAQ,GAAG,qBAAqB,CAAC,EAAE,CAAC,UAAU,CAAC,CAAA;gBACrD,GAAG,GAAG,WAAW,QAAQ,6CAA6C,CAAA;aACvE;iBAAM;gBACL,GAAG,GAAG,GAAG,IAAI,CAAC,gBAAgB,mBAAmB,EAAE,CAAC,UAAU,0BAA0B,CAAA;aACzF;SACF;aAAM,IAAI,EAAE,CAAC,YAAY,IAAI,IAAI,IAAI,EAAE,CAAC,OAAO,IAAI,IAAI,IAAI,EAAE,CAAC,WAAW,IAAI,IAAI,EAAE;YAClF,GAAG,GAAG,GAAG,IAAI,CAAC,gBAAgB,eAAe,EAAE,CAAC,YAAY,IAAI,EAAE,CAAC,OAAO,IAAI,EAAE,CAAC,WAAW,sCAAsC,CAAA;SACnI;aAAM;YACL,MAAM,IAAI,KAAK,CAAC,qCAAqC,CAAC,CAAA;SACvD;QAED,MAAM,CAAC,KAAK,CAAC,0CAA0C,GAAG,KAAK,CAAC,CAAA;QAEhE,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,GAAG,EAAE;YAChC,MAAM,EAAE,MAAM;YACd,OAAO,EAAE;gBACP,aAAa,EAAE,UAAU,IAAI,CAAC,WAAW,EAAE;gBAC3C,cAAc,EAAE,kBAAkB;aACnC;SACF,CAAC,CAAA;QAEF,IAAI,QAAQ,CAAC,MAAM,KAAK,GAAG,EAAE;YAC3B,MAAM,IAAI,KAAK,CAAC,8CAA8C,QAAQ,CAAC,UAAU,EAAE,CAAC,CAAA;SACrF;QAED,OAAO,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAA;IAC9B,CAAC;IAED,KAAK,CAAC,qBAAqB,CAAE,EAAgB;QAC3C,IAAI,GAAG,GAAG,EAAE,CAAA;QACZ,IAAI,EAAE,CAAC,UAAU,IAAI,IAAI,EAAE;YACzB,IAAI,WAAW,CAAC,EAAE,CAAC,UAAU,CAAC,EAAE;gBAC9B,MAAM,QAAQ,GAAG,qBAAqB,CAAC,EAAE,CAAC,UAAU,CAAC,CAAA;gBACrD,GAAG,GAAG,WAAW,QAAQ,qBAAqB,CAAA;aAC/C;iBAAM;gBACL,GAAG,GAAG,GAAG,IAAI,CAAC,gBAAgB,mBAAmB,EAAE,CAAC,UAAU,EAAE,CAAA;aACjE;SACF;aAAM,IAAI,EAAE,CAAC,YAAY,IAAI,IAAI,IAAI,EAAE,CAAC,OAAO,IAAI,IAAI,IAAI,EAAE,CAAC,WAAW,IAAI,IAAI,EAAE;YAClF,GAAG,GAAG,GAAG,IAAI,CAAC,gBAAgB,eAAe,EAAE,CAAC,YAAY,IAAI,EAAE,CAAC,OAAO,IAAI,EAAE,CAAC,WAAW,EAAE,CAAA;SAC/F;aAAM;YACL,MAAM,IAAI,KAAK,CAAC,2CAA2C,CAAC,CAAA;SAC7D;QAED,MAAM,CAAC,KAAK,CAAC,oCAAoC,GAAG,KAAK,CAAC,CAAA;QAC1D,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,GAAG,EAAE;YAChC,MAAM,EAAE,KAAK;YACb,OAAO,EAAE;gBACP,aAAa,EAAE,UAAU,IAAI,CAAC,WAAW,EAAE;gBAC3C,cAAc,EAAE,kBAAkB;aACnC;SACF,CAAC,CAAA;QAEF,IAAI,QAAQ,CAAC,MAAM,KAAK,GAAG,EAAE;YAC3B,MAAM,IAAI,KAAK,CAAC,wCAAwC,QAAQ,CAAC,UAAU,EAAE,CAAC,CAAA;SAC/E;QAED,OAAO,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAA;IAC9B,CAAC;IAED,KAAK,CAAC,oBAAoB,CAAE,YAA0B;QACpD,wCAAwC;QACxC,MAAM,CAAC,KAAK,CAAC,sBAAsB,CAAC,CAAA;QACpC,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,qBAAqB,CAAC,YAAY,CAAC,CAAA;QAE9D,4CAA4C;QAC5C,MAAM,CAAC,KAAK,CAAC,mCAAmC,CAAC,CAAA;QACjD,MAAM,cAAc,GAAG,MAAM,IAAI,CAAC,iBAAiB,CAAC,YAAY,CAAC,CAAA;QAEjE,qCAAqC;QACrC,MAAM,CAAC,KAAK,CAAC,mBAAmB,CAAC,CAAA;QACjC,MAAM,MAAM,GAAG,IAAI,SAAS,CAAC;YAC3B,WAAW,EAAE;gBACX,WAAW,EAAE,cAAc,CAAC,WAAW;gBACvC,eAAe,EAAE,cAAc,CAAC,eAAe;gBAC/C,YAAY,EAAE,cAAc,CAAC,YAAY;aAC1C;YACD,MAAM,EAAE,OAAO,CAAC,UAAU,CAAC,UAAU;SACtC,CAAC,CAAA;QAEF,4CAA4C;QAC5C,MAAM,CAAC,KAAK,CAAC,sCAAsC,CAAC,CAAA;QACpD,MAAM,OAAO,GAAG,IAAI,4BAA4B,CAAC,EAAE,CAAC,CAAA;QACpD,MAAM,QAAQ,GAAG,MAAM,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,CAAA;QAC3C,IAAI,CAAC,QAAQ,CAAC,iBAAiB,IAAI,QAAQ,CAAC,iBAAiB,CAAC,MAAM,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,iBAAiB,CAAC,CAAC,CAAC,CAAC,kBAAkB,IAAI,CAAC,QAAQ,CAAC,iBAAiB,CAAC,CAAC,CAAC,CAAC,aAAa,EAAE;YAC/K,MAAM,IAAI,KAAK,CAAC,mEAAmE,CAAC,CAAA;SACrF;QAED,qEAAqE;QACrE,MAAM,CAAC,KAAK,CAAC,oBAAoB,CAAC,CAAA;QAClC,MAAM,WAAW,GAAG,QAAQ,CAAC,iBAAiB,CAAC,CAAC,CAAC,CAAC,aAAa,CAAA;QAC/D,MAAM,eAAe,GAAG,QAAQ,CAAC,iBAAiB,CAAC,CAAC,CAAC,CAAC,kBAAkB,CAAA;QACxE,MAAM,aAAa,GAAG,MAAM,CAAC,IAAI,CAAC,eAAe,EAAE,QAAQ,CAAC,CAAC,QAAQ,EAAE,CAAA;QACvE,MAAM,CAAC,QAAQ,EAAE,QAAQ,CAAC,GAAG,aAAa,CAAC,KAAK,CAAC,GAAG,CAAC,CAAA;QACrD,MAAM,CAAC,KAAK,CAAC,iBAAiB,QAAQ,mBAAmB,WAAW,EAAE,CAAC,CAAA;QAEvE,OAAO;YACL,QAAQ;YACR,QAAQ;YACR,WAAW;SACgB,CAAA;IAC/B,CAAC;CACF"}
package/index.ts CHANGED
@@ -7,7 +7,6 @@ import { checkGameServerDeployment } from './src/deployment.js'
7
7
  import { logger, setLogLevel } from './src/logging.js'
8
8
  import { isValidFQDN, executeCommand } from './src/utils.js'
9
9
  import { exit } from 'process'
10
- import { ECRClient, GetAuthorizationTokenCommand } from '@aws-sdk/client-ecr'
11
10
  import { tmpdir } from 'os'
12
11
  import { join } from 'path'
13
12
  import { randomBytes } from 'crypto'
@@ -45,7 +44,7 @@ const program = new Command()
45
44
  program
46
45
  .name('metaplay-auth')
47
46
  .description('Authenticate with Metaplay and get AWS and Kubernetes credentials for game servers.')
48
- .version('1.4.1')
47
+ .version('1.4.2')
49
48
  .option('-d, --debug', 'enable debug output')
50
49
  .hook('preAction', (thisCommand) => {
51
50
  // Handle debug flag for all commands.
@@ -271,40 +270,15 @@ program.command('get-docker-login')
271
270
  const stackApi = new StackAPI(tokens.access_token, options.stackApi)
272
271
  const gameserverId = resolveGameserverId(gameserver, options)
273
272
 
274
- // Fetch AWS credentials from Metaplay cloud
275
- logger.debug('Get AWS credentials from Metaplay')
276
- const credentials = await stackApi.getAwsCredentials(gameserverId)
277
-
278
273
  // Get environment info (region is needed for ECR)
279
274
  logger.debug('Get environment info')
280
275
  const environment = await stackApi.getEnvironmentDetails(gameserverId)
281
- const awsRegion = environment.deployment.aws_region
282
276
  const dockerRepo = environment.deployment.ecr_repo
283
277
 
284
- // Create ECR client with credentials
285
- logger.debug('Create ECR client')
286
- const client = new ECRClient({
287
- credentials: {
288
- accessKeyId: credentials.AccessKeyId,
289
- secretAccessKey: credentials.SecretAccessKey,
290
- sessionToken: credentials.SessionToken
291
- },
292
- region: awsRegion
293
- })
294
-
295
- // Fetch the ECR docker authentication token
296
- logger.debug('Fetch ECR login credentials from AWS')
297
- const command = new GetAuthorizationTokenCommand({})
298
- const response = await client.send(command)
299
- if (!response.authorizationData || response.authorizationData.length === 0 || !response.authorizationData[0].authorizationToken) {
300
- throw new Error('Received an empty authorization token response for ECR repository')
301
- }
302
-
303
- // Parse username and password from the response (separated by a ':')
304
- logger.debug('Parse ECR response')
305
- const authorization64 = response.authorizationData[0].authorizationToken
306
- const authorization = Buffer.from(authorization64, 'base64').toString()
307
- const [username, password] = authorization.split(':')
278
+ // Resolve docker credentials for remote registry
279
+ logger.debug('Get docker credentials')
280
+ const dockerCredentials = await stackApi.getDockerCredentials(gameserverId)
281
+ const { username, password } = dockerCredentials
308
282
 
309
283
  // Output the docker repo & credentials
310
284
  if (options.format === 'env') {
@@ -367,40 +341,13 @@ program.command('push-docker-image')
367
341
  const stackApi = new StackAPI(tokens.access_token, options.stackApi)
368
342
  const gameserverId = resolveGameserverId(gameserver, options)
369
343
 
370
- // Fetch AWS credentials from Metaplay cloud
371
- logger.debug('Get AWS credentials from Metaplay')
372
- const credentials = await stackApi.getAwsCredentials(gameserverId)
373
-
374
344
  // Get environment info (region is needed for ECR)
375
345
  logger.debug('Get environment info')
376
346
  const envInfo = await stackApi.getEnvironmentDetails(gameserverId)
377
- const awsRegion = envInfo.deployment.aws_region
378
-
379
- // Create ECR client with credentials
380
- logger.debug('Create ECR client')
381
- const client = new ECRClient({
382
- credentials: {
383
- accessKeyId: credentials.AccessKeyId,
384
- secretAccessKey: credentials.SecretAccessKey,
385
- sessionToken: credentials.SessionToken
386
- },
387
- region: awsRegion
388
- })
389
347
 
390
- // Fetch the ECR docker authentication token
391
- logger.debug('Fetch ECR login credentials from AWS')
392
- const command = new GetAuthorizationTokenCommand({})
393
- const response = await client.send(command)
394
- if (!response.authorizationData || response.authorizationData.length === 0 || !response.authorizationData[0].authorizationToken) {
395
- throw new Error('Received an empty authorization token response for ECR repository')
396
- }
397
-
398
- // Parse username and password from the response (separated by a ':')
399
- logger.debug('Parse ECR response')
400
- const authorization64 = response.authorizationData[0].authorizationToken
401
- const authorization = Buffer.from(authorization64, 'base64').toString()
402
- const [username, password] = authorization.split(':')
403
- const authConfig = { username, password, serveraddress: '' } // \todo serveraddress value? https://stackoverflow.com/questions/54252777/how-to-push-image-with-dockerode-image-not-pushed-but-no-error
348
+ // Resolve docker credentials for remote registry
349
+ logger.debug('Get docker credentials')
350
+ const dockerCredentials = await stackApi.getDockerCredentials(gameserverId)
404
351
 
405
352
  // Resolve tag from src image
406
353
  if (!imageName) {
@@ -428,10 +375,11 @@ program.command('push-docker-image')
428
375
  // Push the image
429
376
  logger.debug(`Push image ${dstImageName}`)
430
377
  const dstDockerImage = dockerApi.getImage(dstImageName)
378
+ const authConfig = { username: dockerCredentials.username, password: dockerCredentials.password, serveraddress: dockerCredentials.registryUrl }
431
379
  const pushStream = await dstDockerImage.push({ authconfig: authConfig, tag: options.imageTag })
432
380
 
433
381
  // Follow push progress & wait until completed
434
- logger.debug('Following push stream...')
382
+ logger.debug('Following image push stream...')
435
383
  await new Promise((resolve, reject) => {
436
384
  dockerApi.modem.followProgress(
437
385
  pushStream,
@@ -490,20 +438,76 @@ program.command('deploy-server')
490
438
  }
491
439
 
492
440
  if (!options.deploymentName) {
493
- throw new Error(`Invalid Helm deployment name '${options.deploymentName}'`)
441
+ throw new Error(`Invalid Helm deployment name '${options.deploymentName}'; specify one with --deployment-name or use the default`)
494
442
  }
495
443
 
444
+ // Fetch Docker credentials for target environment registry
445
+ const dockerCredentials = await stackApi.getDockerCredentials(gameserverId)
446
+
496
447
  // Resolve information about docker image
448
+ // const dockerApi = new Docker({
449
+ // host: dockerCredentials.registryUrl,
450
+ // port: 443,
451
+ // protocol: 'https',
452
+ // username: dockerCredentials.username,
453
+ // headers: {
454
+ // Authorization: `Bearer ${dockerCredentials.password}`,
455
+ // Host: dockerCredentials.registryUrl.replace('https://', ''),
456
+ // }
457
+ // })
458
+ const dockerApi = new Docker()
497
459
  const dockerRepo = envInfo.deployment.ecr_repo
498
460
  const imageName = `${dockerRepo}:${imageTag}`
499
- logger.debug(`Fetch docker image information for ${imageName}`)
461
+ logger.debug(`Fetch docker image labels for ${imageName}`)
500
462
  let imageLabels
501
463
  try {
502
- const dockerApi = new Docker()
503
- const dockerImage = dockerApi.getImage(imageName)
504
- imageLabels = (await dockerImage.inspect()).Config.Labels || {}
464
+ const localDockerImage = dockerApi.getImage(imageName)
465
+ imageLabels = (await localDockerImage.inspect()).Config.Labels || {}
505
466
  } catch (err) {
506
- throw new Error(`Unable to fetch metadata for docker image ${imageName}: ${err}`)
467
+ logger.debug(`Failed to resolve docker image metadata from local image ${imageName}: ${err}`)
468
+ }
469
+
470
+ // If wasn't able to resolve the images, pull image from the target environment registry & resolve labels
471
+ if (imageLabels === undefined) {
472
+ // Pull the image from remote registry
473
+ try {
474
+ console.log(`Image ${imageName} not found locally -- pulling docker image from target environment registry...`)
475
+ const authConfig = { username: dockerCredentials.username, password: dockerCredentials.password, serveraddress: dockerCredentials.registryUrl }
476
+ const pullStream = await dockerApi.pull(imageName, { authconfig: authConfig })
477
+
478
+ // Follow pull progress & wait until completed
479
+ logger.debug('Following image pull stream...')
480
+ await new Promise((resolve, reject) => {
481
+ dockerApi.modem.followProgress(
482
+ pullStream,
483
+ (error: Error | null, result: any[]) => {
484
+ if (error) {
485
+ logger.debug('Failed to pull image:', error)
486
+ reject(error)
487
+ } else {
488
+ // result contains an array of all the progress objects
489
+ logger.debug('Succesfully finished pulling image')
490
+ resolve(result)
491
+ }
492
+ },
493
+ (obj: any) => {
494
+ // console.log('Progress:', obj)
495
+ // { status: 'Preparing', progressDetail: {}, id: '82730adcaeb0' }
496
+ // { status: 'Layer already exists', progressDetail: {}, id: '7cd701fff13a' }
497
+ })
498
+ })
499
+ } catch (err) {
500
+ throw new Error(`Failed to fetch docker image ${imageName} from target environment registry: ${err}`)
501
+ }
502
+
503
+ // Resolve the labels
504
+ try {
505
+ logger.debug('Get docker labels again (with pulled image)')
506
+ const localDockerImage = dockerApi.getImage(imageName)
507
+ imageLabels = (await localDockerImage.inspect()).Config.Labels || {}
508
+ } catch (err) {
509
+ throw new Error(`Failed to resolve docker image metadata from pulled image ${imageName}: ${err}`)
510
+ }
507
511
  }
508
512
 
509
513
  // Try to resolve SDK version and Helm repo and chart version from the docker labels
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@metaplay/metaplay-auth",
3
3
  "description": "Utility CLI for authenticating with the Metaplay Auth and making authenticated calls to infrastructure endpoints.",
4
- "version": "1.4.1",
4
+ "version": "1.4.2",
5
5
  "type": "module",
6
6
  "license": "SEE LICENSE IN LICENSE",
7
7
  "homepage": "https://metaplay.io",
package/src/stackapi.ts CHANGED
@@ -2,6 +2,7 @@ import { isValidFQDN, getGameserverAdminUrl } from './utils.js'
2
2
  import { logger } from './logging.js'
3
3
  import { dump } from 'js-yaml'
4
4
  import { getUserinfo } from './auth.js'
5
+ import { ECRClient, GetAuthorizationTokenCommand } from '@aws-sdk/client-ecr'
5
6
 
6
7
  interface AwsCredentialsResponse {
7
8
  AccessKeyId: string
@@ -71,6 +72,12 @@ interface KubeExecCredential {
71
72
  }
72
73
  }
73
74
 
75
+ export interface DockerCredentials {
76
+ username: string
77
+ password: string
78
+ registryUrl: string
79
+ }
80
+
74
81
  export class StackAPI {
75
82
  private readonly accessToken: string
76
83
 
@@ -342,4 +349,47 @@ export class StackAPI {
342
349
 
343
350
  return await response.json()
344
351
  }
352
+
353
+ async getDockerCredentials (gameserverId: GameserverId): Promise<DockerCredentials> {
354
+ // Get environment info (for AWS region)
355
+ logger.debug('Get environment info')
356
+ const envInfo = await this.getEnvironmentDetails(gameserverId)
357
+
358
+ // Fetch AWS credentials from Metaplay cloud
359
+ logger.debug('Get AWS credentials from Metaplay')
360
+ const awsCredentials = await this.getAwsCredentials(gameserverId)
361
+
362
+ // Create ECR client with credentials
363
+ logger.debug('Create ECR client')
364
+ const client = new ECRClient({
365
+ credentials: {
366
+ accessKeyId: awsCredentials.AccessKeyId,
367
+ secretAccessKey: awsCredentials.SecretAccessKey,
368
+ sessionToken: awsCredentials.SessionToken
369
+ },
370
+ region: envInfo.deployment.aws_region
371
+ })
372
+
373
+ // Fetch the ECR docker authentication token
374
+ logger.debug('Fetch ECR login credentials from AWS')
375
+ const command = new GetAuthorizationTokenCommand({})
376
+ const response = await client.send(command)
377
+ if (!response.authorizationData || response.authorizationData.length === 0 || !response.authorizationData[0].authorizationToken || !response.authorizationData[0].proxyEndpoint) {
378
+ throw new Error('Received an empty authorization token response for ECR repository')
379
+ }
380
+
381
+ // Parse username and password from the response (separated by a ':')
382
+ logger.debug('Parse ECR response')
383
+ const registryUrl = response.authorizationData[0].proxyEndpoint
384
+ const authorization64 = response.authorizationData[0].authorizationToken
385
+ const authorization = Buffer.from(authorization64, 'base64').toString()
386
+ const [username, password] = authorization.split(':')
387
+ logger.debug(`ECR: username=${username}, proxyEndpoint=${registryUrl}`)
388
+
389
+ return {
390
+ username,
391
+ password,
392
+ registryUrl
393
+ } satisfies DockerCredentials
394
+ }
345
395
  }