Skip to content

Commit

Permalink
Update version check to permit pre-releases (#43194)
Browse files Browse the repository at this point in the history
The minimum client version was updated to set the prerelease to
"aa" so that it appears before any alpha, beta, rc, or dev builds.
This is a similar hack to the one used by utils.VersionBeforeAlpha.

Fixes #43184.
  • Loading branch information
rosstimothy authored Jun 18, 2024
1 parent 48d0fcb commit 332963e
Show file tree
Hide file tree
Showing 2 changed files with 20 additions and 2 deletions.
16 changes: 16 additions & 0 deletions lib/auth/middleware_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -730,6 +730,22 @@ func TestValidateClientVersion(t *testing.T) {
require.True(t, trace.IsAccessDenied(err), "got %T, expected access denied error", err)
},
},
{
name: "pre-release client allowed",
middleware: &Middleware{OldestSupportedVersion: &teleport.MinClientSemVersion},
clientVersion: semver.Version{Major: teleport.SemVersion.Major - 1, PreRelease: "dev.abcd.123"}.String(),
errAssertion: func(t *testing.T, err error) {
require.NoError(t, err)
},
},
{
name: "pre-release client rejected",
middleware: &Middleware{OldestSupportedVersion: &teleport.MinClientSemVersion},
clientVersion: semver.Version{Major: teleport.SemVersion.Major - 2, PreRelease: "dev.abcd.123"}.String(),
errAssertion: func(t *testing.T, err error) {
require.True(t, trace.IsAccessDenied(err), "got %T, expected access denied error", err)
},
},
}

for _, tt := range cases {
Expand Down
6 changes: 4 additions & 2 deletions version.go
Original file line number Diff line number Diff line change
Expand Up @@ -33,8 +33,10 @@ var (
// Per https://github.com/gravitational/teleport/blob/master/rfd/0012-teleport-versioning.md,
// only one major version backwards is supported for clients.
MinClientVersion = MinClientSemVersion.String()
// MinClientSemVersion is the MinClientVersion represented as a [semver.Version].
MinClientSemVersion = semver.Version{Major: SemVersion.Major - 1}
// MinClientSemVersion is the MinClientVersion represented as a [semver.Version]. The
// [semver.Version.PreRelease] is set to "aa" so that the minimum client version comes before
// <version>-alpha so that alpha, beta, rc, and dev builds are permitted.
MinClientSemVersion = semver.Version{Major: SemVersion.Major - 1, PreRelease: "aa"}
)

// Gitref is set to the output of "git describe" during the build process.
Expand Down

0 comments on commit 332963e

Please sign in to comment.