Enable Semantic Versioning and Automatically Deploy New Versions

Alex Parker
 | 
May 24, 2022

Replicated recently released two great new features that are even more powerful when used together: our new support for semantic versioning and automatically deploying updates.

Why Replicated decided to implement semantic versioning support

Semantic versioning is commonly used in the modern software development life cycle. Replicated’s recent support for semantic versioning gives vendors greater flexibility and control over releases in a release channel. When semantic versioning is enabled for a channel in the vendor portal, Replicated validates that the version label for any release promoted to the channel is a valid semantic version.

Enable semantic versioning

Related support for semantic versioning was introduced in app manager v1.58.0 so that releases are sequenced by semantic versions in the admin console, rather than by the date the release was promoted.

Semantic versioning support allows vendors to have multiple major and minor versions active in a release channel simultaneously. Previously, when releases were sequenced by their promotion date, vendors couldn’t patch older versions, or if they did, the newly promoted patch release would become the latest release in that channel. With semantic versioning support, vendors can patch any number of versions without disrupting the sequencing or without having to create a separate release channel per major or minor version.

How to enable semantic versioning

By default, semantic versioning support is now enabled for the Stable and Beta channels for new applications. The Unstable channel and any new channels will continue to have semantic versioning disabled by default.

There is no change in behavior for pre-existing applications and their channels. Semantic versioning can be enabled or disabled for any channel from the channel’s settings in the vendor portal or with the replicated CLI `channel enable-semantic-versioning` and `channel disable-semantic-versioning` commands.

How to automatically deploy updates

The admin console has long supported automatically checking for updates. This feature pulls in newly available versions (and runs preflight checks for them) so that end users don't have to check for updates manually. But these updates were never automatically deployed.

App manager v1.58.0 introduced the ability for end users to automatically deploy new updates that are semantically versioned. App manager v1.67.0 extended this ability to work without semantic versioning.

Automatic deployments are configured as an extension of the automatic updates check. When semantic versioning is disabled, a checkbox lets end users enable automatic deployment of new versions. When this option is selected, if new versions are fetched automatically and preflight checks pass, these versions will be deployed automatically.

Configure automatic updates

Enable semantic versioning and automatically deploy new versions

While automatically deploying new versions without semantic versioning is useful, end users won’t have control over which types of updates are automatically deployed.

When the release channel has semantic versioning enabled, end users can choose which types of versions they want deployed automatically: patch versions only; patch and minor versions; or patch, minor, and major versions.

Automatically deploy new versions

End users might want to automatically deploy new patch versions only, to receive bug fixes and security updates but make more informed decisions about deploying new minor and major versions. Or perhaps they want to automatically deploy new patches and minor versions (since these are backward compatible) but only manually deploy new major versions (which can have breaking changes).

Summary

Semantic versioning support is a flexible and powerful way for vendors to manage their releases, easily patch older versions, and maintain multiple major and minor versions in one release channel. Automatic updates can seamlessly keep end users’ apps up to date. But these two features really shine when used together, since end users can control which types of updates are automatically deployed in their environment.

For more information, check out this demonstration of how to use semantic versioning and how to automatically deploy updates in the admin console.