From 2eb7807fa6defbdcb605cd7ce1ab384903e4f166 Mon Sep 17 00:00:00 2001 From: Danielle Maywood Date: Tue, 15 Apr 2025 11:55:39 +0000 Subject: [PATCH 1/5] fix: broken implementation and tests Unfortunately it appears I didn't manually test well enough. I've now fixed how the arguments are forwarded to the `code-server` CLI. I've also fixed any tests that broke due to the change. --- src/code-server/install.sh | 43 +++++++++---------- test/code-server/code-server-auth-none.sh | 2 +- test/code-server/code-server-auth-password.sh | 2 +- test/code-server/code-server-cert.sh | 6 +-- test/code-server/code-server-cert/Dockerfile | 3 ++ .../code-server-socket-with-mode.sh | 7 +-- test/code-server/code-server-socket.sh | 8 ++-- test/code-server/code-server-workspace.sh | 2 +- test/code-server/scenarios.json | 8 ++-- 9 files changed, 38 insertions(+), 43 deletions(-) create mode 100644 test/code-server/code-server-cert/Dockerfile diff --git a/src/code-server/install.sh b/src/code-server/install.sh index af0b767..4cf3650 100644 --- a/src/code-server/install.sh +++ b/src/code-server/install.sh @@ -23,70 +23,67 @@ if [[ -n $WORKSPACE ]]; then CODE_SERVER_WORKSPACE="$WORKSPACE" fi -DISABLE_FLAGS=() +FLAGS=() +FLAGS+=(--auth "$AUTH") +FLAGS+=(--bind-addr "$HOST:$PORT") if [[ "$DISABLEFILEDOWNLOADS" == "true" ]]; then - DISABLE_FLAGS+=(--disable-file-downloads) + FLAGS+=(--disable-file-downloads) fi if [[ "$DISABLEFILEUPLOADS" == "true" ]]; then - DISABLE_FLAGS+=(--disable-file-uploads) + FLAGS+=(--disable-file-uploads) fi if [[ "$DISABLEGETTINGSTARTEDOVERRIDE" == "true" ]]; then - DISABLE_FLAGS+=(--disable-getting-started-override) + FLAGS+=(--disable-getting-started-override) fi if [[ "$DISABLEPROXY" == "true" ]]; then - DISABLE_FLAGS+=(--disable-proxy) + FLAGS+=(--disable-proxy) fi if [[ "$DISABLETELEMETRY" == "true" ]]; then - DISABLE_FLAGS+=(--disable-telemetry) + FLAGS+=(--disable-telemetry) fi if [[ "$DISABLEUPDATECHECK" == "true" ]]; then - DISABLE_FLAGS+=(--disable-update-check) + FLAGS+=(--disable-update-check) fi if [[ "$DISABLEWORKSPACETRUST" == "true" ]]; then - DISABLE_FLAGS+=(--disable-workspace-trust) + FLAGS+=(--disable-workspace-trust) fi -CERT_FLAGS=() - if [[ -n "$CERT" ]]; then - CERT_FLAGS+=(--cert "$CERT") + FLAGS+=(--cert "$CERT") fi if [[ -n "$CERTHOST" ]]; then - CERT_FLAGS+=(--cert-host "$CERTHOST") + FLAGS+=(--cert-host "$CERTHOST") fi if [[ -n "$CERTKEY" ]]; then - CERT_FLAGS+=(--cert-key "$CERTKEY") + FLAGS+=(--cert-key "$CERTKEY") fi -SOCKET_FLAGS=() - if [[ -n "$SOCKET" ]]; then - SOCKET_FLAGS+=(--socket "$SOCKET") + FLAGS+=(--socket "$SOCKET") fi if [[ -n "$SOCKETMODE" ]]; then - SOCKET_FLAGS+=(--socket-mode "$SOCKETMODE") + FLAGS+=(--socket-mode "$SOCKETMODE") fi -cat > /usr/local/bin/code-server-entrypoint \ -<< EOF +cat > /usr/local/bin/code-server-entrypoint < Date: Tue, 15 Apr 2025 12:03:05 +0000 Subject: [PATCH 2/5] test: re-add socket mode check --- test/code-server/code-server-socket.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/test/code-server/code-server-socket.sh b/test/code-server/code-server-socket.sh index 4e100e8..3ef9208 100644 --- a/test/code-server/code-server-socket.sh +++ b/test/code-server/code-server-socket.sh @@ -9,7 +9,7 @@ check "code-server version" code-server --version check "code-server running" pgrep -f 'code-server/lib/node.*/code-server' check "code-server socket" test -S /tmp/code-server.sock -# check "code-server socket-mode" grep '0755' <<< $(stat /tmp/code-server.sock) +check "code-server socket-mode" grep '0775' <<< $(stat /tmp/code-server.sock) # Report results reportResults From 05894ea9f12dad0b6ebba52f05f0ca388395af09 Mon Sep 17 00:00:00 2001 From: Danielle Maywood Date: Tue, 15 Apr 2025 15:03:36 +0000 Subject: [PATCH 3/5] chore: update script --- src/code-server/install.sh | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/src/code-server/install.sh b/src/code-server/install.sh index 4cf3650..265b3db 100644 --- a/src/code-server/install.sh +++ b/src/code-server/install.sh @@ -79,11 +79,13 @@ cat > /usr/local/bin/code-server-entrypoint < Date: Tue, 15 Apr 2025 17:58:58 +0000 Subject: [PATCH 4/5] feat: redirect stdout/stderr to log file --- src/code-server/README.md | 1 + src/code-server/devcontainer-feature.json | 5 +++++ src/code-server/install.sh | 2 +- test/code-server/code-server-log-file.sh | 16 ++++++++++++++++ test/code-server/scenarios.json | 8 ++++++++ test/code-server/test.sh | 3 +++ 6 files changed, 34 insertions(+), 1 deletion(-) create mode 100644 test/code-server/code-server-log-file.sh diff --git a/src/code-server/README.md b/src/code-server/README.md index f819a5c..b24bb47 100644 --- a/src/code-server/README.md +++ b/src/code-server/README.md @@ -28,6 +28,7 @@ VS Code in the browser | disableWorkspaceTrust | Disable Workspace Trust feature. This only affects the current session. | boolean | false | | extensions | Comma-separated list of VS Code extensions to install. Format: 'publisher.extension[@version]' (e.g., 'ms-python.python,ms-azuretools.vscode-docker'). | string | - | | host | The address to bind to for the code-server. Use '0.0.0.0' to listen on all interfaces. | string | 127.0.0.1 | +| logFile | Path to a file to send stdout and stderr logs to from code-server. | string | /tmp/code-server.log | | port | The port to bind to for the code-server. | string | 8080 | | socket | Path to a socket. When specified, host and port will be ignored. | string | - | | socketMode | File mode of the socket when using the socket option. | string | - | diff --git a/src/code-server/devcontainer-feature.json b/src/code-server/devcontainer-feature.json index f23ffbd..abebdcb 100644 --- a/src/code-server/devcontainer-feature.json +++ b/src/code-server/devcontainer-feature.json @@ -70,6 +70,11 @@ "default": "127.0.0.1", "description": "The address to bind to for the code-server. Use '0.0.0.0' to listen on all interfaces." }, + "logFile": { + "type": "string", + "default": "/tmp/code-server.log", + "description": "Path to a file to send stdout and stderr logs to from code-server." + }, "port": { "type": "string", "default": "8080", diff --git a/src/code-server/install.sh b/src/code-server/install.sh index 265b3db..4b55058 100644 --- a/src/code-server/install.sh +++ b/src/code-server/install.sh @@ -84,7 +84,7 @@ if [[ \$(whoami) != "$_REMOTE_USER" ]]; then else $(declare -p FLAGS) - code-server "\${FLAGS[@]}" "$CODE_SERVER_WORKSPACE" + code-server "\${FLAGS[@]}" "$CODE_SERVER_WORKSPACE" >"$LOGFILE" 2>&1 fi EOF diff --git a/test/code-server/code-server-log-file.sh b/test/code-server/code-server-log-file.sh new file mode 100644 index 0000000..bb382d0 --- /dev/null +++ b/test/code-server/code-server-log-file.sh @@ -0,0 +1,16 @@ +#!/bin/bash +set -e + +# Optional: Import test library bundled with the devcontainer CLI +source dev-container-features-test-lib + +# Feature-specific tests +check "code-server version" code-server --version +check "code-server running" pgrep -f 'code-server/lib/node.*/code-server' +check "code-server listening" lsof -i "@0.0.0.0:8080" + +check "code-server log-file" test -f /tmp/code-server-log-file.log +check "code-server log-file content" grep "HTTP server listening on http://127.0.0.1:8080/" < /tmp/code-server-log-file.log + +# Report results +reportResults diff --git a/test/code-server/scenarios.json b/test/code-server/scenarios.json index ba6e03f..4704e50 100644 --- a/test/code-server/scenarios.json +++ b/test/code-server/scenarios.json @@ -160,5 +160,13 @@ "socketMode": "777" } } + }, + "code-server-log-file": { + "image": "mcr.microsoft.com/devcontainers/base:ubuntu", + "features": { + "code-server": { + "logFile": "/tmp/code-server-log-file.log" + } + } } } diff --git a/test/code-server/test.sh b/test/code-server/test.sh index b6fc5e4..4d0e664 100644 --- a/test/code-server/test.sh +++ b/test/code-server/test.sh @@ -9,5 +9,8 @@ check "code-server version" code-server --version check "code-server running" pgrep -f 'code-server/lib/node.*/code-server' check "code-server listening" lsof -i "@127.0.0.1:8080" +check "code-server log-file" test -f /tmp/code-server.log +check "code-server log-file content" grep "HTTP server listening on http://127.0.0.1:8080/" < /tmp/code-server.log + # Report results reportResults From 03b1742b541e484385f742be1607140322d99615 Mon Sep 17 00:00:00 2001 From: Danielle Maywood Date: Wed, 16 Apr 2025 09:25:31 +0000 Subject: [PATCH 5/5] chore: listen to feedback --- src/code-server/install.sh | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/src/code-server/install.sh b/src/code-server/install.sh index 4b55058..c621425 100644 --- a/src/code-server/install.sh +++ b/src/code-server/install.sh @@ -80,12 +80,12 @@ cat > /usr/local/bin/code-server-entrypoint <"$LOGFILE" 2>&1 + exec su $_REMOTE_USER -c /usr/local/bin/code-server-entrypoint fi + +$(declare -p FLAGS) + +code-server "\${FLAGS[@]}" "$CODE_SERVER_WORKSPACE" >"$LOGFILE" 2>&1 EOF chmod +x /usr/local/bin/code-server-entrypoint