+ 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/116] 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/116] 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/116] 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/116] 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/116] 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/116] 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/116] 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/116] 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/116] 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/116] 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/116] 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/116] 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/116] 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/116] 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/116] 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/116] 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/116] 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/116] 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/116] 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/116] 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/116] 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/116] 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/116] 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/116] 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/116] 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/116] 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/116] 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/116] 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/116] 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/116] 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/116] 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/116] 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/116] 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/116] 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/116] 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/116] 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/116] 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/116] 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/116] 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/116] 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/116] 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 = {