Skip to content

Commit a704120

Browse files
fix: install extensions under remote user not root user
1 parent 1379558 commit a704120

3 files changed

Lines changed: 40 additions & 5 deletions

File tree

src/code-server/install.sh

Lines changed: 10 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -9,12 +9,17 @@ fi
99

1010
curl -fsSL https://code-server.dev/install.sh | sh -s -- $CODE_SERVER_INSTALL_ARGS
1111

12-
IFS=',' read -ra extensions <<<"$EXTENSIONS"
12+
if [[ -n "$EXTENSIONS" ]]; then
13+
IFS=',' read -ra extensions <<<"$EXTENSIONS"
1314

14-
for extension in "${extensions[@]}"
15-
do
16-
code-server --install-extension "$extension"
17-
done
15+
for extension in "${extensions[@]}"
16+
do
17+
if ! su "$_REMOTE_USER" -c "code-server --install-extension '$extension'"; then
18+
echo "ERROR: Failed to install extension '$extension' as user '$_REMOTE_USER'" >&2
19+
exit 1
20+
fi
21+
done
22+
fi
1823

1924
CODE_SERVER_WORKSPACE="$_REMOTE_USER_HOME"
2025

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
#!/bin/bash
2+
set -e
3+
4+
# Optional: Import test library bundled with the devcontainer CLI
5+
source dev-container-features-test-lib
6+
7+
# Feature-specific tests
8+
check "code-server version" code-server --version
9+
check "code-server running" pgrep -f 'code-server/lib/node.*/code-server'
10+
check "code-server listening" lsof -i "@0.0.0.0:8080"
11+
12+
# Verify extensions are installed under the remoteUser's home, not root's.
13+
# See: https://github.com/coder/devcontainer-features/issues/18
14+
extensions_dir=/home/vscode/.local/share/code-server/extensions
15+
16+
check "rust-analyzer installed under remoteUser" ls "$extensions_dir"/rust-lang.rust-analyzer-*
17+
check "python installed under remoteUser" ls "$extensions_dir"/ms-python.python-*
18+
check "extensions not installed under root" test ! -d /root/.local/share/code-server/extensions
19+
20+
# Report results
21+
reportResults

test/code-server/scenarios.json

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -265,5 +265,14 @@
265265
"absProxyBasePath": "/user/123/workspace"
266266
}
267267
}
268+
},
269+
"code-server-extensions-remote-user": {
270+
"image": "mcr.microsoft.com/devcontainers/base:ubuntu",
271+
"remoteUser": "vscode",
272+
"features": {
273+
"code-server": {
274+
"extensions": ["rust-lang.rust-analyzer", "ms-python.python"]
275+
}
276+
}
268277
}
269278
}

0 commit comments

Comments
 (0)