머지 트레인 API

Tier: 프리미엄, 얼티밋 Offering: GitLab.com, 셀프매니지드, GitLab Dedicated

머지 트레인에 대한 모든 API 호출은 적어도 개발자 역할로 인증되어야 합니다.

사용자가 특정 프로젝트의 멤버가 아니고 해당 프로젝트가 비공개인 경우 GET 요청은 404 상태 코드를 반환합니다.

프로젝트에 머지 트레인이 사용 불가능한 경우 403 상태 코드가 반환됩니다.

머지 트레인 API 페이지네이션

기본적으로 GET 요청은 페이지네이션된 API 결과로 인해 한 번에 20개의 결과를 반환합니다.

페이지네이션에 대해 자세히 알아보세요.

프로젝트의 머지 트레인 목록

요청된 프로젝트의 모든 머지 트레인을 가져옵니다:

GET /projects/:id/merge_trains
GET /projects/:id/merge_trains?scope=complete
속성 타입 필수 설명
id integer/string Yes 프로젝트의 ID 또는 URL 인코딩된 경로.
scope string No 주어진 범위로 필터링된 머지 트레인을 반환합니다. 사용 가능한 범위는 active(병합 예정) 및 complete(병합됨)입니다.
sort string No 머지 트레인을 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 Yes 프로젝트의 ID 또는 URL 인코딩된 경로.
target_branch string Yes 머지 트레인의 대상 브랜치입니다.
scope string No 주어진 범위로 필터링된 머지 트레인을 반환합니다. 사용 가능한 범위는 active(병합 예정) 및 complete(병합됨)입니다.
sort string No 머지 트레인을 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": "내 제목 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
}

병합 요청을 병합 트레인에 추가하기

병합 요청을 병합 트레인에 추가하여 병합 요청의 대상 브랜치를 지정합니다.

POST /projects/:id/merge_trains/merge_requests/:merge_request_iid

지원되는 속성:

속성 유형 필수 설명
id integer/string 프로젝트의 ID 또는 URL 인코딩된 경로
merge_request_iid integer 병합 요청의 내부 ID
sha string 아니오 존재하는 경우, SHA는 소스 브랜치의 HEAD와 일치해야 하며, 그렇지 않으면 병합에 실패합니다.
squash 부울 (boolean) 아니오 true이면, 커밋은 병합 시에 단일 커밋으로 압축됩니다.
when_pipeline_succeeds 부울 (boolean) 아니오 true이면, 파이프라인이 성공할 때 병합 요청이 병합 트레인에 추가됩니다. false이거나 지정되지 않으면, 병합 요청이 직접적으로 병합 트레인에 추가됩니다.

예시 요청:

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": "내 제목 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
  }
]