Movatterモバイル変換


[0]ホーム

URL:


Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Commit072eec7

Browse files
committed
feat(api): add merge trains
Add support for merge trains
1 parent5a1678f commit072eec7

File tree

5 files changed

+115
-0
lines changed

5 files changed

+115
-0
lines changed

‎docs/gl_objects/merge_trains.rst

Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,29 @@
1+
############
2+
Merge Trains
3+
############
4+
5+
Reference
6+
---------
7+
8+
* v4 API:
9+
10+
+:class:`gitlab.v4.objects.ProjectMergeTrain`
11+
+:class:`gitlab.v4.objects.ProjectMergeTrainManager`
12+
+:attr:`gitlab.v4.objects.Project.mergetrains`
13+
14+
* GitLab API: https://docs.gitlab.com/ee/api/merge_trains.html
15+
16+
Examples
17+
--------
18+
19+
List merge trains for a project::
20+
21+
merge_trains = project.mergetrains.list()
22+
23+
List active merge trains for a project::
24+
25+
merge_trains = project.mergetrains.list(scope="active")
26+
27+
List completed (have been merged) merge trains for a project::
28+
29+
merge_trains = project.mergetrains.list(scope="complete")

‎gitlab/v4/objects/__init__.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -49,6 +49,7 @@
4949
from .membersimport*
5050
from .merge_request_approvalsimport*
5151
from .merge_requestsimport*
52+
from .merge_trainsimport*
5253
from .milestonesimport*
5354
from .namespacesimport*
5455
from .notesimport*

‎gitlab/v4/objects/merge_trains.py

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
fromgitlab.baseimportRESTManager,RESTObject
2+
fromgitlab.mixinsimportListMixin
3+
4+
__all__= [
5+
"ProjectMergeTrain",
6+
"ProjectMergeTrainManager",
7+
]
8+
9+
10+
classProjectMergeTrain(RESTObject):
11+
pass
12+
13+
14+
classProjectMergeTrainManager(ListMixin,RESTManager):
15+
_path="/projects/%(project_id)s/merge_trains"
16+
_obj_cls=ProjectMergeTrain
17+
_from_parent_attrs= {"project_id":"id"}
18+
_list_filters="scope"

‎gitlab/v4/objects/projects.py

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -42,6 +42,7 @@
4242
ProjectApprovalRuleManager,
4343
)
4444
from .merge_requestsimportProjectMergeRequestManager# noqa: F401
45+
from .merge_trainsimportProjectMergeTrainManager# noqa: F401
4546
from .milestonesimportProjectMilestoneManager# noqa: F401
4647
from .notesimportProjectNoteManager# noqa: F401
4748
from .notification_settingsimportProjectNotificationSettingsManager# noqa: F401
@@ -141,6 +142,7 @@ class Project(RefreshMixin, SaveMixin, ObjectDeleteMixin, RepositoryMixin, RESTO
141142
members:ProjectMemberManager
142143
members_all:ProjectMemberAllManager
143144
mergerequests:ProjectMergeRequestManager
145+
mergetrains:ProjectMergeTrainManager
144146
milestones:ProjectMilestoneManager
145147
notes:ProjectNoteManager
146148
notificationsettings:ProjectNotificationSettingsManager
Lines changed: 65 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,65 @@
1+
"""
2+
GitLab API:
3+
https://docs.gitlab.com/ee/api/merge_trains.html
4+
"""
5+
importpytest
6+
importresponses
7+
8+
fromgitlab.v4.objectsimportProjectMergeTrain
9+
10+
mr_content= {
11+
"id":110,
12+
"merge_request": {
13+
"id":1,
14+
"iid":1,
15+
"project_id":3,
16+
"title":"Test merge train",
17+
"description":"",
18+
"state":"merged",
19+
"created_at":"2020-02-06T08:39:14.883Z",
20+
"updated_at":"2020-02-06T08:40:57.038Z",
21+
"web_url":"http://gitlab.example.com/root/merge-train-race-condition/-/merge_requests/1",
22+
},
23+
"user": {
24+
"id":1,
25+
"name":"Administrator",
26+
"username":"root",
27+
"state":"active",
28+
"avatar_url":"https://www.gravatar.com/avatar/e64c7d89f26bd1972efa854d13d7dd61?s=80&d=identicon",
29+
"web_url":"http://gitlab.example.com/root",
30+
},
31+
"pipeline": {
32+
"id":246,
33+
"sha":"bcc17a8ffd51be1afe45605e714085df28b80b13",
34+
"ref":"refs/merge-requests/1/train",
35+
"status":"success",
36+
"created_at":"2020-02-06T08:40:42.410Z",
37+
"updated_at":"2020-02-06T08:40:46.912Z",
38+
"web_url":"http://gitlab.example.com/root/merge-train-race-condition/pipelines/246",
39+
},
40+
"created_at":"2020-02-06T08:39:47.217Z",
41+
"updated_at":"2020-02-06T08:40:57.720Z",
42+
"target_branch":"feature-1580973432",
43+
"status":"merged",
44+
"merged_at":"2020-02-06T08:40:57.719Z",
45+
"duration":70,
46+
}
47+
48+
49+
@pytest.fixture
50+
defresp_list_merge_trains():
51+
withresponses.RequestsMock()asrsps:
52+
rsps.add(
53+
method=responses.GET,
54+
url="http://localhost/api/v4/projects/1/merge_trains",
55+
json=[mr_content],
56+
content_type="application/json",
57+
status=200,
58+
)
59+
yieldrsps
60+
61+
62+
deftest_list_project_merge_requests(project,resp_list_merge_trains):
63+
merge_trains=project.mergetrains.list()
64+
assertisinstance(merge_trains[0],ProjectMergeTrain)
65+
assertmerge_trains[0].id==mr_content["id"]

0 commit comments

Comments
 (0)

[8]ページ先頭

©2009-2025 Movatter.jp