|
1 | | -from typing import Any, Dict, Optional, Literal |
| 1 | +from typing import Any, List, Dict, Optional, Literal |
2 | 2 | import logging |
3 | 3 | import time |
4 | 4 | import requests |
@@ -59,16 +59,21 @@ def create_pull_request( |
59 | 59 | ) |
60 | 60 | return GitRepoApi.PullRequestIdAndUrl(pr_id=merge_request.iid, url=merge_request.web_url) |
61 | 61 |
|
62 | | - def merge_pull_request(self, pr_id: int, merge_method: Literal["squash", "rebase", "merge"] = "merge") -> None: |
| 62 | + def merge_pull_request( |
| 63 | + self, |
| 64 | + pr_id: int, |
| 65 | + merge_method: Literal["squash", "rebase", "merge"] = "merge", |
| 66 | + merge_parameters: Dict[str, Any] = None, |
| 67 | + ) -> None: |
63 | 68 | merge_request = self.__project.mergerequests.get(pr_id) |
64 | 69 |
|
65 | 70 | max_retries = MAX_MERGE_RETRIES |
66 | 71 | while max_retries > 0: |
67 | 72 | try: |
68 | 73 | if merge_method == "rebase": |
69 | | - merge_request.rebase() |
| 74 | + merge_request.rebase(merge_parameters) |
70 | 75 | return |
71 | | - merge_request.merge() |
| 76 | + merge_request.merge(merge_parameters) |
72 | 77 | return |
73 | 78 | except gitlab.exceptions.GitlabMRClosedError as ex: |
74 | 79 | # "Branch cannot be merged" error can occur if the server |
@@ -103,34 +108,7 @@ def __get_default_branch(self) -> str: |
103 | 108 | raise GitOpsException("Default branch does not exist") |
104 | 109 | return str(default_branch.name) |
105 | 110 |
|
106 | | - def add_pull_request_label(self, pr_id: int, pr_labels: Dict[str, Any]) -> None: |
| 111 | + def add_pull_request_label(self, pr_id: int, pr_labels: List[str]) -> None: |
107 | 112 | merge_request = self.__project.mergerequests.get(pr_id) |
108 | 113 | merge_request.labels = pr_labels |
109 | 114 | merge_request.save() |
110 | | - |
111 | | - def merge_pull_request_with_parameters( |
112 | | - self, |
113 | | - pr_id: int, |
114 | | - gitlab_merge_parameters: Dict[str, Any], |
115 | | - merge_method: Literal["squash", "rebase", "merge"] = "merge", |
116 | | - ) -> None: |
117 | | - merge_request = self.__project.mergerequests.get(pr_id) |
118 | | - |
119 | | - max_retries = MAX_MERGE_RETRIES |
120 | | - while max_retries > 0: |
121 | | - try: |
122 | | - if merge_method == "rebase": |
123 | | - merge_request.rebase(gitlab_merge_parameters) |
124 | | - return |
125 | | - merge_request.merge(gitlab_merge_parameters) |
126 | | - return |
127 | | - except gitlab.exceptions.GitlabMRClosedError as ex: |
128 | | - # "Branch cannot be merged" error can occur if the server |
129 | | - # is still processing the merge request internally |
130 | | - max_retries -= 1 |
131 | | - logging.warning( |
132 | | - "Retry merging pull request. Attempts: (%s/%s)", MAX_MERGE_RETRIES - max_retries, MAX_MERGE_RETRIES |
133 | | - ) |
134 | | - if max_retries == 0: |
135 | | - raise GitOpsException("Error merging pull request: 'Branch cannot be merged'") from ex |
136 | | - time.sleep(2.5) |
0 commit comments