mirror of
https://github.com/microsoft/WSL.git
synced 2025-12-10 00:44:55 -06:00
Use the github generated release notes by default in create-release.py (#13161)
* Use the github generated release notes by default in create-release.py * Merge
This commit is contained in:
parent
17319988a6
commit
1b7620a4f8
@ -113,7 +113,7 @@ stages:
|
|||||||
# Create a draft github release
|
# Create a draft github release
|
||||||
- powershell: |
|
- powershell: |
|
||||||
pip install --user -r tools/devops/requirements.txt
|
pip install --user -r tools/devops/requirements.txt
|
||||||
python tools/devops/create-release.py '${{ parameters.packageVersion }}' drop\bundle\Microsoft.WSL_${{ parameters.packageVersion }}.0_x64_ARM64.msixbundle drop\bundle\wsl.${{ parameters.packageVersion }}.0.arm64.msi drop\bundle\wsl.${{ parameters.packageVersion }}.0.x64.msi --no-fetch --github-token "$env:token" ${{ iif(parameters.publishPackage, '--publish', '--use-current-ref') }}
|
python tools/devops/create-release.py '${{ parameters.packageVersion }}' drop\bundle\Microsoft.WSL_${{ parameters.packageVersion }}.0_x64_ARM64.msixbundle drop\bundle\wsl.${{ parameters.packageVersion }}.0.arm64.msi drop\bundle\wsl.${{ parameters.packageVersion }}.0.x64.msi --no-fetch --github-token "$env:token" ${{ iif(parameters.publishPackage, '--publish --auto-release-notes', '--use-current-ref') }}
|
||||||
|
|
||||||
displayName: Create Github release
|
displayName: Create Github release
|
||||||
env:
|
env:
|
||||||
|
|||||||
@ -19,7 +19,8 @@ from urllib.parse import urlparse
|
|||||||
@click.option('--no-fetch', is_flag=True, default=False)
|
@click.option('--no-fetch', is_flag=True, default=False)
|
||||||
@click.option('--github-token', default=None)
|
@click.option('--github-token', default=None)
|
||||||
@click.option('--use-current-ref', is_flag=True, default=False)
|
@click.option('--use-current-ref', is_flag=True, default=False)
|
||||||
def main(version: str, previous: str, max_message_lines: int, publish: bool, assets: list, no_fetch: bool, github_token: str, use_current_ref: bool):
|
@click.option('--auto-release-notes', is_flag=True, default=False)
|
||||||
|
def main(version: str, previous: str, max_message_lines: int, publish: bool, assets: list, no_fetch: bool, github_token: str, use_current_ref: bool, auto_release_notes: bool):
|
||||||
if publish:
|
if publish:
|
||||||
if assets is None:
|
if assets is None:
|
||||||
raise RuntimeError('--publish requires at least one asset')
|
raise RuntimeError('--publish requires at least one asset')
|
||||||
@ -38,36 +39,38 @@ def main(version: str, previous: str, max_message_lines: int, publish: bool, ass
|
|||||||
print(f'Creating release notes for: {previous} -> {current_ref}', file=sys.stderr)
|
print(f'Creating release notes for: {previous} -> {current_ref}', file=sys.stderr)
|
||||||
|
|
||||||
changes = ''
|
changes = ''
|
||||||
for e in get_change_list(None if use_current_ref else version, previous, not no_fetch):
|
|
||||||
|
|
||||||
# Detect attached github issues
|
if not auto_release_notes:
|
||||||
issues = find_github_issues(e.message)
|
for e in get_change_list(None if use_current_ref else version, previous, not no_fetch):
|
||||||
pr_description, pr_number = get_github_pr_message(github_token, e.message)
|
|
||||||
if pr_description is not None:
|
|
||||||
issues = issues.union(find_github_issues(pr_description))
|
|
||||||
|
|
||||||
if github_token is not None:
|
# Detect attached github issues
|
||||||
issues = filter_github_issues(issues, github_token)
|
issues = find_github_issues(e.message)
|
||||||
|
pr_description, pr_number = get_github_pr_message(github_token, e.message)
|
||||||
|
if pr_description is not None:
|
||||||
|
issues = issues.union(find_github_issues(pr_description))
|
||||||
|
|
||||||
if len(issues) > 1:
|
if github_token is not None:
|
||||||
print(f'WARNING: found more than 1 github issues in message: {message}. Issues: {issues}', file=sys.stderr)
|
issues = filter_github_issues(issues, github_token)
|
||||||
|
|
||||||
message = e.message[:-1] if e.message.endswith('\n') else e.message
|
if len(issues) > 1:
|
||||||
|
print(f'WARNING: found more than 1 github issues in message: {message}. Issues: {issues}', file=sys.stderr)
|
||||||
|
|
||||||
# Shrink the message if it's too long
|
message = e.message[:-1] if e.message.endswith('\n') else e.message
|
||||||
lines = message.split('\n')
|
|
||||||
message = '\n'.join([e for e in lines if e][:max_message_lines])
|
|
||||||
|
|
||||||
# Get rid of the github PR #
|
# Shrink the message if it's too long
|
||||||
if pr_number is not None:
|
lines = message.split('\n')
|
||||||
message = message.replace(f'(#{pr_number})', '')
|
message = '\n'.join([e for e in lines if e][:max_message_lines])
|
||||||
|
|
||||||
# Append to the changes (chr(92) == '\n')
|
# Get rid of the github PR #
|
||||||
message = f'{message.replace(chr(92), "")} (solves {",".join(issues)})' if issues else message
|
if pr_number is not None:
|
||||||
changes += f'* {message}\n'
|
message = message.replace(f'(#{pr_number})', '')
|
||||||
|
|
||||||
|
# Append to the changes (chr(92) == '\n')
|
||||||
|
message = f'{message.replace(chr(92), "")} (solves {",".join(issues)})' if issues else message
|
||||||
|
changes += f'* {message}\n'
|
||||||
|
|
||||||
if publish:
|
if publish:
|
||||||
publish_release(version, changes, assets, github_token)
|
publish_release(version, changes, assets, auto_release_notes, github_token)
|
||||||
else:
|
else:
|
||||||
print(f'\n{changes}')
|
print(f'\n{changes}')
|
||||||
|
|
||||||
@ -172,7 +175,7 @@ def get_change_list(version: str, previous: str, fetch: bool) -> list:
|
|||||||
|
|
||||||
|
|
||||||
@backoff.on_exception(backoff.expo, (requests.exceptions.Timeout, requests.exceptions.ConnectionError, requests.exceptions.RequestException), max_time=600)
|
@backoff.on_exception(backoff.expo, (requests.exceptions.Timeout, requests.exceptions.ConnectionError, requests.exceptions.RequestException), max_time=600)
|
||||||
def publish_release(version: str, changes: str, assets: list, token: str):
|
def publish_release(version: str, changes: str, assets: list, auto_release_notes: bool, token: str):
|
||||||
print(f'Creating private Github release for: {version}', file=sys.stderr)
|
print(f'Creating private Github release for: {version}', file=sys.stderr)
|
||||||
|
|
||||||
# First create the release
|
# First create the release
|
||||||
@ -183,10 +186,12 @@ def publish_release(version: str, changes: str, assets: list, token: str):
|
|||||||
content = {'tag_name': version,
|
content = {'tag_name': version,
|
||||||
'target_commitish': 'master',
|
'target_commitish': 'master',
|
||||||
'name': version,
|
'name': version,
|
||||||
'body': changes,
|
|
||||||
"draft":True ,
|
"draft":True ,
|
||||||
'prerelease':True ,
|
'prerelease':True ,
|
||||||
'generate_release_notes': False}
|
'generate_release_notes': auto_release_notes}
|
||||||
|
|
||||||
|
if changes:
|
||||||
|
content['body'] = changes
|
||||||
|
|
||||||
response = requests.post('https://api.github.com/repos/microsoft/wsl/releases', json=content, headers=headers)
|
response = requests.post('https://api.github.com/repos/microsoft/wsl/releases', json=content, headers=headers)
|
||||||
response.raise_for_status()
|
response.raise_for_status()
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user