Skip to content

Commit

Permalink
buildkit: add ability to pass a flag to connect to an existing buildk…
Browse files Browse the repository at this point in the history
…it: --buildkit_addr (#1297)
  • Loading branch information
hugosantos authored Aug 20, 2024
1 parent e0d166b commit 740194e
Show file tree
Hide file tree
Showing 3 changed files with 41 additions and 1 deletion.
12 changes: 12 additions & 0 deletions internal/build/buildkit/client.go
Original file line number Diff line number Diff line change
Expand Up @@ -42,6 +42,7 @@ var (
var (
BuildOnNamespaceCloud = knobs.Bool("build_in_nscloud", "If set to true, builds are triggered remotely.", false)
BuildOnNamespaceCloudUnlessHost = knobs.Bool("build_in_nscloud_unless_host", "If set to true, builds that match the host platform run locally. All other builds are triggered remotely.", false)
BuildOnExistingBuildkit = knobs.String("buildkit_addr", "The address of an existing buildkitd to use.", "")
)

const SSHAgentProviderID = "default"
Expand Down Expand Up @@ -118,6 +119,17 @@ func (c *clientInstance) Inputs() *compute.In {
}

func (c *clientInstance) Compute(ctx context.Context, _ compute.Resolved) (*GatewayClient, error) {
if addr := BuildOnExistingBuildkit.Get(c.conf); addr != "" {
fmt.Fprintf(console.Debug(ctx), "buildkit: using existing buildkit: %q\n", addr)

cli, err := client.New(ctx, addr)
if err != nil {
return nil, err
}

return newClient(ctx, cli, false)
}

if c.overrides.BuildkitAddr != "" {
cli, err := client.New(ctx, c.overrides.BuildkitAddr)
if err != nil {
Expand Down
6 changes: 5 additions & 1 deletion std/cfg/knobs/knobs.go
Original file line number Diff line number Diff line change
Expand Up @@ -30,6 +30,10 @@ func Bool(name, description string, value bool) Knob[bool] {
return Define[bool](name, description, BoolValue(value))
}

func String(name, description string, value string) Knob[string] {
return Define[string](name, description, StringValue(value))
}

func Define[V any](name, description string, value Value) Knob[V] {
knob := Knob[V]{name, description, value}
knobs = append(knobs, knob)
Expand Down Expand Up @@ -59,7 +63,7 @@ func (knob Knob[V]) Get(src cfg.Configuration) V {
func (knob Knob[V]) setupFlags(flags *pflag.FlagSet) {
var v V
switch reflect.TypeOf(v).Kind() {
case reflect.Bool:
case reflect.Bool, reflect.String:
knob.value.setupFlags(flags, knob.name, knob.description)

default:
Expand Down
24 changes: 24 additions & 0 deletions std/cfg/knobs/types.go
Original file line number Diff line number Diff line change
Expand Up @@ -39,3 +39,27 @@ func (b *boolv) decode(any *anypb.Any) (any, error) {
func (b *boolv) setupFlags(flags *pflag.FlagSet, name, description string) {
flags.BoolVar(&b.value, name, b.value, description)
}

func StringValue[V string](defaultValue string) Value {
return &stringv{value: defaultValue}
}

type stringv struct {
value string
}

func (b *stringv) get() any {
return b.value
}

func (b *stringv) decode(any *anypb.Any) (any, error) {
bv := &wrapperspb.StringValue{}
if err := any.UnmarshalTo(bv); err != nil {
return nil, err
}
return bv.Value, nil
}

func (b *stringv) setupFlags(flags *pflag.FlagSet, name, description string) {
flags.StringVar(&b.value, name, b.value, description)
}

0 comments on commit 740194e

Please sign in to comment.