From b1ca1b7e45178702e604bd18bb879be9ba84c9e8 Mon Sep 17 00:00:00 2001 From: Yuchao Yan Date: Fri, 28 Jan 2022 11:16:59 +0800 Subject: [PATCH 01/11] fix auto-ask-check bug --- scripts/release_issue_status/main.py | 22 +++++++------------ .../release_issue_status.yml | 6 +++++ .../release_issue_status/reply_generator.py | 3 ++- scripts/release_issue_status/requirement.txt | 3 +-- 4 files changed, 17 insertions(+), 17 deletions(-) diff --git a/scripts/release_issue_status/main.py b/scripts/release_issue_status/main.py index eff130e04ba5..f892a08eae46 100644 --- a/scripts/release_issue_status/main.py +++ b/scripts/release_issue_status/main.py @@ -7,9 +7,8 @@ import logging from github import Github -from azure.storage.blob import BlobClient +from reply_generator import AUTO_ASK_FOR_CHECK, begin_reply_generate -import reply_generator as rg from utils import update_issue_body, get_readme_and_output_folder, \ get_python_pipelines, get_pipeline_url, auto_close_issue @@ -144,7 +143,7 @@ def _latest_comment_time(comments, delay_from_create_date): return delay_from_create_date if not q else int((time.time() - q[-1][0]) / 3600 / 24) -def auto_reply(item, request_repo, rest_repo, sdk_repo, duplicated_issue, python_piplines, assigner_repoes): +def auto_reply(item, request_repo, rest_repo, duplicated_issue, python_piplines, assigner_repoes): logging.info("new issue number: {}".format(item.issue_object.number)) assigner_repo = assigner_repoes[item.assignee] if 'auto-link' not in item.labels: @@ -171,8 +170,7 @@ def auto_reply(item, request_repo, rest_repo, sdk_repo, duplicated_issue, python raise try: pipeline_url = get_pipeline_url(python_piplines, output_folder) - rg.begin_reply_generate(item=item, rest_repo=rest_repo, readme_link=readme_link, - pipeline_url=pipeline_url) + begin_reply_generate(item=item, rest_repo=rest_repo, readme_link=readme_link, pipeline_url=pipeline_url) if 'Configured' in item.labels: item.issue_object.remove_from_labels('Configured') except Exception as e: @@ -253,10 +251,11 @@ def main(): item.issue_object.add_to_assignees(_PYTHON_SDK_ASSIGNEES[assign_count]) item.assignee = item.issue_object.assignee.login item.issue_object.add_to_labels('assigned') - try: - auto_reply(item, request_repo, rest_repo, sdk_repo, duplicated_issue, python_piplines, assigner_repoes) - except Exception as e: - continue + if AUTO_ASK_FOR_CHECK not in item.labels: + try: + auto_reply(item, request_repo, rest_repo, duplicated_issue, python_piplines, assigner_repoes) + except Exception as e: + continue elif not item.author_latest_comment in _PYTHON_SDK_ADMINISTRATORS: item.bot_advice = 'new comment.
' if item.comment_num > 1 and item.language == 'Python': @@ -295,11 +294,6 @@ def main(): print_check('git commit -m \"update excel\"') print_check('git push -f origin HEAD') -# upload to storage account(it is created in advance) -# blob = BlobClient.from_connection_string(conn_str=os.getenv('CONN_STR'), container_name=os.getenv('FILE'), -# blob_name=_FILE_OUT) -# with open(_FILE_OUT, 'rb') as data: -# blob.upload_blob(data, overwrite=True) if __name__ == '__main__': main() diff --git a/scripts/release_issue_status/release_issue_status.yml b/scripts/release_issue_status/release_issue_status.yml index d79e7dd19b2d..2e384ec47b36 100644 --- a/scripts/release_issue_status/release_issue_status.yml +++ b/scripts/release_issue_status/release_issue_status.yml @@ -7,6 +7,12 @@ trigger: exclude: - '*' +# avoid being triggered as part of CI check +pr: + branches: + exclude: + - '*' + schedules: - cron: "0,30 1-9 * * *" displayName: Daily release diff --git a/scripts/release_issue_status/reply_generator.py b/scripts/release_issue_status/reply_generator.py index 3659f19bd33d..5a3ebc6b206c 100644 --- a/scripts/release_issue_status/reply_generator.py +++ b/scripts/release_issue_status/reply_generator.py @@ -6,6 +6,7 @@ logging.basicConfig(level=logging.INFO, format='[auto-reply log] - %(funcName)s[line:%(lineno)d] - %(levelname)s: %(message)s') +AUTO_ASK_FOR_CHECK = 'auto-ask-check' def readme_comparison(rest_repo, link_dict, labels): # to see whether need change readme @@ -68,6 +69,6 @@ def begin_reply_generate(item, rest_repo, readme_link, pipeline_url): logging.info(f'{issue_object_rg.number} run pipeline successfully') else: logging.info(f'{issue_object_rg.number} run pipeline fail') - issue_object_rg.add_to_labels('auto-ask-check') + issue_object_rg.add_to_labels(AUTO_ASK_FOR_CHECK) else: logging.info('issue {} need config readme'.format(issue_object_rg.number)) diff --git a/scripts/release_issue_status/requirement.txt b/scripts/release_issue_status/requirement.txt index 512d9702666a..95f800db46db 100644 --- a/scripts/release_issue_status/requirement.txt +++ b/scripts/release_issue_status/requirement.txt @@ -2,6 +2,5 @@ PyGithub datetime requests bs4 -azure.storage.blob==12.8.1 -azure-devops +azure-devops msrest From 5ae58ab80ac68b7f25e74ad99abe0b4e5894fc2a Mon Sep 17 00:00:00 2001 From: BigCat20196 <1095260342@qq.com> Date: Wed, 16 Feb 2022 17:07:08 +0800 Subject: [PATCH 02/11] update comment --- scripts/auto_release/main.py | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/scripts/auto_release/main.py b/scripts/auto_release/main.py index 34e56022cd2e..eb2f1a746e27 100644 --- a/scripts/auto_release/main.py +++ b/scripts/auto_release/main.py @@ -410,6 +410,11 @@ def check_file(self): def sdk_code_path(self) -> str: return str(Path(f'sdk/{self.sdk_folder}/azure-mgmt-{self.package_name}')) + @property + def whether_single_path(self) -> bool: + path = sum([os.path.isdir(listx) for listx in os.listdir(str(Path(f'sdk/{self.sdk_folder}'))]) + return True if path==1 else False + @return_origin_path def install_package_locally(self): os.chdir(self.sdk_code_path()) @@ -454,6 +459,8 @@ def create_pr_proc(self): pr_head = "{}:{}".format(os.getenv('USR_NAME'), self.new_branch) pr_base = 'main' pr_body = "{} \n{} \n{}".format(self.issue_link, self.test_result, self.pipeline_link) + if not self.whether_single_path: + pr_body += f'\nBuildTargetingString: {self.package_name}\nSkip.CreateApiReview: true' res_create = api.pulls.create(pr_title, pr_head, pr_base, pr_body) # Add issue link on PR From 79a3594aad784b3da87b13f474d4679c18e53bda Mon Sep 17 00:00:00 2001 From: BigCat20196 <1095260342@qq.com> Date: Wed, 16 Feb 2022 17:26:21 +0800 Subject: [PATCH 03/11] update comment --- scripts/auto_release/main.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/scripts/auto_release/main.py b/scripts/auto_release/main.py index eb2f1a746e27..b8e4ef288b1f 100644 --- a/scripts/auto_release/main.py +++ b/scripts/auto_release/main.py @@ -412,7 +412,7 @@ def sdk_code_path(self) -> str: @property def whether_single_path(self) -> bool: - path = sum([os.path.isdir(listx) for listx in os.listdir(str(Path(f'sdk/{self.sdk_folder}'))]) + path = sum([os.path.isdir(listx) for listx in os.listdir(str(Path(f'sdk/{self.sdk_folder}')))]) return True if path==1 else False @return_origin_path From 7071377db0a8fcbdc037acc47beaed7ab13c0572 Mon Sep 17 00:00:00 2001 From: BigCat20196 <1095260342@qq.com> Date: Thu, 17 Feb 2022 10:03:42 +0800 Subject: [PATCH 04/11] fix bug --- scripts/auto_release/main.py | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/scripts/auto_release/main.py b/scripts/auto_release/main.py index b8e4ef288b1f..4e4aa35ca259 100644 --- a/scripts/auto_release/main.py +++ b/scripts/auto_release/main.py @@ -412,8 +412,9 @@ def sdk_code_path(self) -> str: @property def whether_single_path(self) -> bool: - path = sum([os.path.isdir(listx) for listx in os.listdir(str(Path(f'sdk/{self.sdk_folder}')))]) - return True if path==1 else False + path = str(Path(f'sdk/{self.sdk_folder}')) + num = sum([os.path.isdir(f'{path}/{listx}') for listx in os.listdir(path)]) + return True if num == 1 else False @return_origin_path def install_package_locally(self): @@ -460,7 +461,7 @@ def create_pr_proc(self): pr_base = 'main' pr_body = "{} \n{} \n{}".format(self.issue_link, self.test_result, self.pipeline_link) if not self.whether_single_path: - pr_body += f'\nBuildTargetingString: {self.package_name}\nSkip.CreateApiReview: true' + pr_body += f'\nBuildTargetingString\n azure-mgmt-{self.package_name}\nSkip.CreateApiReview\ntrue' res_create = api.pulls.create(pr_title, pr_head, pr_base, pr_body) # Add issue link on PR From 8f6fe79664db8c2957009fcc3058c85d68c3ccfd Mon Sep 17 00:00:00 2001 From: Jiefeng Chen <51037443+BigCat20196@users.noreply.github.com> Date: Thu, 17 Feb 2022 10:26:05 +0800 Subject: [PATCH 05/11] Update main.py --- scripts/auto_release/main.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/scripts/auto_release/main.py b/scripts/auto_release/main.py index 4e4aa35ca259..97620c4f9b64 100644 --- a/scripts/auto_release/main.py +++ b/scripts/auto_release/main.py @@ -414,7 +414,7 @@ def sdk_code_path(self) -> str: def whether_single_path(self) -> bool: path = str(Path(f'sdk/{self.sdk_folder}')) num = sum([os.path.isdir(f'{path}/{listx}') for listx in os.listdir(path)]) - return True if num == 1 else False + return num == 1 @return_origin_path def install_package_locally(self): From 8d23d87d7dea6d635316ac75fddc1f37aaeef644 Mon Sep 17 00:00:00 2001 From: Yuchao Yan Date: Thu, 17 Feb 2022 10:44:21 +0800 Subject: [PATCH 06/11] Update main.py --- scripts/auto_release/main.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/scripts/auto_release/main.py b/scripts/auto_release/main.py index 97620c4f9b64..ef846cc0534a 100644 --- a/scripts/auto_release/main.py +++ b/scripts/auto_release/main.py @@ -413,7 +413,7 @@ def sdk_code_path(self) -> str: @property def whether_single_path(self) -> bool: path = str(Path(f'sdk/{self.sdk_folder}')) - num = sum([os.path.isdir(f'{path}/{listx}') for listx in os.listdir(path)]) + num = sum([os.path.isdir(str(Path(f'{path}/{listx}'))) for listx in os.listdir(path)]) return num == 1 @return_origin_path From 44faa80efb2b2b16c65e93f55df1432feb4cb8f1 Mon Sep 17 00:00:00 2001 From: Yuchao Yan Date: Thu, 17 Feb 2022 10:46:51 +0800 Subject: [PATCH 07/11] Update main.py --- scripts/auto_release/main.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/scripts/auto_release/main.py b/scripts/auto_release/main.py index ef846cc0534a..b6a791bda638 100644 --- a/scripts/auto_release/main.py +++ b/scripts/auto_release/main.py @@ -411,7 +411,7 @@ def sdk_code_path(self) -> str: return str(Path(f'sdk/{self.sdk_folder}/azure-mgmt-{self.package_name}')) @property - def whether_single_path(self) -> bool: + def is_single_path(self) -> bool: path = str(Path(f'sdk/{self.sdk_folder}')) num = sum([os.path.isdir(str(Path(f'{path}/{listx}'))) for listx in os.listdir(path)]) return num == 1 @@ -460,7 +460,7 @@ def create_pr_proc(self): pr_head = "{}:{}".format(os.getenv('USR_NAME'), self.new_branch) pr_base = 'main' pr_body = "{} \n{} \n{}".format(self.issue_link, self.test_result, self.pipeline_link) - if not self.whether_single_path: + if not self.is_single_path: pr_body += f'\nBuildTargetingString\n azure-mgmt-{self.package_name}\nSkip.CreateApiReview\ntrue' res_create = api.pulls.create(pr_title, pr_head, pr_base, pr_body) From 84768ebf73ec5cb679abd0a91a97651cb6ee2daf Mon Sep 17 00:00:00 2001 From: BigCat20196 <1095260342@qq.com> Date: Fri, 18 Feb 2022 11:01:16 +0800 Subject: [PATCH 08/11] fix changelog format for new service --- scripts/auto_release/main.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/scripts/auto_release/main.py b/scripts/auto_release/main.py index b6a791bda638..1b129be68cce 100644 --- a/scripts/auto_release/main.py +++ b/scripts/auto_release/main.py @@ -367,7 +367,7 @@ def edit_changelog_for_new_service(self): def edit_changelog_for_new_service_proc(content: List[str]): for i in range(0, len(content)): if '##' in content[i]: - content[i] = f'## {self.next_version}({current_time()})' + content[i] = f'## {self.next_version}({current_time()})\n\n' break modify_file(str(Path(self.sdk_code_path()) / 'CHANGELOG.md'), edit_changelog_for_new_service_proc) From 29f9a86b805ca6f507a0fde8fd6f70ea36d4c19d Mon Sep 17 00:00:00 2001 From: BigCat20196 <1095260342@qq.com> Date: Fri, 18 Feb 2022 15:39:12 +0800 Subject: [PATCH 09/11] fix check_pprint_name bug --- scripts/auto_release/main.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/scripts/auto_release/main.py b/scripts/auto_release/main.py index 1b129be68cce..ea59218a1b1c 100644 --- a/scripts/auto_release/main.py +++ b/scripts/auto_release/main.py @@ -266,7 +266,7 @@ def edit_file_for_pprint_name(content: List[str]): for file in os.listdir(self.sdk_code_path()): if os.path.isfile(file): - modify_file(file, edit_file_for_pprint_name) + modify_file(str(Path(self.sdk_code_path()) / file), edit_file_for_pprint_name) log(f' replace \"MyService\" with \"{pprint_name}\" successfully ') def get_all_files_under_package_folder(self) -> List[str]: From 5b11c1267cd1e2f0480f0b8b67b3e021c9e4b042 Mon Sep 17 00:00:00 2001 From: Yuchao Yan Date: Fri, 18 Feb 2022 17:14:49 +0800 Subject: [PATCH 10/11] Update main.py --- scripts/auto_release/main.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/scripts/auto_release/main.py b/scripts/auto_release/main.py index ea59218a1b1c..f3b229318e8c 100644 --- a/scripts/auto_release/main.py +++ b/scripts/auto_release/main.py @@ -367,7 +367,7 @@ def edit_changelog_for_new_service(self): def edit_changelog_for_new_service_proc(content: List[str]): for i in range(0, len(content)): if '##' in content[i]: - content[i] = f'## {self.next_version}({current_time()})\n\n' + content[i] = f'## {self.next_version}({current_time()})\n' break modify_file(str(Path(self.sdk_code_path()) / 'CHANGELOG.md'), edit_changelog_for_new_service_proc) From 6b13133eb4920748e9d34d317117b5bec2d4aad9 Mon Sep 17 00:00:00 2001 From: BigCat20196 <1095260342@qq.com> Date: Fri, 18 Feb 2022 17:35:29 +0800 Subject: [PATCH 11/11] fix check_pprint_name bug --- scripts/auto_release/main.py | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/scripts/auto_release/main.py b/scripts/auto_release/main.py index ea59218a1b1c..5f56b69f5677 100644 --- a/scripts/auto_release/main.py +++ b/scripts/auto_release/main.py @@ -265,8 +265,9 @@ def edit_file_for_pprint_name(content: List[str]): content[i] = content[i].replace('MyService', pprint_name) for file in os.listdir(self.sdk_code_path()): - if os.path.isfile(file): - modify_file(str(Path(self.sdk_code_path()) / file), edit_file_for_pprint_name) + file_path = str(Path(self.sdk_code_path()) / file) + if os.path.isfile(file_path): + modify_file(file_path, edit_file_for_pprint_name) log(f' replace \"MyService\" with \"{pprint_name}\" successfully ') def get_all_files_under_package_folder(self) -> List[str]: