머지 트레인 API
Offering: GitLab.com, GitLab Self-Managed, GitLab Dedicated
이 API를 사용하여 머지 트레인과 상호작용합니다. 모든 머지 트레인 엔드포인트는 page 및 per_page 매개변수를 사용하는 오프셋 기반 페이지네이션을 지원합니다. 지정된 프로젝트의 모든 머지 트레인을 나열합니다.
이 API를 사용하여 머지 트레인과 상호작용합니다.
사전 조건:
- Developer, Maintainer 또는 Owner 역할이 있어야 합니다.
모든 머지 트레인 엔드포인트는 page 및 per_page 매개변수를 사용하는 오프셋 기반 페이지네이션을 지원합니다.
프로젝트의 모든 머지 트레인 목록 조회#
지정된 프로젝트의 모든 머지 트레인을 나열합니다.
GET /projects/:id/merge_trains
지원되는 속성:
| 속성 | 유형 | 필수 | 설명 |
|---|---|---|---|
id |
정수 또는 문자열 | 예 | 프로젝트의 ID 또는 URL 인코딩된 경로. |
scope |
문자열 | 아니요 | 지정된 범위로 필터링된 머지 트레인 반환. 사용 가능한 범위: active(병합 예정) 및 complete(병합 완료). |
sort |
문자열 | 아니요 | asc 또는 desc 순으로 정렬된 머지 트레인 반환. 기본값: desc. |
성공하면 200 OK와 다음 응답 속성이 반환됩니다:
| 속성 | 유형 | 설명 |
|---|---|---|
created_at |
날짜시간 | 머지 트레인이 생성된 타임스탬프. |
duration |
정수 | 머지 트레인에 소요된 시간(초), 완료되지 않은 경우 null. |
id |
정수 | 머지 트레인의 ID. |
merged_at |
날짜시간 | 머지 리퀘스트가 병합된 타임스탬프, 병합되지 않은 경우 null. |
merge_request |
객체 | 머지 리퀘스트 세부 정보. |
merge_request.created_at |
날짜시간 | 머지 리퀘스트가 생성된 타임스탬프. |
merge_request.description |
문자열 | 머지 리퀘스트의 설명. |
merge_request.id |
정수 | 머지 리퀘스트의 ID. |
merge_request.iid |
정수 | 머지 리퀘스트의 내부 ID. |
merge_request.project_id |
정수 | 머지 리퀘스트를 포함하는 프로젝트의 ID. |
merge_request.state |
문자열 | 머지 리퀘스트의 상태. |
merge_request.title |
문자열 | 머지 리퀘스트의 제목. |
merge_request.updated_at |
날짜시간 | 머지 리퀘스트가 마지막으로 업데이트된 타임스탬프. |
merge_request.web_url |
문자열 | 머지 리퀘스트의 웹 URL. |
pipeline |
객체 | 파이프라인 세부 정보, 연결된 파이프라인이 없으면 null. |
pipeline.created_at |
날짜시간 | 파이프라인이 생성된 타임스탬프. |
pipeline.id |
정수 | 파이프라인의 ID. |
pipeline.iid |
정수 | 파이프라인의 내부 ID. |
pipeline.project_id |
정수 | 파이프라인을 포함하는 프로젝트의 ID. |
pipeline.ref |
문자열 | 파이프라인의 Git 참조. |
pipeline.sha |
문자열 | 파이프라인을 트리거한 커밋의 SHA. |
pipeline.source |
문자열 | 파이프라인 트리거의 소스. |
pipeline.status |
문자열 | 파이프라인의 상태. |
pipeline.updated_at |
날짜시간 | 파이프라인이 마지막으로 업데이트된 타임스탬프. |
pipeline.web_url |
문자열 | 파이프라인의 웹 URL. |
status |
문자열 | 머지 트레인에서 머지 리퀘스트의 상태. 활성 머지 트레인에 가능한 값: idle, fresh, stale. 완료된 머지 트레인에 가능한 값: merging, merged, skip_merged. |
target_branch |
문자열 | 대상 브랜치의 이름. |
updated_at |
날짜시간 | 머지 트레인이 마지막으로 업데이트된 타임스탬프. |
user |
객체 | 머지 트레인에 머지 리퀘스트를 추가한 사용자. |
user.avatar_url |
문자열 | 사용자의 아바타 URL. |
user.id |
정수 | 사용자의 ID. |
user.name |
문자열 | 사용자의 이름. |
user.state |
문자열 | 사용자 계정의 상태. |
user.username |
문자열 | 사용자의 사용자명. |
user.web_url |
문자열 | 사용자 프로필의 웹 URL. |
요청 예시:
curl --header "PRIVATE-TOKEN: <your_access_token>" \
--url "https://gitlab.example.com/api/v4/projects/1/merge_trains"
응답 예시:
[
{
"id": 110,
"merge_request": {
"id": 126,
"iid": 59,
"project_id": 20,
"title": "Test MR 1580978354",
"description": "",
"state": "merged",
"created_at": "2020-02-06T08:39:14.883Z",
"updated_at": "2020-02-06T08:40:57.038Z",
"web_url": "http://local.gitlab.test:8181/root/merge-train-race-condition/-/merge_requests/59"
},
"user": {
"id": 1,
"name": "Administrator",
"username": "root",
"state": "active",
"avatar_url": "https://www.gravatar.com/avatar/e64c7d89f26bd1972efa854d13d7dd61?s=80&d=identicon",
"web_url": "http://local.gitlab.test:8181/root"
},
"pipeline": {
"id": 246,
"sha": "bcc17a8ffd51be1afe45605e714085df28b80b13",
"ref": "refs/merge-requests/59/train",
"status": "success",
"created_at": "2020-02-06T08:40:42.410Z",
"updated_at": "2020-02-06T08:40:46.912Z",
"web_url": "http://local.gitlab.test:8181/root/merge-train-race-condition/pipelines/246"
},
"created_at": "2020-02-06T08:39:47.217Z",
"updated_at": "2020-02-06T08:40:57.720Z",
"target_branch": "feature-1580973432",
"status": "merged",
"merged_at": "2020-02-06T08:40:57.719Z",
"duration": 70
}
]
머지 트레인의 모든 머지 리퀘스트 목록 조회#
대상 브랜치의 머지 트레인에 있는 모든 머지 리퀘스트를 나열합니다.
GET /projects/:id/merge_trains/:target_branch
지원되는 속성:
| 속성 | 유형 | 필수 | 설명 |
|---|---|---|---|
id |
정수 또는 문자열 | 예 | 프로젝트의 ID 또는 URL 인코딩된 경로. |
target_branch |
문자열 | 예 | 머지 트레인의 대상 브랜치. |
scope |
문자열 | 아니요 | 지정된 범위로 필터링된 머지 트레인 반환. 사용 가능한 범위: active(병합 예정) 및 complete(병합 완료). |
sort |
문자열 | 아니요 | asc 또는 desc 순으로 정렬된 머지 트레인 반환. 기본값: desc. |
성공하면 200 OK와 다음 응답 속성이 반환됩니다:
| 속성 | 유형 | 설명 |
|---|---|---|
created_at |
날짜시간 | 머지 트레인이 생성된 타임스탬프. |
duration |
정수 | 머지 트레인에 소요된 시간(초), 완료되지 않은 경우 null. |
id |
정수 | 머지 트레인의 ID. |
merged_at |
날짜시간 | 머지 리퀘스트가 병합된 타임스탬프, 병합되지 않은 경우 null. |
merge_request |
객체 | 머지 리퀘스트 세부 정보. |
merge_request.created_at |
날짜시간 | 머지 리퀘스트가 생성된 타임스탬프. |
merge_request.description |
문자열 | 머지 리퀘스트의 설명. |
merge_request.id |
정수 | 머지 리퀘스트의 ID. |
merge_request.iid |
정수 | 머지 리퀘스트의 내부 ID. |
merge_request.project_id |
정수 | 머지 리퀘스트를 포함하는 프로젝트의 ID. |
merge_request.state |
문자열 | 머지 리퀘스트의 상태. |
merge_request.title |
문자열 | 머지 리퀘스트의 제목. |
merge_request.updated_at |
날짜시간 | 머지 리퀘스트가 마지막으로 업데이트된 타임스탬프. |
merge_request.web_url |
문자열 | 머지 리퀘스트의 웹 URL. |
pipeline |
객체 | 파이프라인 세부 정보, 연결된 파이프라인이 없으면 null. |
pipeline.created_at |
날짜시간 | 파이프라인이 생성된 타임스탬프. |
pipeline.id |
정수 | 파이프라인의 ID. |
pipeline.iid |
정수 | 파이프라인의 내부 ID. |
pipeline.project_id |
정수 | 파이프라인을 포함하는 프로젝트의 ID. |
pipeline.ref |
문자열 | 파이프라인의 Git 참조. |
pipeline.sha |
문자열 | 파이프라인을 트리거한 커밋의 SHA. |
pipeline.source |
문자열 | 파이프라인 트리거의 소스. |
pipeline.status |
문자열 | 파이프라인의 상태. |
pipeline.updated_at |
날짜시간 | 파이프라인이 마지막으로 업데이트된 타임스탬프. |
pipeline.web_url |
문자열 | 파이프라인의 웹 URL. |
status |
문자열 | 머지 트레인에서 머지 리퀘스트의 상태. 활성 머지 트레인에 가능한 값: idle, fresh, stale. 완료된 머지 트레인에 가능한 값: merging, merged, skip_merged. |
target_branch |
문자열 | 대상 브랜치의 이름. |
updated_at |
날짜시간 | 머지 트레인이 마지막으로 업데이트된 타임스탬프. |
user |
객체 | 머지 트레인에 머지 리퀘스트를 추가한 사용자. |
user.avatar_url |
문자열 | 사용자의 아바타 URL. |
user.id |
정수 | 사용자의 ID. |
user.name |
문자열 | 사용자의 이름. |
user.state |
문자열 | 사용자 계정의 상태. |
user.username |
문자열 | 사용자의 사용자명. |
user.web_url |
문자열 | 사용자 프로필의 웹 URL. |
요청 예시:
curl --header "PRIVATE-TOKEN: <your_access_token>" \
--url "https://gitlab.example.com/api/v4/projects/597/merge_trains/main"
응답 예시:
[
{
"id": 267,
"merge_request": {
"id": 273,
"iid": 1,
"project_id": 597,
"title": "My title 9",
"description": null,
"state": "opened",
"created_at": "2022-10-31T19:06:05.725Z",
"updated_at": "2022-10-31T19:06:05.725Z",
"web_url": "http://localhost/namespace18/project21/-/merge_requests/1"
},
"user": {
"id": 933,
"username": "user12",
"name": "Sidney Jones31",
"state": "active",
"avatar_url": "https://www.gravatar.com/avatar/6c8365de387cb3db10ecc7b1880203c4?s=80&d=identicon",
"web_url": "http://localhost/user12"
},
"pipeline": {
"id": 273,
"iid": 1,
"project_id": 598,
"sha": "b83d6e391c22777fca1ed3012fce84f633d7fed0",
"ref": "main",
"status": "pending",
"source": "push",
"created_at": "2022-10-31T19:06:06.231Z",
"updated_at": "2022-10-31T19:06:06.231Z",
"web_url": "http://localhost/namespace19/project22/-/pipelines/273"
},
"created_at": "2022-10-31T19:06:06.237Z",
"updated_at": "2022-10-31T19:06:06.237Z",
"target_branch": "main",
"status": "idle",
"merged_at": null,
"duration": null
}
]
머지 트레인 상태 조회#
지정된 머지 리퀘스트의 머지 트레인 상태를 조회합니다.
GET /projects/:id/merge_trains/merge_requests/:merge_request_iid
지원되는 속성:
| 속성 | 유형 | 필수 | 설명 |
|---|---|---|---|
id |
정수 또는 문자열 | 예 | 프로젝트의 ID 또는 URL 인코딩된 경로. |
merge_request_iid |
정수 | 예 | 머지 리퀘스트의 내부 ID. |
성공하면 200 OK와 다음 응답 속성이 반환됩니다:
| 속성 | 유형 | 설명 |
|---|---|---|
created_at |
날짜시간 | 머지 트레인이 생성된 타임스탬프. |
duration |
정수 | 머지 트레인에 소요된 시간(초), 완료되지 않은 경우 null. |
id |
정수 | 머지 트레인의 ID. |
merged_at |
날짜시간 | 머지 리퀘스트가 병합된 타임스탬프, 병합되지 않은 경우 null. |
merge_request |
객체 | 머지 리퀘스트 세부 정보. |
merge_request.created_at |
날짜시간 | 머지 리퀘스트가 생성된 타임스탬프. |
merge_request.description |
문자열 | 머지 리퀘스트의 설명. |
merge_request.id |
정수 | 머지 리퀘스트의 ID. |
merge_request.iid |
정수 | 머지 리퀘스트의 내부 ID. |
merge_request.project_id |
정수 | 머지 리퀘스트를 포함하는 프로젝트의 ID. |
merge_request.state |
문자열 | 머지 리퀘스트의 상태. |
merge_request.title |
문자열 | 머지 리퀘스트의 제목. |
merge_request.updated_at |
날짜시간 | 머지 리퀘스트가 마지막으로 업데이트된 타임스탬프. |
merge_request.web_url |
문자열 | 머지 리퀘스트의 웹 URL. |
pipeline |
객체 | 파이프라인 세부 정보, 연결된 파이프라인이 없으면 null. |
pipeline.created_at |
날짜시간 | 파이프라인이 생성된 타임스탬프. |
pipeline.id |
정수 | 파이프라인의 ID. |
pipeline.iid |
정수 | 파이프라인의 내부 ID. |
pipeline.project_id |
정수 | 파이프라인을 포함하는 프로젝트의 ID. |
pipeline.ref |
문자열 | 파이프라인의 Git 참조. |
pipeline.sha |
문자열 | 파이프라인을 트리거한 커밋의 SHA. |
pipeline.source |
문자열 | 파이프라인 트리거의 소스. |
pipeline.status |
문자열 | 파이프라인의 상태. |
pipeline.updated_at |
날짜시간 | 파이프라인이 마지막으로 업데이트된 타임스탬프. |
pipeline.web_url |
문자열 | 파이프라인의 웹 URL. |
status |
문자열 | 머지 트레인에서 머지 리퀘스트의 상태. 활성 머지 트레인에 가능한 값: idle, fresh, stale. 완료된 머지 트레인에 가능한 값: merging, merged, skip_merged. |
target_branch |
문자열 | 대상 브랜치의 이름. |
updated_at |
날짜시간 | 머지 트레인이 마지막으로 업데이트된 타임스탬프. |
user |
객체 | 머지 트레인에 머지 리퀘스트를 추가한 사용자. |
user.avatar_url |
문자열 | 사용자의 아바타 URL. |
user.id |
정수 | 사용자의 ID. |
user.name |
문자열 | 사용자의 이름. |
user.state |
문자열 | 사용자 계정의 상태. |
user.username |
문자열 | 사용자의 사용자명. |
user.web_url |
문자열 | 사용자 프로필의 웹 URL. |
요청 예시:
curl --header "PRIVATE-TOKEN: <your_access_token>" \
--url "https://gitlab.example.com/api/v4/projects/597/merge_trains/merge_requests/1"
응답 예시:
{
"id": 267,
"merge_request": {
"id": 273,
"iid": 1,
"project_id": 597,
"title": "My title 9",
"description": null,
"state": "opened",
"created_at": "2022-10-31T19:06:05.725Z",
"updated_at": "2022-10-31T19:06:05.725Z",
"web_url": "http://localhost/namespace18/project21/-/merge_requests/1"
},
"user": {
"id": 933,
"username": "user12",
"name": "Sidney Jones31",
"state": "active",
"avatar_url": "https://www.gravatar.com/avatar/6c8365de387cb3db10ecc7b1880203c4?s=80&d=identicon",
"web_url": "http://localhost/user12"
},
"pipeline": {
"id": 273,
"iid": 1,
"project_id": 598,
"sha": "b83d6e391c22777fca1ed3012fce84f633d7fed0",
"ref": "main",
"status": "pending",
"source": "push",
"created_at": "2022-10-31T19:06:06.231Z",
"updated_at": "2022-10-31T19:06:06.231Z",
"web_url": "http://localhost/namespace19/project22/-/pipelines/273"
},
"created_at": "2022-10-31T19:06:06.237Z",
"updated_at": "2022-10-31T19:06:06.237Z",
"target_branch": "main",
"status": "idle",
"merged_at": null,
"duration": null
}
머지 트레인에 머지 리퀘스트 추가#
지정된 머지 리퀘스트를 머지 트레인에 추가합니다.
POST /projects/:id/merge_trains/merge_requests/:merge_request_iid
지원되는 속성:
| 속성 | 유형 | 필수 | 설명 |
|---|---|---|---|
id |
정수 또는 문자열 | 예 | 프로젝트의 ID 또는 URL 인코딩된 경로. |
merge_request_iid |
정수 | 예 | 머지 리퀘스트의 내부 ID. |
auto_merge |
불리언 | 아니요 | true이면 검사가 통과할 때 머지 리퀘스트가 머지 트레인에 추가됩니다. false이거나 지정되지 않으면 머지 리퀘스트가 직접 머지 트레인에 추가됩니다. |
sha |
문자열 | 아니요 | 지정된 경우 SHA가 소스 브랜치의 HEAD와 일치해야 하며, 그렇지 않으면 병합이 실패합니다. |
squash |
불리언 | 아니요 | true이면 병합 시 커밋이 단일 커밋으로 스쿼시됩니다. |
when_pipeline_succeeds |
불리언 | 아니요 | GitLab 17.11에서 더 이상 사용되지 않음. 대신 auto_merge를 사용하세요. |
성공하면 다음을 반환합니다:
201 Created- 머지 리퀘스트가 즉시 머지 트레인에 추가된 경우.202 Accepted- 머지 리퀘스트가 머지 트레인에 추가되도록 예약된 경우.
다음 응답 속성이 반환됩니다:
| 속성 | 유형 | 설명 |
|---|---|---|
created_at |
날짜시간 | 머지 트레인이 생성된 타임스탬프. |
duration |
정수 | 머지 트레인에 소요된 시간(초), 완료되지 않은 경우 null. |
id |
정수 | 머지 트레인의 ID. |
merged_at |
날짜시간 | 머지 리퀘스트가 병합된 타임스탬프, 병합되지 않은 경우 null. |
merge_request |
객체 | 머지 리퀘스트 세부 정보. |
merge_request.created_at |
날짜시간 | 머지 리퀘스트가 생성된 타임스탬프. |
merge_request.description |
문자열 | 머지 리퀘스트의 설명. |
merge_request.id |
정수 | 머지 리퀘스트의 ID. |
merge_request.iid |
정수 | 머지 리퀘스트의 내부 ID. |
merge_request.project_id |
정수 | 머지 리퀘스트를 포함하는 프로젝트의 ID. |
merge_request.state |
문자열 | 머지 리퀘스트의 상태. |
merge_request.title |
문자열 | 머지 리퀘스트의 제목. |
merge_request.updated_at |
날짜시간 | 머지 리퀘스트가 마지막으로 업데이트된 타임스탬프. |
merge_request.web_url |
문자열 | 머지 리퀘스트의 웹 URL. |
pipeline |
객체 | 파이프라인 세부 정보, 연결된 파이프라인이 없으면 null. |
pipeline.created_at |
날짜시간 | 파이프라인이 생성된 타임스탬프. |
pipeline.id |
정수 | 파이프라인의 ID. |
pipeline.iid |
정수 | 파이프라인의 내부 ID. |
pipeline.project_id |
정수 | 파이프라인을 포함하는 프로젝트의 ID. |
pipeline.ref |
문자열 | 파이프라인의 Git 참조. |
pipeline.sha |
문자열 | 파이프라인을 트리거한 커밋의 SHA. |
pipeline.source |
문자열 | 파이프라인 트리거의 소스. |
pipeline.status |
문자열 | 파이프라인의 상태. |
pipeline.updated_at |
날짜시간 | 파이프라인이 마지막으로 업데이트된 타임스탬프. |
pipeline.web_url |
문자열 | 파이프라인의 웹 URL. |
status |
문자열 | 머지 트레인에서 머지 리퀘스트의 상태. 활성 머지 트레인에 가능한 값: idle, fresh, stale. 완료된 머지 트레인에 가능한 값: merging, merged, skip_merged. |
target_branch |
문자열 | 대상 브랜치의 이름. |
updated_at |
날짜시간 | 머지 트레인이 마지막으로 업데이트된 타임스탬프. |
user |
객체 | 머지 트레인에 머지 리퀘스트를 추가한 사용자. |
user.avatar_url |
문자열 | 사용자의 아바타 URL. |
user.id |
정수 | 사용자의 ID. |
user.name |
문자열 | 사용자의 이름. |
user.state |
문자열 | 사용자 계정의 상태. |
user.username |
문자열 | 사용자의 사용자명. |
user.web_url |
문자열 | 사용자 프로필의 웹 URL. |
요청 예시:
curl --request POST \
--header "PRIVATE-TOKEN: <your_access_token>" \
--url "https://gitlab.example.com/api/v4/projects/597/merge_trains/merge_requests/1"
응답 예시:
[
{
"id": 267,
"merge_request": {
"id": 273,
"iid": 1,
"project_id": 597,
"title": "My title 9",
"description": null,
"state": "opened",
"created_at": "2022-10-31T19:06:05.725Z",
"updated_at": "2022-10-31T19:06:05.725Z",
"web_url": "http://localhost/namespace18/project21/-/merge_requests/1"
},
"user": {
"id": 933,
"username": "user12",
"name": "Sidney Jones31",
"state": "active",
"avatar_url": "https://www.gravatar.com/avatar/6c8365de387cb3db10ecc7b1880203c4?s=80&d=identicon",
"web_url": "http://localhost/user12"
},
"pipeline": {
"id": 273,
"iid": 1,
"project_id": 598,
"sha": "b83d6e391c22777fca1ed3012fce84f633d7fed0",
"ref": "main",
"status": "pending",
"source": "push",
"created_at": "2022-10-31T19:06:06.231Z",
"updated_at": "2022-10-31T19:06:06.231Z",
"web_url": "http://localhost/namespace19/project22/-/pipelines/273"
},
"created_at": "2022-10-31T19:06:06.237Z",
"updated_at": "2022-10-31T19:06:06.237Z",
"target_branch": "main",
"status": "idle",
"merged_at": null,
"duration": null
}
]
