mirror of
https://github.com/coder/coder.git
synced 2026-06-03 04:58:23 +00:00
1e07ec49a6
## Description Implements the server-side merge logic for the `merge_strategy` attribute added to `coder_env` in [terraform-provider-coder v2.15.0](https://github.com/coder/terraform-provider-coder/pull/489). This allows template authors to control how duplicate environment variable names are combined across multiple `coder_env` resources. Relates to https://github.com/coder/coder/issues/21885 ## Supported strategies | Strategy | Behavior | |----------|----------| | `replace` (default) | Last value wins — backward compatible | | `append` | Joins values with `:` separator (e.g. PATH additions) | | `prepend` | Prepends value with `:` separator | | `error` | Fails the build if the variable is already defined | ## Example ```hcl resource "coder_env" "path_tools" { agent_id = coder_agent.dev.id name = "PATH" value = "/home/coder/tools/bin" merge_strategy = "append" } ``` ## Changes - **Proto**: Added `merge_strategy` field to `Env` message in `provisioner.proto` - **State reader**: Updated `agentEnvAttributes` struct and proto construction in `resources.go` - **Merge logic**: Added `mergeExtraEnvs()` function in `provisionerdserver.go` with strategy-aware merging for both agent envs and devcontainer subagent envs - **Tests**: 15 unit tests covering all strategies, edge cases (empty values, mixed strategies, multiple appends) - **Dependency**: Bumped `terraform-provider-coder` v2.14.0 → v2.15.0 - **Fixtures**: Updated `duplicate-env-keys` test fixtures and golden files ## Ordering When multiple resources `append` or `prepend` to the same key, they are processed in alphabetical order by Terraform resource address (per the determinism fix in #22706).
31 lines
781 B
Plaintext
31 lines
781 B
Plaintext
[
|
|
{
|
|
"id": "====[workspace build worker ID]=====",
|
|
"organization_id": "===========[first org ID]===========",
|
|
"key_id": "00000000-0000-0000-0000-000000000001",
|
|
"created_at": "====[timestamp]=====",
|
|
"last_seen_at": "====[timestamp]=====",
|
|
"name": "test-daemon",
|
|
"version": "v0.0.0-devel",
|
|
"api_version": "1.16",
|
|
"provisioners": [
|
|
"echo"
|
|
],
|
|
"tags": {
|
|
"owner": "",
|
|
"scope": "organization"
|
|
},
|
|
"key_name": "built-in",
|
|
"status": "idle",
|
|
"current_job": null,
|
|
"previous_job": {
|
|
"id": "======[workspace build job ID]======",
|
|
"status": "succeeded",
|
|
"template_name": "test-template",
|
|
"template_icon": "",
|
|
"template_display_name": ""
|
|
},
|
|
"organization_name": "Coder"
|
|
}
|
|
]
|