Skip to content

Commit de26f3b

Browse files
committed
Added BUILDKIT_INLINE_CACHE for containerFeature path
1 parent 7d2643a commit de26f3b

3 files changed

Lines changed: 15 additions & 3 deletions

File tree

src/spec-node/containerFeatures.ts

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@ import { LogLevel, makeLog } from '../spec-utils/log';
1111
import { FeaturesConfig, getContainerFeaturesBaseDockerFile, getFeatureInstallWrapperScript, getFeatureLayers, getFeatureMainValue, getFeatureValueObject, generateFeaturesConfig, Feature, generateContainerEnvs } from '../spec-configuration/containerFeaturesConfiguration';
1212
import { readLocalFile } from '../spec-utils/pfs';
1313
import { includeAllConfiguredFeatures } from '../spec-utils/product';
14-
import { createFeaturesTempFolder, DockerResolverParameters, getCacheFolder, getFolderImageName, getEmptyContextFolder, SubstitutedConfig } from './utils';
14+
import { createFeaturesTempFolder, DockerResolverParameters, getCacheFolder, getFolderImageName, getEmptyContextFolder, SubstitutedConfig, isBuildxCacheToInline } from './utils';
1515
import { isEarlierVersion, parseVersion, runCommandNoPty } from '../spec-common/commonUtils';
1616
import { getDevcontainerMetadata, getDevcontainerMetadataLabel, getImageBuildInfoFromImage, ImageBuildInfo, ImageMetadataEntry, imageMetadataLabel, MergedDevContainerConfig } from './imageMetadata';
1717
import { supportsBuildContexts } from './dockerfileUtils';
@@ -85,6 +85,9 @@ export async function extendImage(params: DockerResolverParameters, config: Subs
8585
if (params.buildxCacheTo) {
8686
args.push('--cache-to', params.buildxCacheTo);
8787
}
88+
if (!isBuildxCacheToInline(params.buildxCacheTo)) {
89+
args.push('--build-arg', 'BUILDKIT_INLINE_CACHE=1');
90+
}
8891
if (!params.buildNoCache) {
8992
params.additionalCacheFroms.forEach(cacheFrom => args.push('--cache-from', cacheFrom));
9093
}

src/spec-node/singleContainer.ts

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@
44
*--------------------------------------------------------------------------------------------*/
55

66

7-
import { createContainerProperties, startEventSeen, ResolverResult, getTunnelInformation, getDockerfilePath, getDockerContextPath, DockerResolverParameters, isDockerFileConfig, uriToWSLFsPath, WorkspaceConfiguration, getFolderImageName, inspectDockerImage, logUMask, SubstitutedConfig, checkDockerSupportForGPU, isBuildKitImagePolicyError } from './utils';
7+
import { createContainerProperties, startEventSeen, ResolverResult, getTunnelInformation, getDockerfilePath, getDockerContextPath, DockerResolverParameters, isDockerFileConfig, uriToWSLFsPath, WorkspaceConfiguration, getFolderImageName, inspectDockerImage, logUMask, SubstitutedConfig, checkDockerSupportForGPU, isBuildKitImagePolicyError, isBuildxCacheToInline } from './utils';
88
import { ContainerProperties, setupInContainer, ResolverProgress, ResolverParameters } from '../spec-common/injectHeadless';
99
import { ContainerError, toErrorText } from '../spec-common/errors';
1010
import { ContainerDetails, listContainers, DockerCLIParameters, inspectContainers, dockerCLI, dockerPtyCLI, toPtyExecParameters, ImageDetails, toExecParameters, removeContainer } from '../spec-shutdown/dockerUtils';
@@ -209,7 +209,9 @@ async function buildAndExtendImage(buildParams: DockerResolverParameters, config
209209
if (buildParams.buildxCacheTo) {
210210
args.push('--cache-to', buildParams.buildxCacheTo);
211211
}
212-
args.push('--build-arg', 'BUILDKIT_INLINE_CACHE=1');
212+
if (!isBuildxCacheToInline(buildParams.buildxCacheTo)) {
213+
args.push('--build-arg', 'BUILDKIT_INLINE_CACHE=1');
214+
}
213215
} else {
214216
args.push('build');
215217
}

src/spec-node/utils.ts

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -93,6 +93,13 @@ export async function logUMask(params: DockerResolverParameters): Promise<string
9393
}
9494
}
9595

96+
export function isBuildxCacheToInline(buildxCacheTo: string | undefined): boolean {
97+
if (!buildxCacheTo) {
98+
return false;
99+
}
100+
return /type\s*=\s*inline/i.test(buildxCacheTo);
101+
}
102+
96103
export type ParsedAuthority = DevContainerAuthority;
97104

98105
export type UpdateRemoteUserUIDDefault = 'never' | 'on' | 'off';

0 commit comments

Comments
 (0)