Skip to content

Semantic versioning for definitions #483

@morigs

Description

@morigs

Currently, a new revision created on every definition update. Revision numbers are simple increasing integers (v1, v2, v3...).
User can specify specific revision when using definition in component, trait, etc...

There are two practical problems with this approach:

Avoiding Breaking Changes

As a user I want to pin used version to the major. So that it will be automatically updated, but won't cause any breaking changes.

For example, I specify mycomponent@^1.2.0. When operator updates mycomponent to version 1.3.0, I will automatically get the new version. However, if the operator publishes a new version with breaking changes (2.0.0) I won't get it until explicitly update component to mycomponent@^2.0.0 with new properties.

Reproducible Deployments

Suppose I have Application manifest which uses mycomponent@v3 and mycomponent definition. Now I want to share my Application with third-party so that they can deploy it on their infrastructure. They apply mycomponent definition, but now they have mycomponent-v1 revision only and they have to update all applications and replace v3 with v1.


Should this be addressed by the spec? Or this is KubeVela specific issue? Are there known workarounds?

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions