Merge pull request #1356 from jlongtine/force-dockerfile-solve-to-evaluate
Ensure dockerfile frontend requests are Solved
This commit is contained in:
commit
7d96594283
@ -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,
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
@ -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
|
||||||
|
Reference in New Issue
Block a user