func()

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
}