# 变量参考

在工作流中 GitHub Actions 查找支持的变量、命名约定、限制和上下文的信息。

本文列出了可在工作流中使用的GitHub Actions受支持变量，包括环境变量、配置变量和默认变量。GitHub 配置工作流时，可使用此参考查找变量名称、命名约定、限制和支持的上下文。

有关变量的详细信息，请参阅 [变量](/zh/enterprise-server@3.22/actions/concepts/workflows-and-actions/variables)。

## 默认环境变量

设置的默认环境变量 GitHub 可用于工作流中的每个步骤。

由于默认环境变量由 GitHub 工作流中设置且未定义，因此无法通过 `env` 上下文访问它们。 但是，大多数默认变量都有一个对应且名称类似的上下文属性。 例如，可以使用上下文属性在工作流处理`${{ github.ref }}`期间读取变量的值。`GITHUB_REF`

不能覆盖名为 `GITHUB_*` 和 `RUNNER_*` 的默认环境变量的值。 目前可以覆盖 `CI` 变量的值。 但是，并不能保证这总是可行。 有关设置环境变量的详细信息，请参阅 [在变量中存储信息](/zh/enterprise-server@3.22/actions/how-tos/write-workflows/choose-what-workflows-do/use-variables#defining-environment-variables-for-a-single-workflow) 和 [GitHub Actions 的工作流命令](/zh/enterprise-server@3.22/actions/reference/workflows-and-actions/workflow-commands#setting-an-environment-variable)。

强烈建议操作使用变量访问文件系统，而非使用硬编码的文件路径。
GitHub 设置所有运行程序环境中要使用的操作的变量。

| 变量                                                                                                                                                                                                                                                                                                                           | 说明                                                                                                                                                                                                                                                                                                                                            |
| ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `CI`                                                                                                                                                                                                                                                                                                                         | 始终设置为 `true`。                                                                                                                                                                                                                                                                                                                                 |
| `GITHUB_ACTION`                                                                                                                                                                                                                                                                                                              | 正在运行的操作的名称，或步骤的 [`id`](/zh/enterprise-server@3.22/actions/reference/workflows-and-actions/workflow-syntax#jobsjob_idstepsid)。 例如，对于操作，为 `__repo-owner_name-of-action-repo`。<br><br>                                                                                                                                                           |
| GitHub删除特殊字符，并在当前步骤运行没有`__run`的脚本时使用名称`id`。 如果在同一作业中多次使用相同的脚本或操作，则名称将包含一个由序号前跟下划线组成的后缀。 例如，运行的第一个脚本的名称将为 `__run`，第二个脚本的名称将为 `__run_2`。 同样，`actions/checkout` 的第二次调用将为 `actionscheckout2`。                                                                                                                                    |                                                                                                                                                                                                                                                                                                                                               |
| `GITHUB_ACTION_PATH`                                                                                                                                                                                                                                                                                                         | 操作所在的路径。 此属性仅在复合操作中受支持。 你可以使用此路径更改该操作加载的地点目录，并访问同一存储库里的其他文件。 例如，`/home/runner/work/_actions/repo-owner/name-of-action-repo/v1`。                                                                                                                                                                                                               |
| `GITHUB_ACTION_REPOSITORY`                                                                                                                                                                                                                                                                                                   | 对于执行操作的步骤，这是操作的所有者和存储库名称。 例如，`actions/checkout`。                                                                                                                                                                                                                                                                                              |
| `GITHUB_ACTIONS`                                                                                                                                                                                                                                                                                                             | 始终设置为 `true` 运行工作流时 GitHub Actions 。 可以使用此变量来区分在本地或按 GitHub Actions其运行测试时。                                                                                                                                                                                                                                                                    |
| `GITHUB_ACTOR`                                                                                                                                                                                                                                                                                                               | 发起工作流程的个人或应用程序的名称。 例如，`octocat`。                                                                                                                                                                                                                                                                                                              |
| `GITHUB_ACTOR_ID`                                                                                                                                                                                                                                                                                                            | 触发初始工作流运行的个人或应用的帐户 ID。 例如 `1234567`。 请注意，这与参与者用户名不同。                                                                                                                                                                                                                                                                                          |
| `GITHUB_API_URL`                                                                                                                                                                                                                                                                                                             | 返回 API URL。 例如：`http(s)://HOSTNAME/api/v3`。                                                                                                                                                                                                                                                                                                   |
| `GITHUB_BASE_REF`                                                                                                                                                                                                                                                                                                            | 工作流程运行中拉取请求的基本引用或目标分支的名称。 仅当触发工作流运行的事件是 `pull_request` 或 `pull_request_target` 时才设置此属性。 例如，`main`。                                                                                                                                                                                                                                            |
| `GITHUB_ENV`                                                                                                                                                                                                                                                                                                                 | 运行器上从工作流命令设置变量的文件的路径。 此文件的路径对于当前步骤是唯一的，并且在作业的每个步骤中都会更改。 例如，`/home/runner/work/_temp/_runner_file_commands/set_env_87406d6e-4979-4d42-98e1-3dab1f48b13a`。 有关详细信息，请参阅“[GitHub Actions 的工作流命令](/zh/enterprise-server@3.22/actions/reference/workflows-and-actions/workflow-commands#setting-an-environment-variable)”。                           |
| `GITHUB_EVENT_NAME`                                                                                                                                                                                                                                                                                                          | 触发工作流程的事件的名称。 例如，`workflow_dispatch`。                                                                                                                                                                                                                                                                                                         |
| `GITHUB_EVENT_PATH`                                                                                                                                                                                                                                                                                                          | 运行器上包含完整事件 web 挂钩负载的文件的路径。 例如，`/github/workflow/event.json`。                                                                                                                                                                                                                                                                                  |
| `GITHUB_GRAPHQL_URL`                                                                                                                                                                                                                                                                                                         | 返回 GraphQL API URL。 例如：`http(s)://HOSTNAME/api/graphql`。                                                                                                                                                                                                                                                                                      |
| `GITHUB_HEAD_REF`                                                                                                                                                                                                                                                                                                            | 工作流程运行中拉取请求的头部引用或来源分支。 仅当触发工作流运行的事件是 `pull_request` 或 `pull_request_target` 时才设置此属性。 例如，`feature-branch-1`。                                                                                                                                                                                                                                   |
| `GITHUB_JOB`                                                                                                                                                                                                                                                                                                                 | 当前作业的 [job\_id](/zh/enterprise-server@3.22/actions/reference/workflows-and-actions/workflow-syntax#jobsjob_id)。 例如，`greeting_job`。                                                                                                                                                                                                            |
| `GITHUB_OUTPUT`                                                                                                                                                                                                                                                                                                              | 运行器上从工作流命令设置当前步骤输出的文件的路径。 此文件的路径对于当前步骤是唯一的，并且在作业的每个步骤中都会更改。 例如，`/home/runner/work/_temp/_runner_file_commands/set_output_a50ef383-b063-46d9-9157-57953fc9f3f0`。 有关详细信息，请参阅“[GitHub Actions 的工作流命令](/zh/enterprise-server@3.22/actions/reference/workflows-and-actions/workflow-commands#setting-an-output-parameter)”。                        |
| `GITHUB_PATH`                                                                                                                                                                                                                                                                                                                | 运行器上从工作流命令设置系统 `PATH` 变量的文件的路径。 此文件的路径对于当前步骤是唯一的，并且在作业的每个步骤中都会更改。 例如，`/home/runner/work/_temp/_runner_file_commands/add_path_899b9445-ad4a-400c-aa89-249f18632cf5`。 有关详细信息，请参阅“[GitHub Actions 的工作流命令](/zh/enterprise-server@3.22/actions/reference/workflows-and-actions/workflow-commands#adding-a-system-path)”。                           |
| `GITHUB_REF`                                                                                                                                                                                                                                                                                                                 | 触发工作流运行的分支或标记的格式完整的参考。 对于 `push` 触发的工作流，这是被推送的分支或标签引用。 对于未合并的 `pull_request` 工作流，这是拉取请求合并分支。 如果 Pull Request 已合并，这是其被合并到的分支。 对于由 `release` 触发的工作流，这是创建的发布标记。 对于其他触发器，这是触发工作流运行的分支或标签引用。 此变量仅在分支或标记可用于事件类型时才会设置。 给出的引用格式是完整的，这意味着对于分支，其格式为 `refs/heads/<branch_name>`。 对于未合并的拉取请求事件（除了 `pull_request_target`），为 `refs/pull/<pr_number>/merge`。 |
| `pull_request_target` 事件具有基础分支中的 `ref`。 对于标记，格式为 `refs/tags/<tag_name>`。 例如，`refs/heads/feature-branch-1`。 有关拉取请求合并分支的详细信息，请参阅 [拉取请求](/zh/enterprise-server@3.22/pull-requests/collaborating-with-pull-requests/proposing-changes-to-your-work-with-pull-requests/about-pull-requests#pull-request-refs-and-merge-branches)。 |                                                                                                                                                                                                                                                                                                                                               |
| `GITHUB_REF_NAME`                                                                                                                                                                                                                                                                                                            | 触发工作流运行的分支或标记的短参考名称。 此值与 GitHub 上显示的分支或标记名称匹配。 例如，`feature-branch-1`。<br><br>对于未合并的拉取请求，格式为 `<pr_number>/merge`。                                                                                                                                                                                                                              |
| `GITHUB_REF_PROTECTED`                                                                                                                                                                                                                                                                                                       | 如果为触发工作流运行的 ref 配置分支保护 ，则为 `true`。                                                                                                                                                                                                                                                                                                            |
| `GITHUB_REF_TYPE`                                                                                                                                                                                                                                                                                                            | 触发工作流运行的 ref 类型。 有效值为 `branch` or `tag`。                                                                                                                                                                                                                                                                                                      |
| `GITHUB_REPOSITORY`                                                                                                                                                                                                                                                                                                          | 所有者和仓库名称。 例如，`octocat/Hello-World`。                                                                                                                                                                                                                                                                                                           |
| `GITHUB_REPOSITORY_ID`                                                                                                                                                                                                                                                                                                       | 存储库的 ID。 例如 `123456789`。 请注意，这与存储库名称不同。                                                                                                                                                                                                                                                                                                       |
| `GITHUB_REPOSITORY_OWNER`                                                                                                                                                                                                                                                                                                    | 存储库所有者的名称。 例如，`octocat`。                                                                                                                                                                                                                                                                                                                      |
| `GITHUB_REPOSITORY_OWNER_ID`                                                                                                                                                                                                                                                                                                 | 存储库所有者的帐户 ID。 例如 `1234567`。 请注意，这与所有者名称不同。                                                                                                                                                                                                                                                                                                    |
| `GITHUB_RETENTION_DAYS`                                                                                                                                                                                                                                                                                                      | 工作流运行日志和项目保留的天数。 例如，`90`。                                                                                                                                                                                                                                                                                                                     |
| `GITHUB_RUN_ATTEMPT`                                                                                                                                                                                                                                                                                                         | 存储库中每次尝试运行特定工作流的唯一编号。 对于工作流程运行的第一次尝试，此数字从 1 开始，并随着每次重新运行而递增。 例如，`3`。                                                                                                                                                                                                                                                                          |
| `GITHUB_RUN_ID`                                                                                                                                                                                                                                                                                                              |                                                                                                                                                                                                                                                                                                                                               |
| 存储库中每个工作流运行的唯一编号。 如果您重新执行工作流程运行，此编号不变。 例如， `1658821493`.                                                                                                                                                                                                                                                                     |                                                                                                                                                                                                                                                                                                                                               |
| `GITHUB_RUN_NUMBER`                                                                                                                                                                                                                                                                                                          |                                                                                                                                                                                                                                                                                                                                               |
| 仓库中特定工作流程每个运行的唯一编号。 工作流首次运行时，此编号从 1 开始，并随着每次新的运行而递增。 如果您重新执行工作流程运行，此编号不变。 例如， `3`.                                                                                                                                                                                                                                           |                                                                                                                                                                                                                                                                                                                                               |
| `GITHUB_SERVER_URL`                                                                                                                                                                                                                                                                                                          | 服务器的 URL GitHub 。 例如：`https://HOSTNAME`。                                                                                                                                                                                                                                                                                                      |
| `GITHUB_SHA`                                                                                                                                                                                                                                                                                                                 | 触发工作流的提交 SHA。 此提交 SHA 的值取决于触发工作流程的事件。 有关详细信息，请参阅“[触发工作流的事件](/zh/enterprise-server@3.22/actions/reference/workflows-and-actions/events-that-trigger-workflows)”。 例如，`ffac537e6cbbf934b08745a378932722df287a53`。                                                                                                                                |
| `GITHUB_STEP_SUMMARY`                                                                                                                                                                                                                                                                                                        | 运行器上包含工作流命令中的作业摘要的文件的路径。 此文件的路径对于当前步骤是唯一的，并且在作业的每个步骤中都会更改。 例如，`/home/runner/_layout/_work/_temp/_runner_file_commands/step_summary_1cb22d7f-5663-41a8-9ffc-13472605c76c`。 有关详细信息，请参阅“[GitHub Actions 的工作流命令](/zh/enterprise-server@3.22/actions/reference/workflows-and-actions/workflow-commands#adding-a-job-summary)”。                     |
| `GITHUB_TRIGGERING_ACTOR`                                                                                                                                                                                                                                                                                                    | 发起工作流运行的用户的用户名。 如果工作流运行是重新运行，则此值可能与 `github.actor` 不同。 即使启动重新运行的参与者 (`github.triggering_actor`) 具有不同的权限，任何工作流重新运行都将使用 `github.actor` 的权限。                                                                                                                                                                                                     |
| `GITHUB_WORKFLOW`                                                                                                                                                                                                                                                                                                            | 工作流的名称。 例如，`My test workflow`。 如果工作流文件未指定 `name`，则此变量的值是存储库中工作流文件的完整路径。                                                                                                                                                                                                                                                                       |
| `GITHUB_WORKFLOW_REF`                                                                                                                                                                                                                                                                                                        | 工作流的引用路径。 例如，`octocat/hello-world/.github/workflows/my-workflow.yml@refs/heads/my_branch`。                                                                                                                                                                                                                                                    |
| `GITHUB_WORKFLOW_SHA`                                                                                                                                                                                                                                                                                                        | 工作流文件的提交 SHA。                                                                                                                                                                                                                                                                                                                                 |
| `GITHUB_WORKSPACE`                                                                                                                                                                                                                                                                                                           | 运行器上步骤的默认工作目录，以及使用 [`checkout`](https://github.com/actions/checkout) 操作时存储库的默认位置。 例如，`/home/runner/work/my-repo-name/my-repo-name`。                                                                                                                                                                                                           |
| `RUNNER_ARCH`                                                                                                                                                                                                                                                                                                                | 执行作业的运行器的体系结构。 可能的值为 `X86`、`X64`、`ARM` 或 `ARM64`。                                                                                                                                                                                                                                                                                             |
| `RUNNER_DEBUG`                                                                                                                                                                                                                                                                                                               | 仅当启用[调试日志记录](/zh/enterprise-server@3.22/actions/how-tos/monitor-workflows/enable-debug-logging)并且始终具有值 `1` 时，才会进行此设置。 它可以用作指示器，以便在自己的作业步骤中启用更多调试或详细日志记录。                                                                                                                                                                                      |
| `RUNNER_ENVIRONMENT`                                                                                                                                                                                                                                                                                                         | 执行作业的运行器的环境。 可能的值包括：对于 GitHub 提供的 GitHub 托管的运行器为 `github-hosted`，对于存储库所有者配置的自承载运行器为 `self-hosted`。                                                                                                                                                                                                                                            |
| `RUNNER_NAME`                                                                                                                                                                                                                                                                                                                |                                                                                                                                                                                                                                                                                                                                               |
| 执行作业的运行器的名称。 此名称在工作流运行中可能并不唯一，因为存储库和组织级别的运行器可以使用同一名称。 例如 `Hosted Agent`                                                                                                                                                                                                                                                      |                                                                                                                                                                                                                                                                                                                                               |
| `RUNNER_OS`                                                                                                                                                                                                                                                                                                                  |                                                                                                                                                                                                                                                                                                                                               |
| 执行作业的运行器的操作系统。 可能的值为 `Linux`、`Windows` 或 `macOS`。 例如 `Windows`                                                                                                                                                                                                                                                               |                                                                                                                                                                                                                                                                                                                                               |
| `RUNNER_TEMP`                                                                                                                                                                                                                                                                                                                |                                                                                                                                                                                                                                                                                                                                               |
| 运行器临时目录的路径。 此目录在每个作业的开始和结束时都是空的。 注意，如果运行者的用户帐户没有权限删除这些文件，则不会被删除。 例如 `D:\a\_temp`                                                                                                                                                                                                                                             |                                                                                                                                                                                                                                                                                                                                               |
| `RUNNER_TOOL_CACHE`                                                                                                                                                                                                                                                                                                          |                                                                                                                                                                                                                                                                                                                                               |
| 包含用于 GitHub 托管的运行器的预安装工具的目录路径。 有关详细信息，请参阅“[GitHub 托管的运行程序](/zh/enterprise-server@3.22/actions/concepts/runners/github-hosted-runners#preinstalled-software-for-github-owned-images)”。 例如 `C:\hostedtoolcache\windows`                                                                                                        |                                                                                                                                                                                                                                                                                                                                               |

> \[!NOTE]
> 如果需要在作业中使用工作流运行的 URL，可以组合以下变量：`$GITHUB_SERVER_URL/$GITHUB_REPOSITORY/actions/runs/$GITHUB_RUN_ID`

## 配置变量的命名约定

以下规则适用于配置变量名称：

* 只能包含字母数字字符（`[a-z]`、`[A-Z]`、`[0-9]`）或下划线 (`_`)。 不允许空格。
* 不得以 `GITHUB_` 前缀开头。
* 不能以数字开头。
* 引用时不区分大小写。 无论输入格式如何，GitHub 始终以大写形式存储机密名称。
* 在创建的仓库、组织或企业中必须是唯一的。

## 环境变量命名约定

设置环境变量时，不能使用任何默认环境变量名称。 有关默认环境变量的完整列表，请参阅下面的 [变量参考](/zh/enterprise-server@3.22/actions/reference/workflows-and-actions/variables#default-environment-variables)。 如果尝试重写其中一个默认变量的值，则会忽略赋值。

> \[!NOTE]
> 通过在步骤中使用 <span style="white-space: nowrap;">`run: env`</span> 并检查此步骤的输出，可以列出可用于工作流步骤的整个环境变量集。

## 配置变量优先级

如果具有相同名称的变量存在于多个级别，则级别最低的变量优先。 例如，如果组织级别变量的名称与存储库级别的变量相同，则存储库级别的变量优先。 同样，如果组织、存储库和环境都具有同名的变量，则环境级变量优先。

> \[!NOTE]
> 作业开始执行后，环境级变量仅在运行器上可用。 这意味着环境级别变量不会覆盖`env`和`vars`上下文中的变量。

对于可重用工作流，将使用调用方工作流存储库中的变量。 存储库中包含被调用工作流的变量不可用于调用方工作流。

## 配置变量的限制

单个变量大小限制为 48 KB。

最多可以存储 1,000 个组织变量、每个存储库 500 个变量和每个环境 100 个变量。 组织和存储库变量的总大小限制为每个工作流运行 10 MB。

在存储库中创建的工作流可以访问以下数量的变量：

* 如果存储库变量的总大小小于 10 MB，则最多 500 个存储库变量。 如果存储库变量的总大小超过 10 MB，则只有低于限制的存储库变量才可用（按变量名称的字母顺序排序）。
* 如果存储库和组织变量的总大小小于 10 MB，则最多 1,000 个组织变量。 如果组织和存储库变量的总大小超过 10 MB，则只有低于该限制的组织变量将可用（在考虑存储库变量并按变量名称的字母顺序排序后）。
* 最多 100 个环境级别变量。

> \[!NOTE]
> 环境级别变量不计入 10 MB 的总大小限制。 如果超出了存储库和组织变量的总大小限制，但仍需要其他变量，则可以使用一个环境并在该环境中定义其他变量。

## 支持的上下文

你通常将使用 `env` 或 `github` 上下文来访问工作流部分中的变量值，这些值是在作业发送给运行器之前处理的。

> \[!WARNING] 请勿将 `github` 上下文打印到日志。 它包含敏感信息。

| 背景信息     | 用例                     | 示例                                                                   |
| -------- | ---------------------- | -------------------------------------------------------------------- |
| `env`    | 引用工作流中定义的自定义变量。        | <span style="white-space: nowrap;">`${{ env.MY_VARIABLE }}`</span>   |
| `github` | 引用有关工作流程运行的信息和触发运行的事件。 | <span style="white-space: nowrap;">`${{ github.repository }}`</span> |