buildkit.go 805 B

12345678910111213141516171819202122232425262728
  1. package buildkit
  2. import (
  3. "context"
  4. "net"
  5. "github.com/docker/docker/client"
  6. bkclient "github.com/moby/buildkit/client"
  7. )
  8. // ClientOpts returns a list of buildkit client options which allows the
  9. // caller to create a buildkit client which will connect to the buildkit
  10. // API provided by the daemon.
  11. //
  12. // Example: bkclient.New(ctx, "", ClientOpts(c)...)
  13. func ClientOpts(c client.CommonAPIClient) []bkclient.ClientOpt {
  14. session := func(ctx context.Context, proto string, meta map[string][]string) (net.Conn, error) {
  15. return c.DialHijack(ctx, "/session", proto, meta)
  16. }
  17. grpc := func(ctx context.Context, _ string) (net.Conn, error) {
  18. return c.DialHijack(ctx, "/grpc", "h2c", nil)
  19. }
  20. return []bkclient.ClientOpt{
  21. bkclient.WithSessionDialer(session),
  22. bkclient.WithContextDialer(grpc),
  23. }
  24. }