From f98340afb75a43b88d0edd79457f25cdc0510dd4 Mon Sep 17 00:00:00 2001 From: Parker Bibus Date: Thu, 22 Sep 2022 15:48:15 -0700 Subject: [PATCH 1/5] Add parser for the datetime to allow us to pass commit times manually. This enables passing the commit timestamp without calling to git. --- scripts/ci_setup.py | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) diff --git a/scripts/ci_setup.py b/scripts/ci_setup.py index 66e47e967a5..823485c6c0b 100755 --- a/scripts/ci_setup.py +++ b/scripts/ci_setup.py @@ -6,6 +6,8 @@ import os import sys + +from dateutil import parser as date_parser from subprocess import check_output from performance.common import get_repo_root_path @@ -94,6 +96,13 @@ def add_arguments(parser: ArgumentParser) -> ArgumentParser: type=str, help='Product commit sha.' ) + parser.add_argument( + '--commit-time', + dest='commit_time', + required=False, + type=str, + help='Product commit time.' + ) parser.add_argument( '--repository', dest='repository', @@ -309,7 +318,8 @@ def __main(args: list) -> int: target_framework_moniker = dotnet.FrameworkAction.get_target_framework_moniker(framework) dotnet_version = dotnet.get_dotnet_version(target_framework_moniker, args.cli) if args.dotnet_versions == [] else args.dotnet_versions[0] commit_sha = dotnet.get_dotnet_sdk(target_framework_moniker, args.cli) if args.commit_sha is None else args.commit_sha - source_timestamp = dotnet.get_commit_date(target_framework_moniker, commit_sha, repo_url) + timestamp_value = dotnet.get_commit_date(target_framework_moniker, commit_sha, repo_url) if args.commit_time is None else args.commit_time + source_timestamp = date_parser.parse(timestamp_value).strftime('%Y-%m-%dT%H:%M:%SZ') branch = ChannelMap.get_branch(args.channel) if not args.branch else args.branch From f0ee76140517be20ea8ef7fe45628c5c89bbd063 Mon Sep 17 00:00:00 2001 From: Parker Bibus Date: Wed, 28 Sep 2022 12:10:14 -0700 Subject: [PATCH 2/5] Made the source_timestamp deliniation between being included and not more clear. --- scripts/ci_setup.py | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/scripts/ci_setup.py b/scripts/ci_setup.py index 823485c6c0b..ca44848b49c 100755 --- a/scripts/ci_setup.py +++ b/scripts/ci_setup.py @@ -5,9 +5,8 @@ import os import sys +import datetime - -from dateutil import parser as date_parser from subprocess import check_output from performance.common import get_repo_root_path @@ -318,8 +317,11 @@ def __main(args: list) -> int: target_framework_moniker = dotnet.FrameworkAction.get_target_framework_moniker(framework) dotnet_version = dotnet.get_dotnet_version(target_framework_moniker, args.cli) if args.dotnet_versions == [] else args.dotnet_versions[0] commit_sha = dotnet.get_dotnet_sdk(target_framework_moniker, args.cli) if args.commit_sha is None else args.commit_sha - timestamp_value = dotnet.get_commit_date(target_framework_moniker, commit_sha, repo_url) if args.commit_time is None else args.commit_time - source_timestamp = date_parser.parse(timestamp_value).strftime('%Y-%m-%dT%H:%M:%SZ') + if(args.commit_time is not None): + parsed_timestamp = datetime.datetime.strptime(timestamp_value, '%Y-%m-%d %H:%M:%S %z').astimezone(datetime.timezone.utc) + source_timestamp = parsed_timestamp.strftime('%Y-%m-%dT%H:%M:%SZ') + else: + source_timestamp = dotnet.get_commit_date(target_framework_moniker, commit_sha, repo_url) branch = ChannelMap.get_branch(args.channel) if not args.branch else args.branch From 12aca50010eca2c2fff6f365964beb083a06ab1d Mon Sep 17 00:00:00 2001 From: Parker Bibus Date: Wed, 28 Sep 2022 15:57:14 -0700 Subject: [PATCH 3/5] Fixed using incorrect value for commit_time. --- scripts/ci_setup.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/scripts/ci_setup.py b/scripts/ci_setup.py index ca44848b49c..22a3348ab88 100755 --- a/scripts/ci_setup.py +++ b/scripts/ci_setup.py @@ -318,7 +318,7 @@ def __main(args: list) -> int: dotnet_version = dotnet.get_dotnet_version(target_framework_moniker, args.cli) if args.dotnet_versions == [] else args.dotnet_versions[0] commit_sha = dotnet.get_dotnet_sdk(target_framework_moniker, args.cli) if args.commit_sha is None else args.commit_sha if(args.commit_time is not None): - parsed_timestamp = datetime.datetime.strptime(timestamp_value, '%Y-%m-%d %H:%M:%S %z').astimezone(datetime.timezone.utc) + parsed_timestamp = datetime.datetime.strptime(args.commit_time, '%Y-%m-%d %H:%M:%S %z').astimezone(datetime.timezone.utc) source_timestamp = parsed_timestamp.strftime('%Y-%m-%dT%H:%M:%SZ') else: source_timestamp = dotnet.get_commit_date(target_framework_moniker, commit_sha, repo_url) From 90e8b2c9786d706b4434e0c092e6e733580ef158 Mon Sep 17 00:00:00 2001 From: Parker Bibus Date: Thu, 29 Sep 2022 10:39:34 -0700 Subject: [PATCH 4/5] Added the format for the runtime commit time in ci_setup. --- scripts/ci_setup.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/scripts/ci_setup.py b/scripts/ci_setup.py index 22a3348ab88..62a45c988b5 100755 --- a/scripts/ci_setup.py +++ b/scripts/ci_setup.py @@ -100,7 +100,7 @@ def add_arguments(parser: ArgumentParser) -> ArgumentParser: dest='commit_time', required=False, type=str, - help='Product commit time.' + help='Product commit time. Format: %Y-%m-%d %H:%M:%S %z' ) parser.add_argument( '--repository', From 6932d0de2c5619f08a9e0a87ee91c4a65088e7ca Mon Sep 17 00:00:00 2001 From: Parker Bibus Date: Fri, 30 Sep 2022 15:44:38 -0700 Subject: [PATCH 5/5] Setup github api to be used to get the commit_time when the passed in one fails to parse, although printing a warning. --- scripts/ci_setup.py | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/scripts/ci_setup.py b/scripts/ci_setup.py index 62a45c988b5..adb77e55e4e 100755 --- a/scripts/ci_setup.py +++ b/scripts/ci_setup.py @@ -318,8 +318,12 @@ def __main(args: list) -> int: dotnet_version = dotnet.get_dotnet_version(target_framework_moniker, args.cli) if args.dotnet_versions == [] else args.dotnet_versions[0] commit_sha = dotnet.get_dotnet_sdk(target_framework_moniker, args.cli) if args.commit_sha is None else args.commit_sha if(args.commit_time is not None): - parsed_timestamp = datetime.datetime.strptime(args.commit_time, '%Y-%m-%d %H:%M:%S %z').astimezone(datetime.timezone.utc) - source_timestamp = parsed_timestamp.strftime('%Y-%m-%dT%H:%M:%SZ') + try: + parsed_timestamp = datetime.datetime.strptime(args.commit_time, '%Y-%m-%d %H:%M:%S %z').astimezone(datetime.timezone.utc) + source_timestamp = parsed_timestamp.strftime('%Y-%m-%dT%H:%M:%SZ') + except ValueError: + getLogger().warning('Invalid commit_time format. Please use YYYY-MM-DD HH:MM:SS +/-HHMM. Attempting to get commit time from api.github.com.') + source_timestamp = dotnet.get_commit_date(target_framework_moniker, commit_sha, repo_url) else: source_timestamp = dotnet.get_commit_date(target_framework_moniker, commit_sha, repo_url)