- Merge Train API 페이지네이션
- 프로젝트에 대한 Merge Train 디렉터리
- Merge Train의 Merge Request 디렉터리
- 머지 트레인에서 Merge Request 상태 가져오기
- 머지 트레인에 Merge Request 추가하기
Merge Train API
Tier: Premium, Ultimate
Offering: GitLab.com, Self-managed, GitLab Dedicated
Merge Train에 대한 모든 API 호출은 적어도 개발자 역할로 인증되어야 합니다.
프로젝트 멤버가 아니고 프로젝트가 비공개인 경우, 해당 프로젝트에 대한 GET
요청은 404
상태 코드를 반환합니다.
프로젝트에 대해 Merge Train을 사용할 수 없는 경우, 403
상태 코드가 반환됩니다.
Merge Train API 페이지네이션
기본적으로 GET
요청은 페이지네이션된 API 결과로 인해 한 번에 20개의 결과를 반환합니다.
페이지네이션에 대해 자세히 알아보세요.
프로젝트에 대한 Merge Train 디렉터리
요청된 프로젝트의 모든 Merge Train을 가져옵니다:
GET /projects/:id/merge_trains
GET /projects/:id/merge_trains?scope=complete
속성 | 유형 | 필수 | 설명 |
---|---|---|---|
id
| integer/string | Yes | 프로젝트의 ID 또는 URL 인코딩된 경로 |
scope
| string | No | 주어진 범위로 필터링된 Merge Train을 반환합니다. 사용 가능한 범위는 active (Merge 예정) 및 complete (Merge 완료)입니다.
|
sort
| string | No |
asc 또는 desc 순서로 정렬된 Merge Train을 반환합니다. 기본값: 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
}
]
Merge Train의 Merge Request 디렉터리
요청된 대상 브랜치에 추가된 모든 Merge Request을 가져옵니다.
GET /projects/:id/merge_trains/:target_branch
지원되는 속성:
속성 | 유형 | 필수 | 설명 |
---|---|---|---|
id
| integer/string | Yes | 프로젝트의 ID 또는 URL 인코딩된 경로 |
target_branch
| string | Yes | Merge Train의 대상 브랜치 |
scope
| string | No | 주어진 범위로 필터링된 Merge Train을 반환합니다. 사용 가능한 범위는 active (Merge 예정) 및 complete (Merge 완료)입니다.
|
sort
| string | No |
asc 또는 desc 순서로 정렬된 Merge Train을 반환합니다. 기본값: 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
}
]
머지 트레인에서 Merge Request 상태 가져오기
요청된 Merge Request에 대한 머지 트레인 정보를 가져옵니다.
GET /projects/:id/merge_trains/merge_requests/:merge_request_iid
지원되는 속성:
속성 | 타입 | 필수 | 설명 |
---|---|---|---|
id
| integer/string | Yes | 프로젝트의 ID 또는 URL-encoded path. |
merge_request_iid
| integer | Yes | Merge Request의 내부 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 Request을 Merge Train에 추가하여 Merge Request의 대상 브랜치를 대상으로합니다.
POST /projects/:id/merge_trains/merge_requests/:merge_request_iid
지원되는 속성:
속성 | 타입 | 필수 | 설명 |
---|---|---|---|
id
| integer/string | Yes | 프로젝트의 ID 또는 URL-encoded path. |
merge_request_iid
| integer | Yes | Merge Request의 내부 ID. |
sha
| string | No | 지정된 경우 SHA 는 소스 브랜치의 HEAD 와 일치해야하며 그렇지 않으면 Merge에 실패합니다.
|
squash
| boolean | No | true 인 경우 커밋은 Merge 시 하나의 커밋으로 통합됩니다. |
when_pipeline_succeeds
| boolean | No | true 인 경우 파이프라인이 성공하면 Merge Request이 Merge Train에 추가됩니다. false 또는 지정되지 않은 경우 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
}
]