Skip to content

Commit

Permalink
Fix verify_and_print_latest_release logic (#19111)
Browse files Browse the repository at this point in the history
Fixes #19109 Fix #19136

Signed-off-by: Faseela K <faseela.k@est.tech>
  • Loading branch information
kfaseela authored Nov 30, 2021
1 parent b432368 commit bf324a7
Showing 1 changed file with 33 additions and 19 deletions.
52 changes: 33 additions & 19 deletions tools/dependency/release_dates.py
Original file line number Diff line number Diff line change
Expand Up @@ -24,6 +24,7 @@
import utils
from colorama import Fore, Style
from packaging import version
from packaging.version import parse as parse_version

# Tag issues created with these labels.
LABELS = ['dependencies', 'area/build', 'no stalebot']
Expand Down Expand Up @@ -60,16 +61,31 @@ def format_utc_date(date):
return date.date().isoformat()


# Get the chronologically latest release from a github repo
def get_latest_release(repo, version_min):
current_version = parse_version(version_min)
latest_version = current_version
latest_release = None
for release in repo.get_releases():
version = parse_version(release.tag_name)
if not version:
continue
if version >= latest_version:
latest_release = release
latest_version = version
return latest_release


# Obtain latest release version and compare against metadata version, warn on
# mismatch.
def verify_and_print_latest_release(dep, repo, metadata_version, release_date, create_issue=False):
try:
latest_release = repo.get_latest_release()
latest_release = get_latest_release(repo, metadata_version)
except github.GithubException as err:
# Repositories can not have releases or if they have releases may not publish a latest releases. Return
print(f'GithubException {repo.name}: {err.data} {err.status} while getting latest release.')
return
if latest_release.created_at > release_date and latest_release.tag_name != metadata_version:
if latest_release and latest_release.created_at > release_date and latest_release.tag_name != metadata_version:
print(
f'{Fore.YELLOW}*WARNING* {dep} has a newer release than {metadata_version}@<{release_date}>: '
f'{latest_release.tag_name}@<{latest_release.created_at}>{Style.RESET_ALL}')
Expand Down Expand Up @@ -203,29 +219,27 @@ def verify_and_print_release_date(dep, github_release_date, metadata_release_dat

# Extract release date from GitHub API for tagged releases.
def get_tagged_release_date(repo, metadata_version, github_release):

try:
latest = repo.get_latest_release()
latest = get_latest_release(repo, github_release.version)
if latest:
release = repo.get_release(github_release.version)
return release.published_at
except github.GithubException as err:
# Repositories can not have releases or if they have releases may not publish a latest releases. If this is the case we keep going
latest = ''
print(f'GithubException {repo.name}: {err.data} {err.status} while getting latest release.')

if latest:
release = repo.get_release(github_release.version)
return release.published_at
else:
tags = repo.get_tags()
current_metadata_tag_commit_date = ''
for tag in tags.reversed:
if tag.name == github_release.version:
current_metadata_tag_commit_date = tag.commit.commit.committer.date
if not version.parse(tag.name).is_prerelease and version.parse(
tag.name) > version.parse(github_release.version):
print(
f'{Fore.YELLOW}*WARNING* {repo.name} has a newer release than {github_release.version}@<{current_metadata_tag_commit_date}>: '
f'{tag.name}@<{tag.commit.commit.committer.date}>{Style.RESET_ALL}')
return current_metadata_tag_commit_date
tags = repo.get_tags()
current_metadata_tag_commit_date = ''
for tag in tags.reversed:
if tag.name == github_release.version:
current_metadata_tag_commit_date = tag.commit.commit.committer.date
if not version.parse(tag.name).is_prerelease and version.parse(tag.name) > version.parse(
github_release.version):
print(
f'{Fore.YELLOW}*WARNING* {repo.name} has a newer release than {github_release.version}@<{current_metadata_tag_commit_date}>: '
f'{tag.name}@<{tag.commit.commit.committer.date}>{Style.RESET_ALL}')
return current_metadata_tag_commit_date


# Extract release date from GitHub API for untagged releases.
Expand Down

0 comments on commit bf324a7

Please sign in to comment.