Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
18 changes: 14 additions & 4 deletions cmd/build/main.go
Original file line number Diff line number Diff line change
Expand Up @@ -84,14 +84,14 @@ func run(ctx context.Context, name string, listTools bool, pullCommunity bool) e

func buildDockerEnv(additionalEnv ...string) []string {
env := []string{"PATH=" + os.Getenv("PATH")}

// On Windows, Docker also needs ProgramW6432
// See https://github.com/docker/mcp-registry/issues/79 for more details
programW6432 := os.Getenv("ProgramW6432")
if runtime.GOOS == "windows" && programW6432 != "" {
env = append(env, "ProgramW6432="+programW6432)
}

return append(env, additionalEnv...)
}

Expand Down Expand Up @@ -127,11 +127,21 @@ func buildMcpImage(ctx context.Context, server servers.Server) error {
var cmd *exec.Cmd
token := os.Getenv("GITHUB_TOKEN")

buildArgs := []string{
"-f", server.GetDockerfile(), "-t", "check", "-t", server.Image, "--label", "org.opencontainers.image.revision=" + sha,
}

if server.Source.BuildTarget != "" {
buildArgs = append(buildArgs, "--target", server.Source.BuildTarget)
}

buildArgs = append(buildArgs, gitURL)

if token != "" {
cmd = exec.CommandContext(ctx, "docker", "buildx", "build", "--secret", "id=GIT_AUTH_TOKEN", "-f", server.GetDockerfile(), "-t", "check", "-t", server.Image, "--label", "org.opencontainers.image.revision="+sha, gitURL)
cmd = exec.CommandContext(ctx, "docker", append([]string{"buildx", "build", "--secret", "id=GIT_AUTH_TOKEN"}, buildArgs...)...)
cmd.Env = buildDockerEnv("GIT_AUTH_TOKEN=" + token)
} else {
cmd = exec.CommandContext(ctx, "docker", "buildx", "build", "-f", server.GetDockerfile(), "-t", "check", "-t", server.Image, "--label", "org.opencontainers.image.revision="+sha, gitURL)
cmd = exec.CommandContext(ctx, "docker", append([]string{"buildx", "build"}, buildArgs...)...)
cmd.Env = buildDockerEnv()
}

Expand Down
11 changes: 6 additions & 5 deletions pkg/servers/types.go
Original file line number Diff line number Diff line change
Expand Up @@ -79,11 +79,12 @@ type About struct {
}

type Source struct {
Project string `yaml:"project,omitempty" json:"project,omitempty"`
Upstream string `yaml:"upstream,omitempty" json:"upstream,omitempty"`
Branch string `yaml:"branch,omitempty" json:"branch,omitempty"`
Directory string `yaml:"directory,omitempty" json:"directory,omitempty"`
Dockerfile string `yaml:"dockerfile,omitempty" json:"dockerfile,omitempty"`
Project string `yaml:"project,omitempty" json:"project,omitempty"`
Upstream string `yaml:"upstream,omitempty" json:"upstream,omitempty"`
Branch string `yaml:"branch,omitempty" json:"branch,omitempty"`
Directory string `yaml:"directory,omitempty" json:"directory,omitempty"`
Dockerfile string `yaml:"dockerfile,omitempty" json:"dockerfile,omitempty"`
BuildTarget string `yaml:"buildTarget,omitempty" json:"buildTarget,omitempty"`
}

type Run struct {
Expand Down