Skip to content

Commit 64a71d7

Browse files
authored
Merge branch 'devcontainers:main' into main
2 parents 1df4eac + d00db63 commit 64a71d7

9 files changed

+31
-22
lines changed

CHANGELOG.md

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,14 @@
22

33
Notable changes.
44

5+
## April 2024
6+
7+
### [0.59.0]
8+
- Propagate --cache-from to buildx build. (https://github.com/devcontainers/cli/pull/638)
9+
- Disable cache on feature build when `--build-no-cache` is passed. (https://github.com/devcontainers/cli/pull/790)
10+
- Qualify local image for Podman. (https://github.com/microsoft/vscode-remote-release/issues/9748)
11+
- Stop races docker-compose.devcontainer.containerFeatures file. (https://github.com/devcontainers/cli/issues/801)
12+
513
## March 2024
614

715
### [0.58.0]

ThirdPartyNotices.txt

Lines changed: 6 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -540,7 +540,7 @@ IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
540540

541541
---------------------------------------------------------
542542

543-
tar 6.2.0 - ISC
543+
tar 6.2.1 - ISC
544544
https://github.com/isaacs/node-tar#readme
545545

546546
Copyright (c) Isaac Z. Schlueter and Contributors
@@ -2405,15 +2405,16 @@ CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
24052405

24062406
---------------------------------------------------------
24072407

2408-
word-wrap 1.2.3 - MIT
2408+
word-wrap 1.2.5 - MIT
24092409
https://github.com/jonschlinkert/word-wrap
24102410

2411-
Copyright (c) 2014-2017, Jon Schlinkert
2412-
Copyright (c) 2017, Jon Schlinkert (https://github.com/jonschlinkert)
2411+
Copyright (c) 2014-2016, Jon Schlinkert
2412+
Copyright (c) 2014-2023, Jon Schlinkert
2413+
Copyright (c) 2023, Jon Schlinkert (https://github.com/jonschlinkert)
24132414

24142415
The MIT License (MIT)
24152416

2416-
Copyright (c) 2014-2017, Jon Schlinkert
2417+
Copyright (c) 2014-2016, Jon Schlinkert
24172418

24182419
Permission is hereby granted, free of charge, to any person obtaining a copy
24192420
of this software and associated documentation files (the "Software"), to deal

package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
{
22
"name": "@devcontainers/cli",
33
"description": "Dev Containers CLI",
4-
"version": "0.58.0",
4+
"version": "0.59.0",
55
"bin": {
66
"devcontainer": "devcontainer.js"
77
},

src/spec-node/containerFeatures.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -431,7 +431,7 @@ export async function updateRemoteUserUID(params: DockerResolverParameters, merg
431431
'-f', destDockerfile,
432432
'-t', fixedImageName,
433433
...(platform ? ['--platform', platform] : []),
434-
'--build-arg', `BASE_IMAGE=${imageName}`,
434+
'--build-arg', `BASE_IMAGE=${params.isPodman ? 'localhost/' : ''}${imageName}`, // Podman: https://github.com/microsoft/vscode-remote-release/issues/9748
435435
'--build-arg', `REMOTE_USER=${remoteUser}`,
436436
'--build-arg', `NEW_UID=${await cliHost.getuid!()}`,
437437
'--build-arg', `NEW_GID=${await cliHost.getgid!()}`,

src/spec-node/devContainers.ts

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,7 @@ import { LogLevel, LogDimensions, toErrorText, createCombinedLog, createTerminal
1717
import { dockerComposeCLIConfig } from './dockerCompose';
1818
import { Mount } from '../spec-configuration/containerFeaturesConfiguration';
1919
import { getPackageConfig, PackageConfiguration } from '../spec-utils/product';
20-
import { dockerBuildKitVersion } from '../spec-shutdown/dockerUtils';
20+
import { dockerBuildKitVersion, isPodman } from '../spec-shutdown/dockerUtils';
2121
import { Event } from '../spec-utils/event';
2222

2323

@@ -203,6 +203,7 @@ export async function createDockerParams(options: ProvisionOptions, disposables:
203203
common,
204204
parsedAuthority,
205205
dockerCLI: dockerPath,
206+
isPodman: await isPodman({ exec: cliHost.exec, cmd: dockerPath, env: cliHost.env, output }),
206207
dockerComposeCLI: dockerComposeCLI,
207208
dockerEnv: cliHost.env,
208209
workspaceMountConsistencyDefault: workspaceMountConsistency,

src/spec-node/dockerCompose.ts

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,7 @@ import { Mount, parseMount } from '../spec-configuration/containerFeaturesConfig
1919
import path from 'path';
2020
import { getDevcontainerMetadata, getImageBuildInfoFromDockerfile, getImageBuildInfoFromImage, getImageMetadataFromContainer, ImageBuildInfo, lifecycleCommandOriginMapFromMetadata, mergeConfiguration, MergedDevContainerConfig } from './imageMetadata';
2121
import { ensureDockerfileHasFinalStageName } from './dockerfileUtils';
22+
import { randomUUID } from 'crypto';
2223

2324
const projectLabel = 'com.docker.compose.project';
2425
const serviceLabel = 'com.docker.compose.service';
@@ -483,7 +484,7 @@ async function writeFeaturesComposeOverrideFile(
483484
if (overrideFileHasContents) {
484485
output.write(`Docker Compose override file for creating container:\n${composeOverrideContent}`);
485486

486-
const fileName = `${overrideFilePrefix}-${Date.now()}.yml`;
487+
const fileName = `${overrideFilePrefix}-${Date.now()}-${randomUUID()}.yml`;
487488
const composeFolder = buildCLIHost.path.join(overrideFilePath, 'docker-compose');
488489
const composeOverrideFile = buildCLIHost.path.join(composeFolder, fileName);
489490
output.write(`Writing ${fileName} to ${composeFolder}`);

src/spec-node/utils.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -96,6 +96,7 @@ export interface DockerResolverParameters {
9696
common: ResolverParameters;
9797
parsedAuthority: ParsedAuthority | undefined;
9898
dockerCLI: string;
99+
isPodman: boolean;
99100
dockerComposeCLI: () => Promise<DockerComposeCLI>;
100101
dockerEnv: NodeJS.ProcessEnv;
101102
workspaceMountConsistencyDefault: BindMountConsistency;

src/spec-shutdown/dockerUtils.ts

Lines changed: 4 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -75,6 +75,7 @@ export interface PartialPtyExecParameters {
7575

7676
interface DockerResolverParameters {
7777
dockerCLI: string;
78+
isPodman: boolean;
7879
dockerComposeCLI: () => Promise<DockerComposeCLI>;
7980
dockerEnv: NodeJS.ProcessEnv;
8081
common: {
@@ -167,15 +168,15 @@ export async function listContainers(params: DockerCLIParameters | PartialExecPa
167168
.filter(s => !!s);
168169
}
169170

170-
export async function getEvents(params: DockerCLIParameters | DockerResolverParameters, filters?: Record<string, string[]>) {
171+
export async function getEvents(params: DockerResolverParameters, filters?: Record<string, string[]>) {
171172
const { exec, cmd, args, env, output } = toExecParameters(params);
172173
const filterArgs = [];
173174
for (const filter in filters) {
174175
for (const value of filters[filter]) {
175176
filterArgs.push('--filter', `${filter}=${value}`);
176177
}
177178
}
178-
const format = await isPodman(params) ? 'json' : '{{json .}}'; // https://github.com/containers/libpod/issues/5981
179+
const format = params.isPodman ? 'json' : '{{json .}}'; // https://github.com/containers/libpod/issues/5981
179180
const combinedArgs = (args || []).concat(['events', '--format', format, ...filterArgs]);
180181

181182
const p = await exec({
@@ -228,11 +229,7 @@ export async function dockerCLI(params: DockerCLIParameters | PartialExecParamet
228229
});
229230
}
230231

231-
export async function isPodman(params: DockerCLIParameters | DockerResolverParameters) {
232-
const cliHost = 'cliHost' in params ? params.cliHost : params.common.cliHost;
233-
if (cliHost.platform !== 'linux') {
234-
return false;
235-
}
232+
export async function isPodman(params: PartialExecParameters) {
236233
try {
237234
const { stdout } = await dockerCLI(params, '-v');
238235
return stdout.toString().toLowerCase().indexOf('podman') !== -1;

yarn.lock

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -3402,9 +3402,9 @@ table@^5.2.3:
34023402
string-width "^3.0.0"
34033403

34043404
tar@^6.2.0:
3405-
version "6.2.0"
3406-
resolved "https://registry.yarnpkg.com/tar/-/tar-6.2.0.tgz#b14ce49a79cb1cd23bc9b016302dea5474493f73"
3407-
integrity sha512-/Wo7DcT0u5HUV486xg675HtjNd3BXZ6xDbzsCUZPt5iw8bTQ63bP0Raut3mvro9u+CUyq7YQd8Cx55fsZXxqLQ==
3405+
version "6.2.1"
3406+
resolved "https://registry.yarnpkg.com/tar/-/tar-6.2.1.tgz#717549c541bc3c2af15751bea94b1dd068d4b03a"
3407+
integrity sha512-DZ4yORTwrbTj/7MZYq2w+/ZFdI6OZ/f9SFHR+71gIVUZhOQPHzVCLpvRnPgyaMpfWxxk/4ONva3GQSyNIKRv6A==
34083408
dependencies:
34093409
chownr "^2.0.0"
34103410
fs-minipass "^2.0.0"
@@ -3702,9 +3702,9 @@ which@^2.0.1:
37023702
isexe "^2.0.0"
37033703

37043704
word-wrap@~1.2.3:
3705-
version "1.2.3"
3706-
resolved "https://registry.yarnpkg.com/word-wrap/-/word-wrap-1.2.3.tgz#610636f6b1f703891bd34771ccb17fb93b47079c"
3707-
integrity sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ==
3705+
version "1.2.5"
3706+
resolved "https://registry.yarnpkg.com/word-wrap/-/word-wrap-1.2.5.tgz#d2c45c6dd4fbce621a66f136cbe328afd0410b34"
3707+
integrity sha512-BN22B5eaMMI9UMtjrGd5g5eCYPpCPDUy0FJXbYsaT5zYxjFOckS53SQDE3pWkVoWpHXVb3BrYcEN4Twa55B5cA==
37083708

37093709
37103710
version "6.2.1"

0 commit comments

Comments
 (0)