364.md 18.0 KB
Newer Older
Lab机器人's avatar
readme  
Lab机器人 已提交
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 266 267 268 269 270 271 272 273 274 275 276 277 278 279 280 281 282 283 284 285 286 287 288 289 290 291 292 293 294 295 296 297 298 299 300 301 302 303 304 305 306 307 308 309 310 311 312 313 314 315 316 317 318 319 320 321 322 323 324 325 326 327 328 329 330 331 332 333 334 335 336 337 338 339 340 341 342 343 344 345 346 347 348 349 350 351 352 353 354 355 356 357 358 359 360 361 362 363 364 365 366 367 368 369 370 371 372 373 374 375 376 377 378
# Runners API

> 原文:[https://docs.gitlab.com/ee/api/runners.html](https://docs.gitlab.com/ee/api/runners.html)

*   [Registration and authentication tokens](#registration-and-authentication-tokens)
*   [List owned runners](#list-owned-runners)
*   [List all runners](#list-all-runners)
*   [Get runner’s details](#get-runners-details)
*   [Update runner’s details](#update-runners-details)
*   [Remove a runner](#remove-a-runner)
*   [List runner’s jobs](#list-runners-jobs)
*   [List project’s runners](#list-projects-runners)
*   [Enable a runner in project](#enable-a-runner-in-project)
*   [Disable a runner from project](#disable-a-runner-from-project)
*   [List group’s runners](#list-groups-runners)
*   [Register a new Runner](#register-a-new-runner)
*   [Delete a registered Runner](#delete-a-registered-runner)
*   [Verify authentication for a registered Runner](#verify-authentication-for-a-registered-runner)

# Runners API[](#runners-api "Permalink")

在 GitLab 8.5 中[引入](https://gitlab.com/gitlab-org/gitlab-foss/-/merge_requests/2640)

## Registration and authentication tokens[](#registration-and-authentication-tokens "Permalink")

将 Runner 与 GitLab 连接时要考虑两个标记.

| Token | Description |
| --- | --- |
| 注册令牌 | 用于[注册 Runner 的](https://docs.gitlab.com/runner/register/)令牌. 可以[通过 GitLab 获得](../ci/runners/README.html) . |
| 认证令牌 | 用于通过 GitLab 实例对 Runner 进行身份验证的令牌. 它可以在[注册 Runner](https://docs.gitlab.com/runner/register/)时自动获得,也可以[通过 Runners API](#register-a-new-runner)手动[注册时获得](#register-a-new-runner) . |

这是在 Runner 注册中如何使用两个令牌的示例:

1.  您使用注册令牌通过 GitLab API 注册了 Runner,并返回了身份验证令牌.
2.  您使用该身份验证令牌并将其添加到[Runner 的配置文件中](https://docs.gitlab.com/runner/commands/)

    ```
    [[runners]]
      token = "<authentication_token>" 
    ```

然后将 GitLab 和 Runner 连接起来.

## List owned runners[](#list-owned-runners "Permalink")

获取可供用户使用的特定跑步者的列表.

```
GET /runners
GET /runners?scope=active
GET /runners?type=project_type
GET /runners?status=active
GET /runners?tag_list=tag1,tag2 
```

| Attribute | Type | Required | Description |
| --- | --- | --- | --- |
| `scope` | string | no | Deprecated: Use `type` or `status` instead. The scope of specific runners to show, one of: `active`, `paused`, `online`, `offline`; showing all runners if none provided |
| `type` | string | no | 要显示的跑步者的类型,其中之一: `instance_type``group_type``project_type` |
| `status` | string | no | 要显示的跑步者状态,其中之一: `active``paused``online``offline` |
| `tag_list` | 字符串数组 | no | 跑步者标签列表 |

```
curl --header "PRIVATE-TOKEN: <your_access_token>" "https://gitlab.example.com/api/v4/runners" 
```

响应示例:

```
[  {  "active":  true,  "description":  "test-1-20150125",  "id":  6,  "is_shared":  false,  "ip_address":  "127.0.0.1",  "name":  null,  "online":  true,  "status":  "online"  },  {  "active":  true,  "description":  "test-2-20150125",  "id":  8,  "ip_address":  "127.0.0.1",  "is_shared":  false,  "name":  null,  "online":  false,  "status":  "offline"  }  ] 
```

## List all runners[](#list-all-runners "Permalink")

获取 GitLab 实例中所有跑步者的列表(特定的和共享的). 访问仅限于具有`admin`权限的用户.

```
GET /runners/all
GET /runners/all?scope=online
GET /runners/all?type=project_type
GET /runners/all?status=active
GET /runners/all?tag_list=tag1,tag2 
```

| Attribute | Type | Required | Description |
| --- | --- | --- | --- |
| `scope` | string | no | 不推荐使用:改为使用`type``status` . 参与者显示的范围,其中之一: `specific``shared``active` ,已`paused``online``offline` ; 显示所有跑步者(如果未提供) |
| `type` | string | no | 要显示的跑步者的类型,其中之一: `instance_type``group_type``project_type` |
| `status` | string | no | 要显示的跑步者状态,其中之一: `active``paused``online``offline` |
| `tag_list` | 字符串数组 | no | 跑步者标签列表 |

```
curl --header "PRIVATE-TOKEN: <your_access_token>" "https://gitlab.example.com/api/v4/runners/all" 
```

响应示例:

```
[  {  "active":  true,  "description":  "shared-runner-1",  "id":  1,  "ip_address":  "127.0.0.1",  "is_shared":  true,  "name":  null,  "online":  true,  "status":  "online"  },  {  "active":  true,  "description":  "shared-runner-2",  "id":  3,  "ip_address":  "127.0.0.1",  "is_shared":  true,  "name":  null,  "online":  false  "status":  "offline"  },  {  "active":  true,  "description":  "test-1-20150125",  "id":  6,  "ip_address":  "127.0.0.1",  "is_shared":  false,  "name":  null,  "online":  true  "status":  "paused"  },  {  "active":  true,  "description":  "test-2-20150125",  "id":  8,  "ip_address":  "127.0.0.1",  "is_shared":  false,  "name":  null,  "online":  false,  "status":  "offline"  }  ] 
```

## Get runner’s details[](#get-runners-details "Permalink")

获取跑步者的详细信息.

```
GET /runners/:id 
```

| Attribute | Type | Required | Description |
| --- | --- | --- | --- |
| `id` | integer | yes | 跑步者 ID |

```
curl --header "PRIVATE-TOKEN: <your_access_token>" "https://gitlab.example.com/api/v4/runners/6" 
```

**注意:**响应中的`token`属性[在 GitLab 12.10](https://gitlab.com/gitlab-org/gitlab/-/issues/214320)中已弃用. 并在[GitLab 13.0 中](https://gitlab.com/gitlab-org/gitlab/-/issues/214322)删除.

响应示例:

```
{  "active":  true,  "architecture":  null,  "description":  "test-1-20150125",  "id":  6,  "ip_address":  "127.0.0.1",  "is_shared":  false,  "contacted_at":  "2016-01-25T16:39:48.066Z",  "name":  null,  "online":  true,  "status":  "online",  "platform":  null,  "projects":  [  {  "id":  1,  "name":  "GitLab Community Edition",  "name_with_namespace":  "GitLab.org / GitLab Community Edition",  "path":  "gitlab-foss",  "path_with_namespace":  "gitlab-org/gitlab-foss"  }  ],  "revision":  null,  "tag_list":  [  "ruby",  "mysql"  ],  "version":  null,  "access_level":  "ref_protected",  "maximum_timeout":  3600  } 
```

## Update runner’s details[](#update-runners-details "Permalink")

更新跑步者的详细信息.

```
PUT /runners/:id 
```

| Attribute | Type | Required | Description |
| --- | --- | --- | --- |
| `id` | integer | yes | 跑步者 ID |
| `description` | string | no | 跑步者 |
| `active` | boolean | no | 跑步者的状态; 可以设置为`true``false` |
| `tag_list` | array | no | 跑步者的标签列表; 放置标签数组,这些标签应最终分配给跑步者 |
| `run_untagged` | boolean | no | 指示跑步者可以执行未加标签的作业的标志 |
| `locked` | boolean | no | 指示跑步者被锁定的标志 |
| `access_level` | string | no | 跑步者的 access_level; `not_protected``ref_protected` |
| `maximum_timeout` | integer | no | 此 Runner 处理作业的最大超时时间 |

```
curl --request PUT --header "PRIVATE-TOKEN: <your_access_token>" "https://gitlab.example.com/api/v4/runners/6" --form "description=test-1-20150125-test" --form "tag_list=ruby,mysql,tag1,tag2" 
```

**注意:**响应中的`token`属性[在 GitLab 12.10](https://gitlab.com/gitlab-org/gitlab/-/issues/214320)中已弃用. 并在[GitLab 13.0 中](https://gitlab.com/gitlab-org/gitlab/-/issues/214322)删除.

响应示例:

```
{  "active":  true,  "architecture":  null,  "description":  "test-1-20150125-test",  "id":  6,  "ip_address":  "127.0.0.1",  "is_shared":  false,  "contacted_at":  "2016-01-25T16:39:48.066Z",  "name":  null,  "online":  true,  "status":  "online",  "platform":  null,  "projects":  [  {  "id":  1,  "name":  "GitLab Community Edition",  "name_with_namespace":  "GitLab.org / GitLab Community Edition",  "path":  "gitlab-foss",  "path_with_namespace":  "gitlab-org/gitlab-foss"  }  ],  "revision":  null,  "tag_list":  [  "ruby",  "mysql",  "tag1",  "tag2"  ],  "version":  null,  "access_level":  "ref_protected",  "maximum_timeout":  null  } 
```

## Remove a runner[](#remove-a-runner "Permalink")

卸下流道.

```
DELETE /runners/:id 
```

| Attribute | Type | Required | Description |
| --- | --- | --- | --- |
| `id` | integer | yes | The ID of a runner |

```
curl --request DELETE --header "PRIVATE-TOKEN: <your_access_token>" "https://gitlab.example.com/api/v4/runners/6" 
```

## List runner’s jobs[](#list-runners-jobs "Permalink")

在 GitLab 10.3 中[引入](https://gitlab.com/gitlab-org/gitlab-foss/-/merge_requests/15432) .

列出正在处理或由指定运行程序处理的作业.

```
GET /runners/:id/jobs 
```

| Attribute | Type | Required | Description |
| --- | --- | --- | --- |
| `id` | integer | yes | 跑步者 ID |
| `status` | string | no | 工作状态; 其中之一: `running``success``failed``canceled` |
| `order_by` | string | no | 按`id`订购工作. |
| `sort` | string | no | 按`asc``desc`顺序对作业进行排序(默认值: `desc` ) |

```
curl --header "PRIVATE-TOKEN: <your_access_token>" "https://gitlab.example.com/api/v4/runners/1/jobs?status=running" 
```

响应示例:

```
[  {  "id":  2,  "ip_address":  "127.0.0.1",  "status":  "running",  "stage":  "test",  "name":  "test",  "ref":  "master",  "tag":  false,  "coverage":  null,  "created_at":  "2017-11-16T08:50:29.000Z",  "started_at":  "2017-11-16T08:51:29.000Z",  "finished_at":  "2017-11-16T08:53:29.000Z",  "duration":  120,  "user":  {  "id":  1,  "name":  "John Doe2",  "username":  "user2",  "state":  "active",  "avatar_url":  "http://www.gravatar.com/avatar/c922747a93b40d1ea88262bf1aebee62?s=80&d=identicon",  "web_url":  "http://localhost/user2",  "created_at":  "2017-11-16T18:38:46.000Z",  "bio":  null,  "location":  null,  "public_email":  "",  "skype":  "",  "linkedin":  "",  "twitter":  "",  "website_url":  "",  "organization":  null  },  "commit":  {  "id":  "97de212e80737a608d939f648d959671fb0a0142",  "short_id":  "97de212e",  "title":  "Update configuration\r",  "created_at":  "2017-11-16T08:50:28.000Z",  "parent_ids":  [  "1b12f15a11fc6e62177bef08f47bc7b5ce50b141",  "498214de67004b1da3d820901307bed2a68a8ef6"  ],  "message":  "See merge request !123",  "author_name":  "John Doe2",  "author_email":  "user2@example.org",  "authored_date":  "2017-11-16T08:50:27.000Z",  "committer_name":  "John Doe2",  "committer_email":  "user2@example.org",  "committed_date":  "2017-11-16T08:50:27.000Z"  },  "pipeline":  {  "id":  2,  "sha":  "97de212e80737a608d939f648d959671fb0a0142",  "ref":  "master",  "status":  "running"  },  "project":  {  "id":  1,  "description":  null,  "name":  "project1",  "name_with_namespace":  "John Doe2 / project1",  "path":  "project1",  "path_with_namespace":  "namespace1/project1",  "created_at":  "2017-11-16T18:38:46.620Z"  }  }  ] 
```

## List project’s runners[](#list-projects-runners "Permalink")

List all runners (specific and shared) available in the project. 列出项目中所有可用的跑步者(特定的和共享的). Shared runners are listed if at least one shared runner is defined. 如果定义了至少一个共享运行程序,则列出共享运行程序.

```
GET /projects/:id/runners
GET /projects/:id/runners?scope=active
GET /projects/:id/runners?type=project_type
GET /projects/:id/runners?status=active
GET /projects/:id/runners?tag_list=tag1,tag2 
```

| Attribute | Type | Required | Description |
| --- | --- | --- | --- |
| `id` | integer/string | yes | 经过身份验证的用户拥有[的项目](README.html#namespaced-path-encoding)的 ID 或[URL 编码路径](README.html#namespaced-path-encoding) |
| `scope` | string | no | 不推荐使用:改为使用`type``status` . 要显示的特定跑步者的范围,其中之一: `active``paused``online``offline` ; 显示所有跑步者(如果未提供) |
| `type` | string | no | 要显示的跑步者的类型,其中之一: `instance_type``group_type``project_type` |
| `status` | string | no | 要显示的跑步者状态,其中之一: `active``paused``online``offline` |
| `tag_list` | 字符串数组 | no | 跑步者标签列表 |

```
curl --header "PRIVATE-TOKEN: <your_access_token>" "https://gitlab.example.com/api/v4/projects/9/runners" 
```

响应示例:

```
[  {  "active":  true,  "description":  "test-2-20150125",  "id":  8,  "ip_address":  "127.0.0.1",  "is_shared":  false,  "name":  null,  "online":  false,  "status":  "offline"  },  {  "active":  true,  "description":  "development_runner",  "id":  5,  "ip_address":  "127.0.0.1",  "is_shared":  true,  "name":  null,  "online":  true  "status":  "paused"  }  ] 
```

## Enable a runner in project[](#enable-a-runner-in-project "Permalink")

在项目中启用可用的特定运行器.

```
POST /projects/:id/runners 
```

| Attribute | Type | Required | Description |
| --- | --- | --- | --- |
| `id` | integer/string | yes | 经过身份验证的用户拥有[的项目](README.html#namespaced-path-encoding)的 ID 或[URL 编码路径](README.html#namespaced-path-encoding) |
| `runner_id` | integer | yes | 跑步者 ID |

```
curl --request POST --header "PRIVATE-TOKEN: <your_access_token>" "https://gitlab.example.com/api/v4/projects/9/runners" --form "runner_id=9" 
```

响应示例:

```
{  "active":  true,  "description":  "test-2016-02-01",  "id":  9,  "ip_address":  "127.0.0.1",  "is_shared":  false,  "name":  null,  "online":  true,  "status":  "online"  } 
```

## Disable a runner from project[](#disable-a-runner-from-project "Permalink")

禁用项目中的特定运行器. 仅当该项目不是与指定运行器关联的唯一项目时,它才有效. 如果是这样,则返回错误. 改用" [删除亚军"](#remove-a-runner)电话.

```
DELETE /projects/:id/runners/:runner_id 
```

| Attribute | Type | Required | Description |
| --- | --- | --- | --- |
| `id` | integer/string | yes | 经过身份验证的用户拥有[的项目](README.html#namespaced-path-encoding)的 ID 或[URL 编码路径](README.html#namespaced-path-encoding) |
| `runner_id` | integer | yes | 跑步者 ID |

```
curl --request DELETE --header "PRIVATE-TOKEN: <your_access_token>" "https://gitlab.example.com/api/v4/projects/9/runners/9" 
```

## List group’s runners[](#list-groups-runners "Permalink")

列出组中的所有跑步者(特定的和共享的)以及其祖先组. 如果定义了至少一个共享运行程序,则列出共享运行程序.

```
GET /groups/:id/runners
GET /groups/:id/runners?type=group_type
GET /groups/:id/runners?status=active
GET /groups/:id/runners?tag_list=tag1,tag2 
```

| Attribute | Type | Required | Description |
| --- | --- | --- | --- |
| `id` | integer | yes | 认证用户拥有的组的 ID |
| `type` | string | no | 要显示的跑步者的类型,其中之一: `instance_type``group_type``project_type` |
| `status` | string | no | 要显示的跑步者状态,其中之一: `active``paused``online``offline` |
| `tag_list` | 字符串数组 | no | 跑步者标签列表 |

```
curl --header "PRIVATE-TOKEN: <your_access_token>" "https://gitlab.example.com/api/v4/groups/9/runners" 
```

响应示例:

```
[  {  "id":  3,  "description":  "Shared",  "ip_address":  "127.0.0.1",  "active":  true,  "is_shared":  true,  "name":  "gitlab-runner",  "online":  null,  "status":  "not_connected"  },  {  "id":  6,  "description":  "Test",  "ip_address":  "127.0.0.1",  "active":  true,  "is_shared":  true,  "name":  "gitlab-runner",  "online":  false,  "status":  "offline"  },  {  "id":  8,  "description":  "Test 2",  "ip_address":  "127.0.0.1",  "active":  true,  "is_shared":  false,  "name":  "gitlab-runner",  "online":  null,  "status":  "not_connected"  }  ] 
```

## Register a new Runner[](#register-a-new-runner "Permalink")

为该实例注册一个新的运行器.

```
POST /runners 
```

| Attribute | Type | Required | Description |
| --- | --- | --- | --- |
| `token` | string | yes | [Registration token](#registration-and-authentication-tokens). |
| `description` | string | no | 跑步者的描述 |
| `info` | hash | no | 跑步者的元数据 |
| `active` | boolean | no | 跑步者是否活跃 |
| `locked` | boolean | no | Runner 是否应该为当前项目锁定 |
| `run_untagged` | boolean | no | 跑步者是否应处理未加标签的工作 |
| `tag_list` | 字符串数组 | no | 跑步者标签列表 |
| `access_level` | string | no | 跑步者的 access_level; `not_protected``ref_protected` |
| `maximum_timeout` | integer | no | 此 Runner 处理作业的最大超时时间 |

```
curl --request POST "https://gitlab.example.com/api/v4/runners" --form "token=<registration_token>" --form "description=test-1-20150125-test" --form "tag_list=ruby,mysql,tag1,tag2" 
```

Response:

| Status | Description |
| --- | --- |
| 201 | 跑步者已创建 |

响应示例:

```
{  "id":  "12345",  "token":  "6337ff461c94fd3fa32ba3b1ff4125"  } 
```

## Delete a registered Runner[](#delete-a-registered-runner "Permalink")

删除注册的跑步者.

```
DELETE /runners 
```

| Attribute | Type | Required | Description |
| --- | --- | --- | --- |
| `token` | string | yes | Runner’s [authentication token](#registration-and-authentication-tokens). |

```
curl --request DELETE "https://gitlab.example.com/api/v4/runners" --form "token=<authentication_token>" 
```

Response:

| Status | Description |
| --- | --- |
| 204 | 跑步者已被删除 |

## Verify authentication for a registered Runner[](#verify-authentication-for-a-registered-runner "Permalink")

验证注册的运行程序的身份验证凭据.

```
POST /runners/verify 
```

| Attribute | Type | Required | Description |
| --- | --- | --- | --- |
| `token` | string | yes | Runner’s [authentication token](#registration-and-authentication-tokens). |

```
curl --request POST "https://gitlab.example.com/api/v4/runners/verify" --form "token=<authentication_token>" 
```

Response:

| Status | Description |
| --- | --- |
| 200 | 凭证有效 |
| 403 | 凭证无效 |