Compare commits

...

6 Commits

Author SHA1 Message Date
Tõnis Tiigi
611329fc7f Merge pull request #1273 from jedevc/fix-1269
create: improve interface when attempting to create docker driver
2022-08-16 10:50:04 -07:00
Tõnis Tiigi
f3c135e583 Merge pull request #1275 from tonistiigi/update-buildx-220816
vendor: update buildkit to 55ba9d14
2022-08-16 10:47:40 -07:00
Tonis Tiigi
7f84582b37 vendor: update buildkit to 55ba9d14
Signed-off-by: Tonis Tiigi <tonistiigi@gmail.com>
2022-08-16 10:22:36 -07:00
Justin Chadwell
17d4369866 create: improve interface when attempting to create docker driver
Previously, the help information for buildx indicated that users could
create a new instance of the docker driver - which is explicitly
something we don't support, driver of this form are automatically
derived from the available list of docker contexts.

This patch ensures that don't have AllowsInstance set will not appear in
the help text, and additionally provide a new more specific error
message instead of the generic "failed to find driver". This should help
point users in the correct direction.

Signed-off-by: Justin Chadwell <me@jedevc.com>
2022-08-16 10:58:23 +01:00
Tonis Tiigi
fb5e1393a4 commands: use buildx env for experimental opt-in
Signed-off-by: Tonis Tiigi <tonistiigi@gmail.com>
2022-08-16 10:37:56 +01:00
Tonis Tiigi
18dbde9ed6 build: update outline fallback image
Signed-off-by: Tonis Tiigi <tonistiigi@gmail.com>
2022-08-16 10:25:26 +01:00
11 changed files with 44 additions and 23 deletions

View File

@@ -59,7 +59,7 @@ var (
) )
const ( const (
printFallbackImage = "docker/dockerfile-upstream:1.4-outline@sha256:ccd574ab34a8875c64bb6a8fb3cfae2e6d62d31b28b9f688075cc14c9b669a59" printFallbackImage = "docker/dockerfile-upstream:1.4-outline@sha256:627443ff4e2d0f635d429cfc1da5388bcd5a70949c38adcd3cd7c4e5df67c73c"
) )
type Options struct { type Options struct {

View File

@@ -701,7 +701,7 @@ func (w *wrapped) Unwrap() error {
} }
func isExperimental() bool { func isExperimental() bool {
if v, ok := os.LookupEnv("BUILDKIT_EXPERIMENTAL"); ok { if v, ok := os.LookupEnv("BUILDX_EXPERIMENTAL"); ok {
vv, _ := strconv.ParseBool(v) vv, _ := strconv.ParseBool(v)
return vv return vv
} }

View File

@@ -135,8 +135,8 @@ func runCreate(dockerCli command.Cli, in createOptions, args []string) error {
} }
} }
if driver.GetFactory(driverName, true) == nil { if _, err := driver.GetFactory(driverName, true); err != nil {
return errors.Errorf("failed to find driver %q", driverName) return err
} }
ngOriginal := ng ngOriginal := ng
@@ -282,7 +282,7 @@ func createCmd(dockerCli command.Cli) *cobra.Command {
var options createOptions var options createOptions
var drivers bytes.Buffer var drivers bytes.Buffer
for _, d := range driver.GetFactories() { for _, d := range driver.GetFactories(true) {
if len(drivers.String()) > 0 { if len(drivers.String()) > 0 {
drivers.WriteString(", ") drivers.WriteString(", ")
} }

View File

@@ -60,8 +60,9 @@ func driversForNodeGroup(ctx context.Context, dockerCli command.Cli, ng *store.N
var f driver.Factory var f driver.Factory
if ng.Driver != "" { if ng.Driver != "" {
f = driver.GetFactory(ng.Driver, true) var err error
if f == nil { f, err = driver.GetFactory(ng.Driver, true)
if err != nil {
return nil, errors.Errorf("failed to find driver %q", f) return nil, errors.Errorf("failed to find driver %q", f)
} }
} else { } else {

View File

@@ -15,7 +15,7 @@ Create a new builder instance
| `--bootstrap` | | | Boot builder after creation | | `--bootstrap` | | | Boot builder after creation |
| [`--buildkitd-flags`](#buildkitd-flags) | `string` | | Flags for buildkitd daemon | | [`--buildkitd-flags`](#buildkitd-flags) | `string` | | Flags for buildkitd daemon |
| [`--config`](#config) | `string` | | BuildKit config file | | [`--config`](#config) | `string` | | BuildKit config file |
| [`--driver`](#driver) | `string` | | Driver to use (available: `docker`, `docker-container`, `kubernetes`, `remote`) | | [`--driver`](#driver) | `string` | | Driver to use (available: `docker-container`, `kubernetes`, `remote`) |
| [`--driver-opt`](#driver-opt) | `stringArray` | | Options for the driver | | [`--driver-opt`](#driver-opt) | `stringArray` | | Options for the driver |
| [`--leave`](#leave) | | | Remove a node from builder instead of changing it | | [`--leave`](#leave) | | | Remove a node from builder instead of changing it |
| [`--name`](#name) | `string` | | Builder instance name | | [`--name`](#name) | `string` | | Builder instance name |

View File

@@ -92,16 +92,16 @@ func GetDefaultFactory(ctx context.Context, ep string, c dockerclient.APIClient,
return dd[0].f, nil return dd[0].f, nil
} }
func GetFactory(name string, instanceRequired bool) Factory { func GetFactory(name string, instanceRequired bool) (Factory, error) {
for _, f := range drivers { for _, f := range drivers {
if instanceRequired && !f.AllowsInstances() {
continue
}
if f.Name() == name { if f.Name() == name {
return f if instanceRequired && !f.AllowsInstances() {
return nil, errors.Errorf("additional instances of driver %q cannot be created", name)
}
return f, nil
} }
} }
return nil return nil, errors.Errorf("failed to find driver %q", name)
} }
func GetDriver(ctx context.Context, name string, f Factory, endpointAddr string, api dockerclient.APIClient, auth Auth, kcc KubeClientConfig, flags []string, files map[string][]byte, do map[string]string, platforms []specs.Platform, contextPathHash string) (Driver, error) { func GetDriver(ctx context.Context, name string, f Factory, endpointAddr string, api dockerclient.APIClient, auth Auth, kcc KubeClientConfig, flags []string, files map[string][]byte, do map[string]string, platforms []specs.Platform, contextPathHash string) (Driver, error) {
@@ -131,9 +131,12 @@ func GetDriver(ctx context.Context, name string, f Factory, endpointAddr string,
return &cachedDriver{Driver: d}, nil return &cachedDriver{Driver: d}, nil
} }
func GetFactories() []Factory { func GetFactories(instanceRequired bool) []Factory {
ds := make([]Factory, 0, len(drivers)) ds := make([]Factory, 0, len(drivers))
for _, d := range drivers { for _, d := range drivers {
if instanceRequired && !d.AllowsInstances() {
continue
}
ds = append(ds, d) ds = append(ds, d)
} }
sort.Slice(ds, func(i, j int) bool { sort.Slice(ds, func(i, j int) bool {

2
go.mod
View File

@@ -15,7 +15,7 @@ require (
github.com/google/shlex v0.0.0-20191202100458-e7afc7fbc510 github.com/google/shlex v0.0.0-20191202100458-e7afc7fbc510
github.com/hashicorp/go-cty-funcs v0.0.0-20200930094925-2721b1e36840 github.com/hashicorp/go-cty-funcs v0.0.0-20200930094925-2721b1e36840
github.com/hashicorp/hcl/v2 v2.8.2 github.com/hashicorp/hcl/v2 v2.8.2
github.com/moby/buildkit v0.10.1-0.20220809151411-8488654e899b github.com/moby/buildkit v0.10.1-0.20220816171719-55ba9d14360a
github.com/morikuni/aec v1.0.0 github.com/morikuni/aec v1.0.0
github.com/opencontainers/go-digest v1.0.0 github.com/opencontainers/go-digest v1.0.0
github.com/opencontainers/image-spec v1.0.3-0.20211202183452-c5a74bcca799 github.com/opencontainers/image-spec v1.0.3-0.20211202183452-c5a74bcca799

4
go.sum
View File

@@ -411,8 +411,8 @@ github.com/mitchellh/go-wordwrap v0.0.0-20150314170334-ad45545899c7/go.mod h1:ZX
github.com/mitchellh/mapstructure v1.1.2/go.mod h1:FVVH3fgwuzCH5S8UJGiWEs2h04kUh9fWfEaFds41c1Y= github.com/mitchellh/mapstructure v1.1.2/go.mod h1:FVVH3fgwuzCH5S8UJGiWEs2h04kUh9fWfEaFds41c1Y=
github.com/mitchellh/mapstructure v1.5.0 h1:jeMsZIYE/09sWLaz43PL7Gy6RuMjD2eJVyuac5Z2hdY= github.com/mitchellh/mapstructure v1.5.0 h1:jeMsZIYE/09sWLaz43PL7Gy6RuMjD2eJVyuac5Z2hdY=
github.com/mitchellh/mapstructure v1.5.0/go.mod h1:bFUtVrKA4DC2yAKiSyO/QUcy7e+RRV2QTWOzhPopBRo= github.com/mitchellh/mapstructure v1.5.0/go.mod h1:bFUtVrKA4DC2yAKiSyO/QUcy7e+RRV2QTWOzhPopBRo=
github.com/moby/buildkit v0.10.1-0.20220809151411-8488654e899b h1:F/f/Ixaw8REoF5EjkMLh/2RBrsP0jeCPGBlczfqy9aw= github.com/moby/buildkit v0.10.1-0.20220816171719-55ba9d14360a h1:NI01Z14Hbwo1MHq8ylu4HNkmKGnhk8UZsD6c6FVMcA8=
github.com/moby/buildkit v0.10.1-0.20220809151411-8488654e899b/go.mod h1:Wa+LkeUQ9NJTVXTAY38rhkfKVQcuCIo2fbavRSuGsbI= github.com/moby/buildkit v0.10.1-0.20220816171719-55ba9d14360a/go.mod h1:Wa+LkeUQ9NJTVXTAY38rhkfKVQcuCIo2fbavRSuGsbI=
github.com/moby/locker v1.0.1 h1:fOXqR41zeveg4fFODix+1Ch4mj/gT0NE1XJbp/epuBg= github.com/moby/locker v1.0.1 h1:fOXqR41zeveg4fFODix+1Ch4mj/gT0NE1XJbp/epuBg=
github.com/moby/locker v1.0.1/go.mod h1:S7SDdo5zpBK84bzzVlKr2V0hz+7x9hWbYC/kq7oQppc= github.com/moby/locker v1.0.1/go.mod h1:S7SDdo5zpBK84bzzVlKr2V0hz+7x9hWbYC/kq7oQppc=
github.com/moby/spdystream v0.2.0 h1:cjW1zVyyoiM0T7b6UoySUFqzXMoqRckQtXwGPiBhOM8= github.com/moby/spdystream v0.2.0 h1:cjW1zVyyoiM0T7b6UoySUFqzXMoqRckQtXwGPiBhOM8=

View File

@@ -101,7 +101,7 @@ func PrintOutline(dt []byte, w io.Writer) error {
fmt.Fprintf(tw, "DESCRIPTION:\t%s\n", o.Description) fmt.Fprintf(tw, "DESCRIPTION:\t%s\n", o.Description)
} }
tw.Flush() tw.Flush()
fmt.Println() fmt.Fprintln(tw)
} }
if len(o.Args) > 0 { if len(o.Args) > 0 {
@@ -111,7 +111,7 @@ func PrintOutline(dt []byte, w io.Writer) error {
fmt.Fprintf(tw, "%s\t%s\t%s\n", a.Name, a.Value, a.Description) fmt.Fprintf(tw, "%s\t%s\t%s\n", a.Name, a.Value, a.Description)
} }
tw.Flush() tw.Flush()
fmt.Println() fmt.Fprintln(tw)
} }
if len(o.Secrets) > 0 { if len(o.Secrets) > 0 {
@@ -125,7 +125,7 @@ func PrintOutline(dt []byte, w io.Writer) error {
fmt.Fprintf(tw, "%s\t%s\n", s.Name, b) fmt.Fprintf(tw, "%s\t%s\n", s.Name, b)
} }
tw.Flush() tw.Flush()
fmt.Println() fmt.Fprintln(tw)
} }
if len(o.SSH) > 0 { if len(o.SSH) > 0 {
@@ -139,7 +139,7 @@ func PrintOutline(dt []byte, w io.Writer) error {
fmt.Fprintf(tw, "%s\t%s\n", s.Name, b) fmt.Fprintf(tw, "%s\t%s\n", s.Name, b)
} }
tw.Flush() tw.Flush()
fmt.Println() fmt.Fprintln(tw)
} }
return nil return nil

View File

@@ -274,3 +274,20 @@ func (pw *noOpWriter) Write(_ string, _ interface{}) error {
func (pw *noOpWriter) Close() error { func (pw *noOpWriter) Close() error {
return nil return nil
} }
func OneOff(ctx context.Context, id string) func(err error) error {
pw, _, _ := NewFromContext(ctx)
now := time.Now()
st := Status{
Started: &now,
}
pw.Write(id, st)
return func(err error) error {
// TODO: set error on status
now := time.Now()
st.Completed = &now
pw.Write(id, st)
pw.Close()
return err
}
}

2
vendor/modules.txt vendored
View File

@@ -358,7 +358,7 @@ github.com/mitchellh/go-wordwrap
# github.com/mitchellh/mapstructure v1.5.0 # github.com/mitchellh/mapstructure v1.5.0
## explicit; go 1.14 ## explicit; go 1.14
github.com/mitchellh/mapstructure github.com/mitchellh/mapstructure
# github.com/moby/buildkit v0.10.1-0.20220809151411-8488654e899b # github.com/moby/buildkit v0.10.1-0.20220816171719-55ba9d14360a
## explicit; go 1.17 ## explicit; go 1.17
github.com/moby/buildkit/api/services/control github.com/moby/buildkit/api/services/control
github.com/moby/buildkit/api/types github.com/moby/buildkit/api/types