in client/buildpacks.go [87:122]
func (b *buildpacksFunctionServer) build(ctx context.Context) error {
builder, err := b.buildpackBuilderImage()
if err != nil {
return err
}
cmd := exec.Command("docker", "pull", builder)
output, err := cmd.CombinedOutput()
if err != nil {
return fmt.Errorf("failed to pull builder image %s: %v: %s", builder, err, string(output))
}
logger := logging.NewLogWithWriters(os.Stdout, os.Stderr, logging.WithVerbose())
packClient, err := pack.NewClient(pack.WithLogger(logger))
if err != nil {
return fmt.Errorf("getting pack client: %v", err)
}
err = packClient.Build(ctx, pack.BuildOptions{
Image: image,
Builder: builder,
AppPath: b.source,
Registry: "",
Env: map[string]string{
"GOOGLE_FUNCTION_TARGET": b.target,
"GOOGLE_FUNCTION_SIGNATURE_TYPE": b.funcType,
"GOOGLE_RUNTIME": b.runtime,
"GOOGLE_RUNTIME_VERSION": b.runtimeVersion,
"X_GOOGLE_TARGET_PLATFORM": gcfTargetPlatform,
},
})
if err != nil {
return fmt.Errorf("building function image: %v", err)
}
return nil
}