Skip to content

Commit 812a15a

Browse files
gfraiteurclaude
andcommitted
DockerBuild: use CLAUDE_ prefix in Claude mode only
- Remove CONTAINER_ prefix logic from New-EnvJson (non-Claude mode) - New-ClaudeEnvJson now reads $EnvironmentVariables list and transfers only variables that have CLAUDE_ prefix defined on host - Remove hardcoded CLAUDE_GITHUB_TOKEN case (now handled generically) - -Env parameter in Claude mode supports CLAUDE_ prefix for NAME form Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
1 parent 5c55743 commit 812a15a

2 files changed

Lines changed: 92 additions & 40 deletions

File tree

DockerBuild.ps1

Lines changed: 46 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -98,18 +98,10 @@ function New-EnvJson
9898
$envVarNames = $EnvironmentVariableList -split ',' | ForEach-Object { $_.Trim() } | Where-Object { $_ -ne '' }
9999

100100
# Build hashtable with environment variable values
101-
# CONTAINER_FOO takes precedence over FOO (allows overriding for container use)
102101
$envVariables = @{ }
103102
foreach ($envVarName in $envVarNames)
104103
{
105-
# Check for CONTAINER_ prefixed override first
106-
$containerVarName = "CONTAINER_$envVarName"
107-
$value = [Environment]::GetEnvironmentVariable($containerVarName)
108-
if ([string]::IsNullOrEmpty($value))
109-
{
110-
# Fall back to regular environment variable
111-
$value = [Environment]::GetEnvironmentVariable($envVarName)
112-
}
104+
$value = [Environment]::GetEnvironmentVariable($envVarName)
113105
if (-not [string]::IsNullOrEmpty($value))
114106
{
115107
$envVariables[$envVarName] = $value
@@ -131,14 +123,9 @@ function New-EnvJson
131123
}
132124
else
133125
{
134-
# NAME form: read from host environment (with CONTAINER_ prefix support)
126+
# NAME form: read from host environment
135127
$envVarName = $envSpec
136-
$containerVarName = "CONTAINER_$envVarName"
137-
$value = [Environment]::GetEnvironmentVariable($containerVarName)
138-
if ([string]::IsNullOrEmpty($value))
139-
{
140-
$value = [Environment]::GetEnvironmentVariable($envVarName)
141-
}
128+
$value = [Environment]::GetEnvironmentVariable($envVarName)
142129
if (-not [string]::IsNullOrEmpty($value))
143130
{
144131
$envVariables[$envVarName] = $value
@@ -220,13 +207,20 @@ function New-ClaudeEnvJson
220207
{
221208
$claudeEnv = @{ }
222209

223-
# CLAUDE_GITHUB_TOKEN -> GITHUB_TOKEN (renamed)
224-
if ($env:CLAUDE_GITHUB_TOKEN)
210+
# Process $EnvironmentVariables list - only transfer variables that have CLAUDE_ prefix defined
211+
# e.g., if CLAUDE_GITHUB_TOKEN is set, transfer it as GITHUB_TOKEN
212+
$envVarNames = $EnvironmentVariables -split ',' | ForEach-Object { $_.Trim() } | Where-Object { $_ -ne '' }
213+
foreach ($envVarName in $envVarNames)
225214
{
226-
$claudeEnv["GITHUB_TOKEN"] = $env:CLAUDE_GITHUB_TOKEN
215+
$claudeVarName = "CLAUDE_$envVarName"
216+
$value = [Environment]::GetEnvironmentVariable($claudeVarName)
217+
if (-not [string]::IsNullOrEmpty($value))
218+
{
219+
$claudeEnv[$envVarName] = $value
220+
}
227221
}
228222

229-
# Preserved variables
223+
# Preserved variables (transferred as-is, without requiring CLAUDE_ prefix)
230224
if ($env:ANTHROPIC_API_KEY)
231225
{
232226
$claudeEnv["ANTHROPIC_API_KEY"] = $env:ANTHROPIC_API_KEY
@@ -279,6 +273,38 @@ function New-ClaudeEnvJson
279273
}
280274
$claudeEnv["NUGET_PACKAGES"] = $nugetPackages
281275

276+
# Process additional environment variables from -Env parameter
277+
# Supports both "NAME" (read from host) and "NAME=VALUE" (literal value) forms
278+
# In Claude mode, CLAUDE_FOO takes precedence over FOO
279+
if ($Env -and $Env.Count -gt 0)
280+
{
281+
foreach ($envSpec in $Env)
282+
{
283+
if ($envSpec -match '^([^=]+)=(.*)$')
284+
{
285+
# NAME=VALUE form: use literal value
286+
$envVarName = $Matches[1]
287+
$value = $Matches[2]
288+
$claudeEnv[$envVarName] = $value
289+
}
290+
else
291+
{
292+
# NAME form: read from host environment (with CLAUDE_ prefix support)
293+
$envVarName = $envSpec
294+
$claudeVarName = "CLAUDE_$envVarName"
295+
$value = [Environment]::GetEnvironmentVariable($claudeVarName)
296+
if ([string]::IsNullOrEmpty($value))
297+
{
298+
$value = [Environment]::GetEnvironmentVariable($envVarName)
299+
}
300+
if (-not [string]::IsNullOrEmpty($value))
301+
{
302+
$claudeEnv[$envVarName] = $value
303+
}
304+
}
305+
}
306+
}
307+
282308
# Convert to JSON and save
283309
$gDirectory = Join-Path $dockerContextDirectory ".g"
284310
$jsonPath = Join-Path $gDirectory "env.g.json"

src/PostSharp.Engineering.BuildTools/Resources/DockerBuild.ps1

Lines changed: 46 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -98,18 +98,10 @@ function New-EnvJson
9898
$envVarNames = $EnvironmentVariableList -split ',' | ForEach-Object { $_.Trim() } | Where-Object { $_ -ne '' }
9999

100100
# Build hashtable with environment variable values
101-
# CONTAINER_FOO takes precedence over FOO (allows overriding for container use)
102101
$envVariables = @{ }
103102
foreach ($envVarName in $envVarNames)
104103
{
105-
# Check for CONTAINER_ prefixed override first
106-
$containerVarName = "CONTAINER_$envVarName"
107-
$value = [Environment]::GetEnvironmentVariable($containerVarName)
108-
if ([string]::IsNullOrEmpty($value))
109-
{
110-
# Fall back to regular environment variable
111-
$value = [Environment]::GetEnvironmentVariable($envVarName)
112-
}
104+
$value = [Environment]::GetEnvironmentVariable($envVarName)
113105
if (-not [string]::IsNullOrEmpty($value))
114106
{
115107
$envVariables[$envVarName] = $value
@@ -131,14 +123,9 @@ function New-EnvJson
131123
}
132124
else
133125
{
134-
# NAME form: read from host environment (with CONTAINER_ prefix support)
126+
# NAME form: read from host environment
135127
$envVarName = $envSpec
136-
$containerVarName = "CONTAINER_$envVarName"
137-
$value = [Environment]::GetEnvironmentVariable($containerVarName)
138-
if ([string]::IsNullOrEmpty($value))
139-
{
140-
$value = [Environment]::GetEnvironmentVariable($envVarName)
141-
}
128+
$value = [Environment]::GetEnvironmentVariable($envVarName)
142129
if (-not [string]::IsNullOrEmpty($value))
143130
{
144131
$envVariables[$envVarName] = $value
@@ -220,13 +207,20 @@ function New-ClaudeEnvJson
220207
{
221208
$claudeEnv = @{ }
222209

223-
# CLAUDE_GITHUB_TOKEN -> GITHUB_TOKEN (renamed)
224-
if ($env:CLAUDE_GITHUB_TOKEN)
210+
# Process $EnvironmentVariables list - only transfer variables that have CLAUDE_ prefix defined
211+
# e.g., if CLAUDE_GITHUB_TOKEN is set, transfer it as GITHUB_TOKEN
212+
$envVarNames = $EnvironmentVariables -split ',' | ForEach-Object { $_.Trim() } | Where-Object { $_ -ne '' }
213+
foreach ($envVarName in $envVarNames)
225214
{
226-
$claudeEnv["GITHUB_TOKEN"] = $env:CLAUDE_GITHUB_TOKEN
215+
$claudeVarName = "CLAUDE_$envVarName"
216+
$value = [Environment]::GetEnvironmentVariable($claudeVarName)
217+
if (-not [string]::IsNullOrEmpty($value))
218+
{
219+
$claudeEnv[$envVarName] = $value
220+
}
227221
}
228222

229-
# Preserved variables
223+
# Preserved variables (transferred as-is, without requiring CLAUDE_ prefix)
230224
if ($env:ANTHROPIC_API_KEY)
231225
{
232226
$claudeEnv["ANTHROPIC_API_KEY"] = $env:ANTHROPIC_API_KEY
@@ -279,6 +273,38 @@ function New-ClaudeEnvJson
279273
}
280274
$claudeEnv["NUGET_PACKAGES"] = $nugetPackages
281275

276+
# Process additional environment variables from -Env parameter
277+
# Supports both "NAME" (read from host) and "NAME=VALUE" (literal value) forms
278+
# In Claude mode, CLAUDE_FOO takes precedence over FOO
279+
if ($Env -and $Env.Count -gt 0)
280+
{
281+
foreach ($envSpec in $Env)
282+
{
283+
if ($envSpec -match '^([^=]+)=(.*)$')
284+
{
285+
# NAME=VALUE form: use literal value
286+
$envVarName = $Matches[1]
287+
$value = $Matches[2]
288+
$claudeEnv[$envVarName] = $value
289+
}
290+
else
291+
{
292+
# NAME form: read from host environment (with CLAUDE_ prefix support)
293+
$envVarName = $envSpec
294+
$claudeVarName = "CLAUDE_$envVarName"
295+
$value = [Environment]::GetEnvironmentVariable($claudeVarName)
296+
if ([string]::IsNullOrEmpty($value))
297+
{
298+
$value = [Environment]::GetEnvironmentVariable($envVarName)
299+
}
300+
if (-not [string]::IsNullOrEmpty($value))
301+
{
302+
$claudeEnv[$envVarName] = $value
303+
}
304+
}
305+
}
306+
}
307+
282308
# Convert to JSON and save
283309
$gDirectory = Join-Path $dockerContextDirectory ".g"
284310
$jsonPath = Join-Path $gDirectory "env.g.json"

0 commit comments

Comments
 (0)