build: fix issues with leaving invoke containers running

Signed-off-by: Tonis Tiigi <tonistiigi@gmail.com>
This commit is contained in:
Tonis Tiigi
2022-08-07 22:16:14 -07:00
parent 17dc0e1108
commit 75ddc5b811
2 changed files with 24 additions and 6 deletions

View File

@ -643,7 +643,16 @@ func Invoke(ctx context.Context, cfg ContainerConfig) error {
return errors.Errorf("result must be provided")
}
c, res := cfg.ResultCtx.Client, cfg.ResultCtx.Res
_, err := c.Build(ctx, client.SolveOpt{}, "buildx", func(ctx context.Context, c gateway.Client) (*gateway.Result, error) {
mainCtx := ctx
_, err := c.Build(context.TODO(), client.SolveOpt{}, "buildx", func(ctx context.Context, c gateway.Client) (*gateway.Result, error) {
ctx, cancel := context.WithCancel(ctx)
go func() {
<-mainCtx.Done()
cancel()
}()
if res.Ref == nil {
return nil, errors.Errorf("no reference is registered")
}
@ -673,7 +682,8 @@ func Invoke(ctx context.Context, cfg ContainerConfig) error {
if err != nil {
return nil, err
}
defer ctr.Release(ctx)
defer ctr.Release(context.TODO())
proc, err := ctr.Start(ctx, gateway.StartRequest{
Args: cfg.Args,
Env: cfg.Env,