diff --git a/.github/workflows/duplicate-code-detector.lock.yml b/.github/workflows/duplicate-code-detector.lock.yml index e0aaa4ab20d..f215e0c9849 100644 --- a/.github/workflows/duplicate-code-detector.lock.yml +++ b/.github/workflows/duplicate-code-detector.lock.yml @@ -819,11 +819,11 @@ jobs: "--rm", "-i", "-e", + "SERENA_DASHBOARD_PORT", + "-e", "SERENA_DOCKER", "-e", "SERENA_PORT", - "-e", - "SERENA_DASHBOARD_PORT", "-v", "${{ github.workspace }}:/workspace:ro", "-w", diff --git a/pkg/parser/mcp.go b/pkg/parser/mcp.go index 0ec0944037d..a0d5873725d 100644 --- a/pkg/parser/mcp.go +++ b/pkg/parser/mcp.go @@ -3,6 +3,7 @@ package parser import ( "encoding/json" "fmt" + "sort" "strings" "github.com/githubnext/gh-aw/pkg/constants" @@ -480,8 +481,15 @@ func ParseMCPConfig(toolName string, mcpSection any, toolConfig map[string]any) // Add environment variables if env, hasEnv := mcpConfig["env"]; hasEnv { if envMap, ok := env.(map[string]any); ok { - for key, value := range envMap { - if valueStr, ok := value.(string); ok { + // Sort environment variable keys to ensure deterministic arg order + var envKeys []string + for key := range envMap { + envKeys = append(envKeys, key) + } + sort.Strings(envKeys) + + for _, key := range envKeys { + if valueStr, ok := envMap[key].(string); ok { config.Args = append(config.Args, "-e", key) config.Env[key] = valueStr } diff --git a/pkg/workflow/mcp-config.go b/pkg/workflow/mcp-config.go index 90b3cf54c1e..d3a0c9893de 100644 --- a/pkg/workflow/mcp-config.go +++ b/pkg/workflow/mcp-config.go @@ -445,8 +445,13 @@ func getMCPConfig(toolConfig map[string]any, toolName string) (*parser.MCPServer result.Command = "docker" result.Args = []string{"run", "--rm", "-i"} - // Add environment variables as -e flags + // Add environment variables as -e flags (sorted for deterministic output) + envKeys := make([]string, 0, len(result.Env)) for envKey := range result.Env { + envKeys = append(envKeys, envKey) + } + sort.Strings(envKeys) + for _, envKey := range envKeys { result.Args = append(result.Args, "-e", envKey) }