|
|
|
@ -951,7 +951,12 @@ func updateContext(t *build.Inputs, inp *Input) {
|
|
|
|
|
if build.IsRemoteURL(t.ContextPath) {
|
|
|
|
|
return
|
|
|
|
|
}
|
|
|
|
|
st := llb.Scratch().File(llb.Copy(*inp.State, t.ContextPath, "/"), llb.WithCustomNamef("set context to %s", t.ContextPath))
|
|
|
|
|
st := llb.Scratch().File(
|
|
|
|
|
llb.Copy(*inp.State, t.ContextPath, "/", &llb.CopyInfo{
|
|
|
|
|
CopyDirContentsOnly: true,
|
|
|
|
|
}),
|
|
|
|
|
llb.WithCustomNamef("set context to %s", t.ContextPath),
|
|
|
|
|
)
|
|
|
|
|
t.ContextState = &st
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
@ -1028,10 +1033,33 @@ func toBuildOpt(t *Target, inp *Input) (*build.Options, error) {
|
|
|
|
|
dockerfilePath = *t.Dockerfile
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
if !build.IsRemoteURL(contextPath) && !path.IsAbs(dockerfilePath) {
|
|
|
|
|
dockerfilePath = path.Join(contextPath, dockerfilePath)
|
|
|
|
|
bi := build.Inputs{
|
|
|
|
|
ContextPath: contextPath,
|
|
|
|
|
DockerfilePath: dockerfilePath,
|
|
|
|
|
NamedContexts: toNamedContexts(t.Contexts),
|
|
|
|
|
}
|
|
|
|
|
if t.DockerfileInline != nil {
|
|
|
|
|
bi.DockerfileInline = *t.DockerfileInline
|
|
|
|
|
}
|
|
|
|
|
updateContext(&bi, inp)
|
|
|
|
|
if !build.IsRemoteURL(bi.ContextPath) && bi.ContextState == nil && !path.IsAbs(bi.DockerfilePath) {
|
|
|
|
|
bi.DockerfilePath = path.Join(bi.ContextPath, bi.DockerfilePath)
|
|
|
|
|
}
|
|
|
|
|
if strings.HasPrefix(bi.ContextPath, "cwd://") {
|
|
|
|
|
bi.ContextPath = path.Clean(strings.TrimPrefix(bi.ContextPath, "cwd://"))
|
|
|
|
|
}
|
|
|
|
|
for k, v := range bi.NamedContexts {
|
|
|
|
|
if strings.HasPrefix(v.Path, "cwd://") {
|
|
|
|
|
bi.NamedContexts[k] = build.NamedContext{Path: path.Clean(strings.TrimPrefix(v.Path, "cwd://"))}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
if err := validateContextsEntitlements(bi, inp); err != nil {
|
|
|
|
|
return nil, err
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
t.Context = &bi.ContextPath
|
|
|
|
|
|
|
|
|
|
args := map[string]string{}
|
|
|
|
|
for k, v := range t.Args {
|
|
|
|
|
if v == nil {
|
|
|
|
@ -1061,30 +1089,6 @@ func toBuildOpt(t *Target, inp *Input) (*build.Options, error) {
|
|
|
|
|
networkMode = *t.NetworkMode
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
bi := build.Inputs{
|
|
|
|
|
ContextPath: contextPath,
|
|
|
|
|
DockerfilePath: dockerfilePath,
|
|
|
|
|
NamedContexts: toNamedContexts(t.Contexts),
|
|
|
|
|
}
|
|
|
|
|
if t.DockerfileInline != nil {
|
|
|
|
|
bi.DockerfileInline = *t.DockerfileInline
|
|
|
|
|
}
|
|
|
|
|
updateContext(&bi, inp)
|
|
|
|
|
if strings.HasPrefix(bi.ContextPath, "cwd://") {
|
|
|
|
|
bi.ContextPath = path.Clean(strings.TrimPrefix(bi.ContextPath, "cwd://"))
|
|
|
|
|
}
|
|
|
|
|
for k, v := range bi.NamedContexts {
|
|
|
|
|
if strings.HasPrefix(v.Path, "cwd://") {
|
|
|
|
|
bi.NamedContexts[k] = build.NamedContext{Path: path.Clean(strings.TrimPrefix(v.Path, "cwd://"))}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
if err := validateContextsEntitlements(bi, inp); err != nil {
|
|
|
|
|
return nil, err
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
t.Context = &bi.ContextPath
|
|
|
|
|
|
|
|
|
|
bo := &build.Options{
|
|
|
|
|
Inputs: bi,
|
|
|
|
|
Tags: t.Tags,
|
|
|
|
|