From 3144cf5f91170abf9b3110120b36174243519b9a Mon Sep 17 00:00:00 2001 From: Sebastien Date: Thu, 24 Nov 2022 09:07:35 -0500 Subject: [PATCH] Change auth methods for pushing --- Dockerfile | 1 + docker/build_tools.py | 25 ++++++++++++++++--------- 2 files changed, 17 insertions(+), 9 deletions(-) diff --git a/Dockerfile b/Dockerfile index 756c6cbd..91763ad8 100644 --- a/Dockerfile +++ b/Dockerfile @@ -90,6 +90,7 @@ RUN : \ && pip show pygit2 \ && python --version \ && pip --version \ + && pip3 install protobuf grpcio-tools \ && rm -rf $IDF_TOOLS_PATH/dist \ && : diff --git a/docker/build_tools.py b/docker/build_tools.py index 29c78f9a..77d9c4e4 100644 --- a/docker/build_tools.py +++ b/docker/build_tools.py @@ -517,7 +517,7 @@ class Releases(): print(f'Opening repository from {path}') cls.repo = Repository(path=path) except GitError as ex: - print_error(f"Unable to access the repository.\nContent of {path}:\n{NEWLINE_CHAR.join(get_file_list(path, 1))}") + print_error(f"Unable to access the repository({ex}).\nContent of {path}:\n{NEWLINE_CHAR.join(get_file_list(path, 1))}") raise return cls.repo @@ -844,6 +844,14 @@ def get_changed_items(repo: Repository) -> Dict: def is_dirty(repo: Repository) -> bool: return len(get_changed_items(repo)) > 0 +def push_with_method(auth_method:str,token:str,remote: Remote,reference): + success:bool = False + try: + remote.push(reference, callbacks=RemoteCallbacks(pygit2.UserPass(auth_method, token))) + success=True + except Exception as ex: + print_error(f'Error pushing with auth method {auth_method}: {ex}.') + return success def push_if_change(repo: Repository, token: str, source_path: str, manif_json): if is_dirty(repo): @@ -861,15 +869,14 @@ def push_if_change(repo: Repository, token: str, source_path: str, manif_json): origin: Remote = repo.remotes['origin'] print( f'Pushing commit {format_commit(repo[commit])} to url {origin.url}') - credentials = UserPass(token, 'x-oauth-basic') # passing credentials remote: Remote = repo.remotes['origin'] - # remote.credentials = credentials - auth_method = 'x-access-token' - remote.push([reference], callbacks=RemoteCallbacks( - pygit2.UserPass(auth_method, token))) - print( - f'::notice Web installer updated for {format_artifact_from_manifest(manif_json)}') - + auth_methods = ['x-access-token','x-oauth-basic'] + for method in auth_methods: + if push_with_method('x-access-token', token, remote, [reference]): + print(f'::notice Web installer updated for {format_artifact_from_manifest(manif_json)}') + return + + raise Exception('Unable to push web installer changes to installer repo') else: print(f'WARNING: No change found. Skipping update')