注:GitHub Enterprise Server 2.22 上的 GitHub Actions 支持是有限的公测版。 测试已结束。 GitHub Actions 现在一般可用于 GitHub Enterprise Server 3.0 或更新版本。 更多信息请参阅 GitHub Enterprise Server 3.0 发行说明。
- 有关升级到 GitHub Enterprise Server 3.0 或更新版本的更多信息,请参阅“升级 GitHub Enterprise Server”。
- 有关在升级后配置 GitHub Actions 的更多信息,请参阅 GitHub Enterprise Server 3.0 的文档。
注: GitHub 托管的运行器目前在 GitHub Enterprise Server 上不受支持。 您可以在 GitHub 公共路线图 上查看有关未来支持计划的更多信息。
关于环境变量
GitHub 设置适用于工作流程运行中每个步骤的默认环境变量。 环境变量区分大小写。 在操作或步骤中运行的命令可以创建、读取和修改环境变量。
要设置自定义环境变量,您需要在工作流程文件中指定变量。 您可以使用 jobs.<job_id>.steps[*].env
、jobs.<job_id>.env
和 env
关键字定义步骤、作业或整个工作流程的环境变量。 更多信息请参阅“GitHub 的工作流程语法”。
jobs:
weekday_job:
runs-on: ubuntu-latest
env:
DAY_OF_WEEK: Mon
steps:
- name: "Hello world when it's Monday"
if: ${{ env.DAY_OF_WEEK == 'Mon' }}
run: echo "Hello $FIRST_NAME $middle_name $Last_Name, today is Monday!"
env:
FIRST_NAME: Mona
middle_name: The
Last_Name: Octocat
要在工作流程文件中使用环境变量的值,您应该使用 env
上下文。 如果要在运行器中使用环境变量的值,您可以使用运行器操作系统的正常方法来读取环境变量。
如果使用工作流程文件的 run
键从运行器操作系统中读取环境变量(如上例所示),则在作业发送到运行器后,该变量将在运行器操作系统中被替换。 对于工作流程文件的其他部分,必须使用 env
上下文来读取环境变量;这是因为工作流程键(例如 if
)需要在发送到运行器之前,在工作流程处理过程中替换变量。
You can also use the set-env
workflow command to set an environment variable that the following steps in a job can use. set-env
命令可直接由操作使用,或使用 run
关键字作为工作流程文件中的 shell 命令。 更多信息请参阅“GitHub Actions 的工作流程命令”。
默认环境变量
强烈建议操作使用环境变量访问文件系统,而非使用硬编码的文件路径。 GitHub 设置供操作用于所有运行器环境中的环境变量。
环境变量 | 描述 |
---|---|
CI | 始终设置为 true 。 |
GITHUB_WORKFLOW | 工作流程的名称。 |
GITHUB_RUN_ID | 仓库中每个运行的唯一编号。 如果您重新执行工作流程运行,此编号不变。 |
GITHUB_RUN_NUMBER | 仓库中特定工作流程每个运行的唯一编号。 此编号从 1(对应于工作流程的第一个运行)开始,然后随着每个新的运行而递增。 如果您重新执行工作流程运行,此编号不变。 |
GITHUB_JOB | 当前作业的 job_id。 |
GITHUB_ACTION | 操作唯一的标识符 (id )。 |
GITHUB_ACTION_PATH | 您的操作所在的路径。 您可以使用此路径访问与操作位于同一仓库中的文件。 This variable is only supported in composite actions. |
GITHUB_ACTIONS | 当 GitHub Actions 运行工作流程时,始终设置为 true 。 您可以使用此变量来区分测试是在本地运行还是通过 GitHub Actions 运行。 |
GITHUB_ACTOR | 发起工作流程的个人或应用程序的名称。 例如 octocat 。 |
GITHUB_REPOSITORY | 所有者和仓库名称。 例如 octocat/Hello-World 。 |
GITHUB_EVENT_NAME | 触发工作流程的 web 挂钩事件的名称。 |
GITHUB_EVENT_PATH | 具有完整 web 挂钩事件有效负载的文件路径。 例如 /github/workflow/event.json 。 |
GITHUB_WORKSPACE | The GitHub workspace directory path, initially empty. 例如 /home/runner/work/my-repo-name/my-repo-name 。 The actions/checkout action will check out files, by default a copy of your repository, within this directory. |
GITHUB_SHA | 触发工作流程的提交 SHA。 例如 ffac537e6cbbf934b08745a378932722df287a53 。 |
GITHUB_REF | 触发工作流程的分支或标记参考。 例如 refs/heads/feature-branch-1 。 如果分支或标记都不适用于事件类型,则变量不会存在。 |
GITHUB_HEAD_REF | 仅为拉取请求事件设置。 头部分支的名称。 |
GITHUB_BASE_REF | 仅为拉取请求事件设置。 基础分支的名称。 |
GITHUB_SERVER_URL | 返回 GitHub Enterprise Server 服务器的 URL。 例如: https://[hostname] 。 |
GITHUB_API_URL | 返回 API URL。 例如: http(s)://[hostname]/api/v3 。 |
GITHUB_GRAPHQL_URL | 返回 GraphQL API URL。 例如: http(s)://[hostname]/api/graphql 。 |
RUNNER_NAME | The name of the runner executing the job. |
RUNNER_OS | 执行作业的运行器的操作系统。 可能的值为 Linux 、Windows 或 macOS 。 |
RUNNER_TEMP | 运行器临时目录的路径。 此目录在每个作业的开始和结束时都是空的。 注意,如果运行者的用户帐户没有权限删除这些文件,则不会被删除。 |
RUNNER_TOOL_CACHE | 包含 GitHub 托管运行器预安装工具的目录路径。 更多信息请参阅“GitHub 托管运行器的规范”。 |
注:如果需要在作业中使用工作流程运行的 URL,您可以组合这些环境变量:$GITHUB_SERVER_URL/$GITHUB_REPOSITORY/actions/runs/$GITHUB_RUN_ID
确定何时使用默认环境变量或上下文
GitHub Actions 包含一个称为上下文的变量集和一个称为默认环境变量的类似变量集。 这些变量预期用于工作流程中的不同点:
- 默认环境变量:这些变量仅存在于执行作业的运行器上。 更多信息请参阅“默认环境变量”。
- 上下文:您可以在工作流程的任何时候使用大多数上下文,包括当默认环境变量不可用时。 例如,您可以使用带表达式的上下文执行初始处理,然后将作业路由到运行器以供执行;这允许您使用带有条件
if
关键字的上下文来确定步骤是否应运行。 作业运行后,您还可以从执行作业的运行器(如runner.os
)检索上下文变量。 有关您可以在工作流程中使用各种上下文的详细信息,请参阅“上下文可用性”。
下面的示例演示了这些不同类型的环境变量如何在一个作业中一起使用:
name: CI
on: push
jobs:
prod-check:
if: ${{ github.ref == 'refs/heads/main' }}
runs-on: ubuntu-latest
steps:
- run: echo "Deploying to production server on branch $GITHUB_REF"
在此示例中,if
语句检查 github.ref
上下文以确定当前分支名称;如果名称是 refs/heads/main
,则执行后续步骤。 if
检查由 GitHub Actions 处理,作业仅在结果为 true
时才发送到运行器。 作业发送到运行器后, 该步骤将执行并引用运行器的 $GITHUB_REF
环境变量。
环境变量命名约定
设置自定义环境变量时,不能使用上面列出的前缀为 GITHUB_
的任何默认环境变量名称。 如果尝试重写其中一个默认环境变量的值,则会忽略赋值。
您设置的指向文件系统上某个位置的任何新环境变量都应该有 _PATH
后缀。 HOME
和 GITHUB_WORKSPACE
默认变量例外于此约定,因为 "home" 和 "workspace" 一词已经暗示位置。