Compare commits
4 Commits
v0.5.0-rc1
...
v0.5.1
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
11057da373 | ||
|
|
381dc8fb43 | ||
|
|
780fad46f2 | ||
|
|
2ca5ffa06a |
31
.travis.yml
31
.travis.yml
@@ -1,31 +0,0 @@
|
|||||||
sudo: required
|
|
||||||
language: minimal
|
|
||||||
|
|
||||||
env:
|
|
||||||
global:
|
|
||||||
- DOCKER_CHANNEL="stable"
|
|
||||||
- DOCKER_CLI_EXPERIMENTAL="enabled"
|
|
||||||
- PLATFORMS="linux/amd64,linux/arm/v6,linux/arm/v7,linux/arm64,linux/s390x,linux/ppc64le"
|
|
||||||
- CROSS_PLATFORMS="${PLATFORMS},darwin/amd64,windows/amd64"
|
|
||||||
- PREFER_BUILDCTL="1"
|
|
||||||
|
|
||||||
before_install:
|
|
||||||
# update docker
|
|
||||||
- curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -
|
|
||||||
- sudo add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu $(lsb_release -cs) $DOCKER_CHANNEL"
|
|
||||||
- sudo apt-get update
|
|
||||||
- sudo apt-get -y -o Dpkg::Options::="--force-confnew" install docker-ce docker-ce-cli
|
|
||||||
# check
|
|
||||||
- sudo systemctl restart docker
|
|
||||||
- docker info
|
|
||||||
|
|
||||||
install:
|
|
||||||
- docker buildx create --name builder --driver docker-container --driver-opt image=$REPO_SLUG_ORIGIN --use
|
|
||||||
- docker run --rm --privileged tonistiigi/binfmt:latest --install all
|
|
||||||
- docker run --name buildkit --rm -d --privileged -p 1234:1234 $REPO_SLUG_ORIGIN --addr tcp://0.0.0.0:1234
|
|
||||||
- sudo docker cp buildkit:/usr/bin/buildctl /usr/bin/
|
|
||||||
- export BUILDKIT_HOST=tcp://0.0.0.0:1234
|
|
||||||
|
|
||||||
script:
|
|
||||||
- make binaries validate-all
|
|
||||||
- TARGETPLATFORM="${CROSS_PLATFORMS}" ./hack/cross
|
|
||||||
@@ -4,7 +4,6 @@ import (
|
|||||||
"context"
|
"context"
|
||||||
"os"
|
"os"
|
||||||
"path/filepath"
|
"path/filepath"
|
||||||
"strings"
|
|
||||||
|
|
||||||
"github.com/docker/buildx/build"
|
"github.com/docker/buildx/build"
|
||||||
"github.com/docker/buildx/driver"
|
"github.com/docker/buildx/driver"
|
||||||
@@ -220,7 +219,7 @@ func driversForNodeGroup(ctx context.Context, dockerCli command.Cli, ng *store.N
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
d, err := driver.GetDriver(ctx, "buildx_buildkit_"+n.Name, f, dockerapi, dockerCli.ConfigFile(), kcc, n.Flags, n.ConfigFile, assignDriverOptsByDriverInfo(n.DriverOpts, di), contextPathHash)
|
d, err := driver.GetDriver(ctx, "buildx_buildkit_"+n.Name, f, dockerapi, dockerCli.ConfigFile(), kcc, n.Flags, n.ConfigFile, n.DriverOpts, n.Platforms, contextPathHash)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
di.Err = err
|
di.Err = err
|
||||||
return nil
|
return nil
|
||||||
@@ -238,20 +237,6 @@ func driversForNodeGroup(ctx context.Context, dockerCli command.Cli, ng *store.N
|
|||||||
return dis, nil
|
return dis, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
// pass platform as driver opts to provide for some drive, like kubernetes
|
|
||||||
func assignDriverOptsByDriverInfo(opts map[string]string, driveInfo build.DriverInfo) map[string]string {
|
|
||||||
m := map[string]string{}
|
|
||||||
|
|
||||||
if len(driveInfo.Platform) > 0 {
|
|
||||||
m["platform"] = strings.Join(platformutil.Format(driveInfo.Platform), ",")
|
|
||||||
}
|
|
||||||
|
|
||||||
for key := range opts {
|
|
||||||
m[key] = opts[key]
|
|
||||||
}
|
|
||||||
return m
|
|
||||||
}
|
|
||||||
|
|
||||||
// clientForEndpoint returns a docker client for an endpoint
|
// clientForEndpoint returns a docker client for an endpoint
|
||||||
func clientForEndpoint(dockerCli command.Cli, name string) (dockerclient.APIClient, error) {
|
func clientForEndpoint(dockerCli command.Cli, name string) (dockerclient.APIClient, error) {
|
||||||
list, err := dockerCli.ContextStore().List()
|
list, err := dockerCli.ContextStore().List()
|
||||||
@@ -353,7 +338,7 @@ func getDefaultDrivers(ctx context.Context, dockerCli command.Cli, defaultOnly b
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
d, err := driver.GetDriver(ctx, "buildx_buildkit_default", nil, dockerCli.Client(), dockerCli.ConfigFile(), nil, nil, "", nil, contextPathHash)
|
d, err := driver.GetDriver(ctx, "buildx_buildkit_default", nil, dockerCli.Client(), dockerCli.ConfigFile(), nil, nil, "", nil, nil, contextPathHash)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -9,7 +9,6 @@ import (
|
|||||||
"github.com/docker/buildx/driver/bkimage"
|
"github.com/docker/buildx/driver/bkimage"
|
||||||
"github.com/docker/buildx/driver/kubernetes/manifest"
|
"github.com/docker/buildx/driver/kubernetes/manifest"
|
||||||
"github.com/docker/buildx/driver/kubernetes/podchooser"
|
"github.com/docker/buildx/driver/kubernetes/podchooser"
|
||||||
"github.com/docker/buildx/util/platformutil"
|
|
||||||
dockerclient "github.com/docker/docker/client"
|
dockerclient "github.com/docker/docker/client"
|
||||||
"github.com/pkg/errors"
|
"github.com/pkg/errors"
|
||||||
"k8s.io/client-go/kubernetes"
|
"k8s.io/client-go/kubernetes"
|
||||||
@@ -71,6 +70,7 @@ func (f *factory) New(ctx context.Context, cfg driver.InitConfig) (driver.Driver
|
|||||||
Replicas: 1,
|
Replicas: 1,
|
||||||
BuildkitFlags: cfg.BuildkitFlags,
|
BuildkitFlags: cfg.BuildkitFlags,
|
||||||
Rootless: false,
|
Rootless: false,
|
||||||
|
Platforms: cfg.Platforms,
|
||||||
}
|
}
|
||||||
loadbalance := LoadbalanceSticky
|
loadbalance := LoadbalanceSticky
|
||||||
imageOverride := ""
|
imageOverride := ""
|
||||||
@@ -91,14 +91,6 @@ func (f *factory) New(ctx context.Context, cfg driver.InitConfig) (driver.Driver
|
|||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
deploymentOpt.Image = bkimage.DefaultRootlessImage
|
deploymentOpt.Image = bkimage.DefaultRootlessImage
|
||||||
case "platform":
|
|
||||||
if v != "" {
|
|
||||||
platforms, err := platformutil.Parse(strings.Split(v, ","))
|
|
||||||
if err != nil {
|
|
||||||
return nil, err
|
|
||||||
}
|
|
||||||
deploymentOpt.Platforms = platforms
|
|
||||||
}
|
|
||||||
case "nodeselector":
|
case "nodeselector":
|
||||||
kvs := strings.Split(strings.Trim(v, `"`), ",")
|
kvs := strings.Split(strings.Trim(v, `"`), ",")
|
||||||
s := map[string]string{}
|
s := map[string]string{}
|
||||||
|
|||||||
@@ -11,6 +11,7 @@ import (
|
|||||||
|
|
||||||
dockerclient "github.com/docker/docker/client"
|
dockerclient "github.com/docker/docker/client"
|
||||||
"github.com/moby/buildkit/client"
|
"github.com/moby/buildkit/client"
|
||||||
|
specs "github.com/opencontainers/image-spec/specs-go/v1"
|
||||||
"github.com/pkg/errors"
|
"github.com/pkg/errors"
|
||||||
)
|
)
|
||||||
|
|
||||||
@@ -55,6 +56,7 @@ type InitConfig struct {
|
|||||||
ConfigFile string
|
ConfigFile string
|
||||||
DriverOpts map[string]string
|
DriverOpts map[string]string
|
||||||
Auth Auth
|
Auth Auth
|
||||||
|
Platforms []specs.Platform
|
||||||
// ContextPathHash can be used for determining pods in the driver instance
|
// ContextPathHash can be used for determining pods in the driver instance
|
||||||
ContextPathHash string
|
ContextPathHash string
|
||||||
}
|
}
|
||||||
@@ -101,7 +103,7 @@ func GetFactory(name string, instanceRequired bool) Factory {
|
|||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
func GetDriver(ctx context.Context, name string, f Factory, api dockerclient.APIClient, auth Auth, kcc KubeClientConfig, flags []string, config string, do map[string]string, contextPathHash string) (Driver, error) {
|
func GetDriver(ctx context.Context, name string, f Factory, api dockerclient.APIClient, auth Auth, kcc KubeClientConfig, flags []string, config string, do map[string]string, platforms []specs.Platform, contextPathHash string) (Driver, error) {
|
||||||
ic := InitConfig{
|
ic := InitConfig{
|
||||||
DockerAPI: api,
|
DockerAPI: api,
|
||||||
KubeClientConfig: kcc,
|
KubeClientConfig: kcc,
|
||||||
@@ -110,6 +112,7 @@ func GetDriver(ctx context.Context, name string, f Factory, api dockerclient.API
|
|||||||
ConfigFile: config,
|
ConfigFile: config,
|
||||||
DriverOpts: do,
|
DriverOpts: do,
|
||||||
Auth: auth,
|
Auth: auth,
|
||||||
|
Platforms: platforms,
|
||||||
ContextPathHash: contextPathHash,
|
ContextPathHash: contextPathHash,
|
||||||
}
|
}
|
||||||
if f == nil {
|
if f == nil {
|
||||||
|
|||||||
23
hack/util
23
hack/util
@@ -8,28 +8,19 @@
|
|||||||
: ${CACHEDIR_FROM=}
|
: ${CACHEDIR_FROM=}
|
||||||
: ${CACHEDIR_TO=}
|
: ${CACHEDIR_TO=}
|
||||||
|
|
||||||
newerEqualThan() { # $1=minimum wanted version $2=actual-version
|
if [ "$PREFER_BUILDCTL" = "1" ]; then
|
||||||
[ "$1" = "$(printf "$1\n$2" | sort -V | head -n 1)" ]
|
echo >&2 "WARNING: PREFER_BUILDCTL is no longer supported. Ignoring."
|
||||||
}
|
fi
|
||||||
|
|
||||||
|
if [ "$PREFER_LEGACY" = "1" ]; then
|
||||||
|
echo >&2 "WARNING: PREFER_LEGACY is no longer supported. Ignoring."
|
||||||
|
fi
|
||||||
|
|
||||||
progressFlag=""
|
progressFlag=""
|
||||||
if [ "$CI" = "true" ]; then
|
if [ "$CI" = "true" ]; then
|
||||||
progressFlag="--progress=plain"
|
progressFlag="--progress=plain"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
buildmode="legacy"
|
|
||||||
if [ "$PREFER_BUILDCTL" = "1" ]; then
|
|
||||||
buildmode="buildkit";
|
|
||||||
else
|
|
||||||
serverVersion=$(docker info --format '{{.ServerVersion}}')
|
|
||||||
experimental=$(docker info --format '{{.ExperimentalBuild}}')
|
|
||||||
if [ "$PREFER_LEGACY" != "1" ] && ( newerEqualThan "18.09" $serverVersion || \
|
|
||||||
( newerEqualThan "18.06" $serverVersion && [ "true" = "$experimental" ] ) || \
|
|
||||||
[ "$DOCKER_BUILDKIT" = "1" ]); then
|
|
||||||
buildmode="docker-buildkit";
|
|
||||||
fi
|
|
||||||
fi
|
|
||||||
|
|
||||||
buildxCmd() {
|
buildxCmd() {
|
||||||
if docker buildx version >/dev/null 2>&1; then
|
if docker buildx version >/dev/null 2>&1; then
|
||||||
set -x
|
set -x
|
||||||
|
|||||||
Reference in New Issue
Block a user