mirror of
https://github.com/coder/coder.git
synced 2026-10-29 17:44:33 +08:00
fix(agent/agentcontainers): correct definition of remoteEnv (#16845)
`devcontainer.metadata` is apparently an array, not an object. Missed
this first time round!
```
error= get container env info:
github.com/coder/coder/v2/agent/reconnectingpty.(*Server).handleConn
/home/runner/work/coder/coder/agent/reconnectingpty/server.go:193
- read devcontainer remoteEnv:
github.com/coder/coder/v2/agent/agentcontainers.EnvInfo
/home/runner/work/coder/coder/agent/agentcontainers/containers_dockercli.go:119
- unmarshal devcontainer.metadata:
github.com/coder/coder/v2/agent/agentcontainers.devcontainerEnv
/home/runner/work/coder/coder/agent/agentcontainers/containers_dockercli.go:189
- json: cannot unmarshal array into Go value of type struct { RemoteEnv map[string]string "json:\"remoteEnv\"" }
```
This commit is contained in:
@@ -182,17 +182,18 @@ func devcontainerEnv(ctx context.Context, execer agentexec.Execer, container str
|
||||
if !ok {
|
||||
return nil, nil
|
||||
}
|
||||
meta := struct {
|
||||
RemoteEnv map[string]string `json:"remoteEnv"`
|
||||
}{}
|
||||
|
||||
meta := make([]DevContainerMeta, 0)
|
||||
if err := json.Unmarshal([]byte(rawMeta), &meta); err != nil {
|
||||
return nil, xerrors.Errorf("unmarshal devcontainer.metadata: %w", err)
|
||||
}
|
||||
|
||||
// The environment variables are stored in the `remoteEnv` key.
|
||||
env := make([]string, 0, len(meta.RemoteEnv))
|
||||
for k, v := range meta.RemoteEnv {
|
||||
env = append(env, fmt.Sprintf("%s=%s", k, v))
|
||||
env := make([]string, 0)
|
||||
for _, m := range meta {
|
||||
for k, v := range m.RemoteEnv {
|
||||
env = append(env, fmt.Sprintf("%s=%s", k, v))
|
||||
}
|
||||
}
|
||||
slices.Sort(env)
|
||||
return env, nil
|
||||
|
||||
Reference in New Issue
Block a user