devcontainers / devcontainers/ci
Feature envvars and action `env:` options aren't passed to `docker run`
- Dominant language
- TypeScript
- Stars
- 496
- Forks
- 101
- PR merge metrics
- No merged PRs in 30d
Description
It seems like envvars added by features and via the action's `env:` option aren't passed to `docker run`. VSCode does pass them to `docker run`. This is important for shell init scripts that expect the envvars to exist when the container is started.
Example of VSCode's behavior:
```shell
docker run --sig-proxy=false -a STDOUT -a STDERR \
`# ...` \
-e LANG=en_US.UTF-8 \
-e NVIDIA_DISABLE_REQUIRE=true \
-e CC=gcc \
-e CXX=g++ \
-e CUDAHOSTCXX=g++ \
-e PYTHON_VERSION=3.13 \
--entrypoint /bin/sh vsc-devcontainers-954e198c667c39268cc299cf82b04e5e1818c554baccfa2555269604372fc153-uid \
-c echo Container started
```
`devcontainers/ci` behavior:
```shell
docker run --sig-proxy=false -a STDOUT -a STDERR \
`# ...` \
-e LANG=en_US.UTF-8 \
-e NVIDIA_DISABLE_REQUIRE=true \
-e PYTHON_VERSION=3.13 \
--entrypoint /bin/sh vsc-devcontainers-4ec525fa91aa7d1bf05e336d30063cc11430f50413ea10c3c0d37f8fe16cb41b-uid \
-c echo Container started
```
Digging into the difference between their `devcontainer up` commands, I see VSCode isn't using `--remote-env` anywhere:
```shell
devcontainer up \
--user-data-folder /home/ptaylor/.config/Code/User/globalStorage/ms-vscode-remote.remote-containers/data \
--container-session-data-folder /tmp/devcontainers-5417b12b-bcd8-4a49-ab65-556b2e796a371751917899255 \
--workspace-folder /home/ptaylor/dev/rapids/devcontainers \
--workspace-mount-consistency cached \
--gpu-availability detect \
--id-label devcontainer.local_folder=/home/ptaylor/dev/rapids/devcontainers \
--id-label devcontainer.config_file=/home/ptaylor/dev/rapids/devcontainers/.devcontainer/cuda12.9-pip/devcontainer.json \
--log-level debug \
--log-format json \
--config /home/ptaylor/dev/rapids/devcontainers/.devcontainer/cuda12.9-pip/devcontainer.json \
--default-user-env-probe loginInteractiveShell \
--mount type=volume,source=vscode,target=/vscode,external=true \
--skip-post-create \
--update-remote-user-uid-default on \
--mount-workspace-git-root \
--include-configuration \
--include-merged-configuration
```
However the `devcontainers/ci` action defines all the the envvars with `--remote-env`:
```
devcontainer up \
--workspace-folder /home/runner/_work/devcontainers/devcontainers \
--remote-env GITHUB_OUTPUT=/mnt/github/output \
--remote-env GITHUB_ENV=/mnt/github/env \
--remote-env GITHUB_PATH=/mnt/github/path \
--remote-env GITHUB_STEP_SUMMARY=/mnt/github/step-summary \
--config /home/runner/_work/devcontainers/devcontainers/.devcontainer/cuda12.9-conda/devcontainer.json \
--mount type=bind,source=/home/runner/_work/_temp/_runner_file_commands/set_output_fe6df713-9b89-4697-b75c-89f6f821d7dd,target=/mnt/github/output \
--mount type=bind,source=/home/runner/_work/_temp/_runner_file_commands/set_env_fe6df713-9b89-4697-b75c-89f6f821d7dd,target=/mnt/github/env \
--mount type=bind,source=/home/runner/_work/_temp/_runner_file_commands/add_path_fe6df713-9b89-4697-b75c-89f6f821d7dd,target=/mnt/github/path \
--mount type=bind,source=/home/runner/_work/_temp/_runner_file_commands/step_summary_fe6df713-9b89-4697-b75c-89f6f821d7dd,target=/mnt/github/step-summary
```
What do ` --include-configuration` and/or `--include-merged-configuration` do? Would adding them fix this behavior in the `devcontainers/ci` action?
Contributor guide
Assessment
This issue has not been assessed yet.