Skip to main content
REST API 现已经过版本控制。 有关详细信息,请参阅“关于 API 版本控制”。

工作流作业的 REST API 终结点

使用 REST API 与 GitHub Actions 中的工作流作业进行交互。

关于 GitHub Actions

中的工作流作业

可以使用 REST API 查看 GitHub Actions 中的日志和工作流作业。 工作流程作业是在同一运行服务器上执行的一组步骤。有关详细信息,请参阅 GitHub Actions 的工作流语法

Get a job for a workflow run

Gets a specific job in a workflow run.

Anyone with read access to the repository can use this endpoint.

If the repository is private, OAuth tokens and personal access tokens (classic) need the repo scope to use this endpoint.

“Get a job for a workflow run”的细粒度访问令牌

此端点支持以下精细令牌类型:

精细令牌必须具有以下权限集:

  • "Actions" repository permissions (read)

如果仅请求公共资源,则无需身份验证或上述权限即可使用此终结点。

“Get a job for a workflow run”的参数

标头
名称, 类型, 说明
accept string

Setting to application/vnd.github+json is recommended.

路径参数
名称, 类型, 说明
owner string 必须

The account owner of the repository. The name is not case sensitive.

repo string 必须

The name of the repository without the .git extension. The name is not case sensitive.

job_id integer 必须

The unique identifier of the job.

“Get a job for a workflow run”的 HTTP 响应状态代码

状态代码说明
200

OK

“Get a job for a workflow run”的示例代码

请求示例

get/repos/{owner}/{repo}/actions/jobs/{job_id}
curl -L \ -H "Accept: application/vnd.github+json" \ -H "Authorization: Bearer <YOUR-TOKEN>" \ -H "X-GitHub-Api-Version: 2022-11-28" \ http(s)://HOSTNAME/api/v3/repos/OWNER/REPO/actions/jobs/JOB_ID

Response

Status: 200
{ "id": 399444496, "run_id": 29679449, "run_url": "https://HOSTNAME/repos/octo-org/octo-repo/actions/runs/29679449", "node_id": "MDEyOldvcmtmbG93IEpvYjM5OTQ0NDQ5Ng==", "head_sha": "f83a356604ae3c5d03e1b46ef4d1ca77d64a90b0", "url": "https://HOSTNAME/repos/octo-org/octo-repo/actions/jobs/399444496", "html_url": "https://github.com/octo-org/octo-repo/runs/29679449/jobs/399444496", "status": "completed", "conclusion": "success", "started_at": "2020-01-20T17:42:40Z", "completed_at": "2020-01-20T17:44:39Z", "name": "build", "steps": [ { "name": "Set up job", "status": "completed", "conclusion": "success", "number": 1, "started_at": "2020-01-20T09:42:40.000-08:00", "completed_at": "2020-01-20T09:42:41.000-08:00" }, { "name": "Run actions/checkout@v2", "status": "completed", "conclusion": "success", "number": 2, "started_at": "2020-01-20T09:42:41.000-08:00", "completed_at": "2020-01-20T09:42:45.000-08:00" }, { "name": "Set up Ruby", "status": "completed", "conclusion": "success", "number": 3, "started_at": "2020-01-20T09:42:45.000-08:00", "completed_at": "2020-01-20T09:42:45.000-08:00" }, { "name": "Run actions/cache@v3", "status": "completed", "conclusion": "success", "number": 4, "started_at": "2020-01-20T09:42:45.000-08:00", "completed_at": "2020-01-20T09:42:48.000-08:00" }, { "name": "Install Bundler", "status": "completed", "conclusion": "success", "number": 5, "started_at": "2020-01-20T09:42:48.000-08:00", "completed_at": "2020-01-20T09:42:52.000-08:00" }, { "name": "Install Gems", "status": "completed", "conclusion": "success", "number": 6, "started_at": "2020-01-20T09:42:52.000-08:00", "completed_at": "2020-01-20T09:42:53.000-08:00" }, { "name": "Run Tests", "status": "completed", "conclusion": "success", "number": 7, "started_at": "2020-01-20T09:42:53.000-08:00", "completed_at": "2020-01-20T09:42:59.000-08:00" }, { "name": "Deploy to Heroku", "status": "completed", "conclusion": "success", "number": 8, "started_at": "2020-01-20T09:42:59.000-08:00", "completed_at": "2020-01-20T09:44:39.000-08:00" }, { "name": "Post actions/cache@v3", "status": "completed", "conclusion": "success", "number": 16, "started_at": "2020-01-20T09:44:39.000-08:00", "completed_at": "2020-01-20T09:44:39.000-08:00" }, { "name": "Complete job", "status": "completed", "conclusion": "success", "number": 17, "started_at": "2020-01-20T09:44:39.000-08:00", "completed_at": "2020-01-20T09:44:39.000-08:00" } ], "check_run_url": "https://HOSTNAME/repos/octo-org/octo-repo/check-runs/399444496", "labels": [ "self-hosted", "foo", "bar" ], "runner_id": 1, "runner_name": "my runner", "runner_group_id": 2, "runner_group_name": "my runner group", "workflow_name": "CI", "head_branch": "main" }

Download job logs for a workflow run

Gets a redirect URL to download a plain text file of logs for a workflow job. This link expires after 1 minute. Look for Location: in the response header to find the URL for the download.

Anyone with read access to the repository can use this endpoint.

If the repository is private, OAuth tokens and personal access tokens (classic) need the repo scope to use this endpoint.

“Download job logs for a workflow run”的细粒度访问令牌

此端点支持以下精细令牌类型:

精细令牌必须具有以下权限集:

  • "Actions" repository permissions (read)

如果仅请求公共资源,则无需身份验证或上述权限即可使用此终结点。

“Download job logs for a workflow run”的参数

标头
名称, 类型, 说明
accept string

Setting to application/vnd.github+json is recommended.

路径参数
名称, 类型, 说明
owner string 必须

The account owner of the repository. The name is not case sensitive.

repo string 必须

The name of the repository without the .git extension. The name is not case sensitive.

job_id integer 必须

The unique identifier of the job.

“Download job logs for a workflow run”的 HTTP 响应状态代码

状态代码说明
302

Found

“Download job logs for a workflow run”的示例代码

请求示例

get/repos/{owner}/{repo}/actions/jobs/{job_id}/logs
curl -L \ -H "Accept: application/vnd.github+json" \ -H "Authorization: Bearer <YOUR-TOKEN>" \ -H "X-GitHub-Api-Version: 2022-11-28" \ http(s)://HOSTNAME/api/v3/repos/OWNER/REPO/actions/jobs/JOB_ID/logs

Response

Status: 302

List jobs for a workflow run attempt

Lists jobs for a specific workflow run attempt. You can use parameters to narrow the list of results. For more information about using parameters, see Parameters.

Anyone with read access to the repository can use this endpoint.

OAuth app tokens and personal access tokens (classic) need the repo scope to use this endpoint with a private repository.

“List jobs for a workflow run attempt”的细粒度访问令牌

此端点支持以下精细令牌类型:

精细令牌必须具有以下权限集:

  • "Actions" repository permissions (read)

如果仅请求公共资源,则无需身份验证或上述权限即可使用此终结点。

“List jobs for a workflow run attempt”的参数

标头
名称, 类型, 说明
accept string

Setting to application/vnd.github+json is recommended.

路径参数
名称, 类型, 说明
owner string 必须

The account owner of the repository. The name is not case sensitive.

repo string 必须

The name of the repository without the .git extension. The name is not case sensitive.

run_id integer 必须

The unique identifier of the workflow run.

attempt_number integer 必须

The attempt number of the workflow run.

查询参数
名称, 类型, 说明
per_page integer

The number of results per page (max 100). For more information, see "Using pagination in the REST API."

默认: 30

page integer

The page number of the results to fetch. For more information, see "Using pagination in the REST API."

默认: 1

“List jobs for a workflow run attempt”的 HTTP 响应状态代码

状态代码说明
200

OK

404

Resource not found

“List jobs for a workflow run attempt”的示例代码

请求示例

get/repos/{owner}/{repo}/actions/runs/{run_id}/attempts/{attempt_number}/jobs
curl -L \ -H "Accept: application/vnd.github+json" \ -H "Authorization: Bearer <YOUR-TOKEN>" \ -H "X-GitHub-Api-Version: 2022-11-28" \ http(s)://HOSTNAME/api/v3/repos/OWNER/REPO/actions/runs/RUN_ID/attempts/ATTEMPT_NUMBER/jobs

Response

Status: 200
{ "total_count": 1, "jobs": [ { "id": 399444496, "run_id": 29679449, "run_url": "https://HOSTNAME/repos/octo-org/octo-repo/actions/runs/29679449", "node_id": "MDEyOldvcmtmbG93IEpvYjM5OTQ0NDQ5Ng==", "head_sha": "f83a356604ae3c5d03e1b46ef4d1ca77d64a90b0", "url": "https://HOSTNAME/repos/octo-org/octo-repo/actions/jobs/399444496", "html_url": "https://github.com/octo-org/octo-repo/runs/29679449/jobs/399444496", "status": "completed", "conclusion": "success", "started_at": "2020-01-20T17:42:40Z", "completed_at": "2020-01-20T17:44:39Z", "name": "build", "steps": [ { "name": "Set up job", "status": "completed", "conclusion": "success", "number": 1, "started_at": "2020-01-20T09:42:40.000-08:00", "completed_at": "2020-01-20T09:42:41.000-08:00" }, { "name": "Run actions/checkout@v2", "status": "completed", "conclusion": "success", "number": 2, "started_at": "2020-01-20T09:42:41.000-08:00", "completed_at": "2020-01-20T09:42:45.000-08:00" }, { "name": "Set up Ruby", "status": "completed", "conclusion": "success", "number": 3, "started_at": "2020-01-20T09:42:45.000-08:00", "completed_at": "2020-01-20T09:42:45.000-08:00" }, { "name": "Run actions/cache@v3", "status": "completed", "conclusion": "success", "number": 4, "started_at": "2020-01-20T09:42:45.000-08:00", "completed_at": "2020-01-20T09:42:48.000-08:00" }, { "name": "Install Bundler", "status": "completed", "conclusion": "success", "number": 5, "started_at": "2020-01-20T09:42:48.000-08:00", "completed_at": "2020-01-20T09:42:52.000-08:00" }, { "name": "Install Gems", "status": "completed", "conclusion": "success", "number": 6, "started_at": "2020-01-20T09:42:52.000-08:00", "completed_at": "2020-01-20T09:42:53.000-08:00" }, { "name": "Run Tests", "status": "completed", "conclusion": "success", "number": 7, "started_at": "2020-01-20T09:42:53.000-08:00", "completed_at": "2020-01-20T09:42:59.000-08:00" }, { "name": "Deploy to Heroku", "status": "completed", "conclusion": "success", "number": 8, "started_at": "2020-01-20T09:42:59.000-08:00", "completed_at": "2020-01-20T09:44:39.000-08:00" }, { "name": "Post actions/cache@v3", "status": "completed", "conclusion": "success", "number": 16, "started_at": "2020-01-20T09:44:39.000-08:00", "completed_at": "2020-01-20T09:44:39.000-08:00" }, { "name": "Complete job", "status": "completed", "conclusion": "success", "number": 17, "started_at": "2020-01-20T09:44:39.000-08:00", "completed_at": "2020-01-20T09:44:39.000-08:00" } ], "check_run_url": "https://HOSTNAME/repos/octo-org/octo-repo/check-runs/399444496", "labels": [ "self-hosted", "foo", "bar" ], "runner_id": 1, "runner_name": "my runner", "runner_group_id": 2, "runner_group_name": "my runner group", "workflow_name": "CI", "head_branch": "main" } ] }

List jobs for a workflow run

Lists jobs for a workflow run. You can use parameters to narrow the list of results. For more information about using parameters, see Parameters.

Anyone with read access to the repository can use this endpoint.

OAuth app tokens and personal access tokens (classic) need the repo scope to use this endpoint with a private repository.

“List jobs for a workflow run”的细粒度访问令牌

此端点支持以下精细令牌类型:

精细令牌必须具有以下权限集:

  • "Actions" repository permissions (read)

如果仅请求公共资源,则无需身份验证或上述权限即可使用此终结点。

“List jobs for a workflow run”的参数

标头
名称, 类型, 说明
accept string

Setting to application/vnd.github+json is recommended.

路径参数
名称, 类型, 说明
owner string 必须

The account owner of the repository. The name is not case sensitive.

repo string 必须

The name of the repository without the .git extension. The name is not case sensitive.

run_id integer 必须

The unique identifier of the workflow run.

查询参数
名称, 类型, 说明
filter string

Filters jobs by their completed_at timestamp. latest returns jobs from the most recent execution of the workflow run. all returns all jobs for a workflow run, including from old executions of the workflow run.

默认: latest

可以是以下选项之一: latest, all

per_page integer

The number of results per page (max 100). For more information, see "Using pagination in the REST API."

默认: 30

page integer

The page number of the results to fetch. For more information, see "Using pagination in the REST API."

默认: 1

“List jobs for a workflow run”的 HTTP 响应状态代码

状态代码说明
200

OK

“List jobs for a workflow run”的示例代码

请求示例

get/repos/{owner}/{repo}/actions/runs/{run_id}/jobs
curl -L \ -H "Accept: application/vnd.github+json" \ -H "Authorization: Bearer <YOUR-TOKEN>" \ -H "X-GitHub-Api-Version: 2022-11-28" \ http(s)://HOSTNAME/api/v3/repos/OWNER/REPO/actions/runs/RUN_ID/jobs

Response

Status: 200
{ "total_count": 1, "jobs": [ { "id": 399444496, "run_id": 29679449, "run_url": "https://HOSTNAME/repos/octo-org/octo-repo/actions/runs/29679449", "node_id": "MDEyOldvcmtmbG93IEpvYjM5OTQ0NDQ5Ng==", "head_sha": "f83a356604ae3c5d03e1b46ef4d1ca77d64a90b0", "url": "https://HOSTNAME/repos/octo-org/octo-repo/actions/jobs/399444496", "html_url": "https://github.com/octo-org/octo-repo/runs/29679449/jobs/399444496", "status": "completed", "conclusion": "success", "started_at": "2020-01-20T17:42:40Z", "completed_at": "2020-01-20T17:44:39Z", "name": "build", "steps": [ { "name": "Set up job", "status": "completed", "conclusion": "success", "number": 1, "started_at": "2020-01-20T09:42:40.000-08:00", "completed_at": "2020-01-20T09:42:41.000-08:00" }, { "name": "Run actions/checkout@v2", "status": "completed", "conclusion": "success", "number": 2, "started_at": "2020-01-20T09:42:41.000-08:00", "completed_at": "2020-01-20T09:42:45.000-08:00" }, { "name": "Set up Ruby", "status": "completed", "conclusion": "success", "number": 3, "started_at": "2020-01-20T09:42:45.000-08:00", "completed_at": "2020-01-20T09:42:45.000-08:00" }, { "name": "Run actions/cache@v3", "status": "completed", "conclusion": "success", "number": 4, "started_at": "2020-01-20T09:42:45.000-08:00", "completed_at": "2020-01-20T09:42:48.000-08:00" }, { "name": "Install Bundler", "status": "completed", "conclusion": "success", "number": 5, "started_at": "2020-01-20T09:42:48.000-08:00", "completed_at": "2020-01-20T09:42:52.000-08:00" }, { "name": "Install Gems", "status": "completed", "conclusion": "success", "number": 6, "started_at": "2020-01-20T09:42:52.000-08:00", "completed_at": "2020-01-20T09:42:53.000-08:00" }, { "name": "Run Tests", "status": "completed", "conclusion": "success", "number": 7, "started_at": "2020-01-20T09:42:53.000-08:00", "completed_at": "2020-01-20T09:42:59.000-08:00" }, { "name": "Deploy to Heroku", "status": "completed", "conclusion": "success", "number": 8, "started_at": "2020-01-20T09:42:59.000-08:00", "completed_at": "2020-01-20T09:44:39.000-08:00" }, { "name": "Post actions/cache@v3", "status": "completed", "conclusion": "success", "number": 16, "started_at": "2020-01-20T09:44:39.000-08:00", "completed_at": "2020-01-20T09:44:39.000-08:00" }, { "name": "Complete job", "status": "completed", "conclusion": "success", "number": 17, "started_at": "2020-01-20T09:44:39.000-08:00", "completed_at": "2020-01-20T09:44:39.000-08:00" } ], "check_run_url": "https://HOSTNAME/repos/octo-org/octo-repo/check-runs/399444496", "labels": [ "self-hosted", "foo", "bar" ], "runner_id": 1, "runner_name": "my runner", "runner_group_id": 2, "runner_group_name": "my runner group", "workflow_name": "CI", "head_branch": "main" } ] }