mirror of https://github.com/docker/buildx.git
remote: add additional connhelpers to buildx
Signed-off-by: Justin Chadwell <me@jedevc.com>
This commit is contained in:
parent
22ac3271d2
commit
1eff9310f8
|
@ -9,6 +9,7 @@ import (
|
||||||
"github.com/docker/buildx/build"
|
"github.com/docker/buildx/build"
|
||||||
"github.com/docker/buildx/driver"
|
"github.com/docker/buildx/driver"
|
||||||
ctxkube "github.com/docker/buildx/driver/kubernetes/context"
|
ctxkube "github.com/docker/buildx/driver/kubernetes/context"
|
||||||
|
remoteutil "github.com/docker/buildx/driver/remote/util"
|
||||||
"github.com/docker/buildx/store"
|
"github.com/docker/buildx/store"
|
||||||
"github.com/docker/buildx/store/storeutil"
|
"github.com/docker/buildx/store/storeutil"
|
||||||
"github.com/docker/buildx/util/platformutil"
|
"github.com/docker/buildx/util/platformutil"
|
||||||
|
@ -45,12 +46,8 @@ func validateEndpoint(dockerCli command.Cli, ep string) (string, error) {
|
||||||
|
|
||||||
// validateBuildkitEndpoint validates that endpoint is a valid buildkit host
|
// validateBuildkitEndpoint validates that endpoint is a valid buildkit host
|
||||||
func validateBuildkitEndpoint(ep string) (string, error) {
|
func validateBuildkitEndpoint(ep string) (string, error) {
|
||||||
endpoint, err := url.Parse(ep)
|
if err := remoteutil.IsValidEndpoint(ep); err != nil {
|
||||||
if err != nil {
|
return "", err
|
||||||
return "", errors.Wrapf(err, "failed to parse endpoint %s", ep)
|
|
||||||
}
|
|
||||||
if endpoint.Scheme != "tcp" && endpoint.Scheme != "unix" {
|
|
||||||
return "", errors.Errorf("unrecognized url scheme %s", endpoint.Scheme)
|
|
||||||
}
|
}
|
||||||
return ep, nil
|
return ep, nil
|
||||||
}
|
}
|
||||||
|
|
|
@ -4,10 +4,15 @@ import (
|
||||||
"context"
|
"context"
|
||||||
"net/url"
|
"net/url"
|
||||||
"path/filepath"
|
"path/filepath"
|
||||||
"regexp"
|
|
||||||
"strings"
|
"strings"
|
||||||
|
|
||||||
|
// import connhelpers for special url schemes
|
||||||
|
_ "github.com/moby/buildkit/client/connhelper/dockercontainer"
|
||||||
|
_ "github.com/moby/buildkit/client/connhelper/kubepod"
|
||||||
|
_ "github.com/moby/buildkit/client/connhelper/ssh"
|
||||||
|
|
||||||
"github.com/docker/buildx/driver"
|
"github.com/docker/buildx/driver"
|
||||||
|
util "github.com/docker/buildx/driver/remote/util"
|
||||||
dockerclient "github.com/docker/docker/client"
|
dockerclient "github.com/docker/docker/client"
|
||||||
"github.com/pkg/errors"
|
"github.com/pkg/errors"
|
||||||
)
|
)
|
||||||
|
@ -15,8 +20,6 @@ import (
|
||||||
const prioritySupported = 20
|
const prioritySupported = 20
|
||||||
const priorityUnsupported = 90
|
const priorityUnsupported = 90
|
||||||
|
|
||||||
var schemeRegexp = regexp.MustCompile("^(tcp|unix)://")
|
|
||||||
|
|
||||||
func init() {
|
func init() {
|
||||||
driver.Register(&factory{})
|
driver.Register(&factory{})
|
||||||
}
|
}
|
||||||
|
@ -33,10 +36,10 @@ func (*factory) Usage() string {
|
||||||
}
|
}
|
||||||
|
|
||||||
func (*factory) Priority(ctx context.Context, endpoint string, api dockerclient.APIClient) int {
|
func (*factory) Priority(ctx context.Context, endpoint string, api dockerclient.APIClient) int {
|
||||||
if schemeRegexp.MatchString(endpoint) {
|
if util.IsValidEndpoint(endpoint) != nil {
|
||||||
return prioritySupported
|
return priorityUnsupported
|
||||||
}
|
}
|
||||||
return priorityUnsupported
|
return prioritySupported
|
||||||
}
|
}
|
||||||
|
|
||||||
func (f *factory) New(ctx context.Context, cfg driver.InitConfig) (driver.Driver, error) {
|
func (f *factory) New(ctx context.Context, cfg driver.InitConfig) (driver.Driver, error) {
|
||||||
|
|
|
@ -0,0 +1,26 @@
|
||||||
|
package remote
|
||||||
|
|
||||||
|
import (
|
||||||
|
"net/url"
|
||||||
|
|
||||||
|
"github.com/pkg/errors"
|
||||||
|
)
|
||||||
|
|
||||||
|
var schemes = map[string]struct{}{
|
||||||
|
"tcp": {},
|
||||||
|
"unix": {},
|
||||||
|
"ssh": {},
|
||||||
|
"docker-container": {},
|
||||||
|
"kube-pod": {},
|
||||||
|
}
|
||||||
|
|
||||||
|
func IsValidEndpoint(ep string) error {
|
||||||
|
endpoint, err := url.Parse(ep)
|
||||||
|
if err != nil {
|
||||||
|
return errors.Wrapf(err, "failed to parse endpoint %s", ep)
|
||||||
|
}
|
||||||
|
if _, ok := schemes[endpoint.Scheme]; !ok {
|
||||||
|
return errors.Errorf("unrecognized url scheme %s", endpoint.Scheme)
|
||||||
|
}
|
||||||
|
return nil
|
||||||
|
}
|
Loading…
Reference in New Issue