Skip to content

Commit 50ac696

Browse files
committed
Add diagnostic logging to updateUID for CI investigation
1 parent 3f45f21 commit 50ac696

File tree

1 file changed

+20
-2
lines changed

1 file changed

+20
-2
lines changed

src/spec-node/containerFeatures.ts

Lines changed: 20 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -420,12 +420,13 @@ function getFeatureEnvVariables(f: Feature) {
420420

421421
export async function getRemoteUserUIDUpdateDetails(params: DockerResolverParameters, mergedConfig: MergedDevContainerConfig, imageName: string, imageDetails: () => Promise<ImageDetails>, runArgsUser: string | undefined) {
422422
const { common } = params;
423-
const { cliHost } = common;
423+
const { cliHost, output } = common;
424424
const { updateRemoteUserUID } = mergedConfig;
425425
if (params.updateRemoteUserUIDDefault === 'never' || !(typeof updateRemoteUserUID === 'boolean' ? updateRemoteUserUID : params.updateRemoteUserUIDDefault === 'on') || !(cliHost.platform === 'linux' || params.updateRemoteUserUIDOnMacOS && cliHost.platform === 'darwin')) {
426426
return null;
427427
}
428428
const details = await imageDetails();
429+
output.write(`updateUID: image=${imageName} Os=${details.Os} Architecture=${details.Architecture} Variant=${details.Variant || '(none)'}`, LogLevel.Info);
429430
const imageUser = details.Config.User || 'root';
430431
const remoteUser = mergedConfig.remoteUser || runArgsUser || imageUser;
431432
if (remoteUser === 'root' || /^\d+$/.test(remoteUser)) {
@@ -434,11 +435,13 @@ export async function getRemoteUserUIDUpdateDetails(params: DockerResolverParame
434435
const folderImageName = getFolderImageName(common);
435436
const fixedImageName = `${imageName.startsWith(folderImageName) ? imageName : folderImageName}-uid`;
436437

438+
const platform = [details.Os, details.Architecture, details.Variant].filter(Boolean).join('/');
439+
output.write(`updateUID: remoteUser=${remoteUser} imageUser=${imageUser} platform=${platform}`, LogLevel.Info);
437440
return {
438441
imageName: fixedImageName,
439442
remoteUser,
440443
imageUser,
441-
platform: [details.Os, details.Architecture, details.Variant].filter(Boolean).join('/')
444+
platform,
442445
};
443446
}
444447

@@ -451,6 +454,20 @@ export async function updateRemoteUserUID(params: DockerResolverParameters, merg
451454
return imageName;
452455
}
453456
const { imageName: fixedImageName, remoteUser, imageUser, platform } = updateDetails;
457+
const { output } = common;
458+
459+
try {
460+
const infoResult = await dockerCLI(params, 'info', '--format', '{{.Driver}} / containerd: {{.DriverStatus}}');
461+
output.write(`updateUID: docker info: ${infoResult.stdout.toString().trim()}`, LogLevel.Info);
462+
} catch (err) {
463+
output.write(`updateUID: docker info failed: ${err}`, LogLevel.Warning);
464+
}
465+
try {
466+
const inspectResult = await dockerCLI(params, 'inspect', '--type', 'image', imageName);
467+
output.write(`updateUID: docker inspect ${imageName}: ${inspectResult.stdout.toString().trim()}`, LogLevel.Info);
468+
} catch (err) {
469+
output.write(`updateUID: docker inspect failed: ${err}`, LogLevel.Warning);
470+
}
454471

455472
const dockerfileName = 'updateUID.Dockerfile';
456473
const srcDockerfile = path.join(common.extensionPath, 'scripts', dockerfileName);
@@ -474,6 +491,7 @@ export async function updateRemoteUserUID(params: DockerResolverParameters, merg
474491
'--build-arg', `IMAGE_USER=${imageUser}`,
475492
emptyFolder,
476493
];
494+
output.write(`updateUID: docker ${args.join(' ')}`, LogLevel.Info);
477495
if (params.isTTY) {
478496
await dockerPtyCLI(params, ...args);
479497
} else {

0 commit comments

Comments
 (0)