Skip to content

Commit 0bc99d0

Browse files
authored
Merge pull request #269 from dgageot/update-labels
Update the labels for secrets
2 parents 3ff45ab + 0c7adad commit 0bc99d0

File tree

5 files changed

+41
-64
lines changed

5 files changed

+41
-64
lines changed

pkg/config/mcp.go

Lines changed: 0 additions & 29 deletions
This file was deleted.

pkg/config/models.go

Lines changed: 0 additions & 22 deletions
This file was deleted.

pkg/oci/Dockerfile.template

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,12 @@
11
# syntax=docker/dockerfile:1
22

33
FROM {{ .BaseImage }}
4-
LABEL com.docker.agent.mcp-servers="{{ .McpServers }}"
5-
LABEL com.docker.agent.models="{{ .Models }}"
6-
LABEL com.docker.agent.packaging.version="v0.0.1"
4+
5+
LABEL com.docker.agent.packaging.version="v0.0.2"
76
LABEL com.docker.agent.runtime="cagent"
7+
LABEL com.docker.agent.secrets.models="{{ .ModelSecrets }}"
8+
LABEL com.docker.agent.secrets.tools="{{ .ToolSecrets }}"
9+
810
LABEL org.opencontainers.image.author="{{ .Metadata.Author }}"
911
LABEL org.opencontainers.image.created="{{ .BuildDate }}"
1012
LABEL org.opencontainers.image.description="{{ .Description }}"

pkg/oci/build.go

Lines changed: 13 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,7 @@ import (
1414
"time"
1515

1616
"github.com/docker/cagent/pkg/config"
17+
"github.com/docker/cagent/pkg/secrets"
1718
)
1819

1920
//go:embed Dockerfile.template
@@ -40,8 +41,11 @@ func BuildDockerImage(ctx context.Context, agentFilePath, dockerImageName string
4041
}
4142

4243
// Analyze the config to find which secrets are needed
43-
modelNames := config.GatherModelNames(cfg)
44-
mcpServers := config.GatherMCPServerReferences(cfg)
44+
modelSecrets := secrets.GatherEnvVarsForModels(cfg)
45+
toolSecrets, err := secrets.GatherEnvVarsForTools(ctx, cfg)
46+
if err != nil {
47+
return err
48+
}
4549

4650
// Find which base image to use
4751
baseImage := "docker/cagent"
@@ -54,13 +58,13 @@ func BuildDockerImage(ctx context.Context, agentFilePath, dockerImageName string
5458

5559
tpl := template.Must(template.New("Dockerfile").Parse(dockerfileTemplate))
5660
if err := tpl.Execute(&dockerfileBuf, map[string]any{
57-
"BaseImage": baseImage,
58-
"AgentConfig": string(agentYaml),
59-
"BuildDate": time.Now().UTC().Format(time.RFC3339),
60-
"Description": cfg.Agents["root"].Description,
61-
"McpServers": strings.Join(mcpServers, ","),
62-
"Metadata": cfg.Metadata,
63-
"Models": strings.Join(modelNames, ","),
61+
"BaseImage": baseImage,
62+
"AgentConfig": string(agentYaml),
63+
"BuildDate": time.Now().UTC().Format(time.RFC3339),
64+
"Description": cfg.Agents["root"].Description,
65+
"Metadata": cfg.Metadata,
66+
"ModelSecrets": strings.Join(modelSecrets, ","),
67+
"ToolSecrets": strings.Join(toolSecrets, ","),
6468
}); err != nil {
6569
return err
6670
}

pkg/secrets/gather.go

Lines changed: 23 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -78,7 +78,7 @@ func GatherEnvVarsForModels(cfg *latest.Config) []string {
7878
func GatherEnvVarsForTools(ctx context.Context, cfg *latest.Config) ([]string, error) {
7979
requiredEnv := map[string]bool{}
8080

81-
for _, ref := range config.GatherMCPServerReferences(cfg) {
81+
for _, ref := range gatherMCPServerReferences(cfg) {
8282
mcpServerName := gateway.ParseServerRef(ref)
8383
if mcpServerURL := os.Getenv(mcp.ENV_DOCKER_MCP_URL_PREFIX + mcpServerName); mcpServerURL != "" {
8484
// This MCP server is configured at runtime to be remote. We don't need to know its secrets.
@@ -98,6 +98,28 @@ func GatherEnvVarsForTools(ctx context.Context, cfg *latest.Config) ([]string, e
9898
return mcpToSortedList(requiredEnv), nil
9999
}
100100

101+
func gatherMCPServerReferences(cfg *latest.Config) []string {
102+
servers := map[string]bool{}
103+
104+
for _, agent := range cfg.Agents {
105+
for i := range agent.Toolsets {
106+
toolSet := agent.Toolsets[i]
107+
108+
if toolSet.Type == "mcp" && toolSet.Ref != "" {
109+
servers[toolSet.Ref] = true
110+
}
111+
}
112+
}
113+
114+
var list []string
115+
for e := range servers {
116+
list = append(list, e)
117+
}
118+
sort.Strings(list)
119+
120+
return list
121+
}
122+
101123
func mcpToSortedList(requiredEnv map[string]bool) []string {
102124
var requiredEnvList []string
103125

0 commit comments

Comments
 (0)