mirror of
https://gitea.com/Lydanne/buildx.git
synced 2025-07-17 08:57:07 +08:00
driver: resolve BuildKit version for docker driver
Buildx currently returns the Docker Engine version for the docker driver and it can be confusing. This is because BuildKit before 0.11 version does not support the Info API that returns the BuildKit version. This change resolves the BuildKit version from the Docker engine one. Signed-off-by: CrazyMax <crazy-max@users.noreply.github.com>
This commit is contained in:
186
driver/docker/version.go
Normal file
186
driver/docker/version.go
Normal file
@@ -0,0 +1,186 @@
|
||||
package docker
|
||||
|
||||
import (
|
||||
"github.com/Masterminds/semver/v3"
|
||||
)
|
||||
|
||||
type mobyBuildkitVersion struct {
|
||||
MobyVersionConstraint string
|
||||
BuildkitVersion string
|
||||
}
|
||||
|
||||
// https://gist.github.com/crazy-max/780cb6878c37cb79ec3f7699706cf83f
|
||||
// constraint syntax: https://github.com/Masterminds/semver#checking-version-constraints
|
||||
var mobyBuildkitVersions = []mobyBuildkitVersion{
|
||||
{
|
||||
MobyVersionConstraint: ">= 18.06.0-0, < 18.06.1-0",
|
||||
BuildkitVersion: "v0.0.0+9acf51e",
|
||||
},
|
||||
{
|
||||
MobyVersionConstraint: ">= 18.06.1-0, < 18.09.0-0",
|
||||
BuildkitVersion: "v0.0.0+98f1604",
|
||||
},
|
||||
{
|
||||
MobyVersionConstraint: ">= 18.09.0-0, < 18.09.1-0",
|
||||
BuildkitVersion: "v0.0.0+c7bb575",
|
||||
},
|
||||
{
|
||||
MobyVersionConstraint: "~18.09.1-0",
|
||||
BuildkitVersion: "v0.3.3",
|
||||
},
|
||||
{
|
||||
MobyVersionConstraint: "> 18.09.1-0, < 18.09.6-0",
|
||||
BuildkitVersion: "v0.3.3+d9f7592",
|
||||
},
|
||||
{
|
||||
MobyVersionConstraint: ">= 18.09.6-0, < 18.09.7-0",
|
||||
BuildkitVersion: "v0.4.0+ed4da8b",
|
||||
},
|
||||
{
|
||||
MobyVersionConstraint: ">= 18.09.7-0, < 19.03.0-0",
|
||||
BuildkitVersion: "v0.4.0+05766c5",
|
||||
},
|
||||
{
|
||||
MobyVersionConstraint: "<= 19.03.0-beta2",
|
||||
BuildkitVersion: "v0.4.0+b302896",
|
||||
},
|
||||
{
|
||||
MobyVersionConstraint: "<= 19.03.0-beta3",
|
||||
BuildkitVersion: "v0.4.0+8818c67",
|
||||
},
|
||||
{
|
||||
MobyVersionConstraint: "<= 19.03.0-beta5",
|
||||
BuildkitVersion: "v0.5.1+f238f1e",
|
||||
},
|
||||
{
|
||||
MobyVersionConstraint: "< 19.03.2-0",
|
||||
BuildkitVersion: "v0.5.1+1f89ec1",
|
||||
},
|
||||
{
|
||||
MobyVersionConstraint: "<= 19.03.2-beta1",
|
||||
BuildkitVersion: "v0.6.1",
|
||||
},
|
||||
{
|
||||
MobyVersionConstraint: ">= 19.03.2-0, < 19.03.3-0",
|
||||
BuildkitVersion: "v0.6.1+588c73e",
|
||||
},
|
||||
{
|
||||
MobyVersionConstraint: ">= 19.03.3-0, < 19.03.5-beta2",
|
||||
BuildkitVersion: "v0.6.2",
|
||||
},
|
||||
{
|
||||
MobyVersionConstraint: "<= 19.03.5-rc1",
|
||||
BuildkitVersion: "v0.6.2+ff93519",
|
||||
},
|
||||
{
|
||||
MobyVersionConstraint: "<= 19.03.5",
|
||||
BuildkitVersion: "v0.6.3+928f3b4",
|
||||
},
|
||||
{
|
||||
MobyVersionConstraint: "<= 19.03.6-rc1",
|
||||
BuildkitVersion: "v0.6.3+926935b",
|
||||
},
|
||||
{
|
||||
MobyVersionConstraint: ">= 19.03.6-rc2, < 19.03.7-0",
|
||||
BuildkitVersion: "v0.6.3+57e8ad5",
|
||||
},
|
||||
{
|
||||
MobyVersionConstraint: ">= 19.03.7-0, < 19.03.9-0",
|
||||
BuildkitVersion: "v0.6.4",
|
||||
},
|
||||
{
|
||||
MobyVersionConstraint: ">= 19.03.9-0, < 19.03.13-0",
|
||||
BuildkitVersion: "v0.6.4+a7d7b7f",
|
||||
},
|
||||
{
|
||||
MobyVersionConstraint: "<= 19.03.13-beta2",
|
||||
BuildkitVersion: "v0.6.4+da1f4bf",
|
||||
},
|
||||
{
|
||||
MobyVersionConstraint: "<= 19.03.14",
|
||||
BuildkitVersion: "v0.6.4+df89d4d",
|
||||
},
|
||||
{
|
||||
MobyVersionConstraint: "< 20.10.0",
|
||||
BuildkitVersion: "v0.6.4+396bfe2",
|
||||
},
|
||||
{
|
||||
MobyVersionConstraint: "20.10.0-0 - 20.10.2-0",
|
||||
BuildkitVersion: "v0.8.1",
|
||||
},
|
||||
{
|
||||
MobyVersionConstraint: ">= 20.10.3-0, < 20.10.4-0",
|
||||
BuildkitVersion: "v0.8.1+68bb095",
|
||||
},
|
||||
{
|
||||
MobyVersionConstraint: "20.10.4-0 - 20.10.6",
|
||||
BuildkitVersion: "v0.8.2",
|
||||
},
|
||||
{
|
||||
MobyVersionConstraint: "20.10.7-0 - 20.10.10-0",
|
||||
BuildkitVersion: "v0.8.2+244e8cde",
|
||||
},
|
||||
{
|
||||
MobyVersionConstraint: "20.10.11-0 - 20.10.18-0",
|
||||
BuildkitVersion: "v0.8.2+bc07b2b8",
|
||||
},
|
||||
{
|
||||
MobyVersionConstraint: ">= 20.10.19-0, < 20.10.20-0",
|
||||
BuildkitVersion: "v0.8.2+3a1eeca5",
|
||||
},
|
||||
{
|
||||
MobyVersionConstraint: ">= 20.10.20-0, < 20.10.21-0",
|
||||
BuildkitVersion: "v0.8.2+c0149372",
|
||||
},
|
||||
{
|
||||
MobyVersionConstraint: ">= 20.10.21-0, <= 20.10.23",
|
||||
BuildkitVersion: "v0.8.2+eeb7b65",
|
||||
},
|
||||
{
|
||||
MobyVersionConstraint: "~20.10-0",
|
||||
BuildkitVersion: "v0.8+unknown",
|
||||
},
|
||||
{
|
||||
MobyVersionConstraint: "~22.06-0",
|
||||
BuildkitVersion: "v0.10.3",
|
||||
},
|
||||
{
|
||||
MobyVersionConstraint: ">= 23.0.0-0, < 23.0.1-0",
|
||||
BuildkitVersion: "v0.10.6",
|
||||
},
|
||||
{
|
||||
MobyVersionConstraint: "23.0.1",
|
||||
BuildkitVersion: "v0.10.6+4f0ee09",
|
||||
},
|
||||
{
|
||||
MobyVersionConstraint: "23.0.2",
|
||||
BuildkitVersion: "v0.10.6+70f2ad5",
|
||||
},
|
||||
{
|
||||
MobyVersionConstraint: "~23-0",
|
||||
BuildkitVersion: "v0.10+unknown",
|
||||
},
|
||||
}
|
||||
|
||||
func resolveBuildKitVersion(ver string) (string, error) {
|
||||
mobyVersion, err := semver.NewVersion(ver)
|
||||
if err != nil {
|
||||
return "", err
|
||||
}
|
||||
for _, m := range mobyBuildkitVersions {
|
||||
c, err := semver.NewConstraint(m.MobyVersionConstraint)
|
||||
if err != nil {
|
||||
return "", err
|
||||
}
|
||||
//if _, errs := c.Validate(mobyVersion); len(errs) > 0 {
|
||||
// for _, err := range errs {
|
||||
// fmt.Printf("%s: %v\n", m.MobyVersionConstraint, err)
|
||||
// }
|
||||
//}
|
||||
if !c.Check(mobyVersion) {
|
||||
continue
|
||||
}
|
||||
return m.BuildkitVersion, nil
|
||||
}
|
||||
return "", nil
|
||||
}
|
Reference in New Issue
Block a user