Merge pull request #1356 from jlongtine/force-dockerfile-solve-to-evaluate

Ensure dockerfile frontend requests are Solved
This commit is contained in:
Andrea Luzzardi 2022-01-07 04:05:57 +01:00 committed by GitHub
commit 7d96594283
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 15 additions and 6 deletions

View File

@ -115,6 +115,16 @@ func (t *buildTask) dockerfile(ctx context.Context, pctx *plancontext.Context, s
return nil, err return nil, err
} }
st, err := ref.ToState()
if err != nil {
return nil, err
}
solvedRef, err := s.Solve(ctx, st, pctx.Platform.Get())
if err != nil {
return nil, err
}
// Image metadata // Image metadata
meta, ok := res.Metadata[exptypes.ExporterImageConfigKey] meta, ok := res.Metadata[exptypes.ExporterImageConfigKey]
if !ok { if !ok {
@ -126,7 +136,7 @@ func (t *buildTask) dockerfile(ctx context.Context, pctx *plancontext.Context, s
} }
return compiler.NewValue().FillFields(map[string]interface{}{ return compiler.NewValue().FillFields(map[string]interface{}{
"output": pctx.FS.New(ref).MarshalCUE(), "output": pctx.FS.New(solvedRef).MarshalCUE(),
"config": image.Config, "config": image.Config,
}) })
} }

View File

@ -120,6 +120,10 @@ func (s Solver) ResolveImageConfig(ctx context.Context, ref string, opts llb.Res
// Solve will block until the state is solved and returns a Reference. // Solve will block until the state is solved and returns a Reference.
func (s Solver) SolveRequest(ctx context.Context, req bkgw.SolveRequest) (*bkgw.Result, error) { func (s Solver) SolveRequest(ctx context.Context, req bkgw.SolveRequest) (*bkgw.Result, error) {
// makes Solve() to block until LLB graph is solved. otherwise it will
// return result (that you can for example use for next build) that
// will be evaluated on export or if you access files on it.
req.Evaluate = true
res, err := s.opts.Gateway.Solve(ctx, req) res, err := s.opts.Gateway.Solve(ctx, req)
if err != nil { if err != nil {
return nil, CleanError(err) return nil, CleanError(err)
@ -149,11 +153,6 @@ func (s Solver) Solve(ctx context.Context, st llb.State, platform specs.Platform
// call solve // call solve
res, err := s.SolveRequest(ctx, bkgw.SolveRequest{ res, err := s.SolveRequest(ctx, bkgw.SolveRequest{
Definition: def, Definition: def,
// makes Solve() to block until LLB graph is solved. otherwise it will
// return result (that you can for example use for next build) that
// will be evaluated on export or if you access files on it.
Evaluate: true,
}) })
if err != nil { if err != nil {
return nil, err return nil, err