和并列车 API

  • Tier: 专业版,旗舰版
  • Offering: JihuLab.com, 私有化部署

每个 合并列车 的 API 调用必须至少具有开发者 角色 的身份验证。

如果用户不是项目成员并且项目是私有的,对该项目的 GET 请求将返回 404 状态码。

如果项目不可用合并列车,则返回 403 状态码。

合并列车 API 分页#

默认情况下,GET 请求一次返回 20 个结果,因为 API 结果是分页的。

有关更多信息,请参见 分页

列出项目的合并列车#

获取请求项目的所有合并列车:

plaintext
GET /projects/:id/merge_trains GET /projects/:id/merge_trains?scope=complete
属性类型必需描述
idinteger/string项目的 ID 或 URL 编码路径
scopestring根据给定范围过滤返回的合并列车。可用范围是 active(待合并)和 complete(已合并)。
sortstringascdesc 顺序返回合并列车。默认值:desc
shell
curl --header "PRIVATE-TOKEN: <your_access_token>" "https://gitlab.example.com/api/v4/projects/1/merge_trains"

示例响应:

json
1[ 2 { 3 "id": 110, 4 "merge_request": { 5 "id": 126, 6 "iid": 59, 7 "project_id": 20, 8 "title": "Test MR 1580978354", 9 "description": "", 10 "state": "merged", 11 "created_at": "2020-02-06T08:39:14.883Z", 12 "updated_at": "2020-02-06T08:40:57.038Z", 13 "web_url": "http://local.gitlab.test:8181/root/merge-train-race-condition/-/merge_requests/59" 14 }, 15 "user": { 16 "id": 1, 17 "name": "**管理员**", 18 "username": "root", 19 "state": "active", 20 "avatar_url": "https://www.gravatar.com/avatar/e64c7d89f26bd1972efa854d13d7dd61?s=80&d=identicon", 21 "web_url": "http://local.gitlab.test:8181/root" 22 }, 23 "pipeline": { 24 "id": 246, 25 "sha": "bcc17a8ffd51be1afe45605e714085df28b80b13", 26 "ref": "refs/merge-requests/59/train", 27 "status": "success", 28 "created_at": "2020-02-06T08:40:42.410Z", 29 "updated_at": "2020-02-06T08:40:46.912Z", 30 "web_url": "http://local.gitlab.test:8181/root/merge-train-race-condition/pipelines/246" 31 }, 32 "created_at": "2020-02-06T08:39:47.217Z", 33 "updated_at": "2020-02-06T08:40:57.720Z", 34 "target_branch": "feature-1580973432", 35 "status": "merged", 36 "merged_at": "2020-02-06T08:40:57.719Z", 37 "duration": 70 38 } 39]

列出合并列车中的合并请求#

获取请求目标分支的合并列车中添加的所有合并请求。

plaintext
GET /projects/:id/merge_trains/:target_branch

支持的属性:

属性类型必需描述
idinteger/string项目的 ID 或 URL 编码路径
target_branchstring合并列车的目标分支。
scopestring根据给定范围过滤返回的合并列车。可用范围是 active(待合并)和 complete(已合并)。
sortstringascdesc 顺序返回合并列车。默认值:desc

示例请求:

shell
curl --request GET --header "PRIVATE-TOKEN: <your_access_token>" "https://gitlab.example.com/api/v4/projects/597/merge_trains/main"

示例响应:

json
1[ 2 { 3 "id": 267, 4 "merge_request": { 5 "id": 273, 6 "iid": 1, 7 "project_id": 597, 8 "title": "My title 9", 9 "description": null, 10 "state": "opened", 11 "created_at": "2022-10-31T19:06:05.725Z", 12 "updated_at": "2022-10-31T19:06:05.725Z", 13 "web_url": "http://localhost/namespace18/project21/-/merge_requests/1" 14 }, 15 "user": { 16 "id": 933, 17 "username": "user12", 18 "name": "Sidney Jones31", 19 "state": "active", 20 "avatar_url": "https://www.gravatar.com/avatar/6c8365de387cb3db10ecc7b1880203c4?s=80\u0026d=identicon", 21 "web_url": "http://localhost/user12" 22 }, 23 "pipeline": { 24 "id": 273, 25 "iid": 1, 26 "project_id": 598, 27 "sha": "b83d6e391c22777fca1ed3012fce84f633d7fed0", 28 "ref": "main", 29 "status": "pending", 30 "source": "push", 31 "created_at": "2022-10-31T19:06:06.231Z", 32 "updated_at": "2022-10-31T19:06:06.231Z", 33 "web_url": "http://localhost/namespace19/project22/-/pipelines/273" 34 }, 35 "created_at": "2022-10-31T19:06:06.237Z", 36 "updated_at":"2022-10-31T19:06:06.237Z", 37 "target_branch":"main", 38 "status":"idle", 39 "merged_at":null, 40 "duration":null 41 } 42]

获取合并列车中合并请求的状态#

获取请求合并请求的合并列车信息。

plaintext
GET /projects/:id/merge_trains/merge_requests/:merge_request_iid

支持的属性:

属性类型必需描述
idinteger/string项目的 ID 或 URL 编码路径
merge_request_iidinteger合并请求的内部 ID。

示例请求:

shell
curl --request GET --header "PRIVATE-TOKEN: <your_access_token>" "https://gitlab.example.com/api/v4/projects/597/merge_trains/merge_requests/1"

示例响应:

json
1{ 2 "id": 267, 3 "merge_request": { 4 "id": 273, 5 "iid": 1, 6 "project_id": 597, 7 "title": "My title 9", 8 "description": null, 9 "state": "opened", 10 "created_at": "2022-10-31T19:06:05.725Z", 11 "updated_at": "2022-10-31T19:06:05.725Z", 12 "web_url": "http://localhost/namespace18/project21/-/merge_requests/1" 13 }, 14 "user": { 15 "id": 933, 16 "username": "user12", 17 "name": "Sidney Jones31", 18 "state": "active", 19 "avatar_url": "https://www.gravatar.com/avatar/6c8365de387cb3db10ecc7b1880203c4?s=80\u0026d=identicon", 20 "web_url": "http://localhost/user12" 21 }, 22 "pipeline": { 23 "id": 273, 24 "iid": 1, 25 "project_id": 598, 26 "sha": "b83d6e391c22777fca1ed3012fce84f633d7fed0", 27 "ref": "main", 28 "status": "pending", 29 "source": "push", 30 "created_at": "2022-10-31T19:06:06.231Z", 31 "updated_at": "2022-10-31T19:06:06.231Z", 32 "web_url": "http://localhost/namespace19/project22/-/pipelines/273" 33 }, 34 "created_at": "2022-10-31T19:06:06.237Z", 35 "updated_at":"2022-10-31T19:06:06.237Z", 36 "target_branch":"main", 37 "status":"idle", 38 "merged_at":null, 39 "duration":null 40}

将合并请求添加到合并列车#

将合并请求添加到合并列车中,并以合并请求的目标分支为目标。

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

支持的属性:

属性类型必需描述
idinteger/string项目的 ID 或 URL 编码路径
merge_request_iidinteger合并请求的内部 ID。
auto_mergeboolean如果为 true,当检查通过时,合并请求将添加到合并列车。当为 false 或未指定时,合并请求直接添加到合并列车。
shastring如果存在,SHA 必须匹配源分支的 HEAD,否则合并失败。
squashboolean如果为 true,提交在合并时被压缩为一个单一提交。
when_pipeline_succeedsboolean在 极狐GitLab 17.11 中弃用。请使用 auto_merge 替代。

示例请求:

shell
curl --request POST --header "PRIVATE-TOKEN: <your_access_token>" "https://gitlab.example.com/api/v4/projects/597/merge_trains/merge_requests/1"

示例响应:

json
1[ 2 { 3 "id": 267, 4 "merge_request": { 5 "id": 273, 6 "iid": 1, 7 "project_id": 597, 8 "title": "My title 9", 9 "description": null, 10 "state": "opened", 11 "created_at": "2022-10-31T19:06:05.725Z", 12 "updated_at": "2022-10-31T19:06:05.725Z", 13 "web_url": "http://localhost/namespace18/project21/-/merge_requests/1" 14 }, 15 "user": { 16 "id": 933, 17 "username": "user12", 18 "name": "Sidney Jones31", 19 "state": "active", 20 "avatar_url": "https://www.gravatar.com/avatar/6c8365de387cb3db10ecc7b1880203c4?s=80\u0026d=identicon", 21 "web_url": "http://localhost/user12" 22 }, 23 "pipeline": { 24 "id": 273, 25 "iid": 1, 26 "project_id": 598, 27 "sha": "b83d6e391c22777fca1ed3012fce84f633d7fed0", 28 "ref": "main", 29 "status": "pending", 30 "source": "push", 31 "created_at": "2022-10-31T19:06:06.231Z", 32 "updated_at": "2022-10-31T19:06:06.231Z", 33 "web_url": "http://localhost/namespace19/project22/-/pipelines/273" 34 }, 35 "created_at": "2022-10-31T19:06:06.237Z", 36 "updated_at":"2022-10-31T19:06:06.237Z", 37 "target_branch":"main", 38 "status":"idle", 39 "merged_at":null, 40 "duration":null 41 } 42]