MCPcopy Create free account
hub / github.com/containerd/nerdctl / parseBuildConfig

Function parseBuildConfig

pkg/composer/serviceparser/build.go:35–124  ·  view source on GitHub ↗
(c *types.BuildConfig, project *types.Project, imageName string)

Source from the content-addressed store, hash-verified

33)
34
35func parseBuildConfig(c *types.BuildConfig, project *types.Project, imageName string) (*Build, error) {
36 if unknown := reflectutil.UnknownNonEmptyFields(c,
37 "Context", "Dockerfile", "Args", "CacheFrom", "Target", "Labels", "Secrets", "DockerfileInline", "AdditionalContexts",
38 ); len(unknown) > 0 {
39 log.L.Warnf("Ignoring: build: %+v", unknown)
40 }
41
42 if c.Context == "" {
43 return nil, errors.New("build: context must be specified")
44 }
45 if strings.Contains(c.Context, "://") {
46 return nil, fmt.Errorf("build: URL-style context (%q) is not supported yet: %w", c.Context, errdefs.ErrNotImplemented)
47 }
48 ctxDir := project.RelativePath(c.Context)
49
50 var b Build
51 b.BuildArgs = append(b.BuildArgs, "-t="+imageName)
52 if c.Dockerfile != "" {
53 if filepath.IsAbs(c.Dockerfile) {
54 log.L.Warnf("build.dockerfile should be relative path, got %q", c.Dockerfile)
55 b.BuildArgs = append(b.BuildArgs, "-f="+c.Dockerfile)
56 } else {
57 // no need to use securejoin
58 dockerfile := filepath.Join(ctxDir, c.Dockerfile)
59 b.BuildArgs = append(b.BuildArgs, "-f="+dockerfile)
60 }
61 }
62
63 if c.DockerfileInline != "" {
64 b.DockerfileInline = c.DockerfileInline
65 }
66
67 for k, v := range c.Args {
68 if v == nil {
69 b.BuildArgs = append(b.BuildArgs, "--build-arg="+k)
70 } else {
71 b.BuildArgs = append(b.BuildArgs, "--build-arg="+k+"="+*v)
72 }
73 }
74
75 for _, s := range c.CacheFrom {
76 b.BuildArgs = append(b.BuildArgs, "--cache-from="+s)
77 }
78
79 for k, v := range c.AdditionalContexts {
80 b.BuildArgs = append(b.BuildArgs, "--build-context="+k+"="+v)
81 }
82
83 if c.Target != "" {
84 b.BuildArgs = append(b.BuildArgs, "--target="+c.Target)
85 }
86
87 if c.Labels != nil {
88 for k, v := range c.Labels {
89 b.BuildArgs = append(b.BuildArgs, "--label="+k+"="+v)
90 }
91 }
92

Callers 1

ParseFunction · 0.85

Calls 2

UnknownNonEmptyFieldsFunction · 0.92
ValidateDockerCompatFunction · 0.92

Tested by

no test coverage detected

Used in the wild real call sites across dependent graphs

searching dependent graphs…