+ package_info = soup.select('div[class="release-timeline"]')[0].find_all('div')[0]
+ last_version_mix = package_info.find_all('p', class_="release__version")[0].contents[0]
+ last_version = last_version_mix.replace(' ', '').replace('\n', '')
+ last_version_date_str = package_info.time.attrs['datetime'].split('+')[0]
+ last_version_date = datetime.datetime.strptime(last_version_date_str, '%Y-%m-%dT%H:%M:%S')
+ return last_version, last_version_date
\ No newline at end of file
diff --git a/scripts/release_issue_status/main.py b/scripts/release_issue_status/main.py
index 5ef138fc8e97..267695888224 100644
--- a/scripts/release_issue_status/main.py
+++ b/scripts/release_issue_status/main.py
@@ -7,6 +7,7 @@
from azure.storage.blob import BlobClient
import reply_generator as rg
from update_issue_body import update_issue_body, find_readme_link
+from auto_close import auto_close_issue
import traceback
_NULL = ' '
@@ -215,6 +216,8 @@ def main():
item.bot_advice = 'new comment for author.'
elif item.delay_from_latest_update >= 7:
item.bot_advice = 'delay for a long time and better to handle now.'
+ if item.comment_num > 1:
+ auto_close_issue(request_repo, item.issue_object.number, item.package)
if item.days_from_latest_commit >= 30 and item.language == 'Python' and '30days attention' not in item.labels:
item.labels.append('30days attention')
diff --git a/scripts/release_issue_status/requirement.txt b/scripts/release_issue_status/requirement.txt
index 13781556dd42..2bfa4e9b6203 100644
--- a/scripts/release_issue_status/requirement.txt
+++ b/scripts/release_issue_status/requirement.txt
@@ -1,3 +1,5 @@
PyGithub
datetime
+requests
+bs4
azure.storage.blob==12.8.1
\ No newline at end of file
From f9c76f9659853799fa807f90ad363b4aaaf2ab68 Mon Sep 17 00:00:00 2001
From: Zed Lei <59104634+RAY-316@users.noreply.github.com>
Date: Wed, 1 Sep 2021 13:34:56 +0800
Subject: [PATCH 076/157] Update release_issue_status.yml for Azure Pipelines
---
scripts/release_issue_status/release_issue_status.yml | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/scripts/release_issue_status/release_issue_status.yml b/scripts/release_issue_status/release_issue_status.yml
index dd3777eb5563..352f7252d726 100644
--- a/scripts/release_issue_status/release_issue_status.yml
+++ b/scripts/release_issue_status/release_issue_status.yml
@@ -36,7 +36,7 @@ jobs:
export CONN_STR=$(ENV_CONN_STR)
export FILE=$(ENV_FILE)
export TOKEN=$(USR_TOKEN)
- export HEADERS=$(PIPELINE_HEADERS)
+ export HEADERS=$(COOKIE)
# create virtual env
python -m venv venv-sdk
From f6a0b9b1b73147b5b85c5403e15de64e399941ee Mon Sep 17 00:00:00 2001
From: Jiefeng Chen <51037443+BigCat20196@users.noreply.github.com>
Date: Wed, 1 Sep 2021 13:39:02 +0800
Subject: [PATCH 077/157] Update auto_close.py
---
scripts/release_issue_status/auto_close.py | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
diff --git a/scripts/release_issue_status/auto_close.py b/scripts/release_issue_status/auto_close.py
index 38ef65799a1a..10778af1bd00 100644
--- a/scripts/release_issue_status/auto_close.py
+++ b/scripts/release_issue_status/auto_close.py
@@ -9,6 +9,7 @@ def auto_close_issue(sdk_repo, issue_number, package_name):
issue_author = issue_info.user.login
last_comment = list(issue_info.get_comments())[-1]
last_comment_date = last_comment.created_at
+ print("************{} {}*******".format(issue_number, package_name))
last_version, last_time = get_last_released_date(package_name)
if last_time > last_comment_date:
comment = f'Hi @{issue_author}, pypi link: https://pypi.org/project/{package_name}/{last_version}/'
@@ -28,4 +29,4 @@ def get_last_released_date(package_name):
last_version = last_version_mix.replace(' ', '').replace('\n', '')
last_version_date_str = package_info.time.attrs['datetime'].split('+')[0]
last_version_date = datetime.datetime.strptime(last_version_date_str, '%Y-%m-%dT%H:%M:%S')
- return last_version, last_version_date
\ No newline at end of file
+ return last_version, last_version_date
From ad788295f3494b6a1dbfd558f983c5c337b3dd3b Mon Sep 17 00:00:00 2001
From: Jiefeng Chen <51037443+BigCat20196@users.noreply.github.com>
Date: Wed, 1 Sep 2021 13:43:31 +0800
Subject: [PATCH 078/157] Update main.py
---
scripts/release_issue_status/main.py | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/scripts/release_issue_status/main.py b/scripts/release_issue_status/main.py
index 267695888224..62185498dbaa 100644
--- a/scripts/release_issue_status/main.py
+++ b/scripts/release_issue_status/main.py
@@ -216,7 +216,7 @@ def main():
item.bot_advice = 'new comment for author.'
elif item.delay_from_latest_update >= 7:
item.bot_advice = 'delay for a long time and better to handle now.'
- if item.comment_num > 1:
+ if item.comment_num > 1 and item.language == 'Python':
auto_close_issue(request_repo, item.issue_object.number, item.package)
if item.days_from_latest_commit >= 30 and item.language == 'Python' and '30days attention' not in item.labels:
From e52fbdeefe123c3133ca331e0e088641b38da2ef Mon Sep 17 00:00:00 2001
From: Zed Lei <59104634+RAY-316@users.noreply.github.com>
Date: Wed, 1 Sep 2021 13:53:42 +0800
Subject: [PATCH 079/157] Update release_issue_status.yml for Azure Pipelines
---
scripts/release_issue_status/release_issue_status.yml | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/scripts/release_issue_status/release_issue_status.yml b/scripts/release_issue_status/release_issue_status.yml
index 352f7252d726..cad1330bd852 100644
--- a/scripts/release_issue_status/release_issue_status.yml
+++ b/scripts/release_issue_status/release_issue_status.yml
@@ -36,7 +36,7 @@ jobs:
export CONN_STR=$(ENV_CONN_STR)
export FILE=$(ENV_FILE)
export TOKEN=$(USR_TOKEN)
- export HEADERS=$(COOKIE)
+ export COOKIE=$(COOKIE)
# create virtual env
python -m venv venv-sdk
From 8cc6d6acf2dd8786f49f36833d900a0d6bc4e55e Mon Sep 17 00:00:00 2001
From: Zed Lei <59104634+RAY-316@users.noreply.github.com>
Date: Wed, 1 Sep 2021 13:57:09 +0800
Subject: [PATCH 080/157] Update auto_pipeline_run.py
---
scripts/release_issue_status/auto_pipeline_run.py | 12 ++++++++++--
1 file changed, 10 insertions(+), 2 deletions(-)
diff --git a/scripts/release_issue_status/auto_pipeline_run.py b/scripts/release_issue_status/auto_pipeline_run.py
index b57002ca174c..6b4a74a292e0 100644
--- a/scripts/release_issue_status/auto_pipeline_run.py
+++ b/scripts/release_issue_status/auto_pipeline_run.py
@@ -4,6 +4,15 @@
url = "https://dev.azure.com/azure-sdk/590cfd2a-581c-4dcb-a12e-6568ce786175/_apis/pipelines/2500/runs"
+headers = {
+ 'x-tfs-session': 'd22c0db8-c9b3-4f83-b337-3e5f9c5d2abb',
+ 'x-vss-reauthenticationaction': 'Suppress',
+ 'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/92.0.4515.131 Safari/537.36 Edg/92.0.902.73',
+ 'accept': 'application/json;api-version=5.1-preview.1;excludeUrls=true;enumsAsNumbers=true;msDateFormat=true;noArrayWrap=true',
+ 'Content-Type': 'application/json',
+ 'Cookie': ''
+}
+
def run_pipeline(issue_link, sdk_issue_object):
payload = json.dumps({
@@ -26,8 +35,7 @@ def run_pipeline(issue_link, sdk_issue_object):
}
}
})
- print(type(os.getenv('HEADERS')),os.getenv('HEADERS'))
- headers = json.dumps(json.loads(os.getenv('HEADERS')))
+ headers['Cookie'] = os.getenv('COOKIE')
response = requests.request("POST", url, headers=headers, data=payload)
if 200 <= response.status_code < 300:
return True
From 6b56d8ecd27be497e0400f2b2603a96b4828de9e Mon Sep 17 00:00:00 2001
From: BigCat20196 <1095260342@qq.com>
Date: Wed, 1 Sep 2021 13:58:34 +0800
Subject: [PATCH 081/157] fix bug
---
scripts/release_issue_status/main.py | 7 +++++--
scripts/release_issue_status/release_issue_status.yml | 2 +-
2 files changed, 6 insertions(+), 3 deletions(-)
diff --git a/scripts/release_issue_status/main.py b/scripts/release_issue_status/main.py
index 62185498dbaa..eedd370be976 100644
--- a/scripts/release_issue_status/main.py
+++ b/scripts/release_issue_status/main.py
@@ -216,8 +216,11 @@ def main():
item.bot_advice = 'new comment for author.'
elif item.delay_from_latest_update >= 7:
item.bot_advice = 'delay for a long time and better to handle now.'
- if item.comment_num > 1 and item.language == 'Python':
- auto_close_issue(request_repo, item.issue_object.number, item.package)
+ if item.comment_num > 1:
+ try:
+ auto_close_issue(request_repo, item.issue_object.number, item.package)
+ except Exception as e:
+ print(e)
if item.days_from_latest_commit >= 30 and item.language == 'Python' and '30days attention' not in item.labels:
item.labels.append('30days attention')
diff --git a/scripts/release_issue_status/release_issue_status.yml b/scripts/release_issue_status/release_issue_status.yml
index cad1330bd852..dd3777eb5563 100644
--- a/scripts/release_issue_status/release_issue_status.yml
+++ b/scripts/release_issue_status/release_issue_status.yml
@@ -36,7 +36,7 @@ jobs:
export CONN_STR=$(ENV_CONN_STR)
export FILE=$(ENV_FILE)
export TOKEN=$(USR_TOKEN)
- export COOKIE=$(COOKIE)
+ export HEADERS=$(PIPELINE_HEADERS)
# create virtual env
python -m venv venv-sdk
From bea9433bdbb02d5fb7df82646b5d1a4e59f72af0 Mon Sep 17 00:00:00 2001
From: Jiefeng Chen <51037443+BigCat20196@users.noreply.github.com>
Date: Wed, 1 Sep 2021 14:04:45 +0800
Subject: [PATCH 082/157] Update main.py
---
scripts/release_issue_status/main.py | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/scripts/release_issue_status/main.py b/scripts/release_issue_status/main.py
index eedd370be976..30e074c2c155 100644
--- a/scripts/release_issue_status/main.py
+++ b/scripts/release_issue_status/main.py
@@ -216,7 +216,7 @@ def main():
item.bot_advice = 'new comment for author.'
elif item.delay_from_latest_update >= 7:
item.bot_advice = 'delay for a long time and better to handle now.'
- if item.comment_num > 1:
+ if item.comment_num > 1 and item.language == 'Python':
try:
auto_close_issue(request_repo, item.issue_object.number, item.package)
except Exception as e:
From 10dbe82ad785280c24f025d95c5c631aeaadf0b5 Mon Sep 17 00:00:00 2001
From: Jiefeng Chen <51037443+BigCat20196@users.noreply.github.com>
Date: Wed, 1 Sep 2021 14:04:57 +0800
Subject: [PATCH 083/157] Update auto_close.py
---
scripts/release_issue_status/auto_close.py | 1 -
1 file changed, 1 deletion(-)
diff --git a/scripts/release_issue_status/auto_close.py b/scripts/release_issue_status/auto_close.py
index 10778af1bd00..2cf748ed6cb8 100644
--- a/scripts/release_issue_status/auto_close.py
+++ b/scripts/release_issue_status/auto_close.py
@@ -18,7 +18,6 @@ def auto_close_issue(sdk_repo, issue_number, package_name):
print(f"issue number:{issue_number} has been closed!")
-
def get_last_released_date(package_name):
pypi_link = f'https://pypi.org/project/{package_name}/#history'
res = requests.get(pypi_link)
From 3716dd0cbc484faefb1385a12265291b7f5b63ae Mon Sep 17 00:00:00 2001
From: Jiefeng Chen <51037443+BigCat20196@users.noreply.github.com>
Date: Thu, 2 Sep 2021 09:28:42 +0800
Subject: [PATCH 084/157] Update auto_close.py
---
scripts/release_issue_status/auto_close.py | 1 -
1 file changed, 1 deletion(-)
diff --git a/scripts/release_issue_status/auto_close.py b/scripts/release_issue_status/auto_close.py
index 2cf748ed6cb8..963bdca624a5 100644
--- a/scripts/release_issue_status/auto_close.py
+++ b/scripts/release_issue_status/auto_close.py
@@ -9,7 +9,6 @@ def auto_close_issue(sdk_repo, issue_number, package_name):
issue_author = issue_info.user.login
last_comment = list(issue_info.get_comments())[-1]
last_comment_date = last_comment.created_at
- print("************{} {}*******".format(issue_number, package_name))
last_version, last_time = get_last_released_date(package_name)
if last_time > last_comment_date:
comment = f'Hi @{issue_author}, pypi link: https://pypi.org/project/{package_name}/{last_version}/'
From 94e5764d4213c50116f27ba466681962f9df2ef6 Mon Sep 17 00:00:00 2001
From: Jiefeng Chen <51037443+BigCat20196@users.noreply.github.com>
Date: Thu, 2 Sep 2021 09:30:12 +0800
Subject: [PATCH 085/157] Update main.py
---
scripts/release_issue_status/main.py | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/scripts/release_issue_status/main.py b/scripts/release_issue_status/main.py
index 30e074c2c155..203c2d78a994 100644
--- a/scripts/release_issue_status/main.py
+++ b/scripts/release_issue_status/main.py
@@ -220,7 +220,7 @@ def main():
try:
auto_close_issue(request_repo, item.issue_object.number, item.package)
except Exception as e:
- print(e)
+ print(f"=====issue: {item.issue_object.number}, {e}")
if item.days_from_latest_commit >= 30 and item.language == 'Python' and '30days attention' not in item.labels:
item.labels.append('30days attention')
From ed82ba728ac5d24d476efe4be3c22ba9081286d6 Mon Sep 17 00:00:00 2001
From: Zed Lei <59104634+RAY-316@users.noreply.github.com>
Date: Thu, 2 Sep 2021 09:48:30 +0800
Subject: [PATCH 086/157] Update reply_generator.py
---
scripts/release_issue_status/reply_generator.py | 7 +++----
1 file changed, 3 insertions(+), 4 deletions(-)
diff --git a/scripts/release_issue_status/reply_generator.py b/scripts/release_issue_status/reply_generator.py
index 28ff995f8217..6b68cff11b2e 100644
--- a/scripts/release_issue_status/reply_generator.py
+++ b/scripts/release_issue_status/reply_generator.py
@@ -8,11 +8,10 @@ def weather_change_readme(rest_repo, link_dict, labels):
# to see whether need change readme
contents = str(rest_repo.get_contents(link_dict['readme_path']).decoded_content)
pattern_tag = re.compile(r'tag: package-[\w+-.]+')
- package_tag = pattern_tag.search(contents).group()
- package_tag = package_tag.split(':')[1].strip()
+ package_tag = pattern_tag.findall(contents)
readme_python_contents = str(rest_repo.get_contents(link_dict['readme_python_path']).decoded_content)
whether_multi_api = 'multi-api' in readme_python_contents
- whether_same_tag = package_tag == link_dict['readme_tag']
+ whether_same_tag = link_dict['readme_tag'] in package_tag
whether_change_readme = not whether_same_tag or whether_multi_api and not 'MultiAPI' in labels
return whether_change_readme
@@ -29,7 +28,7 @@ def get_links(readme_link):
resource_manager = pattern_resource_manager.search(readme_link).group()
link_dict['readme_path'] = readme_path
link_dict['readme_python_path'] = readme_path[:readme_path.rfind('/')] + '/readme.python.md'
- link_dict['readme_tag'] = readme_tag
+ link_dict['readme_tag'] = 'tag: ' + readme_tag
link_dict['resource_manager'] = resource_manager
return link_dict
From ac890c3d866c9dab4cc7a2571ae7b53a2635e91c Mon Sep 17 00:00:00 2001
From: Jiefeng Chen <51037443+BigCat20196@users.noreply.github.com>
Date: Thu, 2 Sep 2021 10:59:42 +0800
Subject: [PATCH 087/157] Update main.py
---
scripts/release_issue_status/main.py | 6 ++++--
1 file changed, 4 insertions(+), 2 deletions(-)
diff --git a/scripts/release_issue_status/main.py b/scripts/release_issue_status/main.py
index 203c2d78a994..58897b660802 100644
--- a/scripts/release_issue_status/main.py
+++ b/scripts/release_issue_status/main.py
@@ -125,6 +125,8 @@ def _latest_comment_time(comments, delay_from_create_date):
def auto_reply(item, request_repo, rest_repo, sdk_repo, duplicated_issue):
print("==========new issue number: {}".format(item.issue_object.number))
if 'auto-link' not in item.labels:
+ item.labels.append('auto-link')
+ item.issue_object.set_labels(*item.labels)
try:
package_name, readme_link = update_issue_body(request_repo, rest_repo, item.issue_object.number)
print("pkname, readme", package_name, readme_link)
@@ -134,10 +136,9 @@ def auto_reply(item, request_repo, rest_repo, sdk_repo, duplicated_issue):
except Exception as e:
item.bot_advice = 'failed to modify the body of the new issue. Please modify manually'
item.labels.append('attention')
+ item.issue_object.set_labels(*item.labels)
print(e)
raise
- item.labels.append('auto-link')
- item.issue_object.set_labels(*item.labels)
else:
try:
readme_link = find_readme_link(request_repo, item.issue_object.number)
@@ -145,6 +146,7 @@ def auto_reply(item, request_repo, rest_repo, sdk_repo, duplicated_issue):
print('Issue: {} updates body failed'.format(item.issue_object.number))
item.bot_advice = 'failed to find Readme link, Please check !!'
item.labels.append('attention')
+ item.issue_object.set_labels(*item.labels)
raise
try:
reply = rg.begin_reply_generate(item=item, rest_repo=rest_repo, readme_link=readme_link,sdk_repo=sdk_repo)
From 2adc7252a86bc330f6b679de33a4b0e308e9dc29 Mon Sep 17 00:00:00 2001
From: Jiefeng Chen <51037443+BigCat20196@users.noreply.github.com>
Date: Thu, 2 Sep 2021 16:34:58 +0800
Subject: [PATCH 088/157] Update main.py
---
scripts/release_issue_status/main.py | 1 +
1 file changed, 1 insertion(+)
diff --git a/scripts/release_issue_status/main.py b/scripts/release_issue_status/main.py
index 58897b660802..7ae795f64cf8 100644
--- a/scripts/release_issue_status/main.py
+++ b/scripts/release_issue_status/main.py
@@ -222,6 +222,7 @@ def main():
try:
auto_close_issue(request_repo, item.issue_object.number, item.package)
except Exception as e:
+ item.bot_advice = 'auto-close failed, please check!'
print(f"=====issue: {item.issue_object.number}, {e}")
if item.days_from_latest_commit >= 30 and item.language == 'Python' and '30days attention' not in item.labels:
From b312aa2e62e342541997c3a19b0c8b1c93b5ba03 Mon Sep 17 00:00:00 2001
From: Jiefeng Chen <51037443+BigCat20196@users.noreply.github.com>
Date: Thu, 2 Sep 2021 16:35:51 +0800
Subject: [PATCH 089/157] Update auto_close.py
---
scripts/release_issue_status/auto_close.py | 3 +++
1 file changed, 3 insertions(+)
diff --git a/scripts/release_issue_status/auto_close.py b/scripts/release_issue_status/auto_close.py
index 963bdca624a5..1fbc6196e6de 100644
--- a/scripts/release_issue_status/auto_close.py
+++ b/scripts/release_issue_status/auto_close.py
@@ -15,6 +15,9 @@ def auto_close_issue(sdk_repo, issue_number, package_name):
issue_info.create_comment(body=comment)
issue_info.edit(state='closed')
print(f"issue number:{issue_number} has been closed!")
+ return True
+ else:
+ return False
def get_last_released_date(package_name):
From bf8f4488bc35977d00e49fe35030c1dc9629402b Mon Sep 17 00:00:00 2001
From: Jiefeng Chen <51037443+BigCat20196@users.noreply.github.com>
Date: Thu, 2 Sep 2021 16:37:14 +0800
Subject: [PATCH 090/157] Update main.py
---
scripts/release_issue_status/main.py | 4 +++-
1 file changed, 3 insertions(+), 1 deletion(-)
diff --git a/scripts/release_issue_status/main.py b/scripts/release_issue_status/main.py
index 7ae795f64cf8..07b91e94128a 100644
--- a/scripts/release_issue_status/main.py
+++ b/scripts/release_issue_status/main.py
@@ -220,7 +220,9 @@ def main():
item.bot_advice = 'delay for a long time and better to handle now.'
if item.comment_num > 1 and item.language == 'Python':
try:
- auto_close_issue(request_repo, item.issue_object.number, item.package)
+ if auto_close_issue(request_repo, item.issue_object.number, item.package):
+ item.labels.append('auto-closed')
+ item.issue_object.set_labels(*item.labels)
except Exception as e:
item.bot_advice = 'auto-close failed, please check!'
print(f"=====issue: {item.issue_object.number}, {e}")
From f65954ca89f4078836b1258c963f8664a40a5602 Mon Sep 17 00:00:00 2001
From: BigCat20196 <1095260342@qq.com>
Date: Fri, 3 Sep 2021 10:23:49 +0800
Subject: [PATCH 091/157] Update auto-close
---
scripts/release_issue_status/auto_close.py | 17 ++++++++++-------
scripts/release_issue_status/main.py | 4 +---
2 files changed, 11 insertions(+), 10 deletions(-)
diff --git a/scripts/release_issue_status/auto_close.py b/scripts/release_issue_status/auto_close.py
index 1fbc6196e6de..ca439398aa59 100644
--- a/scripts/release_issue_status/auto_close.py
+++ b/scripts/release_issue_status/auto_close.py
@@ -4,20 +4,20 @@
from bs4 import BeautifulSoup
-def auto_close_issue(sdk_repo, issue_number, package_name):
+def auto_close_issue(sdk_repo, item):
+ issue_number, package_name = item.issue_object.number, item.package
issue_info = sdk_repo.get_issue(number=issue_number)
issue_author = issue_info.user.login
last_comment = list(issue_info.get_comments())[-1]
last_comment_date = last_comment.created_at
last_version, last_time = get_last_released_date(package_name)
- if last_time > last_comment_date:
+ if last_time and last_time > last_comment_date:
comment = f'Hi @{issue_author}, pypi link: https://pypi.org/project/{package_name}/{last_version}/'
issue_info.create_comment(body=comment)
issue_info.edit(state='closed')
+ item.labels.append('auto-closed')
+ item.issue_object.set_labels(*item.labels)
print(f"issue number:{issue_number} has been closed!")
- return True
- else:
- return False
def get_last_released_date(package_name):
@@ -25,8 +25,11 @@ def get_last_released_date(package_name):
res = requests.get(pypi_link)
soup = BeautifulSoup(res.text, 'html.parser')
# find top div from
- package_info = soup.select('div[class="release-timeline"]')[0].find_all('div')[0]
- last_version_mix = package_info.find_all('p', class_="release__version")[0].contents[0]
+ try:
+ package_info = soup.select('div[class="release-timeline"]')[0].find_all('div')[0]
+ last_version_mix = package_info.find_all('p', class_="release__version")[0].contents[0]
+ except IndexError as e:
+ return '', ''
last_version = last_version_mix.replace(' ', '').replace('\n', '')
last_version_date_str = package_info.time.attrs['datetime'].split('+')[0]
last_version_date = datetime.datetime.strptime(last_version_date_str, '%Y-%m-%dT%H:%M:%S')
diff --git a/scripts/release_issue_status/main.py b/scripts/release_issue_status/main.py
index 07b91e94128a..53bbc23db48e 100644
--- a/scripts/release_issue_status/main.py
+++ b/scripts/release_issue_status/main.py
@@ -220,9 +220,7 @@ def main():
item.bot_advice = 'delay for a long time and better to handle now.'
if item.comment_num > 1 and item.language == 'Python':
try:
- if auto_close_issue(request_repo, item.issue_object.number, item.package):
- item.labels.append('auto-closed')
- item.issue_object.set_labels(*item.labels)
+ auto_close_issue(request_repo, item)
except Exception as e:
item.bot_advice = 'auto-close failed, please check!'
print(f"=====issue: {item.issue_object.number}, {e}")
From 96da96a5c7ad125f385557e0305e95982ce96af6 Mon Sep 17 00:00:00 2001
From: Zed Lei <59104634+RAY-316@users.noreply.github.com>
Date: Mon, 6 Sep 2021 09:27:29 +0800
Subject: [PATCH 092/157] Update auto_pipeline_run.py
---
scripts/release_issue_status/auto_pipeline_run.py | 1 -
1 file changed, 1 deletion(-)
diff --git a/scripts/release_issue_status/auto_pipeline_run.py b/scripts/release_issue_status/auto_pipeline_run.py
index 6b4a74a292e0..c1787712e2a1 100644
--- a/scripts/release_issue_status/auto_pipeline_run.py
+++ b/scripts/release_issue_status/auto_pipeline_run.py
@@ -5,7 +5,6 @@
url = "https://dev.azure.com/azure-sdk/590cfd2a-581c-4dcb-a12e-6568ce786175/_apis/pipelines/2500/runs"
headers = {
- 'x-tfs-session': 'd22c0db8-c9b3-4f83-b337-3e5f9c5d2abb',
'x-vss-reauthenticationaction': 'Suppress',
'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/92.0.4515.131 Safari/537.36 Edg/92.0.902.73',
'accept': 'application/json;api-version=5.1-preview.1;excludeUrls=true;enumsAsNumbers=true;msDateFormat=true;noArrayWrap=true',
From 683d4036c46dd7ac689b2e88c0256275fe4ad33d Mon Sep 17 00:00:00 2001
From: Jiefeng Chen <51037443+BigCat20196@users.noreply.github.com>
Date: Mon, 6 Sep 2021 10:36:04 +0800
Subject: [PATCH 093/157] Update update_issue_body.py
---
scripts/release_issue_status/update_issue_body.py | 1 +
1 file changed, 1 insertion(+)
diff --git a/scripts/release_issue_status/update_issue_body.py b/scripts/release_issue_status/update_issue_body.py
index 45378acea50a..901cdd87afff 100644
--- a/scripts/release_issue_status/update_issue_body.py
+++ b/scripts/release_issue_status/update_issue_body.py
@@ -46,6 +46,7 @@ def get_pkname_and_readme_link(rest_repo, link):
commit_sha = link.split('commit/')[-1]
commit = rest_repo.get_commit(commit_sha)
link = commit.files[0].blob_url
+ link = re.sub('blob/(.*?)/specification', 'blob/main/specification', link)
# if link is a pr, it can get both pakeage name and readme link.
if 'pull' in link:
From beca5ff66e58bfd3baff330ef37735543e2191cc Mon Sep 17 00:00:00 2001
From: Zed Lei <59104634+RAY-316@users.noreply.github.com>
Date: Mon, 6 Sep 2021 11:57:39 +0800
Subject: [PATCH 094/157] Update auto_pipeline_run.py
---
scripts/release_issue_status/auto_pipeline_run.py | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/scripts/release_issue_status/auto_pipeline_run.py b/scripts/release_issue_status/auto_pipeline_run.py
index c1787712e2a1..3fa79a486c88 100644
--- a/scripts/release_issue_status/auto_pipeline_run.py
+++ b/scripts/release_issue_status/auto_pipeline_run.py
@@ -2,7 +2,7 @@
import json
import os
-url = "https://dev.azure.com/azure-sdk/590cfd2a-581c-4dcb-a12e-6568ce786175/_apis/pipelines/2500/runs"
+url = os.getenv('URL')
headers = {
'x-vss-reauthenticationaction': 'Suppress',
From 6508c48086aa58b87b223e81488b7b60c2c6e494 Mon Sep 17 00:00:00 2001
From: Zed Lei <59104634+RAY-316@users.noreply.github.com>
Date: Mon, 6 Sep 2021 13:47:29 +0800
Subject: [PATCH 095/157] Update release_issue_status.yml for Azure Pipelines
---
scripts/release_issue_status/release_issue_status.yml | 1 +
1 file changed, 1 insertion(+)
diff --git a/scripts/release_issue_status/release_issue_status.yml b/scripts/release_issue_status/release_issue_status.yml
index dd3777eb5563..78ff3f38017e 100644
--- a/scripts/release_issue_status/release_issue_status.yml
+++ b/scripts/release_issue_status/release_issue_status.yml
@@ -37,6 +37,7 @@ jobs:
export FILE=$(ENV_FILE)
export TOKEN=$(USR_TOKEN)
export HEADERS=$(PIPELINE_HEADERS)
+ export URL=$(URL)
# create virtual env
python -m venv venv-sdk
From 662e74f3e5daaf72541e875d54f40bf3574d455f Mon Sep 17 00:00:00 2001
From: Zed Lei <59104634+RAY-316@users.noreply.github.com>
Date: Tue, 7 Sep 2021 10:05:53 +0800
Subject: [PATCH 096/157] Update auto_pipeline_run.py
---
scripts/release_issue_status/auto_pipeline_run.py | 1 +
1 file changed, 1 insertion(+)
diff --git a/scripts/release_issue_status/auto_pipeline_run.py b/scripts/release_issue_status/auto_pipeline_run.py
index 3fa79a486c88..bd9b708cbba0 100644
--- a/scripts/release_issue_status/auto_pipeline_run.py
+++ b/scripts/release_issue_status/auto_pipeline_run.py
@@ -3,6 +3,7 @@
import os
url = os.getenv('URL')
+print('+++++++++++++++URL',type(url),url)
headers = {
'x-vss-reauthenticationaction': 'Suppress',
From 4b661c6b7abf3b176df8e9448727c3f85abfba9c Mon Sep 17 00:00:00 2001
From: Zed Lei <59104634+RAY-316@users.noreply.github.com>
Date: Tue, 7 Sep 2021 10:24:00 +0800
Subject: [PATCH 097/157] Update release_issue_status.yml for Azure Pipelines
---
scripts/release_issue_status/release_issue_status.yml | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/scripts/release_issue_status/release_issue_status.yml b/scripts/release_issue_status/release_issue_status.yml
index 78ff3f38017e..8732b10f8d71 100644
--- a/scripts/release_issue_status/release_issue_status.yml
+++ b/scripts/release_issue_status/release_issue_status.yml
@@ -37,7 +37,7 @@ jobs:
export FILE=$(ENV_FILE)
export TOKEN=$(USR_TOKEN)
export HEADERS=$(PIPELINE_HEADERS)
- export URL=$(URL)
+ export URL=$(PIPELINE_URL)
# create virtual env
python -m venv venv-sdk
From 05733eb96c0d820f4fbcf33c0c22f50a17687f8c Mon Sep 17 00:00:00 2001
From: Zed Lei <59104634+RAY-316@users.noreply.github.com>
Date: Tue, 7 Sep 2021 10:46:01 +0800
Subject: [PATCH 098/157] Update auto_pipeline_run.py
---
scripts/release_issue_status/auto_pipeline_run.py | 13 +++++--------
1 file changed, 5 insertions(+), 8 deletions(-)
diff --git a/scripts/release_issue_status/auto_pipeline_run.py b/scripts/release_issue_status/auto_pipeline_run.py
index bd9b708cbba0..ecba3dbcaa07 100644
--- a/scripts/release_issue_status/auto_pipeline_run.py
+++ b/scripts/release_issue_status/auto_pipeline_run.py
@@ -2,10 +2,7 @@
import json
import os
-url = os.getenv('URL')
-print('+++++++++++++++URL',type(url),url)
-
-headers = {
+_headers = {
'x-vss-reauthenticationaction': 'Suppress',
'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/92.0.4515.131 Safari/537.36 Edg/92.0.902.73',
'accept': 'application/json;api-version=5.1-preview.1;excludeUrls=true;enumsAsNumbers=true;msDateFormat=true;noArrayWrap=true',
@@ -35,10 +32,10 @@ def run_pipeline(issue_link, sdk_issue_object):
}
}
})
- headers['Cookie'] = os.getenv('COOKIE')
- response = requests.request("POST", url, headers=headers, data=payload)
- if 200 <= response.status_code < 300:
+ _headers['Cookie'] = os.getenv('COOKIE')
+ response = requests.request("POST", os.getenv('URL'), headers=_headers, data=payload)
+ if response.status_code == 200:
return True
else:
- print(response.text)
+ print(response.status_code)
return False
From 7639430f481982894383e6c5879a8758c7e26d2b Mon Sep 17 00:00:00 2001
From: Zed Lei <59104634+RAY-316@users.noreply.github.com>
Date: Tue, 7 Sep 2021 11:25:47 +0800
Subject: [PATCH 099/157] Update auto_pipeline_run.py
---
scripts/release_issue_status/auto_pipeline_run.py | 2 ++
1 file changed, 2 insertions(+)
diff --git a/scripts/release_issue_status/auto_pipeline_run.py b/scripts/release_issue_status/auto_pipeline_run.py
index ecba3dbcaa07..47488c487c2b 100644
--- a/scripts/release_issue_status/auto_pipeline_run.py
+++ b/scripts/release_issue_status/auto_pipeline_run.py
@@ -10,6 +10,8 @@
'Cookie': ''
}
+print('++++++++++cookie',os.getenv('COOKIE'))
+print('++++++++++url',os.getenv('URL'))
def run_pipeline(issue_link, sdk_issue_object):
payload = json.dumps({
From 45ef56dac5a9f393cbd4a5b15532acdebee8e779 Mon Sep 17 00:00:00 2001
From: BigCat20196 <1095260342@qq.com>
Date: Tue, 7 Sep 2021 17:29:30 +0800
Subject: [PATCH 100/157] Add pipeline link
---
.../release_issue_status/auto_pipeline_run.py | 20 ++++++++++++++-----
scripts/release_issue_status/main.py | 6 ++++--
.../release_issue_status/reply_generator.py | 9 +++++++--
.../release_issue_status/update_issue_body.py | 7 ++++---
4 files changed, 30 insertions(+), 12 deletions(-)
diff --git a/scripts/release_issue_status/auto_pipeline_run.py b/scripts/release_issue_status/auto_pipeline_run.py
index 47488c487c2b..ce595ab9e3cb 100644
--- a/scripts/release_issue_status/auto_pipeline_run.py
+++ b/scripts/release_issue_status/auto_pipeline_run.py
@@ -1,6 +1,8 @@
-import requests
import json
import os
+import re
+
+import requests
_headers = {
'x-vss-reauthenticationaction': 'Suppress',
@@ -10,10 +12,7 @@
'Cookie': ''
}
-print('++++++++++cookie',os.getenv('COOKIE'))
-print('++++++++++url',os.getenv('URL'))
-
-def run_pipeline(issue_link, sdk_issue_object):
+def run_pipeline(issue_link, sdk_issue_object, pipeline_url):
payload = json.dumps({
"stagesToSkip": [],
"resources": {
@@ -31,6 +30,10 @@ def run_pipeline(issue_link, sdk_issue_object):
"ISSUE_LINK": {
"value": f"{issue_link}",
"isSecret": False
+ },
+ "PIPELINE_LINK": {
+ "value": f"{pipeline_url}",
+ "isSecret": False
}
}
})
@@ -41,3 +44,10 @@ def run_pipeline(issue_link, sdk_issue_object):
else:
print(response.status_code)
return False
+
+
+def get_pipeline_url(search_url):
+ res = requests.get(search_url, headers=_headers)
+ definitionId = re.findall('"pipelines":\[{"id":(.*?),"name":"python', res.text)[0]
+ pipeline_url = 'https://dev.azure.com/azure-sdk/internal/_build?definitionId={}'.format(definitionId)
+ return pipeline_url
\ No newline at end of file
diff --git a/scripts/release_issue_status/main.py b/scripts/release_issue_status/main.py
index 53bbc23db48e..fa8a1b87a093 100644
--- a/scripts/release_issue_status/main.py
+++ b/scripts/release_issue_status/main.py
@@ -124,11 +124,12 @@ def _latest_comment_time(comments, delay_from_create_date):
def auto_reply(item, request_repo, rest_repo, sdk_repo, duplicated_issue):
print("==========new issue number: {}".format(item.issue_object.number))
+ output_folder = ''
if 'auto-link' not in item.labels:
item.labels.append('auto-link')
item.issue_object.set_labels(*item.labels)
try:
- package_name, readme_link = update_issue_body(request_repo, rest_repo, item.issue_object.number)
+ package_name, readme_link, output_folder = update_issue_body(request_repo, rest_repo, item.issue_object.number)
print("pkname, readme", package_name, readme_link)
item.package = package_name
key = ('Python', item.package)
@@ -149,7 +150,8 @@ def auto_reply(item, request_repo, rest_repo, sdk_repo, duplicated_issue):
item.issue_object.set_labels(*item.labels)
raise
try:
- reply = rg.begin_reply_generate(item=item, rest_repo=rest_repo, readme_link=readme_link,sdk_repo=sdk_repo)
+ rg.begin_reply_generate(item=item, rest_repo=rest_repo, readme_link=readme_link,
+ sdk_repo=sdk_repo,output_folder=output_folder)
except Exception as e:
item.bot_advice = 'auto reply failed, Please intervene manually !!'
print('Error from auto reply ========================')
diff --git a/scripts/release_issue_status/reply_generator.py b/scripts/release_issue_status/reply_generator.py
index 6b68cff11b2e..13204b144674 100644
--- a/scripts/release_issue_status/reply_generator.py
+++ b/scripts/release_issue_status/reply_generator.py
@@ -98,18 +98,23 @@ def add_label(label_name, labels):
issue_object_rg.set_labels(*labels)
-def begin_reply_generate(item, rest_repo, readme_link, sdk_repo):
+def begin_reply_generate(item, rest_repo, readme_link, sdk_repo, output_folder):
global issue_object_rg
issue_object_rg = item.issue_object
link_dict = get_links(readme_link)
labels = item.labels
whether_change_readme = weather_change_readme(rest_repo, link_dict, labels)
+ search_url = r'https://dev.azure.com/azure-sdk/internal/_build?view=folders&pipelineNameFilter=python%20-%20{}'.format(
+ output_folder)
if not whether_change_readme:
latest_pr_number = get_latest_pr_from_readme(rest_repo, link_dict)
reply_content, sdk_link_number = latest_pr_parse(rest_repo, latest_pr_number)
+ pipeline_url = apr.get_pipeline_url(search_url)
run_pipeline = apr.run_pipeline(issue_link=issue_object_rg.html_url,
- sdk_issue_object=sdk_repo.get_pull(int(sdk_link_number)))
+ sdk_issue_object=sdk_repo.get_pull(int(sdk_link_number)),
+ pipeline_url=pipeline_url
+ )
if run_pipeline:
print(f'{issue_object_rg.number} run pipeline successfully')
else:
diff --git a/scripts/release_issue_status/update_issue_body.py b/scripts/release_issue_status/update_issue_body.py
index 901cdd87afff..c3c46354d7b2 100644
--- a/scripts/release_issue_status/update_issue_body.py
+++ b/scripts/release_issue_status/update_issue_body.py
@@ -20,7 +20,7 @@ def update_issue_body(sdk_repo, rest_repo, issue_number):
link = link.split(']')[0]
link = link.replace('[', "").replace(']', "").replace('(', "").replace(')', "")
- package_name, readme_link = get_pkname_and_readme_link(rest_repo, link)
+ package_name, readme_link, output_folder = get_pkname_and_readme_link(rest_repo, link)
# Check readme tag format
if 'package' not in readme_tag:
@@ -36,7 +36,7 @@ def update_issue_body(sdk_repo, rest_repo, issue_number):
issue_body_up += raw + '\n'
issue_info.edit(body=issue_body_up)
- return package_name, readme_link
+ return package_name, readme_link, output_folder
def get_pkname_and_readme_link(rest_repo, link):
@@ -80,9 +80,10 @@ def get_pkname_and_readme_link(rest_repo, link):
readme_link_part = '/specification' + readme_link.split('/specification')[-1]
readme_contents = str(rest_repo.get_contents(readme_link_part).decoded_content)
pk_name = re.findall(r'package-name: (.*?)\\n', readme_contents)[0]
+ out_folder = re.findall(r'\$\(python-sdks-folder\)/(.*?)/azure-', readme_contents)[0]
readme_link = readme_link.replace('python.', '')
- return pk_name, readme_link
+ return pk_name, readme_link, out_folder
def find_readme_link(sdk_repo, issue_number):
From cf044d6cd57be6ef80352cc3f77b228bb3819a93 Mon Sep 17 00:00:00 2001
From: BigCat20196 <1095260342@qq.com>
Date: Tue, 7 Sep 2021 17:38:30 +0800
Subject: [PATCH 101/157] Update pipeline link
---
scripts/release_issue_status/auto_pipeline_run.py | 1 +
1 file changed, 1 insertion(+)
diff --git a/scripts/release_issue_status/auto_pipeline_run.py b/scripts/release_issue_status/auto_pipeline_run.py
index ce595ab9e3cb..d06310271a9e 100644
--- a/scripts/release_issue_status/auto_pipeline_run.py
+++ b/scripts/release_issue_status/auto_pipeline_run.py
@@ -47,6 +47,7 @@ def run_pipeline(issue_link, sdk_issue_object, pipeline_url):
def get_pipeline_url(search_url):
+ _headers['Cookie'] = os.getenv('COOKIE')
res = requests.get(search_url, headers=_headers)
definitionId = re.findall('"pipelines":\[{"id":(.*?),"name":"python', res.text)[0]
pipeline_url = 'https://dev.azure.com/azure-sdk/internal/_build?definitionId={}'.format(definitionId)
From a367116a4d27ea9d0ccc849c810520c7a9648f4b Mon Sep 17 00:00:00 2001
From: Jiefeng Chen <51037443+BigCat20196@users.noreply.github.com>
Date: Wed, 8 Sep 2021 11:01:59 +0800
Subject: [PATCH 102/157] Update auto_pipeline_run.py
---
scripts/release_issue_status/auto_pipeline_run.py | 10 +++++++---
1 file changed, 7 insertions(+), 3 deletions(-)
diff --git a/scripts/release_issue_status/auto_pipeline_run.py b/scripts/release_issue_status/auto_pipeline_run.py
index d06310271a9e..5c3a5aa6adc4 100644
--- a/scripts/release_issue_status/auto_pipeline_run.py
+++ b/scripts/release_issue_status/auto_pipeline_run.py
@@ -49,6 +49,10 @@ def run_pipeline(issue_link, sdk_issue_object, pipeline_url):
def get_pipeline_url(search_url):
_headers['Cookie'] = os.getenv('COOKIE')
res = requests.get(search_url, headers=_headers)
- definitionId = re.findall('"pipelines":\[{"id":(.*?),"name":"python', res.text)[0]
- pipeline_url = 'https://dev.azure.com/azure-sdk/internal/_build?definitionId={}'.format(definitionId)
- return pipeline_url
\ No newline at end of file
+ try:
+ definitionId = re.findall('"pipelines":\[{"id":(.*?),"name":"python', res.text)[0]
+ pipeline_url = 'https://dev.azure.com/azure-sdk/internal/_build?definitionId={}'.format(definitionId)
+ except Exception as e:
+ print('Cannot find definitionId, Do not display pipeline_url')
+ pipeline_url = ''
+ return pipeline_url
From c9073c9a104035de8e1966cf2caae155ff264505 Mon Sep 17 00:00:00 2001
From: Zed Lei <59104634+RAY-316@users.noreply.github.com>
Date: Thu, 9 Sep 2021 15:43:52 +0800
Subject: [PATCH 103/157] Update release_issue_status.yml for Azure Pipelines
---
scripts/release_issue_status/release_issue_status.yml | 1 +
1 file changed, 1 insertion(+)
diff --git a/scripts/release_issue_status/release_issue_status.yml b/scripts/release_issue_status/release_issue_status.yml
index 8732b10f8d71..0e3146fdee9e 100644
--- a/scripts/release_issue_status/release_issue_status.yml
+++ b/scripts/release_issue_status/release_issue_status.yml
@@ -38,6 +38,7 @@ jobs:
export TOKEN=$(USR_TOKEN)
export HEADERS=$(PIPELINE_HEADERS)
export URL=$(PIPELINE_URL)
+ export PIPELINE_TOKEN = $(PIPELINE_TOKEN)
# create virtual env
python -m venv venv-sdk
From 7d74b1dce50c40685c54cead613bc022ff2276cd Mon Sep 17 00:00:00 2001
From: Zed Lei <59104634+RAY-316@users.noreply.github.com>
Date: Thu, 9 Sep 2021 15:53:35 +0800
Subject: [PATCH 104/157] Update auto_pipeline_run.py
---
.../release_issue_status/auto_pipeline_run.py | 33 +++++++++++--------
1 file changed, 19 insertions(+), 14 deletions(-)
diff --git a/scripts/release_issue_status/auto_pipeline_run.py b/scripts/release_issue_status/auto_pipeline_run.py
index 5c3a5aa6adc4..64a4a39afaed 100644
--- a/scripts/release_issue_status/auto_pipeline_run.py
+++ b/scripts/release_issue_status/auto_pipeline_run.py
@@ -1,7 +1,9 @@
import json
import os
import re
-
+from msrest.authentication import BasicAuthentication
+from azure.devops.v6_0.pipelines.pipelines_client import PipelinesClient
+from azure.devops.v6_0.pipelines import models
import requests
_headers = {
@@ -13,8 +15,8 @@
}
def run_pipeline(issue_link, sdk_issue_object, pipeline_url):
- payload = json.dumps({
- "stagesToSkip": [],
+ paramaters = {
+ "stages_to_skip": [],
"resources": {
"repositories": {
"self": {
@@ -24,26 +26,29 @@ def run_pipeline(issue_link, sdk_issue_object, pipeline_url):
},
"variables": {
"BASE_BRANCH": {
- "value": f"{sdk_issue_object.head.label}",
+ "value": "AzureSDKAutomation:sdkAuto/track2_azure-mgmt-logz",
"isSecret": False
},
"ISSUE_LINK": {
- "value": f"{issue_link}",
- "isSecret": False
- },
- "PIPELINE_LINK": {
- "value": f"{pipeline_url}",
+ "value": "https://github.com/Azure/sdk-release-request/issues/1826",
"isSecret": False
}
}
- })
- _headers['Cookie'] = os.getenv('COOKIE')
- response = requests.request("POST", os.getenv('URL'), headers=_headers, data=payload)
- if response.status_code == 200:
+ }
+ # Fill in with your personal access token and org URL
+ personal_access_token = os.getenv('PIPELINE_TOKEN')
+ organization_url = 'https://dev.azure.com/azure-sdk'
+
+ # Create a connection to the org
+ credentials = BasicAuthentication('', personal_access_token)
+ run_parameters = models.RunPipelineParameters(**paramaters)
+ client = PipelinesClient(base_url=organization_url, creds=credentials)
+ result = client.run_pipeline(project='internal',pipeline_id=2500,run_parameters=run_parameters)
+ if result.state == 'inProgress':
return True
else:
- print(response.status_code)
return False
+
def get_pipeline_url(search_url):
From bfdfd38ee3fb9831198311949f1ab55e04fca8ca Mon Sep 17 00:00:00 2001
From: Zed Lei <59104634+RAY-316@users.noreply.github.com>
Date: Thu, 9 Sep 2021 15:54:40 +0800
Subject: [PATCH 105/157] Update requirement.txt
---
scripts/release_issue_status/requirement.txt | 4 +++-
1 file changed, 3 insertions(+), 1 deletion(-)
diff --git a/scripts/release_issue_status/requirement.txt b/scripts/release_issue_status/requirement.txt
index 2bfa4e9b6203..512d9702666a 100644
--- a/scripts/release_issue_status/requirement.txt
+++ b/scripts/release_issue_status/requirement.txt
@@ -2,4 +2,6 @@ PyGithub
datetime
requests
bs4
-azure.storage.blob==12.8.1
\ No newline at end of file
+azure.storage.blob==12.8.1
+azure-devops
+msrest
From 6ebcb7ee20d44d4267721fb39c8b0860daf83e5d Mon Sep 17 00:00:00 2001
From: Zed Lei <59104634+RAY-316@users.noreply.github.com>
Date: Thu, 9 Sep 2021 16:56:17 +0800
Subject: [PATCH 106/157] Update auto_pipeline_run.py
---
scripts/release_issue_status/auto_pipeline_run.py | 10 +++++++---
1 file changed, 7 insertions(+), 3 deletions(-)
diff --git a/scripts/release_issue_status/auto_pipeline_run.py b/scripts/release_issue_status/auto_pipeline_run.py
index 64a4a39afaed..3d4bad23a657 100644
--- a/scripts/release_issue_status/auto_pipeline_run.py
+++ b/scripts/release_issue_status/auto_pipeline_run.py
@@ -16,7 +16,7 @@
def run_pipeline(issue_link, sdk_issue_object, pipeline_url):
paramaters = {
- "stages_to_skip": [],
+ "stagesToSkip": [],
"resources": {
"repositories": {
"self": {
@@ -26,11 +26,15 @@ def run_pipeline(issue_link, sdk_issue_object, pipeline_url):
},
"variables": {
"BASE_BRANCH": {
- "value": "AzureSDKAutomation:sdkAuto/track2_azure-mgmt-logz",
+ "value": f"{sdk_issue_object.head.label}",
"isSecret": False
},
"ISSUE_LINK": {
- "value": "https://github.com/Azure/sdk-release-request/issues/1826",
+ "value": f"{issue_link}",
+ "isSecret": False
+ },
+ "PIPELINE_LINK": {
+ "value": f"{pipeline_url}",
"isSecret": False
}
}
From a54dd839a494a828a6b8285240db644e34103153 Mon Sep 17 00:00:00 2001
From: BigCat20196 <1095260342@qq.com>
Date: Thu, 9 Sep 2021 17:00:31 +0800
Subject: [PATCH 107/157] Add get_python_pipeline
---
.../release_issue_status/auto_pipeline_run.py | 13 --------
.../get_python_pipeline.py | 31 +++++++++++++++++++
scripts/release_issue_status/main.py | 18 ++++++++---
.../release_issue_status/reply_generator.py | 5 +--
4 files changed, 45 insertions(+), 22 deletions(-)
create mode 100644 scripts/release_issue_status/get_python_pipeline.py
diff --git a/scripts/release_issue_status/auto_pipeline_run.py b/scripts/release_issue_status/auto_pipeline_run.py
index 3d4bad23a657..926a7541678c 100644
--- a/scripts/release_issue_status/auto_pipeline_run.py
+++ b/scripts/release_issue_status/auto_pipeline_run.py
@@ -52,16 +52,3 @@ def run_pipeline(issue_link, sdk_issue_object, pipeline_url):
return True
else:
return False
-
-
-
-def get_pipeline_url(search_url):
- _headers['Cookie'] = os.getenv('COOKIE')
- res = requests.get(search_url, headers=_headers)
- try:
- definitionId = re.findall('"pipelines":\[{"id":(.*?),"name":"python', res.text)[0]
- pipeline_url = 'https://dev.azure.com/azure-sdk/internal/_build?definitionId={}'.format(definitionId)
- except Exception as e:
- print('Cannot find definitionId, Do not display pipeline_url')
- pipeline_url = ''
- return pipeline_url
diff --git a/scripts/release_issue_status/get_python_pipeline.py b/scripts/release_issue_status/get_python_pipeline.py
new file mode 100644
index 000000000000..e95d0b2a69e3
--- /dev/null
+++ b/scripts/release_issue_status/get_python_pipeline.py
@@ -0,0 +1,31 @@
+import os
+import re
+
+from msrest.authentication import BasicAuthentication
+from azure.devops.v6_0.pipelines.pipelines_client import PipelinesClient
+
+
+def get_python_pipelines():
+ python_piplines = {}
+ pipeline_client = PipelinesClient(base_url='https://dev.azure.com/azure-sdk',
+ creds=BasicAuthentication('', os.getenv('PIPELINE_TOKEN')))
+ pipelines = pipeline_client.list_pipelines(project='internal')
+ for pipeline in pipelines:
+ if re.findall('^python - \w*$', pipeline.name):
+ key = pipeline.name.replace('python - ', '')
+ python_piplines[key] = pipeline.id
+ return python_piplines
+
+
+def get_pipeline_url(python_piplines, output_folder):
+
+ for key, value in python_piplines:
+ if key == output_folder:
+ definitionId = value
+ pipeline_url = 'https://dev.azure.com/azure-sdk/internal/_build?definitionId={}'.format(definitionId)
+ break
+ else:
+ print('Cannot find definitionId, Do not display pipeline_url')
+ pipeline_url = ''
+
+ return pipeline_url
\ No newline at end of file
diff --git a/scripts/release_issue_status/main.py b/scripts/release_issue_status/main.py
index fa8a1b87a093..2e71a00c250c 100644
--- a/scripts/release_issue_status/main.py
+++ b/scripts/release_issue_status/main.py
@@ -1,14 +1,18 @@
import time
import os
import re
-from github import Github
from datetime import date, datetime
import subprocess as sp
+import traceback
+
+from github import Github
from azure.storage.blob import BlobClient
+
import reply_generator as rg
from update_issue_body import update_issue_body, find_readme_link
from auto_close import auto_close_issue
-import traceback
+from get_python_pipeline import get_python_pipelines, get_pipeline_url
+
_NULL = ' '
_FILE_OUT = 'release_issue_status.csv'
@@ -122,7 +126,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):
+def auto_reply(item, request_repo, rest_repo, sdk_repo, duplicated_issue, python_piplines):
print("==========new issue number: {}".format(item.issue_object.number))
output_folder = ''
if 'auto-link' not in item.labels:
@@ -150,8 +154,9 @@ def auto_reply(item, request_repo, rest_repo, sdk_repo, duplicated_issue):
item.issue_object.set_labels(*item.labels)
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,
- sdk_repo=sdk_repo,output_folder=output_folder)
+ sdk_repo=sdk_repo, pipeline_url=pipeline_url)
except Exception as e:
item.bot_advice = 'auto reply failed, Please intervene manually !!'
print('Error from auto reply ========================')
@@ -172,6 +177,9 @@ def main():
issue_status_python = []
duplicated_issue = dict()
start_time = time.time()
+ # get pipeline definitionid
+ python_piplines = get_python_pipelines()
+
for item in open_issues:
if not item.number:
continue
@@ -213,7 +221,7 @@ def main():
elif item.comment_num == 0 and 'Python' in item.labels:
item.bot_advice = 'new issue and better to confirm quickly.'
try:
- auto_reply(item, request_repo, rest_repo, sdk_repo, duplicated_issue)
+ auto_reply(item, request_repo, rest_repo, sdk_repo, duplicated_issue, python_piplines)
except Exception as e:
continue
elif not item.author_latest_comment in _PYTHON_SDK_ADMINISTRATORS:
diff --git a/scripts/release_issue_status/reply_generator.py b/scripts/release_issue_status/reply_generator.py
index 13204b144674..eddf8a9fee02 100644
--- a/scripts/release_issue_status/reply_generator.py
+++ b/scripts/release_issue_status/reply_generator.py
@@ -98,19 +98,16 @@ def add_label(label_name, labels):
issue_object_rg.set_labels(*labels)
-def begin_reply_generate(item, rest_repo, readme_link, sdk_repo, output_folder):
+def begin_reply_generate(item, rest_repo, readme_link, sdk_repo, pipeline_url):
global issue_object_rg
issue_object_rg = item.issue_object
link_dict = get_links(readme_link)
labels = item.labels
whether_change_readme = weather_change_readme(rest_repo, link_dict, labels)
- search_url = r'https://dev.azure.com/azure-sdk/internal/_build?view=folders&pipelineNameFilter=python%20-%20{}'.format(
- output_folder)
if not whether_change_readme:
latest_pr_number = get_latest_pr_from_readme(rest_repo, link_dict)
reply_content, sdk_link_number = latest_pr_parse(rest_repo, latest_pr_number)
- pipeline_url = apr.get_pipeline_url(search_url)
run_pipeline = apr.run_pipeline(issue_link=issue_object_rg.html_url,
sdk_issue_object=sdk_repo.get_pull(int(sdk_link_number)),
pipeline_url=pipeline_url
From 6cadcda0cdc3fdf33532ccec77b1422c24d3923a Mon Sep 17 00:00:00 2001
From: Zed Lei <59104634+RAY-316@users.noreply.github.com>
Date: Thu, 9 Sep 2021 17:09:07 +0800
Subject: [PATCH 108/157] Update auto_pipeline_run.py
---
scripts/release_issue_status/auto_pipeline_run.py | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/scripts/release_issue_status/auto_pipeline_run.py b/scripts/release_issue_status/auto_pipeline_run.py
index 926a7541678c..90b209bdfd57 100644
--- a/scripts/release_issue_status/auto_pipeline_run.py
+++ b/scripts/release_issue_status/auto_pipeline_run.py
@@ -16,7 +16,7 @@
def run_pipeline(issue_link, sdk_issue_object, pipeline_url):
paramaters = {
- "stagesToSkip": [],
+ "stages_to_skip": [],
"resources": {
"repositories": {
"self": {
From e26e54adb01e8db5e059ec87a669d9650fe02bd2 Mon Sep 17 00:00:00 2001
From: BigCat20196 <1095260342@qq.com>
Date: Thu, 9 Sep 2021 17:24:34 +0800
Subject: [PATCH 109/157] test
---
scripts/release_issue_status/main.py | 2 ++
1 file changed, 2 insertions(+)
diff --git a/scripts/release_issue_status/main.py b/scripts/release_issue_status/main.py
index 2e71a00c250c..74569005aaf1 100644
--- a/scripts/release_issue_status/main.py
+++ b/scripts/release_issue_status/main.py
@@ -154,6 +154,8 @@ def auto_reply(item, request_repo, rest_repo, sdk_repo, duplicated_issue, python
item.issue_object.set_labels(*item.labels)
raise
try:
+ print("*********************")
+ print(python_piplines)
pipeline_url = get_pipeline_url(python_piplines, output_folder)
rg.begin_reply_generate(item=item, rest_repo=rest_repo, readme_link=readme_link,
sdk_repo=sdk_repo, pipeline_url=pipeline_url)
From 57faca157acee3360dbda8d7949c830af48af7d8 Mon Sep 17 00:00:00 2001
From: BigCat20196 <1095260342@qq.com>
Date: Thu, 9 Sep 2021 17:34:40 +0800
Subject: [PATCH 110/157] test
---
scripts/release_issue_status/get_python_pipeline.py | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/scripts/release_issue_status/get_python_pipeline.py b/scripts/release_issue_status/get_python_pipeline.py
index e95d0b2a69e3..83e20782d30f 100644
--- a/scripts/release_issue_status/get_python_pipeline.py
+++ b/scripts/release_issue_status/get_python_pipeline.py
@@ -19,7 +19,7 @@ def get_python_pipelines():
def get_pipeline_url(python_piplines, output_folder):
- for key, value in python_piplines:
+ for key, value in python_piplines.items():
if key == output_folder:
definitionId = value
pipeline_url = 'https://dev.azure.com/azure-sdk/internal/_build?definitionId={}'.format(definitionId)
From 8faa0e348c94d2e4e4e4d0e226a306e1c368cc4c Mon Sep 17 00:00:00 2001
From: BigCat20196 <1095260342@qq.com>
Date: Fri, 10 Sep 2021 10:23:37 +0800
Subject: [PATCH 111/157] add outputfolder
---
scripts/release_issue_status/main.py | 5 ++---
scripts/release_issue_status/update_issue_body.py | 11 +++++++++--
2 files changed, 11 insertions(+), 5 deletions(-)
diff --git a/scripts/release_issue_status/main.py b/scripts/release_issue_status/main.py
index 74569005aaf1..93750a2b6590 100644
--- a/scripts/release_issue_status/main.py
+++ b/scripts/release_issue_status/main.py
@@ -9,7 +9,7 @@
from azure.storage.blob import BlobClient
import reply_generator as rg
-from update_issue_body import update_issue_body, find_readme_link
+from update_issue_body import update_issue_body, find_readme_and_output_folder
from auto_close import auto_close_issue
from get_python_pipeline import get_python_pipelines, get_pipeline_url
@@ -128,7 +128,6 @@ def _latest_comment_time(comments, delay_from_create_date):
def auto_reply(item, request_repo, rest_repo, sdk_repo, duplicated_issue, python_piplines):
print("==========new issue number: {}".format(item.issue_object.number))
- output_folder = ''
if 'auto-link' not in item.labels:
item.labels.append('auto-link')
item.issue_object.set_labels(*item.labels)
@@ -146,7 +145,7 @@ def auto_reply(item, request_repo, rest_repo, sdk_repo, duplicated_issue, python
raise
else:
try:
- readme_link = find_readme_link(request_repo, item.issue_object.number)
+ readme_link, output_folder = find_readme_and_output_folder(request_repo, rest_repo, item.issue_object.number)
except Exception as e:
print('Issue: {} updates body failed'.format(item.issue_object.number))
item.bot_advice = 'failed to find Readme link, Please check !!'
diff --git a/scripts/release_issue_status/update_issue_body.py b/scripts/release_issue_status/update_issue_body.py
index c3c46354d7b2..b96a25daec92 100644
--- a/scripts/release_issue_status/update_issue_body.py
+++ b/scripts/release_issue_status/update_issue_body.py
@@ -86,7 +86,7 @@ def get_pkname_and_readme_link(rest_repo, link):
return pk_name, readme_link, out_folder
-def find_readme_link(sdk_repo, issue_number):
+def find_readme_and_output_folder(sdk_repo, rest_repo, issue_number):
# Get Issue Number
issue_info = sdk_repo.get_issue(number=issue_number)
issue_body = issue_info.body
@@ -94,5 +94,12 @@ def find_readme_link(sdk_repo, issue_number):
for row in issue_body_list:
if 'resource-manager' in row:
readme_link = '{}/readme.md'.format(row.strip("\r"))
- return readme_link
+ # Get output folder from readme.python.md
+ readme_python_link = readme_link.split('/resource-manager')[0] + '/resource-manager/readme.python.md'
+ readme_python_link_part = '/specification' + readme_python_link.split('/specification')[-1]
+ readme_contents = str(rest_repo.get_contents(readme_python_link_part).decoded_content)
+ output_folder = re.findall(r'\$\(python-sdks-folder\)/(.*?)/azure-', readme_contents)[0]
+
+ return readme_link, output_folder
raise Exception('Not find readme link,please check')
+
From 152d689a24defd01be8fe972ecf728c03c3d1712 Mon Sep 17 00:00:00 2001
From: BigCat20196 <1095260342@qq.com>
Date: Fri, 10 Sep 2021 10:34:28 +0800
Subject: [PATCH 112/157] add label
---
scripts/release_issue_status/main.py | 5 ++++-
1 file changed, 4 insertions(+), 1 deletion(-)
diff --git a/scripts/release_issue_status/main.py b/scripts/release_issue_status/main.py
index 93750a2b6590..902347bf8479 100644
--- a/scripts/release_issue_status/main.py
+++ b/scripts/release_issue_status/main.py
@@ -128,6 +128,9 @@ def _latest_comment_time(comments, delay_from_create_date):
def auto_reply(item, request_repo, rest_repo, sdk_repo, duplicated_issue, python_piplines):
print("==========new issue number: {}".format(item.issue_object.number))
+ if 'Configed' in item.labels:
+ item.labels.remove('Configed')
+
if 'auto-link' not in item.labels:
item.labels.append('auto-link')
item.issue_object.set_labels(*item.labels)
@@ -219,7 +222,7 @@ def main():
for item in issue_status:
if item.status == 'release':
item.bot_advice = 'better to release asap.'
- elif item.comment_num == 0 and 'Python' in item.labels:
+ elif (item.comment_num == 0 or 'Configed' in item.labels) and 'Python' in item.labels:
item.bot_advice = 'new issue and better to confirm quickly.'
try:
auto_reply(item, request_repo, rest_repo, sdk_repo, duplicated_issue, python_piplines)
From 6870777775bed1ca7657b8c72dac3087f9197800 Mon Sep 17 00:00:00 2001
From: msyyc <70930885+msyyc@users.noreply.github.com>
Date: Fri, 10 Sep 2021 15:24:52 +0800
Subject: [PATCH 113/157] Update main.py
---
scripts/release_issue_status/main.py | 8 ++++----
1 file changed, 4 insertions(+), 4 deletions(-)
diff --git a/scripts/release_issue_status/main.py b/scripts/release_issue_status/main.py
index 902347bf8479..01fd0983d5c1 100644
--- a/scripts/release_issue_status/main.py
+++ b/scripts/release_issue_status/main.py
@@ -267,10 +267,10 @@ def main():
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)
+# 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__':
From d76eb9faeee00c6afb1fab6d1ded3dd542350f5b Mon Sep 17 00:00:00 2001
From: Jiefeng Chen <51037443+BigCat20196@users.noreply.github.com>
Date: Fri, 10 Sep 2021 15:48:36 +0800
Subject: [PATCH 114/157] Update get_python_pipeline.py
---
scripts/release_issue_status/get_python_pipeline.py | 12 ++++--------
1 file changed, 4 insertions(+), 8 deletions(-)
diff --git a/scripts/release_issue_status/get_python_pipeline.py b/scripts/release_issue_status/get_python_pipeline.py
index 83e20782d30f..5b0939a704d2 100644
--- a/scripts/release_issue_status/get_python_pipeline.py
+++ b/scripts/release_issue_status/get_python_pipeline.py
@@ -18,14 +18,10 @@ def get_python_pipelines():
def get_pipeline_url(python_piplines, output_folder):
-
- for key, value in python_piplines.items():
- if key == output_folder:
- definitionId = value
- pipeline_url = 'https://dev.azure.com/azure-sdk/internal/_build?definitionId={}'.format(definitionId)
- break
+ definitionId = python_piplines.get(output_folder)
+ if definitionId:
+ pipeline_url = 'https://dev.azure.com/azure-sdk/internal/_build?definitionId={}'.format(definitionId)
else:
print('Cannot find definitionId, Do not display pipeline_url')
pipeline_url = ''
-
- return pipeline_url
\ No newline at end of file
+ return pipeline_url
From 1f19dd8ff4cb69deca4545ee547bef88f438a124 Mon Sep 17 00:00:00 2001
From: Jiefeng Chen <51037443+BigCat20196@users.noreply.github.com>
Date: Fri, 10 Sep 2021 15:51:50 +0800
Subject: [PATCH 115/157] Update main.py
---
scripts/release_issue_status/main.py | 6 +++---
1 file changed, 3 insertions(+), 3 deletions(-)
diff --git a/scripts/release_issue_status/main.py b/scripts/release_issue_status/main.py
index 01fd0983d5c1..64c5d1ac4bd5 100644
--- a/scripts/release_issue_status/main.py
+++ b/scripts/release_issue_status/main.py
@@ -128,8 +128,8 @@ def _latest_comment_time(comments, delay_from_create_date):
def auto_reply(item, request_repo, rest_repo, sdk_repo, duplicated_issue, python_piplines):
print("==========new issue number: {}".format(item.issue_object.number))
- if 'Configed' in item.labels:
- item.labels.remove('Configed')
+ if 'Configured' in item.labels:
+ item.labels.remove('Configured')
if 'auto-link' not in item.labels:
item.labels.append('auto-link')
@@ -222,7 +222,7 @@ def main():
for item in issue_status:
if item.status == 'release':
item.bot_advice = 'better to release asap.'
- elif (item.comment_num == 0 or 'Configed' in item.labels) and 'Python' in item.labels:
+ elif (item.comment_num == 0 or 'Configured' in item.labels) and 'Python' in item.labels:
item.bot_advice = 'new issue and better to confirm quickly.'
try:
auto_reply(item, request_repo, rest_repo, sdk_repo, duplicated_issue, python_piplines)
From 80b0ec6531ccaa5b4c62f8d94fcb15d1cf27013e Mon Sep 17 00:00:00 2001
From: Zed Lei <59104634+RAY-316@users.noreply.github.com>
Date: Fri, 10 Sep 2021 15:55:59 +0800
Subject: [PATCH 116/157] Update auto_pipeline_run.py
---
scripts/release_issue_status/auto_pipeline_run.py | 7 -------
1 file changed, 7 deletions(-)
diff --git a/scripts/release_issue_status/auto_pipeline_run.py b/scripts/release_issue_status/auto_pipeline_run.py
index 90b209bdfd57..ef35ee2612fe 100644
--- a/scripts/release_issue_status/auto_pipeline_run.py
+++ b/scripts/release_issue_status/auto_pipeline_run.py
@@ -6,13 +6,6 @@
from azure.devops.v6_0.pipelines import models
import requests
-_headers = {
- 'x-vss-reauthenticationaction': 'Suppress',
- 'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/92.0.4515.131 Safari/537.36 Edg/92.0.902.73',
- 'accept': 'application/json;api-version=5.1-preview.1;excludeUrls=true;enumsAsNumbers=true;msDateFormat=true;noArrayWrap=true',
- 'Content-Type': 'application/json',
- 'Cookie': ''
-}
def run_pipeline(issue_link, sdk_issue_object, pipeline_url):
paramaters = {
From f33fac44ca5593f54c01777bfb5ce4f9bbe5a028 Mon Sep 17 00:00:00 2001
From: BigCat20196 <1095260342@qq.com>
Date: Mon, 13 Sep 2021 15:09:15 +0800
Subject: [PATCH 117/157] Add utils
---
scripts/release_issue_status/main.py | 7 +-
.../release_issue_status/reply_generator.py | 6 +-
scripts/release_issue_status/utils.py | 210 ++++++++++++++++++
3 files changed, 216 insertions(+), 7 deletions(-)
create mode 100644 scripts/release_issue_status/utils.py
diff --git a/scripts/release_issue_status/main.py b/scripts/release_issue_status/main.py
index 64c5d1ac4bd5..a9de3280253c 100644
--- a/scripts/release_issue_status/main.py
+++ b/scripts/release_issue_status/main.py
@@ -9,9 +9,8 @@
from azure.storage.blob import BlobClient
import reply_generator as rg
-from update_issue_body import update_issue_body, find_readme_and_output_folder
-from auto_close import auto_close_issue
-from get_python_pipeline import get_python_pipelines, get_pipeline_url
+from utils import update_issue_body, get_pkname_and_readme_link, \
+ get_python_pipelines, get_pipeline_url, auto_close_issue
_NULL = ' '
@@ -148,7 +147,7 @@ def auto_reply(item, request_repo, rest_repo, sdk_repo, duplicated_issue, python
raise
else:
try:
- readme_link, output_folder = find_readme_and_output_folder(request_repo, rest_repo, item.issue_object.number)
+ readme_link, output_folder = get_pkname_and_readme_link(request_repo, rest_repo, item.issue_object.number)
except Exception as e:
print('Issue: {} updates body failed'.format(item.issue_object.number))
item.bot_advice = 'failed to find Readme link, Please check !!'
diff --git a/scripts/release_issue_status/reply_generator.py b/scripts/release_issue_status/reply_generator.py
index eddf8a9fee02..57968a498399 100644
--- a/scripts/release_issue_status/reply_generator.py
+++ b/scripts/release_issue_status/reply_generator.py
@@ -1,4 +1,4 @@
-import auto_pipeline_run as apr
+from utils import run_pipeline
import re
issue_object_rg = None
@@ -108,11 +108,11 @@ def begin_reply_generate(item, rest_repo, readme_link, sdk_repo, pipeline_url):
if not whether_change_readme:
latest_pr_number = get_latest_pr_from_readme(rest_repo, link_dict)
reply_content, sdk_link_number = latest_pr_parse(rest_repo, latest_pr_number)
- run_pipeline = apr.run_pipeline(issue_link=issue_object_rg.html_url,
+ res_run = run_pipeline(issue_link=issue_object_rg.html_url,
sdk_issue_object=sdk_repo.get_pull(int(sdk_link_number)),
pipeline_url=pipeline_url
)
- if run_pipeline:
+ if res_run:
print(f'{issue_object_rg.number} run pipeline successfully')
else:
print(f'{issue_object_rg.number} run pipeline fail')
diff --git a/scripts/release_issue_status/utils.py b/scripts/release_issue_status/utils.py
new file mode 100644
index 000000000000..cdf10b086181
--- /dev/null
+++ b/scripts/release_issue_status/utils.py
@@ -0,0 +1,210 @@
+import datetime
+import json
+import os
+import re
+
+from azure.devops.v6_0.pipelines.pipelines_client import PipelinesClient
+from azure.devops.v6_0.pipelines import models
+from bs4 import BeautifulSoup
+from msrest.authentication import BasicAuthentication
+import requests
+
+# Add readme link and package name to the user's issue
+def update_issue_body(sdk_repo, rest_repo, issue_number):
+ # Get Issue Number
+ issue_info = sdk_repo.get_issue(number=issue_number)
+ issue_body = issue_info.body
+ issue_body_list = [i for i in issue_body.split("\n") if i]
+ # Get the link and readme tag in issue body
+ link, readme_tag = '', ''
+ for row in issue_body_list:
+ if 'link' in row.lower():
+ link = row.split(":", 1)[-1].strip()
+ if 'readme tag' in row.lower():
+ readme_tag = row.split(":", 1)[-1].strip()
+ if link and readme_tag:
+ break
+
+ if link.count('https') > 1:
+ link = link.split(']')[0]
+ link = link.replace('[', "").replace(']', "").replace('(', "").replace(')', "")
+
+ package_name, readme_link, output_folder = get_pkname_and_readme_link(rest_repo, link)
+ # Check readme tag format
+ if 'package' not in readme_tag:
+ readme_tag = 'package-{}'.format(readme_tag)
+ issue_body_list.insert(0, f'Readme Tag: {readme_tag}')
+
+ issue_body_list.insert(0, f'\n{readme_link.replace("/readme.md", "")}')
+ issue_body_list.insert(1, package_name)
+ issue_body_up = ''
+ for raw in issue_body_list:
+ if raw == '---\r' or raw == '---':
+ issue_body_up += '\n'
+ issue_body_up += raw + '\n'
+
+ issue_info.edit(body=issue_body_up)
+ return package_name, readme_link, output_folder
+
+
+def get_pkname_and_readme_link(rest_repo, link):
+ # change commit link to pull json link(i.e. https://github.com/Azure/azure-rest-api-specs/commit/77f5d3b5d2fbae17621ea124485788f496786758#diff-708c2fb843b022cac4af8c6f996a527440c1e0d328abb81f54670747bf14ab1a)
+ pk_name = ''
+ if 'commit' in link:
+ commit_sha = link.split('commit/')[-1]
+ commit = rest_repo.get_commit(commit_sha)
+ link = commit.files[0].blob_url
+ link = re.sub('blob/(.*?)/specification', 'blob/main/specification', link)
+
+ # if link is a pr, it can get both pakeage name and readme link.
+ if 'pull' in link:
+ pr_number = int(link.replace("https://github.com/Azure/azure-rest-api-specs/pull/", "").strip('/'))
+
+ # Get Readme link
+ pr_info = rest_repo.get_pull(number=pr_number)
+ pk_url_name = set()
+ for pr_changed_file in pr_info.get_files():
+ contents_url = pr_changed_file.contents_url
+ if '/resource-manager' in contents_url:
+ try:
+ pk_url_name.add(re.findall(r'/specification/(.*?)/resource-manager/', contents_url)[0])
+ except Exception as e:
+ continue
+ if len(pk_url_name) > 1:
+ print("\nexists multiple package names: {} \n".format(pk_url_name))
+ raise Exception('Not find readme link, because it exists multiple package names')
+
+ readme_link = 'https://github.com/Azure/azure-rest-api-specs/blob/main/specification/{}/' \
+ 'resource-manager/readme.python.md'.format(list(pk_url_name)[0])
+ # if link is a rest url(i.e. https://github.com/Azure/azure-rest-api-specs/blob/main/specification/xxx/resource-manager/readme.python.md)
+ elif '/resource-manager' not in link:
+ # (i.e. https://github.com/Azure/azure-rest-api-specs/tree/main/specification/xxxx)
+ readme_link = link + '/resource-manager/readme.python.md'
+ else:
+ readme_link = link.split('/resource-manager')[0] + '/resource-manager/readme.python.md'
+ # get the package name by readme link
+ pk_name, out_folder = _find_package_name_and_output(rest_repo, readme_link)
+ readme_link = readme_link.replace('python.', '')
+ return pk_name, readme_link, out_folder
+
+
+# Get readme link and output folder in user issue
+def get_readme_and_output_folder(sdk_repo, rest_repo, issue_number):
+ # Get Issue Number
+ issue_info = sdk_repo.get_issue(number=issue_number)
+ issue_body = issue_info.body
+ issue_body_list = issue_body.split("\n")
+ for row in issue_body_list:
+ if 'resource-manager' in row:
+ readme_link = '{}/readme.md'.format(row.strip("\r"))
+ # Get output folder from readme.python.md
+ readme_python_link = readme_link.split('/resource-manager')[0] + '/resource-manager/readme.python.md'
+ _, output_folder = _find_package_name_and_output(rest_repo, readme_python_link)
+ return readme_link, output_folder
+ raise Exception('Not find readme link,please check')
+
+
+# Find package name and output folder from readme link
+def _find_package_name_and_output(rest_repo, readme_link):
+ readme_link_part = '/specification' + readme_link.split('/specification')[-1]
+ readme_contents = str(rest_repo.get_contents(readme_link_part).decoded_content)
+ pk_name = re.findall(r'package-name: (.*?)\\n', readme_contents)[0]
+ out_folder = re.findall(r'\$\(python-sdks-folder\)/(.*?)/azure-', readme_contents)[0]
+ return pk_name, out_folder
+
+
+# get python pipeline name and definitionId from web
+def get_python_pipelines():
+ python_piplines = {}
+ pipeline_client = PipelinesClient(base_url='https://dev.azure.com/azure-sdk',
+ creds=BasicAuthentication('', os.getenv('PIPELINE_TOKEN')))
+ pipelines = pipeline_client.list_pipelines(project='internal')
+ for pipeline in pipelines:
+ if re.findall('^python - \w*$', pipeline.name):
+ key = pipeline.name.replace('python - ', '')
+ python_piplines[key] = pipeline.id
+ return python_piplines
+
+# get the pipeline url through definitionid
+def get_pipeline_url(python_piplines, output_folder):
+ definitionId = python_piplines.get(output_folder)
+ if definitionId:
+ pipeline_url = 'https://dev.azure.com/azure-sdk/internal/_build?definitionId={}'.format(definitionId)
+ else:
+ print('Cannot find definitionId, Do not display pipeline_url')
+ pipeline_url = ''
+ return pipeline_url
+
+
+# Run sdk-auto-release(main) to generate SDK
+def run_pipeline(issue_link, sdk_issue_object, pipeline_url):
+ paramaters = {
+ "stages_to_skip": [],
+ "resources": {
+ "repositories": {
+ "self": {
+ "refName": "refs/heads/main"
+ }
+ }
+ },
+ "variables": {
+ "BASE_BRANCH": {
+ "value": f"{sdk_issue_object.head.label}",
+ "isSecret": False
+ },
+ "ISSUE_LINK": {
+ "value": f"{issue_link}",
+ "isSecret": False
+ },
+ "PIPELINE_LINK": {
+ "value": f"{pipeline_url}",
+ "isSecret": False
+ }
+ }
+ }
+ # Fill in with your personal access token and org URL
+ personal_access_token = os.getenv('PIPELINE_TOKEN')
+ organization_url = 'https://dev.azure.com/azure-sdk'
+
+ # Create a connection to the org
+ credentials = BasicAuthentication('', personal_access_token)
+ run_parameters = models.RunPipelineParameters(**paramaters)
+ client = PipelinesClient(base_url=organization_url, creds=credentials)
+ result = client.run_pipeline(project='internal',pipeline_id=2500,run_parameters=run_parameters)
+ if result.state == 'inProgress':
+ return True
+ else:
+ return False
+
+
+# Auto reply to the user pypi link and close the issue. If the new version is successfully published.
+def auto_close_issue(sdk_repo, item):
+ issue_number, package_name = item.issue_object.number, item.package
+ issue_info = sdk_repo.get_issue(number=issue_number)
+ issue_author = issue_info.user.login
+ last_comment = list(issue_info.get_comments())[-1]
+ last_comment_date = last_comment.created_at
+ last_version, last_time = _get_last_released_date(package_name)
+ if last_time and last_time > last_comment_date:
+ comment = f'Hi @{issue_author}, pypi link: https://pypi.org/project/{package_name}/{last_version}/'
+ issue_info.create_comment(body=comment)
+ issue_info.edit(state='closed')
+ item.labels.append('auto-closed')
+ item.issue_object.set_labels(*item.labels)
+ print(f"issue number:{issue_number} has been closed!")
+
+
+def _get_last_released_date(package_name):
+ pypi_link = f'https://pypi.org/project/{package_name}/#history'
+ res = requests.get(pypi_link)
+ soup = BeautifulSoup(res.text, 'html.parser')
+ # find top div from
+ try:
+ package_info = soup.select('div[class="release-timeline"]')[0].find_all('div')[0]
+ last_version_mix = package_info.find_all('p', class_="release__version")[0].contents[0]
+ except IndexError as e:
+ return '', ''
+ last_version = last_version_mix.replace(' ', '').replace('\n', '')
+ last_version_date_str = package_info.time.attrs['datetime'].split('+')[0]
+ last_version_date = datetime.datetime.strptime(last_version_date_str, '%Y-%m-%dT%H:%M:%S')
+ return last_version, last_version_date
\ No newline at end of file
From 5f130437b8fc64b0449f3807dfbcbaa66e4c6820 Mon Sep 17 00:00:00 2001
From: Zed Lei <59104634+RAY-316@users.noreply.github.com>
Date: Mon, 13 Sep 2021 15:18:27 +0800
Subject: [PATCH 118/157] Update main.py
---
scripts/release_issue_status/main.py | 7 +++++++
1 file changed, 7 insertions(+)
diff --git a/scripts/release_issue_status/main.py b/scripts/release_issue_status/main.py
index a9de3280253c..5afe11356091 100644
--- a/scripts/release_issue_status/main.py
+++ b/scripts/release_issue_status/main.py
@@ -223,6 +223,13 @@ def main():
item.bot_advice = 'better to release asap.'
elif (item.comment_num == 0 or 'Configured' in item.labels) and 'Python' in item.labels:
item.bot_advice = 'new issue and better to confirm quickly.'
+ if 'assigned' not in item.labels:
+ assign_count = int(str(time.time())[-1]) % 2
+ if assign_count == 1:
+ item.issue_object.remove_from_assignees(*['RAY-316'])
+ item.issue_object.add_to_assignees(*['BigCat20196'])
+ item.labels.append('assigned')
+ item.issue_object.set_labels.set_labels(*item.labels)
try:
auto_reply(item, request_repo, rest_repo, sdk_repo, duplicated_issue, python_piplines)
except Exception as e:
From d083ef5a8697f9aa5e3376b922cfead31a11e55f Mon Sep 17 00:00:00 2001
From: Zed Lei <59104634+RAY-316@users.noreply.github.com>
Date: Mon, 13 Sep 2021 15:24:02 +0800
Subject: [PATCH 119/157] Update main.py
---
scripts/release_issue_status/main.py | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/scripts/release_issue_status/main.py b/scripts/release_issue_status/main.py
index 5afe11356091..1abf55cd05f2 100644
--- a/scripts/release_issue_status/main.py
+++ b/scripts/release_issue_status/main.py
@@ -229,7 +229,7 @@ def main():
item.issue_object.remove_from_assignees(*['RAY-316'])
item.issue_object.add_to_assignees(*['BigCat20196'])
item.labels.append('assigned')
- item.issue_object.set_labels.set_labels(*item.labels)
+ item.issue_object.set_labels(*item.labels)
try:
auto_reply(item, request_repo, rest_repo, sdk_repo, duplicated_issue, python_piplines)
except Exception as e:
From 85da7c7b23651f3c8ba6e585988ddbdb40649a39 Mon Sep 17 00:00:00 2001
From: BigCat20196 <1095260342@qq.com>
Date: Mon, 13 Sep 2021 15:42:24 +0800
Subject: [PATCH 120/157] Delete old py
---
scripts/release_issue_status/auto_close.py | 36 ------
.../release_issue_status/auto_pipeline_run.py | 47 --------
.../get_python_pipeline.py | 27 -----
.../release_issue_status/update_issue_body.py | 105 ------------------
4 files changed, 215 deletions(-)
delete mode 100644 scripts/release_issue_status/auto_close.py
delete mode 100644 scripts/release_issue_status/auto_pipeline_run.py
delete mode 100644 scripts/release_issue_status/get_python_pipeline.py
delete mode 100644 scripts/release_issue_status/update_issue_body.py
diff --git a/scripts/release_issue_status/auto_close.py b/scripts/release_issue_status/auto_close.py
deleted file mode 100644
index ca439398aa59..000000000000
--- a/scripts/release_issue_status/auto_close.py
+++ /dev/null
@@ -1,36 +0,0 @@
-import datetime
-
-import requests
-from bs4 import BeautifulSoup
-
-
-def auto_close_issue(sdk_repo, item):
- issue_number, package_name = item.issue_object.number, item.package
- issue_info = sdk_repo.get_issue(number=issue_number)
- issue_author = issue_info.user.login
- last_comment = list(issue_info.get_comments())[-1]
- last_comment_date = last_comment.created_at
- last_version, last_time = get_last_released_date(package_name)
- if last_time and last_time > last_comment_date:
- comment = f'Hi @{issue_author}, pypi link: https://pypi.org/project/{package_name}/{last_version}/'
- issue_info.create_comment(body=comment)
- issue_info.edit(state='closed')
- item.labels.append('auto-closed')
- item.issue_object.set_labels(*item.labels)
- print(f"issue number:{issue_number} has been closed!")
-
-
-def get_last_released_date(package_name):
- pypi_link = f'https://pypi.org/project/{package_name}/#history'
- res = requests.get(pypi_link)
- soup = BeautifulSoup(res.text, 'html.parser')
- # find top div from
- try:
- package_info = soup.select('div[class="release-timeline"]')[0].find_all('div')[0]
- last_version_mix = package_info.find_all('p', class_="release__version")[0].contents[0]
- except IndexError as e:
- return '', ''
- last_version = last_version_mix.replace(' ', '').replace('\n', '')
- last_version_date_str = package_info.time.attrs['datetime'].split('+')[0]
- last_version_date = datetime.datetime.strptime(last_version_date_str, '%Y-%m-%dT%H:%M:%S')
- return last_version, last_version_date
diff --git a/scripts/release_issue_status/auto_pipeline_run.py b/scripts/release_issue_status/auto_pipeline_run.py
deleted file mode 100644
index ef35ee2612fe..000000000000
--- a/scripts/release_issue_status/auto_pipeline_run.py
+++ /dev/null
@@ -1,47 +0,0 @@
-import json
-import os
-import re
-from msrest.authentication import BasicAuthentication
-from azure.devops.v6_0.pipelines.pipelines_client import PipelinesClient
-from azure.devops.v6_0.pipelines import models
-import requests
-
-
-def run_pipeline(issue_link, sdk_issue_object, pipeline_url):
- paramaters = {
- "stages_to_skip": [],
- "resources": {
- "repositories": {
- "self": {
- "refName": "refs/heads/main"
- }
- }
- },
- "variables": {
- "BASE_BRANCH": {
- "value": f"{sdk_issue_object.head.label}",
- "isSecret": False
- },
- "ISSUE_LINK": {
- "value": f"{issue_link}",
- "isSecret": False
- },
- "PIPELINE_LINK": {
- "value": f"{pipeline_url}",
- "isSecret": False
- }
- }
- }
- # Fill in with your personal access token and org URL
- personal_access_token = os.getenv('PIPELINE_TOKEN')
- organization_url = 'https://dev.azure.com/azure-sdk'
-
- # Create a connection to the org
- credentials = BasicAuthentication('', personal_access_token)
- run_parameters = models.RunPipelineParameters(**paramaters)
- client = PipelinesClient(base_url=organization_url, creds=credentials)
- result = client.run_pipeline(project='internal',pipeline_id=2500,run_parameters=run_parameters)
- if result.state == 'inProgress':
- return True
- else:
- return False
diff --git a/scripts/release_issue_status/get_python_pipeline.py b/scripts/release_issue_status/get_python_pipeline.py
deleted file mode 100644
index 5b0939a704d2..000000000000
--- a/scripts/release_issue_status/get_python_pipeline.py
+++ /dev/null
@@ -1,27 +0,0 @@
-import os
-import re
-
-from msrest.authentication import BasicAuthentication
-from azure.devops.v6_0.pipelines.pipelines_client import PipelinesClient
-
-
-def get_python_pipelines():
- python_piplines = {}
- pipeline_client = PipelinesClient(base_url='https://dev.azure.com/azure-sdk',
- creds=BasicAuthentication('', os.getenv('PIPELINE_TOKEN')))
- pipelines = pipeline_client.list_pipelines(project='internal')
- for pipeline in pipelines:
- if re.findall('^python - \w*$', pipeline.name):
- key = pipeline.name.replace('python - ', '')
- python_piplines[key] = pipeline.id
- return python_piplines
-
-
-def get_pipeline_url(python_piplines, output_folder):
- definitionId = python_piplines.get(output_folder)
- if definitionId:
- pipeline_url = 'https://dev.azure.com/azure-sdk/internal/_build?definitionId={}'.format(definitionId)
- else:
- print('Cannot find definitionId, Do not display pipeline_url')
- pipeline_url = ''
- return pipeline_url
diff --git a/scripts/release_issue_status/update_issue_body.py b/scripts/release_issue_status/update_issue_body.py
deleted file mode 100644
index b96a25daec92..000000000000
--- a/scripts/release_issue_status/update_issue_body.py
+++ /dev/null
@@ -1,105 +0,0 @@
-import re
-
-
-def update_issue_body(sdk_repo, rest_repo, issue_number):
- # Get Issue Number
- issue_info = sdk_repo.get_issue(number=issue_number)
- issue_body = issue_info.body
- issue_body_list = [i for i in issue_body.split("\n") if i]
- # Get the link and readme tag in issue body
- link, readme_tag = '', ''
- for row in issue_body_list:
- if 'link' in row.lower():
- link = row.split(":", 1)[-1].strip()
- if 'readme tag' in row.lower():
- readme_tag = row.split(":", 1)[-1].strip()
- if link and readme_tag:
- break
-
- if link.count('https') > 1:
- link = link.split(']')[0]
- link = link.replace('[', "").replace(']', "").replace('(', "").replace(')', "")
-
- package_name, readme_link, output_folder = get_pkname_and_readme_link(rest_repo, link)
-
- # Check readme tag format
- if 'package' not in readme_tag:
- readme_tag = 'package-{}'.format(readme_tag)
- issue_body_list.insert(0, f'Readme Tag: {readme_tag}')
-
- issue_body_list.insert(0, f'\n{readme_link.replace("/readme.md", "")}')
- issue_body_list.insert(1, package_name)
- issue_body_up = ''
- for raw in issue_body_list:
- if raw == '---\r' or raw == '---':
- issue_body_up += '\n'
- issue_body_up += raw + '\n'
-
- issue_info.edit(body=issue_body_up)
- return package_name, readme_link, output_folder
-
-
-def get_pkname_and_readme_link(rest_repo, link):
- # change commit link to pull json link(i.e. https://github.com/Azure/azure-rest-api-specs/commit/77f5d3b5d2fbae17621ea124485788f496786758#diff-708c2fb843b022cac4af8c6f996a527440c1e0d328abb81f54670747bf14ab1a)
- pk_name = ''
- if 'commit' in link:
- commit_sha = link.split('commit/')[-1]
- commit = rest_repo.get_commit(commit_sha)
- link = commit.files[0].blob_url
- link = re.sub('blob/(.*?)/specification', 'blob/main/specification', link)
-
- # if link is a pr, it can get both pakeage name and readme link.
- if 'pull' in link:
- pr_number = int(link.replace("https://github.com/Azure/azure-rest-api-specs/pull/", "").strip('/'))
-
- # Get Readme link
- pr_info = rest_repo.get_pull(number=pr_number)
- pk_url_name = set()
- for pr_changed_file in pr_info.get_files():
- contents_url = pr_changed_file.contents_url
- if '/resource-manager' in contents_url:
- try:
- pk_url_name.add(re.findall(r'/specification/(.*?)/resource-manager/', contents_url)[0])
- except Exception as e:
- continue
- if len(pk_url_name) > 1:
- print("\nexists multiple package names: {}, {} \n".format(pk_url_name, pk_url_name1))
- raise Exception('Not find readme link, because it exists multiple package names')
-
- readme_link = 'https://github.com/Azure/azure-rest-api-specs/blob/main/specification/{}/' \
- 'resource-manager/readme.python.md'.format(list(pk_url_name)[0])
-
-
- # if link is a rest url(i.e. https://github.com/Azure/azure-rest-api-specs/blob/main/specification/xxx/resource-manager/readme.python.md)
- elif '/resource-manager' not in link:
- # (i.e. https://github.com/Azure/azure-rest-api-specs/tree/main/specification/xxxx)
- readme_link = link + '/resource-manager/readme.python.md'
- else:
- readme_link = link.split('/resource-manager')[0] + '/resource-manager/readme.python.md'
- # get the package name by readme link
- readme_link_part = '/specification' + readme_link.split('/specification')[-1]
- readme_contents = str(rest_repo.get_contents(readme_link_part).decoded_content)
- pk_name = re.findall(r'package-name: (.*?)\\n', readme_contents)[0]
- out_folder = re.findall(r'\$\(python-sdks-folder\)/(.*?)/azure-', readme_contents)[0]
- readme_link = readme_link.replace('python.', '')
-
- return pk_name, readme_link, out_folder
-
-
-def find_readme_and_output_folder(sdk_repo, rest_repo, issue_number):
- # Get Issue Number
- issue_info = sdk_repo.get_issue(number=issue_number)
- issue_body = issue_info.body
- issue_body_list = issue_body.split("\n")
- for row in issue_body_list:
- if 'resource-manager' in row:
- readme_link = '{}/readme.md'.format(row.strip("\r"))
- # Get output folder from readme.python.md
- readme_python_link = readme_link.split('/resource-manager')[0] + '/resource-manager/readme.python.md'
- readme_python_link_part = '/specification' + readme_python_link.split('/specification')[-1]
- readme_contents = str(rest_repo.get_contents(readme_python_link_part).decoded_content)
- output_folder = re.findall(r'\$\(python-sdks-folder\)/(.*?)/azure-', readme_contents)[0]
-
- return readme_link, output_folder
- raise Exception('Not find readme link,please check')
-
From a7270dcb9879e53bf2b05c04698fc9297a3c8c1d Mon Sep 17 00:00:00 2001
From: Zed Lei <59104634+RAY-316@users.noreply.github.com>
Date: Wed, 15 Sep 2021 09:52:32 +0800
Subject: [PATCH 121/157] Update reply_generator.py
---
scripts/release_issue_status/reply_generator.py | 2 ++
1 file changed, 2 insertions(+)
diff --git a/scripts/release_issue_status/reply_generator.py b/scripts/release_issue_status/reply_generator.py
index 57968a498399..4ab4c57da950 100644
--- a/scripts/release_issue_status/reply_generator.py
+++ b/scripts/release_issue_status/reply_generator.py
@@ -13,6 +13,8 @@ def weather_change_readme(rest_repo, link_dict, labels):
whether_multi_api = 'multi-api' in readme_python_contents
whether_same_tag = link_dict['readme_tag'] in package_tag
whether_change_readme = not whether_same_tag or whether_multi_api and not 'MultiAPI' in labels
+ if 'Configured' in labels:
+ whether_change_readme = False
return whether_change_readme
From 2ff674d6023dff30de9a58394b33a8067a8691ba Mon Sep 17 00:00:00 2001
From: Jiefeng Chen <51037443+BigCat20196@users.noreply.github.com>
Date: Wed, 15 Sep 2021 09:58:01 +0800
Subject: [PATCH 122/157] Update main.py
---
scripts/release_issue_status/main.py | 5 ++---
1 file changed, 2 insertions(+), 3 deletions(-)
diff --git a/scripts/release_issue_status/main.py b/scripts/release_issue_status/main.py
index 1abf55cd05f2..5932314c0fa9 100644
--- a/scripts/release_issue_status/main.py
+++ b/scripts/release_issue_status/main.py
@@ -219,6 +219,8 @@ def main():
# rule6: if delay from created date is over 30 days and owner never reply, close it.
# rule7: if delay from created date is over 15 days and owner never reply, remind owner to handle it.
for item in issue_status:
+ if item.language == 'Python':
+ issue_status_python.append(item)
if item.status == 'release':
item.bot_advice = 'better to release asap.'
elif (item.comment_num == 0 or 'Configured' in item.labels) and 'Python' in item.labels:
@@ -259,9 +261,6 @@ def main():
# judge whether there is duplicated issue for same package
if item.package != _NULL and duplicated_issue.get((item.language, item.package)) > 1:
item.bot_advice = f'Warning:There is duplicated issue for {item.package}. ' + item.bot_advice
-
- if item.language == 'Python':
- issue_status_python.append(item)
# output result
output_python_md(issue_status_python)
From cde8333a37634a8ffc230a83236a2d7c1867b0c9 Mon Sep 17 00:00:00 2001
From: Jiefeng Chen <51037443+BigCat20196@users.noreply.github.com>
Date: Wed, 15 Sep 2021 10:00:11 +0800
Subject: [PATCH 123/157] Update main.py
---
scripts/release_issue_status/main.py | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/scripts/release_issue_status/main.py b/scripts/release_issue_status/main.py
index 5932314c0fa9..fc91f896522e 100644
--- a/scripts/release_issue_status/main.py
+++ b/scripts/release_issue_status/main.py
@@ -149,7 +149,7 @@ def auto_reply(item, request_repo, rest_repo, sdk_repo, duplicated_issue, python
try:
readme_link, output_folder = get_pkname_and_readme_link(request_repo, rest_repo, item.issue_object.number)
except Exception as e:
- print('Issue: {} updates body failed'.format(item.issue_object.number))
+ print('Issue: {} get pkname and readme link failed'.format(item.issue_object.number))
item.bot_advice = 'failed to find Readme link, Please check !!'
item.labels.append('attention')
item.issue_object.set_labels(*item.labels)
From 035d2eeea58c5e17b27167f3633ea6141bc9f5f6 Mon Sep 17 00:00:00 2001
From: Jiefeng Chen <51037443+BigCat20196@users.noreply.github.com>
Date: Wed, 15 Sep 2021 10:12:19 +0800
Subject: [PATCH 124/157] Update main.py
---
scripts/release_issue_status/main.py | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/scripts/release_issue_status/main.py b/scripts/release_issue_status/main.py
index fc91f896522e..a6620e2ac7d4 100644
--- a/scripts/release_issue_status/main.py
+++ b/scripts/release_issue_status/main.py
@@ -149,8 +149,8 @@ def auto_reply(item, request_repo, rest_repo, sdk_repo, duplicated_issue, python
try:
readme_link, output_folder = get_pkname_and_readme_link(request_repo, rest_repo, item.issue_object.number)
except Exception as e:
- print('Issue: {} get pkname and readme link failed'.format(item.issue_object.number))
- item.bot_advice = 'failed to find Readme link, Please check !!'
+ print('Issue: {} get pkname and output folder failed'.format(item.issue_object.number))
+ item.bot_advice = 'failed to find Readme link and output folder. Please check !!'
item.labels.append('attention')
item.issue_object.set_labels(*item.labels)
raise
From 751b323d3ad7c3cc89757fed23a54a2258503c0d Mon Sep 17 00:00:00 2001
From: Jiefeng Chen <51037443+BigCat20196@users.noreply.github.com>
Date: Wed, 15 Sep 2021 10:17:49 +0800
Subject: [PATCH 125/157] Update main.py
---
scripts/release_issue_status/main.py | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/scripts/release_issue_status/main.py b/scripts/release_issue_status/main.py
index a6620e2ac7d4..8bb2cb584c79 100644
--- a/scripts/release_issue_status/main.py
+++ b/scripts/release_issue_status/main.py
@@ -147,7 +147,7 @@ def auto_reply(item, request_repo, rest_repo, sdk_repo, duplicated_issue, python
raise
else:
try:
- readme_link, output_folder = get_pkname_and_readme_link(request_repo, rest_repo, item.issue_object.number)
+ readme_link, output_folder = get_readme_and_output_folder(request_repo, rest_repo, item.issue_object.number)
except Exception as e:
print('Issue: {} get pkname and output folder failed'.format(item.issue_object.number))
item.bot_advice = 'failed to find Readme link and output folder. Please check !!'
From 243e9b73613d7cf6cce99dbaf761a438bf795d4c Mon Sep 17 00:00:00 2001
From: Jiefeng Chen <51037443+BigCat20196@users.noreply.github.com>
Date: Wed, 15 Sep 2021 10:24:06 +0800
Subject: [PATCH 126/157] Update main.py
---
scripts/release_issue_status/main.py | 1 +
1 file changed, 1 insertion(+)
diff --git a/scripts/release_issue_status/main.py b/scripts/release_issue_status/main.py
index 8bb2cb584c79..7e7e936e7fc2 100644
--- a/scripts/release_issue_status/main.py
+++ b/scripts/release_issue_status/main.py
@@ -153,6 +153,7 @@ def auto_reply(item, request_repo, rest_repo, sdk_repo, duplicated_issue, python
item.bot_advice = 'failed to find Readme link and output folder. Please check !!'
item.labels.append('attention')
item.issue_object.set_labels(*item.labels)
+ print(e)
raise
try:
print("*********************")
From c60da40674f64000ee2400aa118478e06dde3387 Mon Sep 17 00:00:00 2001
From: Jiefeng Chen <51037443+BigCat20196@users.noreply.github.com>
Date: Wed, 15 Sep 2021 10:26:38 +0800
Subject: [PATCH 127/157] Update utils.py
---
scripts/release_issue_status/utils.py | 5 ++++-
1 file changed, 4 insertions(+), 1 deletion(-)
diff --git a/scripts/release_issue_status/utils.py b/scripts/release_issue_status/utils.py
index cdf10b086181..6c532ecf1265 100644
--- a/scripts/release_issue_status/utils.py
+++ b/scripts/release_issue_status/utils.py
@@ -98,8 +98,11 @@ def get_readme_and_output_folder(sdk_repo, rest_repo, issue_number):
if 'resource-manager' in row:
readme_link = '{}/readme.md'.format(row.strip("\r"))
# Get output folder from readme.python.md
+ print(f'debug: readme_link: {readme_link}')
readme_python_link = readme_link.split('/resource-manager')[0] + '/resource-manager/readme.python.md'
+ print(f'debug: readme_python_link: {readme_python_link}')
_, output_folder = _find_package_name_and_output(rest_repo, readme_python_link)
+ print(f'debug: output_folder: {output_folder}')
return readme_link, output_folder
raise Exception('Not find readme link,please check')
@@ -207,4 +210,4 @@ def _get_last_released_date(package_name):
last_version = last_version_mix.replace(' ', '').replace('\n', '')
last_version_date_str = package_info.time.attrs['datetime'].split('+')[0]
last_version_date = datetime.datetime.strptime(last_version_date_str, '%Y-%m-%dT%H:%M:%S')
- return last_version, last_version_date
\ No newline at end of file
+ return last_version, last_version_date
From ed530478fc630e9bb4fe13b938b3823b7cdfbb3a Mon Sep 17 00:00:00 2001
From: Jiefeng Chen <51037443+BigCat20196@users.noreply.github.com>
Date: Wed, 15 Sep 2021 10:32:38 +0800
Subject: [PATCH 128/157] Update utils.py
---
scripts/release_issue_status/utils.py | 7 ++-----
1 file changed, 2 insertions(+), 5 deletions(-)
diff --git a/scripts/release_issue_status/utils.py b/scripts/release_issue_status/utils.py
index 6c532ecf1265..1672479976fa 100644
--- a/scripts/release_issue_status/utils.py
+++ b/scripts/release_issue_status/utils.py
@@ -29,7 +29,7 @@ def update_issue_body(sdk_repo, rest_repo, issue_number):
link = link.split(']')[0]
link = link.replace('[', "").replace(']', "").replace('(', "").replace(')', "")
- package_name, readme_link, output_folder = get_pkname_and_readme_link(rest_repo, link)
+ package_name, readme_link, output_folder = _get_pkname_and_readme_link(rest_repo, link)
# Check readme tag format
if 'package' not in readme_tag:
readme_tag = 'package-{}'.format(readme_tag)
@@ -47,7 +47,7 @@ def update_issue_body(sdk_repo, rest_repo, issue_number):
return package_name, readme_link, output_folder
-def get_pkname_and_readme_link(rest_repo, link):
+def _get_pkname_and_readme_link(rest_repo, link):
# change commit link to pull json link(i.e. https://github.com/Azure/azure-rest-api-specs/commit/77f5d3b5d2fbae17621ea124485788f496786758#diff-708c2fb843b022cac4af8c6f996a527440c1e0d328abb81f54670747bf14ab1a)
pk_name = ''
if 'commit' in link:
@@ -98,11 +98,8 @@ def get_readme_and_output_folder(sdk_repo, rest_repo, issue_number):
if 'resource-manager' in row:
readme_link = '{}/readme.md'.format(row.strip("\r"))
# Get output folder from readme.python.md
- print(f'debug: readme_link: {readme_link}')
readme_python_link = readme_link.split('/resource-manager')[0] + '/resource-manager/readme.python.md'
- print(f'debug: readme_python_link: {readme_python_link}')
_, output_folder = _find_package_name_and_output(rest_repo, readme_python_link)
- print(f'debug: output_folder: {output_folder}')
return readme_link, output_folder
raise Exception('Not find readme link,please check')
From f6ec1e60aa7c335487bde7042baeba1743619cd7 Mon Sep 17 00:00:00 2001
From: Jiefeng Chen <51037443+BigCat20196@users.noreply.github.com>
Date: Wed, 15 Sep 2021 10:32:56 +0800
Subject: [PATCH 129/157] Update main.py
---
scripts/release_issue_status/main.py | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/scripts/release_issue_status/main.py b/scripts/release_issue_status/main.py
index 7e7e936e7fc2..a863fa7fc549 100644
--- a/scripts/release_issue_status/main.py
+++ b/scripts/release_issue_status/main.py
@@ -9,7 +9,7 @@
from azure.storage.blob import BlobClient
import reply_generator as rg
-from utils import update_issue_body, get_pkname_and_readme_link, \
+from utils import update_issue_body, get_readme_and_output_folder, \
get_python_pipelines, get_pipeline_url, auto_close_issue
From 27b898b9b5920670a2171c85696af89e0d3456fb Mon Sep 17 00:00:00 2001
From: Jiefeng Chen <51037443+BigCat20196@users.noreply.github.com>
Date: Wed, 15 Sep 2021 11:22:33 +0800
Subject: [PATCH 130/157] Update main.py
---
scripts/release_issue_status/main.py | 5 +++--
1 file changed, 3 insertions(+), 2 deletions(-)
diff --git a/scripts/release_issue_status/main.py b/scripts/release_issue_status/main.py
index a863fa7fc549..6c60e87d4be9 100644
--- a/scripts/release_issue_status/main.py
+++ b/scripts/release_issue_status/main.py
@@ -127,8 +127,6 @@ def _latest_comment_time(comments, delay_from_create_date):
def auto_reply(item, request_repo, rest_repo, sdk_repo, duplicated_issue, python_piplines):
print("==========new issue number: {}".format(item.issue_object.number))
- if 'Configured' in item.labels:
- item.labels.remove('Configured')
if 'auto-link' not in item.labels:
item.labels.append('auto-link')
@@ -161,6 +159,9 @@ def auto_reply(item, request_repo, rest_repo, sdk_repo, duplicated_issue, python
pipeline_url = get_pipeline_url(python_piplines, output_folder)
rg.begin_reply_generate(item=item, rest_repo=rest_repo, readme_link=readme_link,
sdk_repo=sdk_repo, pipeline_url=pipeline_url)
+ if 'Configured' in item.labels:
+ item.labels.remove('Configured')
+ item.issue_object.set_labels(*item.labels)
except Exception as e:
item.bot_advice = 'auto reply failed, Please intervene manually !!'
print('Error from auto reply ========================')
From d44a0e4271d1e660bd67332d6526ec4e7df17b27 Mon Sep 17 00:00:00 2001
From: Zed Lei <59104634+RAY-316@users.noreply.github.com>
Date: Thu, 16 Sep 2021 11:32:20 +0800
Subject: [PATCH 131/157] Update reply_generator.py
---
scripts/release_issue_status/reply_generator.py | 11 +++++++----
1 file changed, 7 insertions(+), 4 deletions(-)
diff --git a/scripts/release_issue_status/reply_generator.py b/scripts/release_issue_status/reply_generator.py
index 4ab4c57da950..ed4051b58796 100644
--- a/scripts/release_issue_status/reply_generator.py
+++ b/scripts/release_issue_status/reply_generator.py
@@ -1,7 +1,10 @@
from utils import run_pipeline
import re
+import logging
issue_object_rg = None
+logging.basicConfig(level=logging.DEBUG,
+ format='[auto-reply log]%(asctime)s - %(filename)s[line:%(lineno)d] - %(levelname)s: %(message)s')
def weather_change_readme(rest_repo, link_dict, labels):
@@ -69,7 +72,7 @@ def swagger_generator_parse(context, latest_pr_number):
track1_info_model = '
python-track1
{} '.format(
python_track1_info)
except Exception as e:
- print('track1 generate error')
+ logging.error('track1 generate error')
pattern_python = re.compile('
azure-sdk-for-python-track2.+?', re.DOTALL)
python = re.search(pattern_python, context).group()
# the way that reply not contains [Release SDK Changes]
@@ -115,10 +118,10 @@ def begin_reply_generate(item, rest_repo, readme_link, sdk_repo, pipeline_url):
pipeline_url=pipeline_url
)
if res_run:
- print(f'{issue_object_rg.number} run pipeline successfully')
+ logging.info(f'{issue_object_rg.number} run pipeline successfully')
else:
- print(f'{issue_object_rg.number} run pipeline fail')
+ logging.info(f'{issue_object_rg.number} run pipeline fail')
reply_owner(reply_content)
add_label('auto-ask-check', labels)
else:
- print('issue {} need config readme***********'.format(issue_object_rg.number))
+ logging.info('issue {} need config readme'.format(issue_object_rg.number))
From 7f6df45e13cad24548f19f62a3d01a1eed50be0a Mon Sep 17 00:00:00 2001
From: Zed Lei <59104634+RAY-316@users.noreply.github.com>
Date: Thu, 16 Sep 2021 14:01:19 +0800
Subject: [PATCH 132/157] Update utils.py
---
scripts/release_issue_status/utils.py | 10 +++++++---
1 file changed, 7 insertions(+), 3 deletions(-)
diff --git a/scripts/release_issue_status/utils.py b/scripts/release_issue_status/utils.py
index 1672479976fa..ebd8d749178c 100644
--- a/scripts/release_issue_status/utils.py
+++ b/scripts/release_issue_status/utils.py
@@ -2,6 +2,7 @@
import json
import os
import re
+import logging
from azure.devops.v6_0.pipelines.pipelines_client import PipelinesClient
from azure.devops.v6_0.pipelines import models
@@ -9,6 +10,9 @@
from msrest.authentication import BasicAuthentication
import requests
+logging.basicConfig(level=logging.DEBUG,
+ format='[auto-reply log]%(asctime)s - %(filename)s[line:%(lineno)d] - %(levelname)s: %(message)s')
+
# Add readme link and package name to the user's issue
def update_issue_body(sdk_repo, rest_repo, issue_number):
# Get Issue Number
@@ -71,7 +75,7 @@ def _get_pkname_and_readme_link(rest_repo, link):
except Exception as e:
continue
if len(pk_url_name) > 1:
- print("\nexists multiple package names: {} \n".format(pk_url_name))
+ logging.info("\nexists multiple package names: {} \n".format(pk_url_name))
raise Exception('Not find readme link, because it exists multiple package names')
readme_link = 'https://github.com/Azure/azure-rest-api-specs/blob/main/specification/{}/' \
@@ -131,7 +135,7 @@ def get_pipeline_url(python_piplines, output_folder):
if definitionId:
pipeline_url = 'https://dev.azure.com/azure-sdk/internal/_build?definitionId={}'.format(definitionId)
else:
- print('Cannot find definitionId, Do not display pipeline_url')
+ logging.info('Cannot find definitionId, Do not display pipeline_url')
pipeline_url = ''
return pipeline_url
@@ -191,7 +195,7 @@ def auto_close_issue(sdk_repo, item):
issue_info.edit(state='closed')
item.labels.append('auto-closed')
item.issue_object.set_labels(*item.labels)
- print(f"issue number:{issue_number} has been closed!")
+ logging.info(f"issue number:{issue_number} has been closed!")
def _get_last_released_date(package_name):
From 307da1588ee95c2723fbbbbfef265555f05d4acf Mon Sep 17 00:00:00 2001
From: BigCat20196 <1095260342@qq.com>
Date: Fri, 17 Sep 2021 10:43:02 +0800
Subject: [PATCH 133/157] Add get_changelog function
---
.../release_issue_status/reply_generator.py | 32 ++++++++++++++++++-
1 file changed, 31 insertions(+), 1 deletion(-)
diff --git a/scripts/release_issue_status/reply_generator.py b/scripts/release_issue_status/reply_generator.py
index ed4051b58796..ef6d4275f63a 100644
--- a/scripts/release_issue_status/reply_generator.py
+++ b/scripts/release_issue_status/reply_generator.py
@@ -2,6 +2,9 @@
import re
import logging
+import requests
+from bs4 import BeautifulSoup
+
issue_object_rg = None
logging.basicConfig(level=logging.DEBUG,
format='[auto-reply log]%(asctime)s - %(filename)s[line:%(lineno)d] - %(levelname)s: %(message)s')
@@ -103,6 +106,33 @@ def add_label(label_name, labels):
issue_object_rg.set_labels(*labels)
+# Get SDK changelog by the latest PR's Checks
+def get_chanelog_and_sdk_number(rest_repo, latest_pr_number):
+
+ # latest_pr = rest_repo.get_pull(latest_pr_number)
+ url = f'https://github.com/Azure/azure-rest-api-specs/pull/{latest_pr_number}'
+ res = requests.get(url=url)
+ soup = BeautifulSoup(res.text, 'html.parser')
+ # checks = soup.select('strong[class="text-emphasized"]')
+ checks = soup.select('div[class="d-flex flex-items-baseline Box-row"]')
+ for check in checks:
+ if 'SDK azure-sdk-for-python-track2' in check.text:
+ for content in check.contents:
+ if content.name == 'a' and '/Azure/azure-rest-api-specs/runs' in content.get('href'):
+ check_run_id = int(content.get('href').replace('/Azure/azure-rest-api-specs/runs/', ''))
+ details = rest_repo.get_check_run(check_run_id).output.text
+ # print(details)
+ sdk_link_number = re.findall(r'/azure-sdk-for-python/pull/(\d*)">Preview SDK Changes', details)[0]
+ changelog = '
python-track2
track2_azure-mgmt-{} '.format(details.split('
track2_azure-mgmt-')[-1])
+ info_model = 'hi @{} Please check the package whether works well and the changelog info ' \
+ 'is as below:\n{}\n' \
+ '\n* (The version of the package is only a temporary version for testing)\n' \
+ '\nhttps://github.com/Azure/azure-rest-api-specs/pull/{}\n' \
+ .format(issue_object_rg.user.login, changelog, str(latest_pr_number))
+ return info_model, sdk_link_number
+ raise Exception('cannot get info_model or sdk_link_number')
+
+
def begin_reply_generate(item, rest_repo, readme_link, sdk_repo, pipeline_url):
global issue_object_rg
issue_object_rg = item.issue_object
@@ -112,7 +142,7 @@ def begin_reply_generate(item, rest_repo, readme_link, sdk_repo, pipeline_url):
if not whether_change_readme:
latest_pr_number = get_latest_pr_from_readme(rest_repo, link_dict)
- reply_content, sdk_link_number = latest_pr_parse(rest_repo, latest_pr_number)
+ reply_content, sdk_link_number = get_chanelog_and_sdk_number(rest_repo, latest_pr_number)
res_run = run_pipeline(issue_link=issue_object_rg.html_url,
sdk_issue_object=sdk_repo.get_pull(int(sdk_link_number)),
pipeline_url=pipeline_url
From f286e896a8f13d91fc5dffe5b753bcf1e7f40daa Mon Sep 17 00:00:00 2001
From: Zed Lei <59104634+RAY-316@users.noreply.github.com>
Date: Fri, 17 Sep 2021 10:59:42 +0800
Subject: [PATCH 134/157] Update utils.py
---
scripts/release_issue_status/utils.py | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/scripts/release_issue_status/utils.py b/scripts/release_issue_status/utils.py
index ebd8d749178c..438c564b3817 100644
--- a/scripts/release_issue_status/utils.py
+++ b/scripts/release_issue_status/utils.py
@@ -10,7 +10,7 @@
from msrest.authentication import BasicAuthentication
import requests
-logging.basicConfig(level=logging.DEBUG,
+logging.basicConfig(level=logging.INFO,
format='[auto-reply log]%(asctime)s - %(filename)s[line:%(lineno)d] - %(levelname)s: %(message)s')
# Add readme link and package name to the user's issue
From f54ca3a6c107dd0fbdd6716737f20ad7dd2aa262 Mon Sep 17 00:00:00 2001
From: Zed Lei <59104634+RAY-316@users.noreply.github.com>
Date: Fri, 17 Sep 2021 10:59:58 +0800
Subject: [PATCH 135/157] Update reply_generator.py
---
scripts/release_issue_status/reply_generator.py | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/scripts/release_issue_status/reply_generator.py b/scripts/release_issue_status/reply_generator.py
index ef6d4275f63a..7e6246e7e921 100644
--- a/scripts/release_issue_status/reply_generator.py
+++ b/scripts/release_issue_status/reply_generator.py
@@ -6,7 +6,7 @@
from bs4 import BeautifulSoup
issue_object_rg = None
-logging.basicConfig(level=logging.DEBUG,
+logging.basicConfig(level=logging.INFO,
format='[auto-reply log]%(asctime)s - %(filename)s[line:%(lineno)d] - %(levelname)s: %(message)s')
From d5b2de6a6a637e201695a1aced6055ea51db24c5 Mon Sep 17 00:00:00 2001
From: Zed Lei <59104634+RAY-316@users.noreply.github.com>
Date: Fri, 17 Sep 2021 11:18:36 +0800
Subject: [PATCH 136/157] Update main.py
---
scripts/release_issue_status/main.py | 25 +++++++++++++------------
1 file changed, 13 insertions(+), 12 deletions(-)
diff --git a/scripts/release_issue_status/main.py b/scripts/release_issue_status/main.py
index 6c60e87d4be9..4f486d840ffb 100644
--- a/scripts/release_issue_status/main.py
+++ b/scripts/release_issue_status/main.py
@@ -4,6 +4,7 @@
from datetime import date, datetime
import subprocess as sp
import traceback
+import logging
from github import Github
from azure.storage.blob import BlobClient
@@ -17,6 +18,8 @@
_FILE_OUT = 'release_issue_status.csv'
_FILE_OUT_PYTHON = 'release_python_status.md'
_PYTHON_SDK_ADMINISTRATORS = {'msyyc', 'RAY-316', 'BigCat20196'}
+logging.basicConfig(level=logging.INFO,
+ format='[auto-reply log]%(asctime)s - %(filename)s[line:%(lineno)d] - %(levelname)s: %(message)s')
def my_print(cmd):
print('==' + cmd + ' ==\n')
@@ -126,14 +129,14 @@ def _latest_comment_time(comments, delay_from_create_date):
def auto_reply(item, request_repo, rest_repo, sdk_repo, duplicated_issue, python_piplines):
- print("==========new issue number: {}".format(item.issue_object.number))
+ logging.info("new issue number: {}".format(item.issue_object.number))
if 'auto-link' not in item.labels:
item.labels.append('auto-link')
item.issue_object.set_labels(*item.labels)
try:
package_name, readme_link, output_folder = update_issue_body(request_repo, rest_repo, item.issue_object.number)
- print("pkname, readme", package_name, readme_link)
+ logging.info("pkname, readme", package_name, readme_link)
item.package = package_name
key = ('Python', item.package)
duplicated_issue[key] = duplicated_issue.get(key, 0) + 1
@@ -141,21 +144,20 @@ def auto_reply(item, request_repo, rest_repo, sdk_repo, duplicated_issue, python
item.bot_advice = 'failed to modify the body of the new issue. Please modify manually'
item.labels.append('attention')
item.issue_object.set_labels(*item.labels)
- print(e)
+ logging.info(e)
raise
else:
try:
readme_link, output_folder = get_readme_and_output_folder(request_repo, rest_repo, item.issue_object.number)
except Exception as e:
- print('Issue: {} get pkname and output folder failed'.format(item.issue_object.number))
+ logging.info('Issue: {} get pkname and output folder failed'.format(item.issue_object.number))
item.bot_advice = 'failed to find Readme link and output folder. Please check !!'
item.labels.append('attention')
item.issue_object.set_labels(*item.labels)
- print(e)
+ logging.info(e)
raise
try:
- print("*********************")
- print(python_piplines)
+ logging.info(python_piplines)
pipeline_url = get_pipeline_url(python_piplines, output_folder)
rg.begin_reply_generate(item=item, rest_repo=rest_repo, readme_link=readme_link,
sdk_repo=sdk_repo, pipeline_url=pipeline_url)
@@ -164,10 +166,9 @@ def auto_reply(item, request_repo, rest_repo, sdk_repo, duplicated_issue, python
item.issue_object.set_labels(*item.labels)
except Exception as e:
item.bot_advice = 'auto reply failed, Please intervene manually !!'
- print('Error from auto reply ========================')
- print('Issue:{}'.format(item.issue_object.number))
- print(traceback.format_exc())
- print('==============================================')
+ logging.info('Error from auto reply')
+ logging.info('Issue:{}'.format(item.issue_object.number))
+ logging.info(traceback.format_exc())
def main():
@@ -247,7 +248,7 @@ def main():
auto_close_issue(request_repo, item)
except Exception as e:
item.bot_advice = 'auto-close failed, please check!'
- print(f"=====issue: {item.issue_object.number}, {e}")
+ logging.info(f"=====issue: {item.issue_object.number}, {e}")
if item.days_from_latest_commit >= 30 and item.language == 'Python' and '30days attention' not in item.labels:
item.labels.append('30days attention')
From 1a3c45018b16a4e85c50f4534ede2fbd07e1497f Mon Sep 17 00:00:00 2001
From: Zed Lei <59104634+RAY-316@users.noreply.github.com>
Date: Fri, 17 Sep 2021 11:19:43 +0800
Subject: [PATCH 137/157] Update reply_generator.py
---
scripts/release_issue_status/reply_generator.py | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/scripts/release_issue_status/reply_generator.py b/scripts/release_issue_status/reply_generator.py
index 7e6246e7e921..f6eeffa3cfa3 100644
--- a/scripts/release_issue_status/reply_generator.py
+++ b/scripts/release_issue_status/reply_generator.py
@@ -10,7 +10,7 @@
format='[auto-reply log]%(asctime)s - %(filename)s[line:%(lineno)d] - %(levelname)s: %(message)s')
-def weather_change_readme(rest_repo, link_dict, labels):
+def whether_change_readme_(rest_repo, link_dict, labels):
# to see whether need change readme
contents = str(rest_repo.get_contents(link_dict['readme_path']).decoded_content)
pattern_tag = re.compile(r'tag: package-[\w+-.]+')
@@ -138,7 +138,7 @@ def begin_reply_generate(item, rest_repo, readme_link, sdk_repo, pipeline_url):
issue_object_rg = item.issue_object
link_dict = get_links(readme_link)
labels = item.labels
- whether_change_readme = weather_change_readme(rest_repo, link_dict, labels)
+ whether_change_readme = whether_change_readme_(rest_repo, link_dict, labels)
if not whether_change_readme:
latest_pr_number = get_latest_pr_from_readme(rest_repo, link_dict)
From f6d67a958c8d8db01551984c4c116ad3190dd626 Mon Sep 17 00:00:00 2001
From: BigCat20196 <1095260342@qq.com>
Date: Fri, 17 Sep 2021 17:41:33 +0800
Subject: [PATCH 138/157] Update function
---
.../release_issue_status/reply_generator.py | 124 ++++++++----------
1 file changed, 55 insertions(+), 69 deletions(-)
diff --git a/scripts/release_issue_status/reply_generator.py b/scripts/release_issue_status/reply_generator.py
index f6eeffa3cfa3..7d5309a38a47 100644
--- a/scripts/release_issue_status/reply_generator.py
+++ b/scripts/release_issue_status/reply_generator.py
@@ -2,9 +2,6 @@
import re
import logging
-import requests
-from bs4 import BeautifulSoup
-
issue_object_rg = None
logging.basicConfig(level=logging.INFO,
format='[auto-reply log]%(asctime)s - %(filename)s[line:%(lineno)d] - %(levelname)s: %(message)s')
@@ -55,45 +52,45 @@ def get_latest_pr_from_readme(rest_repo, link_dict):
return latest_pr_number_int[-1]
-def latest_pr_parse(rest_repo, latest_pr_number):
- latest_pr = rest_repo.get_issue(latest_pr_number)
- latest_pr_comments = latest_pr.get_comments()
- b = [i for i in latest_pr_comments]
- for comment in latest_pr_comments:
- if 'Swagger Generation Artifacts
' in comment.body:
- return swagger_generator_parse(comment.body, latest_pr_number)
-
-
-def swagger_generator_parse(context, latest_pr_number):
- track1_info_model = ''
- try:
- if ' azure-sdk-for-python' in context:
- pattern_python_t1 = re.compile(' azure-sdk-for-python.+?', re.DOTALL)
- python_t1 = re.search(pattern_python_t1, context).group()
- prttern_python_track1 = re.compile('\s+?- \s+?', re.DOTALL)
- python_track1_info = re.search(prttern_python_track1, python_t1).group()
- track1_info_model = '
python-track1
{} '.format(
- python_track1_info)
- except Exception as e:
- logging.error('track1 generate error')
- pattern_python = re.compile(' azure-sdk-for-python-track2.+?', re.DOTALL)
- python = re.search(pattern_python, context).group()
- # the way that reply not contains [Release SDK Changes]
- # pattern_python_track2 = re.compile('\s*?- \s*?', re.DOTALL)
- pattern_python_track2 = re.compile('track2_.*
', re.DOTALL)
- python_track2_info = re.search(pattern_python_track2, python).group()
- track2_info_model = ' python-track2
{} '.format(
- python_track2_info)
- pattern_sdk_changes = re.compile('/azure-sdk-for-python/pull/\d*">Release SDK Changes', re.DOTALL)
- sdk_link = re.search(pattern_sdk_changes, python_track2_info).group()
- sdk_link_number = re.search(re.compile('[0-9]+'), sdk_link).group()
- info_model = 'hi @{} Please check the package whether works well and the changelog info is as below:\n' \
- '{}\n{}\n' \
- '\n* (The version of the package is only a temporary version for testing)\n' \
- '\nhttps://github.com/Azure/azure-rest-api-specs/pull/{}\n' \
- .format(issue_object_rg.user.login, track1_info_model, track2_info_model, str(latest_pr_number))
-
- return info_model, sdk_link_number
+# def latest_pr_parse(rest_repo, latest_pr_number):
+# latest_pr = rest_repo.get_issue(latest_pr_number)
+# latest_pr_comments = latest_pr.get_comments()
+# b = [i for i in latest_pr_comments]
+# for comment in latest_pr_comments:
+# if 'Swagger Generation Artifacts
' in comment.body:
+# return swagger_generator_parse(comment.body, latest_pr_number)
+#
+#
+# def swagger_generator_parse(context, latest_pr_number):
+# track1_info_model = ''
+# try:
+# if ' azure-sdk-for-python' in context:
+# pattern_python_t1 = re.compile(' azure-sdk-for-python.+?', re.DOTALL)
+# python_t1 = re.search(pattern_python_t1, context).group()
+# prttern_python_track1 = re.compile('\s+?- \s+?', re.DOTALL)
+# python_track1_info = re.search(prttern_python_track1, python_t1).group()
+# track1_info_model = '
python-track1
{} '.format(
+# python_track1_info)
+# except Exception as e:
+# logging.error('track1 generate error')
+# pattern_python = re.compile(' azure-sdk-for-python-track2.+?', re.DOTALL)
+# python = re.search(pattern_python, context).group()
+# # the way that reply not contains [Release SDK Changes]
+# # pattern_python_track2 = re.compile('\s*?- \s*?', re.DOTALL)
+# pattern_python_track2 = re.compile('track2_.*
', re.DOTALL)
+# python_track2_info = re.search(pattern_python_track2, python).group()
+# track2_info_model = ' python-track2
{} '.format(
+# python_track2_info)
+# pattern_sdk_changes = re.compile('/azure-sdk-for-python/pull/\d*">Release SDK Changes', re.DOTALL)
+# sdk_link = re.search(pattern_sdk_changes, python_track2_info).group()
+# sdk_link_number = re.search(re.compile('[0-9]+'), sdk_link).group()
+# info_model = 'hi @{} Please check the package whether works well and the changelog info is as below:\n' \
+# '{}\n{}\n' \
+# '\n* (The version of the package is only a temporary version for testing)\n' \
+# '\nhttps://github.com/Azure/azure-rest-api-specs/pull/{}\n' \
+# .format(issue_object_rg.user.login, track1_info_model, track2_info_model, str(latest_pr_number))
+#
+# return info_model, sdk_link_number
def reply_owner(reply_content):
@@ -106,31 +103,21 @@ def add_label(label_name, labels):
issue_object_rg.set_labels(*labels)
-# Get SDK changelog by the latest PR's Checks
-def get_chanelog_and_sdk_number(rest_repo, latest_pr_number):
-
- # latest_pr = rest_repo.get_pull(latest_pr_number)
- url = f'https://github.com/Azure/azure-rest-api-specs/pull/{latest_pr_number}'
- res = requests.get(url=url)
- soup = BeautifulSoup(res.text, 'html.parser')
- # checks = soup.select('strong[class="text-emphasized"]')
- checks = soup.select('div[class="d-flex flex-items-baseline Box-row"]')
- for check in checks:
- if 'SDK azure-sdk-for-python-track2' in check.text:
- for content in check.contents:
- if content.name == 'a' and '/Azure/azure-rest-api-specs/runs' in content.get('href'):
- check_run_id = int(content.get('href').replace('/Azure/azure-rest-api-specs/runs/', ''))
- details = rest_repo.get_check_run(check_run_id).output.text
- # print(details)
- sdk_link_number = re.findall(r'/azure-sdk-for-python/pull/(\d*)">Preview SDK Changes', details)[0]
- changelog = ' python-track2
track2_azure-mgmt-{} '.format(details.split('track2_azure-mgmt-')[-1])
- info_model = 'hi @{} Please check the package whether works well and the changelog info ' \
- 'is as below:\n{}\n' \
- '\n* (The version of the package is only a temporary version for testing)\n' \
- '\nhttps://github.com/Azure/azure-rest-api-specs/pull/{}\n' \
- .format(issue_object_rg.user.login, changelog, str(latest_pr_number))
- return info_model, sdk_link_number
- raise Exception('cannot get info_model or sdk_link_number')
+def get_reply_and_sdk_number_from_readme(rest_repo, link_dict):
+ commits = rest_repo.get_commits(path=link_dict['resource_manager'])
+ latest_commit = commits[0]
+ check_run_id = latest_commit.get_check_runs(check_name='SDK azure-sdk-for-python-track2')[0].id
+ latest_pr_number = latest_commit.get_pulls()[0].number
+ details = rest_repo.get_check_run(check_run_id).output.text
+ sdk_link_number = re.findall(r'/azure-sdk-for-python/pull/(\d*)">Release SDK Changes', details)[0]
+ changelog = ' python-track2
track2_azure-mgmt-{} '.format(
+ details.split('track2_azure-mgmt-')[-1])
+ info_model = 'hi @{} Please check the package whether works well and the changelog info ' \
+ 'is as below:\n{}\n' \
+ '\n* (The version of the package is only a temporary version for testing)\n' \
+ '\nhttps://github.com/Azure/azure-rest-api-specs/pull/{}\n' \
+ .format(issue_object_rg.user.login, changelog, str(latest_pr_number))
+ return info_model, sdk_link_number
def begin_reply_generate(item, rest_repo, readme_link, sdk_repo, pipeline_url):
@@ -141,8 +128,7 @@ def begin_reply_generate(item, rest_repo, readme_link, sdk_repo, pipeline_url):
whether_change_readme = whether_change_readme_(rest_repo, link_dict, labels)
if not whether_change_readme:
- latest_pr_number = get_latest_pr_from_readme(rest_repo, link_dict)
- reply_content, sdk_link_number = get_chanelog_and_sdk_number(rest_repo, latest_pr_number)
+ reply_content, sdk_link_number = get_reply_and_sdk_number_from_readme(rest_repo, link_dict)
res_run = run_pipeline(issue_link=issue_object_rg.html_url,
sdk_issue_object=sdk_repo.get_pull(int(sdk_link_number)),
pipeline_url=pipeline_url
From c9dac6401f4a80569ee91d4ea46ceaac238d3ba0 Mon Sep 17 00:00:00 2001
From: BigCat20196 <1095260342@qq.com>
Date: Fri, 17 Sep 2021 17:51:45 +0800
Subject: [PATCH 139/157] del useless code
---
.../release_issue_status/reply_generator.py | 41 -------------------
1 file changed, 41 deletions(-)
diff --git a/scripts/release_issue_status/reply_generator.py b/scripts/release_issue_status/reply_generator.py
index 7d5309a38a47..01e9e60f3090 100644
--- a/scripts/release_issue_status/reply_generator.py
+++ b/scripts/release_issue_status/reply_generator.py
@@ -52,47 +52,6 @@ def get_latest_pr_from_readme(rest_repo, link_dict):
return latest_pr_number_int[-1]
-# def latest_pr_parse(rest_repo, latest_pr_number):
-# latest_pr = rest_repo.get_issue(latest_pr_number)
-# latest_pr_comments = latest_pr.get_comments()
-# b = [i for i in latest_pr_comments]
-# for comment in latest_pr_comments:
-# if 'Swagger Generation Artifacts
' in comment.body:
-# return swagger_generator_parse(comment.body, latest_pr_number)
-#
-#
-# def swagger_generator_parse(context, latest_pr_number):
-# track1_info_model = ''
-# try:
-# if ' azure-sdk-for-python' in context:
-# pattern_python_t1 = re.compile(' azure-sdk-for-python.+?', re.DOTALL)
-# python_t1 = re.search(pattern_python_t1, context).group()
-# prttern_python_track1 = re.compile('\s+?- \s+?', re.DOTALL)
-# python_track1_info = re.search(prttern_python_track1, python_t1).group()
-# track1_info_model = '
python-track1
{} '.format(
-# python_track1_info)
-# except Exception as e:
-# logging.error('track1 generate error')
-# pattern_python = re.compile(' azure-sdk-for-python-track2.+?', re.DOTALL)
-# python = re.search(pattern_python, context).group()
-# # the way that reply not contains [Release SDK Changes]
-# # pattern_python_track2 = re.compile('\s*?- \s*?', re.DOTALL)
-# pattern_python_track2 = re.compile('track2_.*
', re.DOTALL)
-# python_track2_info = re.search(pattern_python_track2, python).group()
-# track2_info_model = ' python-track2
{} '.format(
-# python_track2_info)
-# pattern_sdk_changes = re.compile('/azure-sdk-for-python/pull/\d*">Release SDK Changes', re.DOTALL)
-# sdk_link = re.search(pattern_sdk_changes, python_track2_info).group()
-# sdk_link_number = re.search(re.compile('[0-9]+'), sdk_link).group()
-# info_model = 'hi @{} Please check the package whether works well and the changelog info is as below:\n' \
-# '{}\n{}\n' \
-# '\n* (The version of the package is only a temporary version for testing)\n' \
-# '\nhttps://github.com/Azure/azure-rest-api-specs/pull/{}\n' \
-# .format(issue_object_rg.user.login, track1_info_model, track2_info_model, str(latest_pr_number))
-#
-# return info_model, sdk_link_number
-
-
def reply_owner(reply_content):
issue_object_rg.create_comment(reply_content)
From 222d6b3f690d65d2ffbf21da3361ddddc00990b5 Mon Sep 17 00:00:00 2001
From: Zed Lei <59104634+RAY-316@users.noreply.github.com>
Date: Sat, 18 Sep 2021 09:53:08 +0800
Subject: [PATCH 140/157] Update utils.py
---
scripts/release_issue_status/utils.py | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/scripts/release_issue_status/utils.py b/scripts/release_issue_status/utils.py
index 438c564b3817..b66bad5b189e 100644
--- a/scripts/release_issue_status/utils.py
+++ b/scripts/release_issue_status/utils.py
@@ -11,7 +11,7 @@
import requests
logging.basicConfig(level=logging.INFO,
- format='[auto-reply log]%(asctime)s - %(filename)s[line:%(lineno)d] - %(levelname)s: %(message)s')
+ format='[auto-reply log] - %(funcName)s[line:%(lineno)d] - %(levelname)s: %(message)s')
# Add readme link and package name to the user's issue
def update_issue_body(sdk_repo, rest_repo, issue_number):
From 516a66e407dc1e5e37e9c9831c3cb9418143d6b3 Mon Sep 17 00:00:00 2001
From: Zed Lei <59104634+RAY-316@users.noreply.github.com>
Date: Sat, 18 Sep 2021 09:53:34 +0800
Subject: [PATCH 141/157] Update main.py
---
scripts/release_issue_status/main.py | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/scripts/release_issue_status/main.py b/scripts/release_issue_status/main.py
index 4f486d840ffb..028ae598151d 100644
--- a/scripts/release_issue_status/main.py
+++ b/scripts/release_issue_status/main.py
@@ -19,7 +19,7 @@
_FILE_OUT_PYTHON = 'release_python_status.md'
_PYTHON_SDK_ADMINISTRATORS = {'msyyc', 'RAY-316', 'BigCat20196'}
logging.basicConfig(level=logging.INFO,
- format='[auto-reply log]%(asctime)s - %(filename)s[line:%(lineno)d] - %(levelname)s: %(message)s')
+ format='[auto-reply log] - %(funcName)s[line:%(lineno)d] - %(levelname)s: %(message)s')
def my_print(cmd):
print('==' + cmd + ' ==\n')
From c201434bc91b4cda87a3c9c642c58fa639b1f037 Mon Sep 17 00:00:00 2001
From: Zed Lei <59104634+RAY-316@users.noreply.github.com>
Date: Sat, 18 Sep 2021 09:53:59 +0800
Subject: [PATCH 142/157] Update reply_generator.py
---
scripts/release_issue_status/reply_generator.py | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/scripts/release_issue_status/reply_generator.py b/scripts/release_issue_status/reply_generator.py
index 01e9e60f3090..e758a61f960b 100644
--- a/scripts/release_issue_status/reply_generator.py
+++ b/scripts/release_issue_status/reply_generator.py
@@ -4,7 +4,7 @@
issue_object_rg = None
logging.basicConfig(level=logging.INFO,
- format='[auto-reply log]%(asctime)s - %(filename)s[line:%(lineno)d] - %(levelname)s: %(message)s')
+ format='[auto-reply log] - %(funcName)s[line:%(lineno)d] - %(levelname)s: %(message)s')
def whether_change_readme_(rest_repo, link_dict, labels):
From 8d4099786cc7ca19c4f7d1f455462deff1b2d525 Mon Sep 17 00:00:00 2001
From: Jiefeng Chen <51037443+BigCat20196@users.noreply.github.com>
Date: Wed, 22 Sep 2021 09:35:44 +0800
Subject: [PATCH 143/157] Update main.py
---
scripts/release_issue_status/main.py | 1 +
1 file changed, 1 insertion(+)
diff --git a/scripts/release_issue_status/main.py b/scripts/release_issue_status/main.py
index 028ae598151d..3696bfa2b65c 100644
--- a/scripts/release_issue_status/main.py
+++ b/scripts/release_issue_status/main.py
@@ -229,6 +229,7 @@ def main():
elif (item.comment_num == 0 or 'Configured' in item.labels) and 'Python' in item.labels:
item.bot_advice = 'new issue and better to confirm quickly.'
if 'assigned' not in item.labels:
+ time.sleep(0.1)
assign_count = int(str(time.time())[-1]) % 2
if assign_count == 1:
item.issue_object.remove_from_assignees(*['RAY-316'])
From cfe61507a824f2eb6d4f70bf83646f4dbbcf4d38 Mon Sep 17 00:00:00 2001
From: Jiefeng Chen <51037443+BigCat20196@users.noreply.github.com>
Date: Sun, 26 Sep 2021 09:39:46 +0800
Subject: [PATCH 144/157] Update utils.py
---
scripts/release_issue_status/utils.py | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
diff --git a/scripts/release_issue_status/utils.py b/scripts/release_issue_status/utils.py
index b66bad5b189e..aadf1b35af26 100644
--- a/scripts/release_issue_status/utils.py
+++ b/scripts/release_issue_status/utils.py
@@ -121,7 +121,8 @@ def _find_package_name_and_output(rest_repo, readme_link):
def get_python_pipelines():
python_piplines = {}
pipeline_client = PipelinesClient(base_url='https://dev.azure.com/azure-sdk',
- creds=BasicAuthentication('', os.getenv('PIPELINE_TOKEN')))
+ creds=BasicAuthentication(os.getenv('PIPELINE_TOKEN'), ''))
+ print("*********************", os.getenv('PIPELINE_TOKEN'))
pipelines = pipeline_client.list_pipelines(project='internal')
for pipeline in pipelines:
if re.findall('^python - \w*$', pipeline.name):
From f023f907adece890f0654b74ddee54633d188e84 Mon Sep 17 00:00:00 2001
From: Jiefeng Chen <51037443+BigCat20196@users.noreply.github.com>
Date: Sun, 26 Sep 2021 09:53:46 +0800
Subject: [PATCH 145/157] Update utils.py
---
scripts/release_issue_status/utils.py | 1 +
1 file changed, 1 insertion(+)
diff --git a/scripts/release_issue_status/utils.py b/scripts/release_issue_status/utils.py
index aadf1b35af26..76b6c609ff75 100644
--- a/scripts/release_issue_status/utils.py
+++ b/scripts/release_issue_status/utils.py
@@ -123,6 +123,7 @@ def get_python_pipelines():
pipeline_client = PipelinesClient(base_url='https://dev.azure.com/azure-sdk',
creds=BasicAuthentication(os.getenv('PIPELINE_TOKEN'), ''))
print("*********************", os.getenv('PIPELINE_TOKEN'))
+ print("++++", os.getenv('PIPELINE_HEADERS'))
pipelines = pipeline_client.list_pipelines(project='internal')
for pipeline in pipelines:
if re.findall('^python - \w*$', pipeline.name):
From 6aec14fe918b20f80ec4797130aca795aca62f10 Mon Sep 17 00:00:00 2001
From: Jiefeng Chen <51037443+BigCat20196@users.noreply.github.com>
Date: Sun, 26 Sep 2021 10:01:15 +0800
Subject: [PATCH 146/157] Update utils.py
---
scripts/release_issue_status/utils.py | 1 +
1 file changed, 1 insertion(+)
diff --git a/scripts/release_issue_status/utils.py b/scripts/release_issue_status/utils.py
index 76b6c609ff75..7979dcbdfc2b 100644
--- a/scripts/release_issue_status/utils.py
+++ b/scripts/release_issue_status/utils.py
@@ -124,6 +124,7 @@ def get_python_pipelines():
creds=BasicAuthentication(os.getenv('PIPELINE_TOKEN'), ''))
print("*********************", os.getenv('PIPELINE_TOKEN'))
print("++++", os.getenv('PIPELINE_HEADERS'))
+ print("+++", os.getenv('USR_NAME'))
pipelines = pipeline_client.list_pipelines(project='internal')
for pipeline in pipelines:
if re.findall('^python - \w*$', pipeline.name):
From 8685032c19bce929e30b12e99bb4fd77feeef689 Mon Sep 17 00:00:00 2001
From: Jiefeng Chen <51037443+BigCat20196@users.noreply.github.com>
Date: Sun, 26 Sep 2021 10:44:59 +0800
Subject: [PATCH 147/157] Update utils.py
---
scripts/release_issue_status/utils.py | 3 ---
1 file changed, 3 deletions(-)
diff --git a/scripts/release_issue_status/utils.py b/scripts/release_issue_status/utils.py
index 7979dcbdfc2b..f1e87ed6588b 100644
--- a/scripts/release_issue_status/utils.py
+++ b/scripts/release_issue_status/utils.py
@@ -122,9 +122,6 @@ def get_python_pipelines():
python_piplines = {}
pipeline_client = PipelinesClient(base_url='https://dev.azure.com/azure-sdk',
creds=BasicAuthentication(os.getenv('PIPELINE_TOKEN'), ''))
- print("*********************", os.getenv('PIPELINE_TOKEN'))
- print("++++", os.getenv('PIPELINE_HEADERS'))
- print("+++", os.getenv('USR_NAME'))
pipelines = pipeline_client.list_pipelines(project='internal')
for pipeline in pipelines:
if re.findall('^python - \w*$', pipeline.name):
From 138b18801f8d913a2ade5dd91a7c3bb8f9075c85 Mon Sep 17 00:00:00 2001
From: Zed Lei <59104634+RAY-316@users.noreply.github.com>
Date: Sun, 26 Sep 2021 14:21:27 +0800
Subject: [PATCH 148/157] Update reply_generator.py
---
scripts/release_issue_status/reply_generator.py | 11 +++--------
1 file changed, 3 insertions(+), 8 deletions(-)
diff --git a/scripts/release_issue_status/reply_generator.py b/scripts/release_issue_status/reply_generator.py
index e758a61f960b..ad586e04fac7 100644
--- a/scripts/release_issue_status/reply_generator.py
+++ b/scripts/release_issue_status/reply_generator.py
@@ -7,7 +7,7 @@
format='[auto-reply log] - %(funcName)s[line:%(lineno)d] - %(levelname)s: %(message)s')
-def whether_change_readme_(rest_repo, link_dict, labels):
+def readme_comparison(rest_repo, link_dict, labels):
# to see whether need change readme
contents = str(rest_repo.get_contents(link_dict['readme_path']).decoded_content)
pattern_tag = re.compile(r'tag: package-[\w+-.]+')
@@ -56,11 +56,6 @@ def reply_owner(reply_content):
issue_object_rg.create_comment(reply_content)
-def add_label(label_name, labels):
- if label_name not in labels:
- labels.append(label_name)
- issue_object_rg.set_labels(*labels)
-
def get_reply_and_sdk_number_from_readme(rest_repo, link_dict):
commits = rest_repo.get_commits(path=link_dict['resource_manager'])
@@ -84,7 +79,7 @@ def begin_reply_generate(item, rest_repo, readme_link, sdk_repo, pipeline_url):
issue_object_rg = item.issue_object
link_dict = get_links(readme_link)
labels = item.labels
- whether_change_readme = whether_change_readme_(rest_repo, link_dict, labels)
+ whether_change_readme = readme_comparison(rest_repo, link_dict, labels)
if not whether_change_readme:
reply_content, sdk_link_number = get_reply_and_sdk_number_from_readme(rest_repo, link_dict)
@@ -97,6 +92,6 @@ def begin_reply_generate(item, rest_repo, readme_link, sdk_repo, pipeline_url):
else:
logging.info(f'{issue_object_rg.number} run pipeline fail')
reply_owner(reply_content)
- add_label('auto-ask-check', labels)
+ issue_object_rg.add_to_labels('auto-ask-check')
else:
logging.info('issue {} need config readme'.format(issue_object_rg.number))
From 5c1bcb4a59f089f88067df4c1f0bea203d7716d0 Mon Sep 17 00:00:00 2001
From: Zed Lei <59104634+RAY-316@users.noreply.github.com>
Date: Sun, 26 Sep 2021 14:34:56 +0800
Subject: [PATCH 149/157] Update main.py
---
scripts/release_issue_status/main.py | 26 ++++++++++++--------------
1 file changed, 12 insertions(+), 14 deletions(-)
diff --git a/scripts/release_issue_status/main.py b/scripts/release_issue_status/main.py
index 3696bfa2b65c..6eab5a26b5db 100644
--- a/scripts/release_issue_status/main.py
+++ b/scripts/release_issue_status/main.py
@@ -132,8 +132,7 @@ def auto_reply(item, request_repo, rest_repo, sdk_repo, duplicated_issue, python
logging.info("new issue number: {}".format(item.issue_object.number))
if 'auto-link' not in item.labels:
- item.labels.append('auto-link')
- item.issue_object.set_labels(*item.labels)
+ item.issue_object.add_to_labels('auto-link')
try:
package_name, readme_link, output_folder = update_issue_body(request_repo, rest_repo, item.issue_object.number)
logging.info("pkname, readme", package_name, readme_link)
@@ -142,8 +141,7 @@ def auto_reply(item, request_repo, rest_repo, sdk_repo, duplicated_issue, python
duplicated_issue[key] = duplicated_issue.get(key, 0) + 1
except Exception as e:
item.bot_advice = 'failed to modify the body of the new issue. Please modify manually'
- item.labels.append('attention')
- item.issue_object.set_labels(*item.labels)
+ item.issue_object.add_to_labels('attention')
logging.info(e)
raise
else:
@@ -152,8 +150,7 @@ def auto_reply(item, request_repo, rest_repo, sdk_repo, duplicated_issue, python
except Exception as e:
logging.info('Issue: {} get pkname and output folder failed'.format(item.issue_object.number))
item.bot_advice = 'failed to find Readme link and output folder. Please check !!'
- item.labels.append('attention')
- item.issue_object.set_labels(*item.labels)
+ item.issue_object.add_to_labels('attention')
logging.info(e)
raise
try:
@@ -162,8 +159,7 @@ def auto_reply(item, request_repo, rest_repo, sdk_repo, duplicated_issue, python
rg.begin_reply_generate(item=item, rest_repo=rest_repo, readme_link=readme_link,
sdk_repo=sdk_repo, pipeline_url=pipeline_url)
if 'Configured' in item.labels:
- item.labels.remove('Configured')
- item.issue_object.set_labels(*item.labels)
+ item.issue_object.remove_from_labels('Configured')
except Exception as e:
item.bot_advice = 'auto reply failed, Please intervene manually !!'
logging.info('Error from auto reply')
@@ -174,6 +170,11 @@ def auto_reply(item, request_repo, rest_repo, sdk_repo, duplicated_issue, python
def main():
# get latest issue status
g = Github(os.getenv('TOKEN')) # please fill user_token
+ print('*'*15)
+ print('token',os.getenv('TOKEN'))
+ print('PIPELINE_URL',os.getenv('PIPELINE_URL'))
+ print('pipeline_token',os.getenv('PIPELINE_URL'))
+ print('*'*15)
request_repo = g.get_repo('Azure/sdk-release-request')
rest_repo = g.get_repo('Azure/azure-rest-api-specs')
sdk_repo = g.get_repo('Azure/azure-sdk-for-python')
@@ -234,8 +235,7 @@ def main():
if assign_count == 1:
item.issue_object.remove_from_assignees(*['RAY-316'])
item.issue_object.add_to_assignees(*['BigCat20196'])
- item.labels.append('assigned')
- item.issue_object.set_labels(*item.labels)
+ item.issue_object.add_to_labels('assigned')
try:
auto_reply(item, request_repo, rest_repo, sdk_repo, duplicated_issue, python_piplines)
except Exception as e:
@@ -252,15 +252,13 @@ def main():
logging.info(f"=====issue: {item.issue_object.number}, {e}")
if item.days_from_latest_commit >= 30 and item.language == 'Python' and '30days attention' not in item.labels:
- item.labels.append('30days attention')
- item.issue_object.set_labels(*item.labels)
+ item.issue_object.add_to_labels('30days attention')
item.issue_object.create_comment(f'hi @{item.author}, the issue is closed since there is no reply for a long time. Please reopen it if necessary or create new one.')
item.issue_object.edit(state='close')
elif item.days_from_latest_commit >= 15 and item.language == 'Python' and '15days attention' not in item.labels:
item.issue_object.create_comment(f'hi @{item.author}, this release-request has been delayed more than 15 days,'
' please deal with it ASAP. We will close the issue if there is still no response after 15 days!')
- item.labels.append('15days attention')
- item.issue_object.set_labels(*item.labels)
+ item.issue_object.add_to_labels('15days attention')
# judge whether there is duplicated issue for same package
if item.package != _NULL and duplicated_issue.get((item.language, item.package)) > 1:
From 50a0e91c6b13b508143c739a61e3f38027765452 Mon Sep 17 00:00:00 2001
From: Zed Lei <59104634+RAY-316@users.noreply.github.com>
Date: Sun, 26 Sep 2021 14:43:01 +0800
Subject: [PATCH 150/157] Update main.py
---
scripts/release_issue_status/main.py | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/scripts/release_issue_status/main.py b/scripts/release_issue_status/main.py
index 6eab5a26b5db..263ae0c4120b 100644
--- a/scripts/release_issue_status/main.py
+++ b/scripts/release_issue_status/main.py
@@ -173,7 +173,7 @@ def main():
print('*'*15)
print('token',os.getenv('TOKEN'))
print('PIPELINE_URL',os.getenv('PIPELINE_URL'))
- print('pipeline_token',os.getenv('PIPELINE_URL'))
+ print('pipeline_token',os.getenv('PIPELINE_TOKEN'))
print('*'*15)
request_repo = g.get_repo('Azure/sdk-release-request')
rest_repo = g.get_repo('Azure/azure-rest-api-specs')
From fb5824f88eeea4ec56330ccf240b95f64df19622 Mon Sep 17 00:00:00 2001
From: Zed Lei <59104634+RAY-316@users.noreply.github.com>
Date: Sun, 26 Sep 2021 14:53:21 +0800
Subject: [PATCH 151/157] Update main.py
---
scripts/release_issue_status/main.py | 2 ++
1 file changed, 2 insertions(+)
diff --git a/scripts/release_issue_status/main.py b/scripts/release_issue_status/main.py
index 263ae0c4120b..556ac7aed790 100644
--- a/scripts/release_issue_status/main.py
+++ b/scripts/release_issue_status/main.py
@@ -174,6 +174,8 @@ def main():
print('token',os.getenv('TOKEN'))
print('PIPELINE_URL',os.getenv('PIPELINE_URL'))
print('pipeline_token',os.getenv('PIPELINE_TOKEN'))
+ print('ENV_FILE',os.getenv('ENV_FILE'))
+ print('PIPELINE_HEADERS',os.getenv('PIPELINE_HEADERS'))
print('*'*15)
request_repo = g.get_repo('Azure/sdk-release-request')
rest_repo = g.get_repo('Azure/azure-rest-api-specs')
From d3e4506ee4f8dc5b7f270cf52cb086a0b88763dc Mon Sep 17 00:00:00 2001
From: Zed Lei <59104634+RAY-316@users.noreply.github.com>
Date: Sun, 26 Sep 2021 15:06:47 +0800
Subject: [PATCH 152/157] Update release_issue_status.yml for Azure Pipelines
---
scripts/release_issue_status/release_issue_status.yml | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
diff --git a/scripts/release_issue_status/release_issue_status.yml b/scripts/release_issue_status/release_issue_status.yml
index 0e3146fdee9e..dda1758a1c18 100644
--- a/scripts/release_issue_status/release_issue_status.yml
+++ b/scripts/release_issue_status/release_issue_status.yml
@@ -38,7 +38,8 @@ jobs:
export TOKEN=$(USR_TOKEN)
export HEADERS=$(PIPELINE_HEADERS)
export URL=$(PIPELINE_URL)
- export PIPELINE_TOKEN = $(PIPELINE_TOKEN)
+ export PIPELINE_TOKEN = $(USR_PIPELINE_TOKEN)
+ export COOKIE = $(COOKIE)
# create virtual env
python -m venv venv-sdk
From 826963acc27e4a06716b54980e53db2f84d250eb Mon Sep 17 00:00:00 2001
From: Zed Lei <59104634+RAY-316@users.noreply.github.com>
Date: Sun, 26 Sep 2021 15:07:39 +0800
Subject: [PATCH 153/157] Update main.py
---
scripts/release_issue_status/main.py | 1 +
1 file changed, 1 insertion(+)
diff --git a/scripts/release_issue_status/main.py b/scripts/release_issue_status/main.py
index 556ac7aed790..0c11f17b749a 100644
--- a/scripts/release_issue_status/main.py
+++ b/scripts/release_issue_status/main.py
@@ -175,6 +175,7 @@ def main():
print('PIPELINE_URL',os.getenv('PIPELINE_URL'))
print('pipeline_token',os.getenv('PIPELINE_TOKEN'))
print('ENV_FILE',os.getenv('ENV_FILE'))
+ print('COOKIE',os.getenv('COOKIE'))
print('PIPELINE_HEADERS',os.getenv('PIPELINE_HEADERS'))
print('*'*15)
request_repo = g.get_repo('Azure/sdk-release-request')
From 5b1c0ec91561f3884304f8fced23ef171768e4db Mon Sep 17 00:00:00 2001
From: Zed Lei <59104634+RAY-316@users.noreply.github.com>
Date: Sun, 26 Sep 2021 15:21:28 +0800
Subject: [PATCH 154/157] Update release_issue_status.yml for Azure Pipelines
---
scripts/release_issue_status/release_issue_status.yml | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/scripts/release_issue_status/release_issue_status.yml b/scripts/release_issue_status/release_issue_status.yml
index dda1758a1c18..1d2bca63a8a4 100644
--- a/scripts/release_issue_status/release_issue_status.yml
+++ b/scripts/release_issue_status/release_issue_status.yml
@@ -39,7 +39,7 @@ jobs:
export HEADERS=$(PIPELINE_HEADERS)
export URL=$(PIPELINE_URL)
export PIPELINE_TOKEN = $(USR_PIPELINE_TOKEN)
- export COOKIE = $(COOKIE)
+ export COOKIE = $(USR_TOKEN)
# create virtual env
python -m venv venv-sdk
From 16ced979292150be134a5a2d5484d827e1189097 Mon Sep 17 00:00:00 2001
From: Zed Lei <59104634+RAY-316@users.noreply.github.com>
Date: Sun, 26 Sep 2021 15:27:18 +0800
Subject: [PATCH 155/157] Update release_issue_status.yml for Azure Pipelines
---
scripts/release_issue_status/release_issue_status.yml | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/scripts/release_issue_status/release_issue_status.yml b/scripts/release_issue_status/release_issue_status.yml
index 1d2bca63a8a4..410e1952c99f 100644
--- a/scripts/release_issue_status/release_issue_status.yml
+++ b/scripts/release_issue_status/release_issue_status.yml
@@ -38,8 +38,8 @@ jobs:
export TOKEN=$(USR_TOKEN)
export HEADERS=$(PIPELINE_HEADERS)
export URL=$(PIPELINE_URL)
- export PIPELINE_TOKEN = $(USR_PIPELINE_TOKEN)
- export COOKIE = $(USR_TOKEN)
+ export PIPELINE_TOKEN=$(USR_PIPELINE_TOKEN)
+ export COOKIE=$(USR_TOKEN)
# create virtual env
python -m venv venv-sdk
From a1ddfae1e6ad27ba6c9e77d3c7f5c810bdca9767 Mon Sep 17 00:00:00 2001
From: Zed Lei <59104634+RAY-316@users.noreply.github.com>
Date: Sun, 26 Sep 2021 15:36:07 +0800
Subject: [PATCH 156/157] Update main.py
---
scripts/release_issue_status/main.py | 8 --------
1 file changed, 8 deletions(-)
diff --git a/scripts/release_issue_status/main.py b/scripts/release_issue_status/main.py
index 0c11f17b749a..6bc1289cfc0a 100644
--- a/scripts/release_issue_status/main.py
+++ b/scripts/release_issue_status/main.py
@@ -170,14 +170,6 @@ def auto_reply(item, request_repo, rest_repo, sdk_repo, duplicated_issue, python
def main():
# get latest issue status
g = Github(os.getenv('TOKEN')) # please fill user_token
- print('*'*15)
- print('token',os.getenv('TOKEN'))
- print('PIPELINE_URL',os.getenv('PIPELINE_URL'))
- print('pipeline_token',os.getenv('PIPELINE_TOKEN'))
- print('ENV_FILE',os.getenv('ENV_FILE'))
- print('COOKIE',os.getenv('COOKIE'))
- print('PIPELINE_HEADERS',os.getenv('PIPELINE_HEADERS'))
- print('*'*15)
request_repo = g.get_repo('Azure/sdk-release-request')
rest_repo = g.get_repo('Azure/azure-rest-api-specs')
sdk_repo = g.get_repo('Azure/azure-sdk-for-python')
From c5d56e627c8a5188631bc98cbcec55e322db006b Mon Sep 17 00:00:00 2001
From: Zed Lei <59104634+RAY-316@users.noreply.github.com>
Date: Sun, 26 Sep 2021 15:38:07 +0800
Subject: [PATCH 157/157] Update utils.py
---
scripts/release_issue_status/utils.py | 3 +--
1 file changed, 1 insertion(+), 2 deletions(-)
diff --git a/scripts/release_issue_status/utils.py b/scripts/release_issue_status/utils.py
index f1e87ed6588b..f96d4a973017 100644
--- a/scripts/release_issue_status/utils.py
+++ b/scripts/release_issue_status/utils.py
@@ -193,8 +193,7 @@ def auto_close_issue(sdk_repo, item):
comment = f'Hi @{issue_author}, pypi link: https://pypi.org/project/{package_name}/{last_version}/'
issue_info.create_comment(body=comment)
issue_info.edit(state='closed')
- item.labels.append('auto-closed')
- item.issue_object.set_labels(*item.labels)
+ item.issue_object.add_to_labels('auto-closed')
logging.info(f"issue number:{issue_number} has been closed!")