You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
buildx/driver/docker/version.go

191 lines
4.5 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-0, < 23.0.4-0",
BuildkitVersion: "v0.10.6+70f2ad5",
},
{
MobyVersionConstraint: ">= 23.0.4-0, < 23.0.7-0",
BuildkitVersion: "v0.10.6+d52b2d5",
},
{
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
}