From d961123828b2e521bcaf618bef142f274dc104bd Mon Sep 17 00:00:00 2001 From: Tim Jaacks <tim.jaacks@garz-fricke.com> Date: Mon, 21 Dec 2020 16:05:37 +0100 Subject: [PATCH] Always retry transient errors --- accept_merge_request.py | 8 ++++++-- check_pipeline_status.py | 4 ++-- common.py | 3 ++- integrate_into_manifest.py | 4 +++- merge_into_manifest.py | 4 ++-- retrigger_mr_pipeline.py | 2 +- 6 files changed, 16 insertions(+), 9 deletions(-) diff --git a/accept_merge_request.py b/accept_merge_request.py index 878c8a07..75ad1b09 100755 --- a/accept_merge_request.py +++ b/accept_merge_request.py @@ -27,7 +27,9 @@ def accept_merge_request(project, mr, rebase=False): # Update merge request before trying to merge it in order to get the latest # pipeline status try: - updated_mr = project.mergerequests.get(id=mr.iid) + updated_mr = project.mergerequests.get( + id=mr.iid, retry_transient_errors=True + ) mr = updated_mr except GitlabGetError as e: print("WARNING: Could not update merge request object: %s" % e) @@ -129,7 +131,9 @@ def main(): project = common.get_project(gitlab, args.project) try: - merge_request = project.mergerequests.get(id=args.merge_request) + merge_request = project.mergerequests.get( + id=args.merge_request, retry_transient_errors=True + ) except GitlabGetError as e: sys.exit("Could not get merge request: %s" % e) diff --git a/check_pipeline_status.py b/check_pipeline_status.py index 3ddfa12e..e6274954 100755 --- a/check_pipeline_status.py +++ b/check_pipeline_status.py @@ -11,7 +11,7 @@ def check_pipeline_status(project, commit): """Get latest pipeline status for a given commit""" # Find pipeline for commit - pipelines = project.pipelines.list(sha=commit) + pipelines = project.pipelines.list(sha=commit, retry_transient_errors=True) if not pipelines: print("ERROR: no pipeline for commit '%s' found" % commit) sys.exit(1) @@ -23,7 +23,7 @@ def check_pipeline_status(project, commit): while pipeline.status not in terminated_states: print(".", end="", flush=True) time.sleep(1) - pipeline = project.pipelines.get(pipeline.id) + pipeline = project.pipelines.get(pipeline.id, retry_transient_errors=True) print("") print("Result: %s" % pipeline.status) diff --git a/common.py b/common.py index 59934279..10b23fe7 100755 --- a/common.py +++ b/common.py @@ -43,7 +43,7 @@ def get_project(gitlab, project_name): def get_latest_commit(project, branch_name): """Get latest commit on a given project branch""" try: - branch = project.branches.get(branch_name) + branch = project.branches.get(branch_name, retry_transient_errors=True) except GitlabGetError as e: sys.exit( "ERROR: could not get branch '%s' for project '%s': %s" @@ -72,6 +72,7 @@ def rebase_merge_request(project, merge_request): updated_merge_request = project.mergerequests.get( id=merge_request.iid, query_parameters={"include_rebase_in_progress": "True"}, + retry_transient_errors=True, ) except GitlabGetError as e: merge_request.merge_error = "Could not get updated merge request: %s" % e diff --git a/integrate_into_manifest.py b/integrate_into_manifest.py index 69992332..5568f375 100755 --- a/integrate_into_manifest.py +++ b/integrate_into_manifest.py @@ -160,7 +160,9 @@ def main(): manifest_project = common.get_project(gitlab, args.manifest_project) project = common.get_project(gitlab, args.project) try: - merge_request = project.mergerequests.get(args.merge_request) + merge_request = project.mergerequests.get( + args.merge_request, retry_transient_errors=True + ) except GitlabGetError as e: sys.exit( "ERROR: could not get %s!%s: %s" diff --git a/merge_into_manifest.py b/merge_into_manifest.py index edf0330c..1d608e1c 100755 --- a/merge_into_manifest.py +++ b/merge_into_manifest.py @@ -51,11 +51,11 @@ def merge_into_manifest(manifest_project, master_branch, project, commit): # Check if branches exist try: - manifest_project.branches.get(integration_branch) + manifest_project.branches.get(integration_branch, retry_transient_errors=True) except GitlabGetError: sys.exit("ERROR: source branch '%s' does not exist." % integration_branch) try: - manifest_project.branches.get(target_branch) + manifest_project.branches.get(target_branch, retry_transient_errors=True) except GitlabGetError: sys.exit("ERROR: target branch '%s' does not exist." % target_branch) diff --git a/retrigger_mr_pipeline.py b/retrigger_mr_pipeline.py index ebfd67b5..c46dc608 100755 --- a/retrigger_mr_pipeline.py +++ b/retrigger_mr_pipeline.py @@ -59,7 +59,7 @@ def main(): gitlab = Gitlab(args.gitlab_url, private_token=args.token) project = common.get_project(gitlab, args.project) try: - mr = project.mergerequests.get(args.iid) + mr = project.mergerequests.get(args.iid, retry_transient_errors=True) except GitlabGetError as e: sys.exit( "ERROR: could not get merge request %s:!%s: %s" -- GitLab