Return suggested upgrade version from check_runner_upgrade_status
The following discussion from !90695 (merged) should be addressed:
-
@ayufan started a discussion: (+3 comments) I find this logic highly complex and hard to understand what and for what case we propose those resolutions. I tried to rewrite to make this logic more flat. This makes all existing specs to pass correctly.
TBH It would help to return also a proposed version to validate what is being proposed and when.
def check_runner_upgrade_status(runner_version) return :invalid unless runner_version releases = RunnerReleases.instance.releases orig_runner_version = runner_version runner_version = ::Gitlab::VersionInfo.parse(runner_version) unless runner_version.is_a?(::Gitlab::VersionInfo) raise ArgumentError, "'#{orig_runner_version}' is not a valid version" unless runner_version.valid? # Recommend patch update if there's a newer release in a same minor branch as runner releases.each do |available_release| if available_release.same_minor_version?(runner_version) && available_release > runner_version return :recommended end end # Recommend update if outside of backport window if outside_backport_window?(runner_version, releases) return :recommended end # Consider to update if there's a newer release within the currently deployed GitLab version releases.each do |available_release| if available_release.same_minor_version?(@gitlab_version) && available_release > runner_version return :available end end :not_available end