mirror of
https://gitea.com/Lydanne/buildx.git
synced 2025-05-18 09:17:49 +08:00

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>
187 lines
4.4 KiB
Go
187 lines
4.4 KiB
Go
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
|
|
}
|