diff --git a/plan/task/build.go b/plan/task/build.go index 31b5f127..d65df05e 100644 --- a/plan/task/build.go +++ b/plan/task/build.go @@ -115,6 +115,18 @@ func (t *buildTask) dockerfile(ctx context.Context, pctx *plancontext.Context, s 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 meta, ok := res.Metadata[exptypes.ExporterImageConfigKey] if !ok { @@ -126,7 +138,7 @@ func (t *buildTask) dockerfile(ctx context.Context, pctx *plancontext.Context, s } return compiler.NewValue().FillFields(map[string]interface{}{ - "output": pctx.FS.New(ref).MarshalCUE(), + "output": pctx.FS.New(solvedRef).MarshalCUE(), "config": image.Config, }) } diff --git a/solver/solver.go b/solver/solver.go index 01db431f..23451c32 100644 --- a/solver/solver.go +++ b/solver/solver.go @@ -120,6 +120,7 @@ func (s Solver) ResolveImageConfig(ctx context.Context, ref string, opts llb.Res // 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) { + req.Evaluate = true res, err := s.opts.Gateway.Solve(ctx, req) if err != nil { return nil, CleanError(err)