Fix release script to check GH token (#17803)

The current logic didn't work.
This commit is contained in:
Erik Johnston 2024-10-10 09:59:01 +01:00 committed by GitHub
parent 05576f0b4b
commit f6a3e5e1c2
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
2 changed files with 24 additions and 13 deletions

1
changelog.d/17803.misc Normal file
View File

@ -0,0 +1 @@
Test github token before running release script steps.

View File

@ -40,7 +40,7 @@ import commonmark
import git import git
from click.exceptions import ClickException from click.exceptions import ClickException
from git import GitCommandError, Repo from git import GitCommandError, Repo
from github import Github from github import BadCredentialsException, Github
from packaging import version from packaging import version
@ -323,10 +323,8 @@ def tag(gh_token: Optional[str]) -> None:
def _tag(gh_token: Optional[str]) -> None: def _tag(gh_token: Optional[str]) -> None:
"""Tags the release and generates a draft GitHub release""" """Tags the release and generates a draft GitHub release"""
if gh_token:
# Test that the GH Token is valid before continuing. # Test that the GH Token is valid before continuing.
gh = Github(gh_token) check_valid_gh_token(gh_token)
gh.get_user()
# Make sure we're in a git repo. # Make sure we're in a git repo.
repo = get_repo_and_check_clean_checkout() repo = get_repo_and_check_clean_checkout()
@ -469,10 +467,8 @@ def upload(gh_token: Optional[str]) -> None:
def _upload(gh_token: Optional[str]) -> None: def _upload(gh_token: Optional[str]) -> None:
"""Upload release to pypi.""" """Upload release to pypi."""
if gh_token:
# Test that the GH Token is valid before continuing. # Test that the GH Token is valid before continuing.
gh = Github(gh_token) check_valid_gh_token(gh_token)
gh.get_user()
current_version = get_package_version() current_version = get_package_version()
tag_name = f"v{current_version}" tag_name = f"v{current_version}"
@ -569,10 +565,8 @@ def wait_for_actions(gh_token: Optional[str]) -> None:
def _wait_for_actions(gh_token: Optional[str]) -> None: def _wait_for_actions(gh_token: Optional[str]) -> None:
if gh_token:
# Test that the GH Token is valid before continuing. # Test that the GH Token is valid before continuing.
gh = Github(gh_token) check_valid_gh_token(gh_token)
gh.get_user()
# Find out the version and tag name. # Find out the version and tag name.
current_version = get_package_version() current_version = get_package_version()
@ -806,6 +800,22 @@ def get_repo_and_check_clean_checkout(
return repo return repo
def check_valid_gh_token(gh_token: Optional[str]) -> None:
"""Check that a github token is valid, if supplied"""
if not gh_token:
# No github token supplied, so nothing to do.
return
try:
gh = Github(gh_token)
# We need to lookup name to trigger a request.
_name = gh.get_user().name
except BadCredentialsException as e:
raise click.ClickException(f"Github credentials are bad: {e}")
def find_ref(repo: git.Repo, ref_name: str) -> Optional[git.HEAD]: def find_ref(repo: git.Repo, ref_name: str) -> Optional[git.HEAD]:
"""Find the branch/ref, looking first locally then in the remote.""" """Find the branch/ref, looking first locally then in the remote."""
if ref_name in repo.references: if ref_name in repo.references: