Skip to content

Commit c76cd12

Browse files
committed
Added time between merge request creation and automerge
1 parent 5c57f2a commit c76cd12

File tree

3 files changed

+64
-16
lines changed

3 files changed

+64
-16
lines changed

developers_chamber/gitlab_utils.py

Lines changed: 20 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
from urllib.parse import quote_plus
22

3+
import time
34
import requests
45
from click import UsageError
56

@@ -24,24 +25,28 @@ def create_merge_request(
2425
if response.status_code != 201:
2526
raise UsageError(f'GitLab error: {response.content.decode("utf-8")}')
2627

27-
message = f"Merge request was successfully created {response.json()['web_url']}"
28-
2928
if automerge:
30-
merge_request_iid = response.json()["iid"]
31-
merge_response = requests.put(
32-
f"{api_url}/projects/{quote_plus(project)}/merge_requests/{merge_request_iid}/merge",
33-
json={"merge_when_pipeline_succeeds": True},
34-
headers={
35-
"PRIVATE-TOKEN": token,
36-
},
37-
)
38-
if merge_response.status_code != 200:
39-
message += f' (Failed to activate auto-merge: {response.content.decode("utf-8")})'
40-
else:
41-
message += " (Automerge activated)"
29+
time.sleep(5)
30+
message = activate_automerge(api_url, token, project, response.json()['iid'])
31+
return f"{response.json()['web_url']} ({message})"
32+
33+
return response.json()['web_url']
4234

43-
return message
4435

36+
def activate_automerge(
37+
api_url, token, project, merge_request_id
38+
):
39+
merge_response = requests.put(
40+
f"{api_url}/projects/{quote_plus(project)}/merge_requests/{merge_request_id}/merge",
41+
json={"merge_when_pipeline_succeeds": True},
42+
headers={
43+
"PRIVATE-TOKEN": token,
44+
},
45+
)
46+
if merge_response.status_code != 200:
47+
raise "Automerge activation failed"
48+
else:
49+
return "Automerge activated"
4550

4651

4752
def run_job(

developers_chamber/scripts/gitlab.py

Lines changed: 43 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@
44

55
from developers_chamber.gitlab_utils import (
66
create_merge_request as create_merge_request_func,
7+
activate_automerge as activate_automerge_func,
78
run_job as run_job_func,
89
)
910
from developers_chamber.scripts import cli
@@ -144,6 +145,48 @@ def create_merge_request(api_url, token, source_branch, target_branch, title, pr
144145

145146
click.echo(f"Merge request was successfully created: {mr_url}")
146147

148+
@gitlab.command()
149+
@click.option(
150+
"--api-url",
151+
help="GitLab instance API URL (defaults to gitlab.com)",
152+
type=str,
153+
required=True,
154+
default=DEFAULT_API_URL,
155+
)
156+
@click.option(
157+
"--token",
158+
help="token (can be set as env variable GITLAB_TOKEN)",
159+
type=str,
160+
required=True,
161+
default=DEFAULT_TOKEN,
162+
)
163+
@click.option(
164+
"--project",
165+
help="GitLab project name (defaults to env variable GITLAB_PROJECT)",
166+
type=str,
167+
required=True,
168+
default=DEFAULT_PROJECT,
169+
)
170+
@click.option(
171+
"--merge-request-id",
172+
help="GitLab merge request ID",
173+
type=str,
174+
required=True,
175+
)
176+
def activate_merge_request_automerge(api_url, token, project, merge_request_id):
177+
"""
178+
Create a new merge request in a GitLab project. It is often used after the project release.
179+
"""
180+
message = activate_automerge_func(
181+
api_url=api_url,
182+
token=token,
183+
project=project,
184+
merge_request_id=merge_request_id
185+
)
186+
187+
click.echo(f"{message}")
188+
189+
147190
@gitlab.command()
148191
@click.option(
149192
"--api-url",

setup.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22

33
setup(
44
name="developers-chamber",
5-
version="0.1.25",
5+
version="0.1.26",
66
description="A small plugin which help with development, deployment, git",
77
keywords="django, skripts, easy live, git, bitbucket, Jira",
88
author="Druids team",

0 commit comments

Comments
 (0)