Skip to content

Commit 2440d8b

Browse files
authored
Merge branch 'main' into build_secrets
2 parents 5833785 + 99a6d46 commit 2440d8b

40 files changed

Lines changed: 3003 additions & 411 deletions

.github/workflows/dev-containers.yml

Lines changed: 38 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -8,13 +8,17 @@ on:
88
branches:
99
- '**'
1010

11+
permissions:
12+
contents: read
13+
packages: read
14+
1115
jobs:
1216
cli:
1317
name: CLI
1418
runs-on: ubuntu-latest
1519
steps:
16-
- uses: actions/checkout@v4
17-
- uses: actions/setup-node@v4
20+
- uses: actions/checkout@v6
21+
- uses: actions/setup-node@v5
1822
with:
1923
node-version: '18.x'
2024
registry-url: 'https://npm.pkg.github.com'
@@ -33,7 +37,7 @@ jobs:
3337
echo "TGZ=devcontainers-cli-${VERSION}.tgz" | tee -a $GITHUB_ENV
3438
echo "TGZ_UPLOAD=devcontainers-cli-${VERSION}-${GITHUB_SHA:0:8}.tgz" | tee -a $GITHUB_ENV
3539
- name: Store TGZ
36-
uses: actions/upload-artifact@v4
40+
uses: actions/upload-artifact@v5
3741
with:
3842
name: ${{ env.TGZ_UPLOAD }}
3943
path: ${{ env.TGZ }}
@@ -62,13 +66,27 @@ jobs:
6266
]
6367
steps:
6468
- name: Checkout
65-
uses: actions/checkout@v4
69+
uses: actions/checkout@v6
6670
- name: Setup Node.js
67-
uses: actions/setup-node@v4
71+
uses: actions/setup-node@v5
6872
with:
6973
node-version: '18.x'
7074
registry-url: 'https://npm.pkg.github.com'
7175
scope: '@microsoft'
76+
- name: Disable containerd image store
77+
run: |
78+
# Workaround for https://github.com/moby/moby/issues/52050
79+
DAEMON_JSON="/etc/docker/daemon.json"
80+
if [ -f "$DAEMON_JSON" ]; then
81+
sudo jq '. + {"features": {"containerd-snapshotter": false}}' "$DAEMON_JSON" \
82+
| sudo tee "${DAEMON_JSON}.tmp" > /dev/null
83+
sudo mv "${DAEMON_JSON}.tmp" "$DAEMON_JSON"
84+
else
85+
echo '{"features": {"containerd-snapshotter": false}}' \
86+
| sudo tee "$DAEMON_JSON" > /dev/null
87+
fi
88+
cat "$DAEMON_JSON"
89+
sudo systemctl restart docker
7290
- name: Tools Info
7391
run: |
7492
docker info
@@ -95,9 +113,9 @@ jobs:
95113
runs-on: ubuntu-latest
96114
steps:
97115
- name: Checkout
98-
uses: actions/checkout@v4
116+
uses: actions/checkout@v6
99117
- name: Setup Node.js
100-
uses: actions/setup-node@v4
118+
uses: actions/setup-node@v5
101119
with:
102120
node-version: '18.x'
103121
registry-url: 'https://npm.pkg.github.com'
@@ -120,9 +138,21 @@ jobs:
120138
FEATURES_TEST__AZURE_REGISTRY_SCOPED_CREDENTIAL: ${{ secrets.FEATURES_TEST__AZURE_REGISTRY_SCOPED_CREDENTIAL }}
121139

122140

141+
install-script:
142+
name: Install Script
143+
strategy:
144+
fail-fast: false
145+
matrix:
146+
os: [ubuntu-latest, macos-latest]
147+
runs-on: ${{ matrix.os }}
148+
steps:
149+
- uses: actions/checkout@v6
150+
- name: Run install.sh tests
151+
run: sh scripts/install.test.sh
152+
123153
tests:
124154
name: Tests
125-
needs: [tests-matrix, features-registry-compatibility]
155+
needs: [tests-matrix, features-registry-compatibility, install-script]
126156
runs-on: ubuntu-latest
127157
steps:
128158
- name: Done

.github/workflows/publish-dev-containers.yml

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -5,14 +5,18 @@ on:
55
tags:
66
- 'v*'
77

8+
permissions:
9+
contents: read
10+
actions: read
11+
812
jobs:
913
main:
1014
runs-on: ubuntu-latest
1115
steps:
1216
- name: Checkout
13-
uses: actions/checkout@v4
17+
uses: actions/checkout@v6
1418
- name: Setup Node.js
15-
uses: actions/setup-node@v4
19+
uses: actions/setup-node@v5
1620
with:
1721
node-version: '18.x'
1822
registry-url: 'https://registry.npmjs.org'
Lines changed: 60 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,60 @@
1+
name: Docker v20 Tests for dockerfile frontend test
2+
3+
on:
4+
push:
5+
branches: ['main', 'directive-syntax-further-changes']
6+
pull_request:
7+
branches: ['main']
8+
9+
permissions:
10+
contents: read
11+
12+
jobs:
13+
test-docker-v20:
14+
name: Docker v20.10 Compatibility
15+
runs-on: ubuntu-22.04
16+
17+
steps:
18+
- uses: actions/checkout@v6
19+
20+
- uses: actions/setup-node@v5
21+
with:
22+
node-version: '18.x'
23+
24+
- name: Install Docker v20.10
25+
run: |
26+
sudo apt-get remove -y docker-ce docker-ce-cli containerd.io || true
27+
sudo apt-get update
28+
sudo apt-get install -y \
29+
ca-certificates \
30+
curl \
31+
gnupg \
32+
lsb-release
33+
sudo mkdir -p /etc/apt/keyrings
34+
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg
35+
echo \
36+
"deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/ubuntu \
37+
$(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
38+
sudo apt-get update
39+
# Pin buildx < 0.31.0 to avoid API version 1.52 incompatibility with Docker 20.10 (max API 1.41)
40+
# See https://github.com/docker/buildx/issues/3654
41+
BUILDX_VERSION=$(apt-cache madison docker-buildx-plugin | awk '{print $3}' | grep -v '^0\.3[1-9]\.' | head -1)
42+
echo "Installing docker-buildx-plugin=$BUILDX_VERSION"
43+
sudo apt-get install -y docker-ce=5:20.10.* docker-ce-cli=5:20.10.* containerd.io docker-buildx-plugin="$BUILDX_VERSION" docker-compose-plugin
44+
sudo systemctl restart docker
45+
46+
- name: Verify Docker version, Install and Test
47+
run: |
48+
# Verify
49+
docker version
50+
DOCKER_VERSION=$(docker version --format '{{.Server.Version}}')
51+
if [[ ! "$DOCKER_VERSION" =~ ^20\.10\. ]]; then
52+
echo "ERROR: Expected Docker v20.10.x but got $DOCKER_VERSION"
53+
exit 1
54+
fi
55+
yarn install --frozen-lockfile
56+
yarn type-check
57+
yarn package
58+
yarn test-matrix --forbid-only src/test/cli.up.test.ts
59+
env:
60+
CI: true
Lines changed: 46 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,46 @@
1+
name: Docker v29 Tests
2+
3+
on:
4+
push:
5+
branches: ['main', 'docker-v29-issue-old']
6+
pull_request:
7+
branches: ['main']
8+
9+
permissions:
10+
contents: read
11+
12+
jobs:
13+
test-docker-v29:
14+
name: Docker v29.0.0 Compatibility
15+
runs-on: ubuntu-latest
16+
17+
steps:
18+
- uses: actions/checkout@v6
19+
20+
- uses: actions/setup-node@v5
21+
with:
22+
node-version: '18.x'
23+
24+
- name: Install Docker v29.0.0
25+
run: |
26+
sudo apt-get remove -y docker-ce docker-ce-cli containerd.io || true
27+
curl -fsSL https://get.docker.com -o get-docker.sh
28+
sudo VERSION=29.0.0 sh get-docker.sh
29+
sudo systemctl restart docker
30+
31+
- name: Verify Docker version, Install and Test
32+
run: |
33+
# Verify
34+
docker version
35+
DOCKER_VERSION=$(docker version --format '{{.Server.Version}}')
36+
if [[ ! "$DOCKER_VERSION" =~ ^29\. ]]; then
37+
echo "ERROR: Expected Docker v29.x but got $DOCKER_VERSION"
38+
exit 1
39+
fi
40+
yarn install --frozen-lockfile
41+
yarn type-check
42+
yarn package
43+
yarn test-matrix --forbid-only src/test/cli.up.test.ts
44+
env:
45+
CI: true
46+

.github/workflows/test-plan-item-validator.yml

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,13 +3,17 @@ on:
33
issues:
44
types: [edited]
55

6+
permissions:
7+
contents: read
8+
issues: write
9+
610
jobs:
711
main:
812
runs-on: ubuntu-latest
913
steps:
1014
- name: Checkout Actions
1115
if: contains(github.event.issue.labels.*.name, 'testplan-item') || contains(github.event.issue.labels.*.name, 'invalid-testplan-item')
12-
uses: actions/checkout@v4
16+
uses: actions/checkout@v6
1317
with:
1418
repository: 'microsoft/vscode-github-triage-actions'
1519
ref: stable

.github/workflows/test-windows.yml

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,10 @@ on:
1111
pull_request:
1212
branches:
1313
- '**'
14+
15+
permissions:
16+
contents: read
17+
1418
jobs:
1519
tests-matrix:
1620
name: Tests Matrix (Windows)
@@ -46,9 +50,9 @@ jobs:
4650
]
4751
steps:
4852
- name: Checkout
49-
uses: actions/checkout@v4
53+
uses: actions/checkout@v6
5054
- name: Setup Node.js
51-
uses: actions/setup-node@v4
55+
uses: actions/setup-node@v5
5256
with:
5357
node-version: '18.x'
5458
registry-url: 'https://npm.pkg.github.com'

CHANGELOG.md

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

33
Notable changes.
44

5+
## February 2026
6+
7+
### [0.83.2]
8+
- Improved logging for image inspect errors. (https://github.com/devcontainers/cli/pull/1152)
9+
10+
### [0.83.1]
11+
- Bump tar from 7.5.6 to 7.5.7. (https://github.com/devcontainers/cli/pull/1140)
12+
13+
### [0.83.0]
14+
- Add install script. (https://github.com/devcontainers/cli/pull/1142)
15+
- Remove request body limit. (https://github.com/devcontainers/cli/pull/1141)
16+
- Add BUILDKIT_INLINE_CACHE for container Feature path. (https://github.com/devcontainers/cli/pull/1135)
17+
18+
## January 2026
19+
20+
### [0.82.0]
21+
- devcontainer commands now use current directory as default workspace folder when not specified (https://github.com/devcontainers/cli/pull/1104)
22+
23+
### [0.81.1]
24+
- Update js-yaml and glob dependencies. (https://github.com/devcontainers/cli/pull/1128)
25+
26+
### [0.81.0]
27+
- Add option to mount a worktree's common folder. (https://github.com/devcontainers/cli/pull/1127)
28+
29+
## December 2025
30+
31+
### [0.80.3]
32+
- Fix: Skip download and injection of `dockerfile:1.4` syntax for Docker Engine versions [>=23.0.0](https://docs.docker.com/engine/release-notes/23.0/#2300)) - `dockerfile:1.4` or a subsequent version is already used by the docker engine package. (https://github.com/devcontainers/cli/pull/1113)
33+
34+
## November 2025
35+
36+
### [0.80.2]
37+
- Fix: Docker container event 'start' dropped deprecated fields in Docker v29.0.0 (https://github.com/devcontainers/cli/pull/1103)
38+
39+
## September 2025
40+
41+
### [0.80.1]
42+
- Fix: debian:latest dropped adduser / addgroup (https://github.com/devcontainers/cli/pull/1060)
43+
544
## July 2025
645

746
### [0.80.0]

README.md

Lines changed: 32 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -22,12 +22,42 @@ This CLI is in active development. Current status:
2222

2323
## Try it out
2424

25-
We'd love for you to try out the dev container CLI and let us know what you think. You can quickly try it out in just a few simple steps, either by installing its npm package or building the CLI repo from sources (see "[Build from sources](#build-from-sources)").
25+
We'd love for you to try out the dev container CLI and let us know what you think. You can quickly try it out in just a few simple steps, either by using the install script, installing its npm package, or building the CLI repo from sources (see "[Build from sources](#build-from-sources)").
2626

27-
To install the npm package you will need Python and C/C++ installed to build one of the dependencies (see, e.g., [here](https://github.com/microsoft/vscode/wiki/How-to-Contribute) for instructions).
27+
### Install script
28+
29+
You can install the CLI with a standalone script that downloads a bundled Node.js runtime, so no pre-installed Node.js is required. It works on Linux and macOS (x64 and arm64):
30+
31+
```bash
32+
curl -fsSL https://raw.githubusercontent.com/devcontainers/cli/main/scripts/install.sh | sh
33+
```
34+
35+
Then add the install location to your PATH:
36+
37+
```bash
38+
export PATH="$HOME/.devcontainers/bin:$PATH"
39+
```
40+
41+
You can also specify a version, a custom install directory, or update/uninstall an existing installation:
42+
43+
```bash
44+
# Install a specific version
45+
sh install.sh --version 0.82.0
46+
47+
# Install to a custom directory
48+
sh install.sh --prefix ~/.local/devcontainers
49+
50+
# Update to latest
51+
sh install.sh --update
52+
53+
# Uninstall
54+
sh install.sh --uninstall
55+
```
2856

2957
### npm install
3058

59+
To install the npm package you will need Python and C/C++ installed to build one of the dependencies (see, e.g., [here](https://github.com/microsoft/vscode/wiki/How-to-Contribute) for instructions).
60+
3161
```bash
3262
npm install -g @devcontainers/cli
3363
```

package.json

Lines changed: 4 additions & 4 deletions
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.80.1",
4+
"version": "0.83.2",
55
"bin": {
66
"devcontainer": "devcontainer.js"
77
},
@@ -61,7 +61,7 @@
6161
"@types/js-yaml": "^4.0.9",
6262
"@types/mocha": "^10.0.10",
6363
"@types/ncp": "^2.0.8",
64-
"@types/node": "^18.19.75",
64+
"@types/node": "^18.19.127",
6565
"@types/pull-stream": "^3.6.7",
6666
"@types/recursive-readdir": "^2.2.4",
6767
"@types/semver": "^7.5.8",
@@ -74,7 +74,7 @@
7474
"@typescript-eslint/parser": "^8.26.0",
7575
"chai": "^4.5.0",
7676
"copyfiles": "^2.4.1",
77-
"esbuild": "^0.25.0",
77+
"esbuild": "^0.27.0",
7878
"eslint": "^8.57.0",
7979
"event-stream": "^4.0.1",
8080
"gulp-eslint": "^6.0.0",
@@ -102,7 +102,7 @@
102102
"semver": "^7.7.1",
103103
"shell-quote": "^1.8.2",
104104
"stream-to-pull-stream": "^1.7.3",
105-
"tar": "^6.2.1",
105+
"tar": "^7.5.4",
106106
"text-table": "^0.2.0",
107107
"vscode-uri": "^3.1.0",
108108
"yargs": "~17.7.2"

0 commit comments

Comments
 (0)