本文列出了可在 GitHub Actions 工作流中使用的支持变量,包括环境变量、配置变量和 GitHub 提供的默认变量。 配置工作流时,可使用此参考查找变量名称、命名约定、限制和支持的上下文。
有关变量的详细信息,请参阅 变量。
默认环境变量
GitHub 设置的默认环境变量可用于工作流程中的每个步骤。
由于默认环境变量由 GitHub 设置,并且未在工作流中进行定义,因此无法通过 env 上下文访问它们。 但是,大多数默认变量都有一个对应且名称类似的上下文属性。 例如,在工作流处理期间,可以使用 ${{ github.ref }} 上下文属性读取 GITHUB_REF 变量的值。
不能覆盖名为 GITHUB_* 和 RUNNER_* 的默认环境变量的值。 目前可以覆盖 CI 变量的值。 但是,并不能保证这总是可行。 有关设置环境变量的详细信息,请参阅 在变量中存储信息 和 GitHub Actions 的工作流命令。
强烈建议操作使用变量访问文件系统,而非使用硬编码的文件路径。 GitHub 设置供操作用于所有运行器环境中的变量。
| 变量 | 说明 | 
|---|---|
| CI | 始终设置为 true。 | 
| GITHUB_ACTION | 正在运行的操作的名称,或步骤的 id。 例如,对于操作,为__repo-owner_name-of-action-repo。在当前步骤运行不带 id的脚本时,GitHub 会删除特殊字符并使用名称__run。 如果在同一作业中多次使用相同的脚本或操作,则名称将包含一个由序号前跟下划线组成的后缀。 例如,运行的第一个脚本的名称将为__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 | 当 GitHub Actions 运行工作流时,始终设置为 true。 您可以使用此变量来区分测试是在本地运行还是通过 GitHub Actions 运行。 | 
| GITHUB_ACTOR | 发起工作流程的个人或应用程序的名称。 例如, octocat。 | 
| GITHUB_ACTOR_ID | 触发初始工作流运行的个人或应用的帐户 ID。 例如 1234567。 请注意,这与参与者用户名不同。 | 
| GITHUB_API_URL | 返回 API URL。 例如: https://api.github.com。 | 
| 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 的工作流命令”。 | 
| GITHUB_EVENT_NAME | 触发工作流程的事件的名称。 例如 workflow_dispatch。 | 
| GITHUB_EVENT_PATH | 运行器上包含完整事件 web 挂钩负载的文件的路径。 例如 /github/workflow/event.json。 | 
| GITHUB_GRAPHQL_URL | 返回 GraphQL API URL。 例如: https://api.github.com/graphql。 | 
| GITHUB_HEAD_REF | 工作流程运行中拉取请求的头部引用或来源分支。 仅当触发工作流运行的事件是 pull_request或pull_request_target时才设置此属性。 例如feature-branch-1。 | 
| GITHUB_JOB | 当前作业的 job_id。 例如, greeting_job。 | 
| GITHUB_OUTPUT | 运行器上从工作流命令设置当前步骤输出的文件的路径。 此文件的路径对于当前步骤是唯一的,并且在作业的每个步骤中都会更改。 例如, /home/runner/work/_temp/_runner_file_commands/set_output_a50ef383-b063-46d9-9157-57953fc9f3f0。 有关详细信息,请参阅“GitHub Actions 的工作流命令”。 | 
| GITHUB_PATH | 运行器上从工作流命令设置系统 PATH变量的文件的路径。 此文件的路径对于当前步骤是唯一的,并且在作业的每个步骤中都会更改。 例如,/home/runner/work/_temp/_runner_file_commands/add_path_899b9445-ad4a-400c-aa89-249f18632cf5。 有关详细信息,请参阅“GitHub Actions 的工作流命令”。 | 
| GITHUB_REF | 触发工作流运行的分支或标记的格式完整的参考。 对于 push触发的工作流,这是推送的分支或标记参考。 对于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。 | 
| GITHUB_REF_NAME | 触发工作流运行的分支或标记的短参考名称。 此值与 GitHub 上显示的分支或标记名称匹配。 例如, feature-branch-1。拉取请求的格式为 <pr_number>/merge。 | 
| GITHUB_REF_PROTECTED | 如果为触发工作流运行的 ref 配置分支保护  或 规则集 ,则为 true。 | 
| GITHUB_REF_TYPE | 触发工作流运行的 ref 类型。 有效值为 branchortag。 | 
| 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 | GitHub 服务器的 URL。 例如: https://github.com。 | 
| GITHUB_SHA | 触发工作流的提交 SHA。 此提交 SHA 的值取决于触发工作流程的事件。 有关详细信息,请参阅“触发工作流的事件”。 例如, ffac537e6cbbf934b08745a378932722df287a53。 | 
| GITHUB_STEP_SUMMARY | 运行器上包含工作流命令中的作业摘要的文件的路径。 此文件的路径对于当前步骤是唯一的,并且在作业的每个步骤中都会更改。 例如, /home/runner/_layout/_work/_temp/_runner_file_commands/step_summary_1cb22d7f-5663-41a8-9ffc-13472605c76c。 有关详细信息,请参阅“GitHub Actions 的工作流命令”。 | 
| 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操作时存储库的默认位置。 例如,/home/runner/work/my-repo-name/my-repo-name。 | 
| RUNNER_ARCH | 执行作业的运行器的体系结构。 可能的值为 X86、X64、ARM或ARM64。 | 
| RUNNER_DEBUG | 仅当启用调试日志记录并且始终具有值 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 托管的运行程序”。 例如 C:\hostedtoolcache\windows | 
注意
如果需要在作业中使用工作流运行的 URL,可以组合以下变量:$GITHUB_SERVER_URL/$GITHUB_REPOSITORY/actions/runs/$GITHUB_RUN_ID
配置变量的命名约定
以下规则适用于配置变量名称:
- 只能包含字母数字字符([a-z]、[A-Z]、[0-9])或下划线 (_)。 不允许空格。
- 不得以 GITHUB_前缀开头。
- 不能以数字开头。
- 引用时不区分大小写。 无论输入格式如何,GitHub 始终以大写形式存储机密名称。
- 在创建的仓库、组织或企业中必须是唯一的。
环境变量命名约定
设置环境变量时,不能使用任何默认环境变量名称。 有关默认环境变量的完整列表,请参阅下面的 变量参考。 如果尝试重写其中一个默认变量的值,则会忽略赋值。
注意
通过在步骤中使用 run: env 并检查此步骤的输出,可以列出可用于工作流步骤的整个环境变量集。
配置变量优先级
如果具有相同名称的变量存在于多个级别,则级别最低的变量优先。 例如,如果组织级别变量的名称与存储库级别的变量相同,则存储库级别的变量优先。 同样,如果组织、存储库和环境都具有同名的变量,则环境级变量优先。
对于可重用工作流,将使用调用方工作流存储库中的变量。 存储库中包含被调用工作流的变量不可用于调用方工作流。
配置变量的限制
单个变量大小限制为 48 KB。
最多可以存储 1,000 个组织变量、每个存储库 500 个变量和每个环境 100 个变量。 组织和存储库变量的总大小限制为每个工作流运行 256 KB。
在存储库中创建的工作流可以访问以下数量的变量:
- 如果存储库变量的总大小小于 256 KB,则最多 500 个存储库变量。 如果存储库变量的总大小超过 256 KB,则只有低于限制的存储库变量才可用(按变量名称的字母顺序排序)。
- 如果存储库和组织变量的总大小小于 256 KB,则最多 1,000 个组织变量。 如果组织和存储库变量的总大小超过 256 KB,则只有低于该限制的组织变量将可用(在考虑存储库变量并按变量名称的字母顺序排序后)。
- 最多 100 个环境级别变量。
注意
环境级别变量不计入 256 KB 的总大小限制。 如果超出了存储库和组织变量的总大小限制,但仍需要其他变量,则可以使用一个环境并在该环境中定义其他变量。
支持的上下文
你通常将使用 env 或 github 上下文来访问工作流部分中的变量值,这些值是在作业发送给运行器之前处理的。
警告
 请勿将 github 上下文打印到日志。 它包含敏感信息。
| 上下文 | 使用案例 | 示例 | 
|---|---|---|
| env | 引用工作流中定义的自定义变量。 | ${{ env.MY_VARIABLE }} | 
| github | 引用有关工作流程运行的信息和触发运行的事件。 | ${{ github.repository }} |