in command-runner/internal/containers/finch/finch_build.go [15:54]
func (fcs *finchContainerService) BuildImage(input types.BuildImageInput) common.Executor {
return func(ctx context.Context) error {
logger := log.Ctx(ctx)
if input.Platform != "" {
logger.Info().Msgf("🐦 finch build -t %s --platform %s %s", input.ImageTag, input.Platform, input.ContextDir)
} else {
logger.Info().Msgf("🐦 finch build -t %s %s", input.ImageTag, input.ContextDir)
}
if common.Dryrun(ctx) {
return nil
}
if exists, err := fcs.ImageExistsLocally(ctx, input.ImageTag, input.Platform); exists {
log.Ctx(ctx).Debug().Msgf("skipping build - image '%s' already exists locally", input.ImageTag)
return nil
} else if err != nil {
return err
}
f, err := newFinch(finchInstallDir)
if err != nil {
return err
}
logger.Debug().Msgf("Building image from '%v'", input.ContextDir)
args := []string{"build", "--tag", input.ImageTag, "--file", filepath.Join(input.ContextDir, input.Dockerfile), "--rm"}
if input.Platform != "" {
args = append(args, "--platform", input.Platform)
}
args = append(args, input.ContextDir)
logger.Debug().Msgf("Creating image from context dir '%s' with tag '%s' and platform '%s'", input.ContextDir, input.ImageTag, input.Platform)
ldebug := &logWriter{
logger: logger,
level: zerolog.DebugLevel,
}
return f.RunWithStdio(ctx, nil, ldebug, ldebug, args...)
}
}