From 2a44d4220387762901b8b29ba3bfc5fe17db4e03 Mon Sep 17 00:00:00 2001 From: Ubuntu Date: Fri, 31 Jan 2025 22:22:25 +0000 Subject: [PATCH] add version check Signed-off-by: Joey Brown --- pkg/client/build.go | 17 +++++++++++++++-- 1 file changed, 15 insertions(+), 2 deletions(-) diff --git a/pkg/client/build.go b/pkg/client/build.go index 592f02e85..3c4489478 100644 --- a/pkg/client/build.go +++ b/pkg/client/build.go @@ -405,6 +405,7 @@ func (c *Client) Build(ctx context.Context, opts BuildOptions) error { pathsConfig.targetRunImagePath = targetRunImagePath pathsConfig.hostRunImagePath = hostRunImagePath } + runImage, warnings, err := c.validateRunImage(ctx, runImageName, fetchOptions, bldr.StackID) if err != nil { return errors.Wrapf(err, "invalid run-image '%s'", runImageName) @@ -954,10 +955,22 @@ func (c *Client) validateRunImage(context context.Context, name string, opts ima if err != nil { return nil, nil, err } + if stackID != expectedStack { - warnings = append(warnings, "deprecated usage of stack") + v, err := semver.NewVersion(c.Version()) + if err != nil { + return nil, nil, fmt.Errorf("error parsing pack client version: %w", err) + } + shouldValidateStack := v.LessThan(semver.MustParse("0.37.0")) + if shouldValidateStack { + err = fmt.Errorf("run-image stack id '%s' does not match builder stack '%s'", stackID, expectedStack) + } else { + warnings = append(warnings, "deprecated usage of stack") + } + return img, warnings, err } - return img, warnings, nil + + return img, warnings, err } func (c *Client) validateMixins(additionalBuildpacks []buildpack.BuildModule, bldr *builder.Builder, runImageName string, runMixins []string) error {