- 머지 트레인 API 페이지네이션
- 프로젝트의 머지 트레인 디렉터리
- 머지 트레인에 추가된 머지 요청 디렉터리
- 머지 트레인의 머지 요청 상태 가져오기
- Merge Request을 Merge Train에 추가
머지 트레인 API
Tier: Premium, Ultimate
Offering: GitLab.com, Self-Managed, GitLab Dedicated
모든 머지 트레인에 대한 API 호출은 적어도 개발자 역할로 인증되어야 합니다.
사용자가 프로젝트의 구성원이 아니고 프로젝트가 비공개인 경우, 해당 프로젝트에 대한 GET
요청은 404
상태 코드를 반환합니다.
프로젝트에 머지 트레인이 사용 불가능한 경우, 403
상태 코드가 반환됩니다.
머지 트레인 API 페이지네이션
기본적으로 GET
요청은 페이지별 20개의 결과를 반환하며, API 결과는 페이지별로 구성됩니다.
자세한 내용은 페이지네이션을 확인하세요.
프로젝트의 머지 트레인 디렉터리
요청된 프로젝트의 모든 머지 트레인을 가져옵니다:
GET /projects/:id/merge_trains
GET /projects/:id/merge_trains?scope=complete
속성 | 유형 | 필수 | 설명 |
---|---|---|---|
id
| integer/string | 예 | 프로젝트의 ID 또는 URL 인코딩된 경로. |
scope
| string | 아니요 | 주어진 범위로 필터링된 머지 트레인 반환. 사용 가능한 범위는 active (Merge 대기) 및 complete (Merge됨)입니다.
|
sort
| string | 아니요 |
asc 또는 desc 순서로 정렬된 머지 트레인 반환. 기본값: desc .
|
curl --header "PRIVATE-TOKEN: <your_access_token>" "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
| integer/string | 예 | 프로젝트의 ID 또는 URL 인코딩된 경로. |
target_branch
| string | 예 | 머지 트레인의 대상 브랜치. |
scope
| string | 아니요 | 주어진 범위로 필터링된 머지 트레인 반환. 사용 가능한 범위는 active (Merge 대기) 및 complete (Merge됨)입니다.
|
sort
| string | 아니요 |
asc 또는 desc 순서로 정렬된 머지 트레인 반환. 기본값: desc .
|
예시 요청:
curl --request GET --header "PRIVATE-TOKEN: <your_access_token>" "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\u0026d=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
| integer/string | 예 | 프로젝트의 ID 또는 URL 인코딩된 경로. |
merge_request_iid
| integer | 예 | 머지 요청의 내부 ID입니다. |
예시 요청:
curl --request GET --header "PRIVATE-TOKEN: <your_access_token>" "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\u0026d=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
}
Merge Request을 Merge Train에 추가
Merge Request을 Merge Request의 대상 브랜치를 대상으로 하는 Merge Train에 추가합니다.
POST /projects/:id/merge_trains/merge_requests/:merge_request_iid
지원되는 속성:
속성 | 유형 | 필수 여부 | 설명 |
---|---|---|---|
id
| 정수/문자열 | 예 | 프로젝트의 ID 또는 URL 인코딩된 경로. |
merge_request_iid
| 정수 | 예 | Merge Request의 내부 ID. |
sha
| 문자열 | 아니오 | 존재하는 경우 SHA는 소스 브랜치의 HEAD 와 일치해야 하며, 그렇지 않으면 Merge에 실패합니다.
|
squash
| 부울 | 아니오 | 참인 경우 커밋은 Merge 시 하나의 커밋으로 압축됩니다. |
when_pipeline_succeeds
| 부울 | 아니오 | 참인 경우, 파이프라인이 성공할 때 Merge Request이 Merge Train에 추가됩니다. 거짓이거나 지정되지 않은 경우, Merge Request이 직접적으로 Merge Train에 추가됩니다. |
예시 요청:
curl --request POST --header "PRIVATE-TOKEN: <your_access_token>" "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\u0026d=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
}
]