可用上下文
| 上下文名称 | 类型 | 说明 | 
|---|---|---|
| github | object | 有关工作流运行的信息。 有关更多信息,请参阅 github上下文。 | 
| env | object | 包含工作流、作业或步骤中设置的变量。 有关更多信息,请参阅 env上下文。 | 
| vars | object | 包含在存储库、组织或环境级别上设置的变量集。 有关更多信息,请参阅 vars上下文。 | 
| job | object | 有关当前运行的作业的信息。 有关详细信息,请参阅 job上下文。 | 
| jobs | object | 仅对于可重用工作流,包含可重用工作流中作业的输出。 有关更多信息,请参阅 jobs上下文。 | 
| steps | object | 有关当前作业中已运行的步骤的信息。 有关更多信息,请参阅 steps上下文。 | 
| runner | object | 有关运行当前作业的运行器的信息。 有关详细信息,请参阅 runner上下文。 | 
| secrets | object | 包含可用于工作流运行的机密的名称和值。 有关详细信息,请参阅 secrets上下文。 | 
| strategy | object | 有关当前作业的矩阵执行策略的信息。 有关详细信息,请参阅 strategy上下文。 | 
| matrix | object | 包含适用于当前作业的工作流中定义的矩阵属性。 有关详细信息,请参阅 matrix上下文。 | 
| needs | object | 包含定义为当前作业依赖项的所有作业的输出。 有关详细信息,请参阅 needs上下文。 | 
| inputs | object | 包含可重用或手动触发的工作流的输入。 有关更多信息,请参阅 inputs上下文。 | 
作为表达式的一部分,您可以使用以下两种语法之一访问上下文信息。
- 索引语法:github['sha']
- 属性取消引用语法:github.sha
若要使用属性取消引用语法,属性名称必须以字母或 _ 开头,并且只能包含字母数字字符、- 或 _。
如果尝试取消引用不存在的属性,则计算结果为空字符串。
确定何时使用上下文
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"
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 变量。
上下文可用性
在整个工作流程运行过程中,提供不同的上下文。 例如,secrets 上下文只能在作业中的某些位置使用。
此外,某些功能只能在某些地方使用。 例如,hashFiles 函数在任何地方都不可用。
下表列出了工作流中各个上下文和特殊函数的使用限制。 列出的上下文仅适用于给定的工作流密钥,不能在其他任何地方使用。 除非下面列出,否则可以在任何地方使用函数。
| 工作流程键 | 上下文 | 特殊函数 | 
|---|---|---|
| run-name | github, inputs, vars | 无 | 
| concurrency | github, inputs, vars | 无 | 
| env | github, secrets, inputs, vars | 无 | 
| jobs.<job_id>.concurrency | github, needs, strategy, matrix, inputs, vars | 无 | 
| jobs.<job_id>.container | github, needs, strategy, matrix, vars, inputs | 无 | 
| jobs.<job_id>.container.credentials | github, needs, strategy, matrix, env, vars, secrets, inputs | 无 | 
| jobs.<job_id>.container.env.<env_id> | github, needs, strategy, matrix, job, runner, env, vars, secrets, inputs | 无 | 
| jobs.<job_id>.container.image | github, needs, strategy, matrix, vars, inputs | 无 | 
| jobs.<job_id>.continue-on-error | github, needs, strategy, vars, matrix, inputs | 无 | 
| jobs.<job_id>.defaults.run | github, needs, strategy, matrix, env, vars, inputs | 无 | 
| jobs.<job_id>.env | github, needs, strategy, matrix, vars, secrets, inputs | 无 | 
| jobs.<job_id>.environment | github, needs, strategy, matrix, vars, inputs | 无 | 
| jobs.<job_id>.environment.url | github, needs, strategy, matrix, job, runner, env, vars, steps, inputs | 无 | 
| jobs.<job_id>.if | github, needs, vars, inputs | always, cancelled, success, failure | 
| jobs.<job_id>.name | github, needs, strategy, matrix, vars, inputs | 无 | 
| jobs.<job_id>.outputs.<output_id> | github, needs, strategy, matrix, job, runner, env, vars, secrets, steps, inputs | 无 | 
| jobs.<job_id>.runs-on | github, needs, strategy, matrix, vars, inputs | 无 | 
| jobs.<job_id>.secrets.<secrets_id> | github, needs, strategy, matrix, secrets, inputs, vars | 无 | 
| jobs.<job_id>.services | github, needs, strategy, matrix, vars, inputs | 无 | 
| jobs.<job_id>.services.<service_id>.credentials | github, needs, strategy, matrix, env, vars, secrets, inputs | 无 | 
| jobs.<job_id>.services.<service_id>.env.<env_id> | github, needs, strategy, matrix, job, runner, env, vars, secrets, inputs | 无 | 
| jobs.<job_id>.steps.continue-on-error | github, needs, strategy, matrix, job, runner, env, vars, secrets, steps, inputs | hashFiles | 
| jobs.<job_id>.steps.env | github, needs, strategy, matrix, job, runner, env, vars, secrets, steps, inputs | hashFiles | 
| jobs.<job_id>.steps.if | github, needs, strategy, matrix, job, runner, env, vars, steps, inputs | always, cancelled, success, failure, hashFiles | 
| jobs.<job_id>.steps.name | github, needs, strategy, matrix, job, runner, env, vars, secrets, steps, inputs | hashFiles | 
| jobs.<job_id>.steps.run | github, needs, strategy, matrix, job, runner, env, vars, secrets, steps, inputs | hashFiles | 
| jobs.<job_id>.steps.timeout-minutes | github, needs, strategy, matrix, job, runner, env, vars, secrets, steps, inputs | hashFiles | 
| jobs.<job_id>.steps.with | github, needs, strategy, matrix, job, runner, env, vars, secrets, steps, inputs | hashFiles | 
| jobs.<job_id>.steps.working-directory | github, needs, strategy, matrix, job, runner, env, vars, secrets, steps, inputs | hashFiles | 
| jobs.<job_id>.strategy | github, needs, vars, inputs | 无 | 
| jobs.<job_id>.timeout-minutes | github, needs, strategy, matrix, vars, inputs | 无 | 
| jobs.<job_id>.with.<with_id> | github, needs, strategy, matrix, inputs, vars | 无 | 
| on.workflow_call.inputs.<inputs_id>.default | github, inputs, vars | 无 | 
| on.workflow_call.outputs.<output_id>.value | github, jobs, vars, inputs | 无 | 
示例:将上下文信息打印到日志
您可以将上下文的内容打印到日志中进行调试。 需要使用 toJSON 函数  才能将 JSON 对象优质打印到日志。
警告
使用整个 github 上下文时,请注意其中包含敏感信息,例如 github.token。 GitHub 在打印到控制台时会隐藏密钥,但您在导出或打印上下文时应谨慎行事。
name: Context testing
on: push
jobs:
  dump_contexts_to_log:
    runs-on: ubuntu-latest
    steps:
      - name: Dump GitHub context
        env:
          GITHUB_CONTEXT: ${{ toJson(github) }}
        run: echo "$GITHUB_CONTEXT"
      - name: Dump job context
        env:
          JOB_CONTEXT: ${{ toJson(job) }}
        run: echo "$JOB_CONTEXT"
      - name: Dump steps context
        env:
          STEPS_CONTEXT: ${{ toJson(steps) }}
        run: echo "$STEPS_CONTEXT"
      - name: Dump runner context
        env:
          RUNNER_CONTEXT: ${{ toJson(runner) }}
        run: echo "$RUNNER_CONTEXT"
      - name: Dump strategy context
        env:
          STRATEGY_CONTEXT: ${{ toJson(strategy) }}
        run: echo "$STRATEGY_CONTEXT"
      - name: Dump matrix context
        env:
          MATRIX_CONTEXT: ${{ toJson(matrix) }}
        run: echo "$MATRIX_CONTEXT"
name: Context testing
on: push
jobs:
  dump_contexts_to_log:
    runs-on: ubuntu-latest
    steps:
      - name: Dump GitHub context
        env:
          GITHUB_CONTEXT: ${{ toJson(github) }}
        run: echo "$GITHUB_CONTEXT"
      - name: Dump job context
        env:
          JOB_CONTEXT: ${{ toJson(job) }}
        run: echo "$JOB_CONTEXT"
      - name: Dump steps context
        env:
          STEPS_CONTEXT: ${{ toJson(steps) }}
        run: echo "$STEPS_CONTEXT"
      - name: Dump runner context
        env:
          RUNNER_CONTEXT: ${{ toJson(runner) }}
        run: echo "$RUNNER_CONTEXT"
      - name: Dump strategy context
        env:
          STRATEGY_CONTEXT: ${{ toJson(strategy) }}
        run: echo "$STRATEGY_CONTEXT"
      - name: Dump matrix context
        env:
          MATRIX_CONTEXT: ${{ toJson(matrix) }}
        run: echo "$MATRIX_CONTEXT"
github 上下文
github 上下文包含有关工作流运行和触发运行的事件的信息。 可以在环境变量中读取大多数 github 上下文数据。 有关环境变量的详细信息,请参阅“在变量中存储信息”。
警告
使用整个 github 上下文时,请注意其中包含敏感信息,例如 github.token。 GitHub 在打印到控制台时会隐藏密钥,但您在导出或打印上下文时应谨慎行事。
创建工作流和操作时,应始终考虑代码是否可能执行潜在攻击者的不受信任的输入。 某些上下文应被视为不受信任的输入,因为攻击者可能会插入自己的恶意内容。 有关详细信息,请参阅“安全使用参考”。
| 属性名称 | 类型 | 说明 | 
|---|---|---|
| github | object | 工作流程中任何作业或步骤期间可用的顶层上下文。 此对象包含下面列出的所有属性。 | 
| github.action | string | 正在运行的操作的名称,或步骤的 id。 在当前步骤运行脚本(无id)时,GitHub 删除特殊字符并使用名称__run。 如果在同一作业中多次使用相同的操作,则名称将包含一个前面跟序号和下划线的后缀。 例如,运行的第一个脚本名称__run,则第二个脚本将命名为__run_2。 同样,actions/checkout的第二次调用将为actionscheckout2。 | 
| github.action_path | string | 操作所在的路径。 此属性仅在复合操作中受支持。 可以使用此路径访问与操作位于同一存储库中的文件,例如将目录更改为该路径: cd ${{ github.action_path }}。 | 
| github.action_ref | string | 对于执行操作的步骤,这是正在执行的操作的引用。 例如, v2。不要在 run关键字中使用。 若要使此上下文适用于复合操作,请在复合操作的env上下文中引用它。 | 
| github.action_repository | string | 对于执行操作的步骤,这是操作的所有者和存储库名称。 例如, actions/checkout。不要在 run关键字中使用。 若要使此上下文适用于复合操作,请在复合操作的env上下文中引用它。 | 
| github.action_status | string | 对于复合操作,这是复合操作的当前结果。 | 
| github.actor | string | 触发初始工作流运行的用户的用户名。 如果工作流运行是重新运行,则此值可能与 github.triggering_actor不同。 即使启动重新运行的参与者 (github.triggering_actor) 具有不同的权限,任何工作流重新运行都将使用github.actor的权限。 | 
| github.actor_id | string | 触发初始工作流运行的个人或应用的帐户 ID。 例如 1234567。 请注意,这与参与者用户名不同。 | 
| github.api_url | string | GitHub REST API 的 URL。 | 
| github.base_ref | string | 工作流运行中拉取请求的 base_ref或目标分支。 仅当触发工作流运行的事件是pull_request或pull_request_target时,才可使用此属性。 | 
| github.env | string | 运行器上从工作流程命令到设置环境变量的文件路径。 此文件对于当前步骤是唯一的,并且是作业中每个步骤的不同文件。 有关详细信息,请参阅“GitHub Actions 的工作流命令”。 | 
| github.event | object | 完整事件 web 挂钩有效负载。 您可以使用上下文访问事件的个别属性。 此对象与触发工作流运行的事件的 web 挂钩有效负载相同,并且对于每个事件都是不同的。 每个 GitHub Actions 事件的 Webhook 在“触发工作流的事件”中链接。 例如,对于由 push事件触发的工作流运行,此对象包含推送 webhook 有效负载的内容。 | 
| github.event_name | string | 触发工作流程运行的事件的名称。 | 
| github.event_path | string | 运行器上包含完整事件 web 挂钩负载的文件的路径。 | 
| github.graphql_url | string | GitHub GraphQL API 的 URL。 | 
| github.head_ref | string | 工作流程运行中拉取请求的 head_ref或来源分支。 仅当触发工作流运行的事件是pull_request或pull_request_target时,才可使用此属性。 | 
| github.job | string | 当前作业的 job_id。注意:此上下文属性是由 Actions 运行程序设置的,仅在作业的执行 steps中可用。 否则,此属性的值将为null。 | 
| github.path | string | 运行器上从工作流命令设置系统 PATH变量的文件的路径。 此文件对于当前步骤是唯一的,并且是作业中每个步骤的不同文件。 有关详细信息,请参阅“GitHub Actions 的工作流命令”。 | 
| github.ref | string | 触发工作流运行的分支或标记的格式完整的参考。 对于 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 | string | 触发工作流运行的分支或标记的短参考名称。 此值与 GitHub 上显示的分支或标记名称匹配。 例如, feature-branch-1。拉取请求的格式为 <pr_number>/merge。 | 
| github.ref_protected | boolean | 如果为触发工作流运行的 ref 配置分支保护  或 规则集 ,则为 true。 | 
| github.ref_type | string | 触发工作流运行的 ref 类型。 有效值为 branchortag。 | 
| github.repository | string | 所有者和仓库名称。 例如, octocat/Hello-World。 | 
| github.repository_id | string | 存储库的 ID。 例如 123456789。 请注意,这与存储库名称不同。 | 
| github.repository_owner | string | 存储库所有者的用户名。 例如, octocat。 | 
| github.repository_owner_id | string | 存储库所有者的帐户 ID。 例如 1234567。 请注意,这与所有者名称不同。 | 
| github.repositoryUrl | string | 存储库的 Git URL。 例如, git://github.com/octocat/hello-world.git。 | 
| github.retention_days | string | 工作流运行日志和项目保留的天数。 | 
| github.run_id | string | 存储库中每个工作流运行的唯一编号。 如果您重新执行工作流程运行,此编号不变。 | 
| github.run_number | string | 仓库中特定工作流程每个运行的唯一编号。 工作流首次运行时,此编号从 1 开始,并随着每次新的运行而递增。 如果您重新执行工作流程运行,此编号不变。 | 
| github.run_attempt | string | 存储库中每次尝试运行特定工作流的唯一编号。 对于工作流程运行的第一次尝试,此数字从 1 开始,并随着每次重新运行而递增。 | 
| github.secret_source | string | 工作流中使用的机密的来源。 可能的值为 None、Actions、Codespaces或Dependabot。 | 
| github.server_url | string | GitHub 服务器的 URL。 例如: https://github.com。 | 
| github.sha | string | 触发工作流的提交 SHA。 此提交 SHA 的值取决于触发工作流程的事件。 有关详细信息,请参阅“触发工作流的事件”。 例如, ffac537e6cbbf934b08745a378932722df287a53。 | 
| github.token | string | 代表存储库中安装的 GitHub 应用程序进行身份验证的令牌。 在功能上,这与 GITHUB_TOKEN机密等效。 有关详细信息,请参阅“在工作流中使用 GITHUB_TOKEN 进行身份验证”。注意:此上下文属性是由 Actions 运行程序设置的,仅在作业的执行 steps中可用。 否则,此属性的值将为null。 | 
| github.triggering_actor | string | 发起工作流运行的用户的用户名。 如果工作流运行是重新运行,则此值可能与 github.actor不同。 即使启动重新运行的参与者 (github.triggering_actor) 具有不同的权限,任何工作流重新运行都将使用github.actor的权限。 | 
| github.workflow | string | 工作流的名称。 如果工作流程文件未指定 name,则此属性的值是存储库中工作流程文件的完整路径。 | 
| github.workflow_ref | string | 工作流的引用路径。 例如, octocat/hello-world/.github/workflows/my-workflow.yml@refs/heads/my_branch。 | 
| github.workflow_sha | string | 工作流文件的提交 SHA。 | 
| github.workspace | string | 运行器上步骤的默认工作目录,以及使用 checkout操作时存储库的默认位置。 | 
github 上下文的示例内容
以下示例上下文来自 push 事件触发的工作流运行。 此示例中的 event 对象已被截断,因为它与 push webhook 有效负载的内容相同。
注意
此上下文只是一个示例。 上下文的内容取决于正在运行的工作流。 在不同的工作流运行条件下,上下文、对象和属性大不相同。
{
  "token": "***",
  "job": "dump_contexts_to_log",
  "ref": "refs/heads/my_branch",
  "sha": "c27d339ee6075c1f744c5d4b200f7901aad2c369",
  "repository": "octocat/hello-world",
  "repository_owner": "octocat",
  "repositoryUrl": "git://github.com/octocat/hello-world.git",
  "run_id": "1536140711",
  "run_number": "314",
  "retention_days": "90",
  "run_attempt": "1",
  "actor": "octocat",
  "workflow": "Context testing",
  "head_ref": "",
  "base_ref": "",
  "event_name": "push",
  "event": {
    ...
  },
  "server_url": "https://github.com",
  "api_url": "https://api.github.com",
  "graphql_url": "https://api.github.com/graphql",
  "ref_name": "my_branch",
  "ref_protected": false,
  "ref_type": "branch",
  "secret_source": "Actions",
  "workspace": "/home/runner/work/hello-world/hello-world",
  "action": "github_step",
  "event_path": "/home/runner/work/_temp/_github_workflow/event.json",
  "action_repository": "",
  "action_ref": "",
  "path": "/home/runner/work/_temp/_runner_file_commands/add_path_b037e7b5-1c88-48e2-bf78-eaaab5e02602",
  "env": "/home/runner/work/_temp/_runner_file_commands/set_env_b037e7b5-1c88-48e2-bf78-eaaab5e02602"
}
github 上下文的示例用法
此示例工作流仅当工作流运行由 pull_request 事件触发时才使用 github.event_name 上下文运行作业。
name: Run CI
on: [push, pull_request]
jobs:
  normal_ci:
    runs-on: ubuntu-latest
    steps:
      - name: Run normal CI
        run: echo "Running normal CI"
  pull_request_ci:
    runs-on: ubuntu-latest
    if: ${{ github.event_name == 'pull_request' }}
    steps:
      - name: Run PR CI
        run: echo "Running PR only CI"
name: Run CI
on: [push, pull_request]
jobs:
  normal_ci:
    runs-on: ubuntu-latest
    steps:
      - name: Run normal CI
        run: echo "Running normal CI"
  pull_request_ci:
    runs-on: ubuntu-latest
    if: ${{ github.event_name == 'pull_request' }}
    steps:
      - name: Run PR CI
        run: echo "Running PR only CI"
env 上下文
env 上下文包含已在工作流、作业或步骤中设置的变量。 它不包含运行器进程继承的变量。 有关在工作流中设置变量的详细信息,请参阅“GitHub Actions 的工作流语法”。
可以检索存储在 env 上下文中的变量的值,并在工作流文件中使用这些值。 可以在非 id 和 uses 键的工作流程步骤中,在任何键中使用 env 上下文。 有关步骤语法的详细信息,请参阅“GitHub Actions 的工作流语法”。
如果想要在运行器中使用变量的值,请使用运行器操作系统的正常方法来读取环境变量。
| 属性名称 | 类型 | 说明 | 
|---|---|---|
| env | object | 此上下文针对作业中的每个步骤而改变。 您可以从作业中的任何步骤访问此上下文。 此对象包含下面列出的属性。 | 
| env.<env_name> | string | 特定环境变量的值。 | 
env 上下文的示例内容
env 上下文的内容是变量名称与其值的映射。 上下文的内容可能会根据工作流运行中的使用位置而更改。 在此示例中,env 上下文包含两个变量。
{
  "first_name": "Mona",
  "super_duper_var": "totally_awesome"
}
env 上下文的示例用法
此示例工作流显示了在工作流、作业和步骤级别的 env 上下文中设置的变量。 然后,该 ${{ env.VARIABLE-NAME }} 语法用于检索工作流中各个步骤的变量值。
当多个环境变量使用相同的名称定义时,GitHub 会使用最特定的变量。 例如,步骤中定义的环境变量在步骤执行时将覆盖名称相同的作业和工作流环境变量。 为作业定义的环境变量在作业执行时将覆盖名称相同的工作流变量。
name: Hi Mascot
on: push
env:
  mascot: Mona
  super_duper_var: totally_awesome
jobs:
  windows_job:
    runs-on: windows-latest
    steps:
      - run: echo 'Hi ${{ env.mascot }}'  # Hi Mona
      - run: echo 'Hi ${{ env.mascot }}'  # Hi Octocat
        env:
          mascot: Octocat
  linux_job:
    runs-on: ubuntu-latest
    env:
      mascot: Tux
    steps:
      - run: echo 'Hi ${{ env.mascot }}'  # Hi Tux
name: Hi Mascot
on: push
env:
  mascot: Mona
  super_duper_var: totally_awesome
jobs:
  windows_job:
    runs-on: windows-latest
    steps:
      - run: echo 'Hi ${{ env.mascot }}'  # Hi Mona
      - run: echo 'Hi ${{ env.mascot }}'  # Hi Octocat
        env:
          mascot: Octocat
  linux_job:
    runs-on: ubuntu-latest
    env:
      mascot: Tux
    steps:
      - run: echo 'Hi ${{ env.mascot }}'  # Hi Tux
vars 上下文
vars 上下文包含在组织、存储库和环境级别设置的自定义配置变量。 有关定义用于多个工作流的配置变量的详细信息,请参阅“在变量中存储信息”。
vars 上下文的示例内容
vars 上下文的内容是配置变量名称与其值的映射。
{
  "mascot": "Mona"
}
vars 上下文的示例用法
此示例工作流演示如何使用 vars 上下文自动提供在存储库、环境或组织级别设置的配置变量。
注意
环境级别的配置变量在运行器声明其环境后自动可用。
如果尚未设置配置变量,则引用该变量的上下文的返回值将为空字符串。
以下示例演示如何在工作流中将配置变量与 vars 上下文配合使用。 以下每个配置变量都已在存储库、组织或环境级别上定义。
on:
  workflow_dispatch:
env:
  # Setting an environment variable with the value of a configuration variable
  env_var: ${{ vars.ENV_CONTEXT_VAR }}
jobs:
  display-variables:
    name: ${{ vars.JOB_NAME }}
    # You can use configuration variables with the `vars` context for dynamic jobs
    if: ${{ vars.USE_VARIABLES == 'true' }}
    runs-on: ${{ vars.RUNNER }}
    environment: ${{ vars.ENVIRONMENT_STAGE }}
    steps:
    - name: Use variables
      run: |
        echo "repository variable : $REPOSITORY_VAR"
        echo "organization variable : $ORGANIZATION_VAR"
        echo "overridden variable : $OVERRIDE_VAR"
        echo "variable from shell environment : $env_var"
      env:
        REPOSITORY_VAR: ${{ vars.REPOSITORY_VAR }}
        ORGANIZATION_VAR: ${{ vars.ORGANIZATION_VAR }}
        OVERRIDE_VAR: ${{ vars.OVERRIDE_VAR }}
        
    - name: ${{ vars.HELLO_WORLD_STEP }}
      if: ${{ vars.HELLO_WORLD_ENABLED == 'true' }}
      uses: actions/hello-world-javascript-action@main
      with:
        who-to-greet: ${{ vars.GREET_NAME }}
on:
  workflow_dispatch:
env:
  # Setting an environment variable with the value of a configuration variable
  env_var: ${{ vars.ENV_CONTEXT_VAR }}
jobs:
  display-variables:
    name: ${{ vars.JOB_NAME }}
    # You can use configuration variables with the `vars` context for dynamic jobs
    if: ${{ vars.USE_VARIABLES == 'true' }}
    runs-on: ${{ vars.RUNNER }}
    environment: ${{ vars.ENVIRONMENT_STAGE }}
    steps:
    - name: Use variables
      run: |
        echo "repository variable : $REPOSITORY_VAR"
        echo "organization variable : $ORGANIZATION_VAR"
        echo "overridden variable : $OVERRIDE_VAR"
        echo "variable from shell environment : $env_var"
      env:
        REPOSITORY_VAR: ${{ vars.REPOSITORY_VAR }}
        ORGANIZATION_VAR: ${{ vars.ORGANIZATION_VAR }}
        OVERRIDE_VAR: ${{ vars.OVERRIDE_VAR }}
        
    - name: ${{ vars.HELLO_WORLD_STEP }}
      if: ${{ vars.HELLO_WORLD_ENABLED == 'true' }}
      uses: actions/hello-world-javascript-action@main
      with:
        who-to-greet: ${{ vars.GREET_NAME }}
job 上下文
job 上下文包含当前正在运行的作业相关信息。
| 属性名称 | 类型 | 说明 | 
|---|---|---|
| job | object | 此上下文针对工作流程运行中的每项作业而改变。 您可以从作业中的任何步骤访问此上下文。 此对象包含下面列出的所有属性。 | 
| job.check_run_id | number | 当前作业的检查运行 ID。 | 
| job.container | object | 作业的容器相关信息。 有关容器的详细信息,请参阅“GitHub Actions 的工作流语法”。 | 
| job.container.id | string | 容器的 ID。 | 
| job.container.network | string | 容器网络的 ID。 运行程序创建作业中所有容器使用的网络。 | 
| job.services | object | 为作业创建的服务容器。 有关服务容器的详细信息,请参阅“GitHub Actions 的工作流语法”。 | 
| job.services.<service_id>.id | string | 服务容器的 ID。 | 
| job.services.<service_id>.network | string | 服务容器网络的 ID。 运行程序创建作业中所有容器使用的网络。 | 
| job.services.<service_id>.ports | object | 服务容器显露的端口。 | 
| job.status | string | 作业的当前状态。 可能的值为 success、failure或cancelled。 | 
job 上下文的示例内容
此示例 job 上下文使用具有映射端口的 PostgreSQL 服务容器。 如果作业中没有容器或服务容器,则 job 上下文仅包含 status 属性。
{
  "status": "success",
  "container": {
    "network": "github_network_53269bd575974817b43f4733536b200c"
  },
  "services": {
    "postgres": {
      "id": "60972d9aa486605e66b0dad4abb638dc3d9116f566579e418166eedb8abb9105",
      "ports": {
        "5432": "49153"
      },
      "network": "github_network_53269bd575974817b43f4733536b200c"
    }
  }
}
job 上下文的示例用法
此示例工作流程配置 PostgreSQL 服务容器,并自动将服务容器中的端口 5432 映射到主机上随机选择的可用端口。 job 上下文用于访问在主机上分配的端口号。
name: PostgreSQL Service Example
on: push
jobs:
  postgres-job:
    runs-on: ubuntu-latest
    services:
      postgres:
        image: postgres
        env:
          POSTGRES_PASSWORD: postgres
        options: --health-cmd pg_isready --health-interval 10s --health-timeout 5s --health-retries 5
        ports:
          # Maps TCP port 5432 in the service container to a randomly chosen available port on the host.
          - 5432
    steps:
      - run: pg_isready -h localhost -p ${{ job.services.postgres.ports[5432] }}
      - run: echo "Run tests against Postgres"
name: PostgreSQL Service Example
on: push
jobs:
  postgres-job:
    runs-on: ubuntu-latest
    services:
      postgres:
        image: postgres
        env:
          POSTGRES_PASSWORD: postgres
        options: --health-cmd pg_isready --health-interval 10s --health-timeout 5s --health-retries 5
        ports:
          # Maps TCP port 5432 in the service container to a randomly chosen available port on the host.
          - 5432
    steps:
      - run: pg_isready -h localhost -p ${{ job.services.postgres.ports[5432] }}
      - run: echo "Run tests against Postgres"
jobs 上下文
jobs 上下文仅在可重用工作流中可用,并且只能用于设置可重用工作流的输出。 有关详细信息,请参阅“重用工作流”。
| 属性名称 | 类型 | 说明 | 
|---|---|---|
| jobs | object | 这仅在可重用工作流中使用,并且只能用于设置可重用工作流的输出。 此对象包含下面列出的所有属性。 | 
| jobs.<job_id>.result | string | 可重用工作流中作业的结果。 可能的值为 success、failure、cancelled或skipped。 | 
| jobs.<job_id>.outputs | object | 可重用工作流中作业的输出集。 | 
| jobs.<job_id>.outputs.<output_name> | string | 可重用工作流中作业的特定输出值。 | 
jobs 上下文的示例内容
此示例 jobs 上下文包含可重用工作流运行中作业的结果和输出。
{
  "example_job": {
    "result": "success",
    "outputs": {
      "output1": "hello",
      "output2": "world"
    }
  }
}
jobs 上下文的示例用法
此示例可重用工作流使用 jobs 上下文设置可重用工作流的输出。 请注意输出如何从步骤流向作业,然后流向 workflow_call 触发器。 有关详细信息,请参阅“重用工作流”。
name: Reusable workflow
on:
  workflow_call:
    # Map the workflow outputs to job outputs
    outputs:
      firstword:
        description: "The first output string"
        value: ${{ jobs.example_job.outputs.output1 }}
      secondword:
        description: "The second output string"
        value: ${{ jobs.example_job.outputs.output2 }}
jobs:
  example_job:
    name: Generate output
    runs-on: ubuntu-latest
    # Map the job outputs to step outputs
    outputs:
      output1: ${{ steps.step1.outputs.firstword }}
      output2: ${{ steps.step2.outputs.secondword }}
    steps:
      - id: step1
        run: echo "firstword=hello" >> $GITHUB_OUTPUT
      - id: step2
        run: echo "secondword=world" >> $GITHUB_OUTPUT
name: Reusable workflow
on:
  workflow_call:
    # Map the workflow outputs to job outputs
    outputs:
      firstword:
        description: "The first output string"
        value: ${{ jobs.example_job.outputs.output1 }}
      secondword:
        description: "The second output string"
        value: ${{ jobs.example_job.outputs.output2 }}
jobs:
  example_job:
    name: Generate output
    runs-on: ubuntu-latest
    # Map the job outputs to step outputs
    outputs:
      output1: ${{ steps.step1.outputs.firstword }}
      output2: ${{ steps.step2.outputs.secondword }}
    steps:
      - id: step1
        run: echo "firstword=hello" >> $GITHUB_OUTPUT
      - id: step2
        run: echo "secondword=world" >> $GITHUB_OUTPUT
steps 上下文
steps 上下文包含有关当前作业中已指定 id 且已运行的步骤的信息。
| 属性名称 | 类型 | 说明 | 
|---|---|---|
| steps | object | 此上下文针对作业中的每个步骤而改变。 您可以从作业中的任何步骤访问此上下文。 此对象包含下面列出的所有属性。 | 
| steps.<step_id>.outputs | object | 为步骤定义的输出集。 有关详细信息,请参阅“元数据语法参考”。 | 
| steps.<step_id>.conclusion | string | 应用 continue-on-error后完成的步骤的结果。 可能的值为success、failure、cancelled或skipped。 当continue-on-error步骤失败时,outcome是failure,但最终conclusion是success。 | 
| steps.<step_id>.outcome | string | 应用 continue-on-error前完成的步骤的结果。 可能的值为success、failure、cancelled或skipped。 当continue-on-error步骤失败时,outcome是failure,但最终conclusion是success。 | 
| steps.<step_id>.outputs.<output_name> | string | 特定输出的值。 | 
steps 上下文的示例内容
此示例 steps 上下文显示已指定 id 的前两个步骤。 第一步的 id 名为 checkout,第二步是 generate_number。 generate_number 步骤的输出名为 random_number。
{
  "checkout": {
    "outputs": {},
    "outcome": "success",
    "conclusion": "success"
  },
  "generate_number": {
    "outputs": {
      "random_number": "1"
    },
    "outcome": "success",
    "conclusion": "success"
  }
}
steps 上下文的示例用法
此示例工作流在一个步骤中生成一个随机数作为输出,后面的步骤使用 steps 上下文来读取该输出的值。
name: Generate random failure
on: push
jobs:
  randomly-failing-job:
    runs-on: ubuntu-latest
    steps:
      - name: Generate 0 or 1
        id: generate_number
        run: echo "random_number=$(($RANDOM % 2))" >> $GITHUB_OUTPUT
      - name: Pass or fail
        run: |
          if [[ ${{ steps.generate_number.outputs.random_number }} == 0 ]]; then exit 0; else exit 1; fi
name: Generate random failure
on: push
jobs:
  randomly-failing-job:
    runs-on: ubuntu-latest
    steps:
      - name: Generate 0 or 1
        id: generate_number
        run: echo "random_number=$(($RANDOM % 2))" >> $GITHUB_OUTPUT
      - name: Pass or fail
        run: |
          if [[ ${{ steps.generate_number.outputs.random_number }} == 0 ]]; then exit 0; else exit 1; fi
runner 上下文
runner 上下文包含正在执行当前作业的运行器相关信息。
| 属性名称 | 类型 | 说明 | 
|---|---|---|
| runner | object | 此上下文针对工作流程运行中的每项作业而改变。 此对象包含下面列出的所有属性。 | 
| runner.name | string | 执行作业的运行器的名称。 此名称在工作流运行中可能并不唯一,因为存储库和组织级别的运行器可以使用同一名称。 | 
| runner.os | string | 执行作业的运行器的操作系统。 可能的值为 Linux、Windows或macOS。 | 
| runner.arch | string | 执行作业的运行器的体系结构。 可能的值为 X86、X64、ARM或ARM64。 | 
| runner.temp | string | 运行器临时目录的路径。 此目录在每个作业的开始和结束时都是空的。 注意,如果运行者的用户帐户没有权限删除这些文件,则不会被删除。 | 
| runner.tool_cache | string | 包含 GitHub 托管运行器预安装工具的目录路径。 有关详细信息,请参阅“GitHub 托管的运行程序”。 | 
| runner.debug | string | 仅当启用调试日志记录并且始终具有值 1时,才会进行此设置。 它可以用作指示器,以便在自己的作业步骤中启用更多调试或详细日志记录。 | 
| runner.environment | string | 执行作业的运行器的环境。 可能的值包括:对于 GitHub 提供的 GitHub 托管的运行器为 github-hosted,对于存储库所有者配置的自承载运行器为self-hosted。 | 
runner 上下文的示例内容
以下示例上下文来自 Linux GitHub 托管的运行器。
{
  "os": "Linux",
  "arch": "X64",
  "name": "GitHub Actions 2",
  "tool_cache": "/opt/hostedtoolcache",
  "temp": "/home/runner/work/_temp"
}
runner 上下文的示例用法
此示例工作流使用 runner 上下文来设置临时目录的路径以写入日志,如果工作流失败,它将这些日志上传为项目。
name: Build
on: push
jobs:
  build:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v5
      - name: Build with logs
        run: |
          mkdir ${{ runner.temp }}/build_logs
          echo "Logs from building" > ${{ runner.temp }}/build_logs/build.logs
          exit 1
      - name: Upload logs on fail
        if: ${{ failure() }}
        uses: actions/upload-artifact@v4
        with:
          name: Build failure logs
          path: ${{ runner.temp }}/build_logs
name: Build
on: push
jobs:
  build:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v5
      - name: Build with logs
        run: |
          mkdir ${{ runner.temp }}/build_logs
          echo "Logs from building" > ${{ runner.temp }}/build_logs/build.logs
          exit 1
      - name: Upload logs on fail
        if: ${{ failure() }}
        uses: actions/upload-artifact@v4
        with:
          name: Build failure logs
          path: ${{ runner.temp }}/build_logs
secrets 上下文
secrets 上下文包含可用于工作流运行的机密的名称和值。 出于安全原因,上下文 secrets 不适用于复合操作。 如果要将机密传递给复合操作,则需要将其作为输入显式传递。 有关机密的详细信息,请参阅“在 GitHub Actions 中使用机密”。
GITHUB_TOKEN 是为每个工作流运行自动创建的机密,始终包含在 secrets 上下文中。 有关详细信息,请参阅“在工作流中使用 GITHUB_TOKEN 进行身份验证”。
警告
如果在工作流作业中使用了机密,GitHub 会自动对输出到日志中的机密进行编辑。 应避免故意将机密输出到日志中。
| 属性名称 | 类型 | 说明 | 
|---|---|---|
| secrets | object | 对于工作流程运行中的每个作业,此上下文都是相同的。 您可以从作业中的任何步骤访问此上下文。 此对象包含下面列出的所有属性。 | 
| secrets.GITHUB_TOKEN | string | 为每个工作流程运行自动创建的令牌。 有关详细信息,请参阅“在工作流中使用 GITHUB_TOKEN 进行身份验证”。 | 
| secrets.<secret_name> | string | 特定机密的值。 | 
secrets 上下文的示例内容
secrets 上下文的以下示例内容显示自动 GITHUB_TOKEN,以及可用于工作流运行的两个其他机密。
{
  "github_token": "***",
  "NPM_TOKEN": "***",
  "SUPERSECRET": "***"
}
secrets 上下文的示例用法
此示例工作流程使用 GitHub CLI,该方式需要 GITHUB_TOKEN 作为 GH_TOKEN 输入参数的值:
name: Open new issue
on: workflow_dispatch
jobs:
  open-issue:
    runs-on: ubuntu-latest
    permissions:
      contents: read
      issues: write
    steps:
      - run: |
          gh issue --repo ${{ github.repository }} \
            create --title "Issue title" --body "Issue body"
        env:
          GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
name: Open new issue
on: workflow_dispatch
jobs:
  open-issue:
    runs-on: ubuntu-latest
    permissions:
      contents: read
      issues: write
    steps:
      - run: |
          gh issue --repo ${{ github.repository }} \
            create --title "Issue title" --body "Issue body"
        env:
          GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
strategy 上下文
对于具有矩阵的工作流,strategy 上下文包含有关当前作业的矩阵执行策略的信息。
| 属性名称 | 类型 | 说明 | 
|---|---|---|
| strategy | object | 此上下文针对工作流程运行中的每项作业而改变。 您可以从工作流程中的任何作业或步骤访问此上下文。 此对象包含下面列出的所有属性。 | 
| strategy.fail-fast | boolean | 如果此计算结果为 true,那么当矩阵中的任何作业失败时,将会取消所有正在进行的作业。 有关详细信息,请参阅“GitHub Actions 的工作流语法”。 | 
| strategy.job-index | number | 矩阵中当前作业的索引。 注意:此数字是从零开始的数字。 矩阵中的第一个作业索引为 0。 | 
| strategy.job-total | number | 矩阵中的作业总数。 注意:此数字不是从零开始的数字。 例如,对于具有四个作业的矩阵, job-total的值为4。 | 
| strategy.max-parallel | number | 使用 matrix作业策略时可以同时运行的最大作业数。 有关详细信息,请参阅“GitHub Actions 的工作流语法”。 | 
strategy 上下文的示例内容
strategy 上下文的以下示例内容来自具有四个作业的矩阵,取自最终作业。 请注意从零开始的 job-index 数字与 job-total(不从零开始)之间的差异。
{
  "fail-fast": true,
  "job-index": 3,
  "job-total": 4,
  "max-parallel": 4
}
strategy 上下文的示例用法
此示例工作流使用 strategy.job-index 属性为矩阵中的每个作业设置日志文件的唯一名称。
name: Test strategy
on: push
jobs:
  test:
    runs-on: ubuntu-latest
    strategy:
      matrix:
        test-group: [1, 2]
        node: [14, 16]
    steps:
      - run: echo "Mock test logs" > test-job-${{ strategy.job-index }}.txt
      - name: Upload logs
        uses: actions/upload-artifact@v4
        with:
          name: Build log for job ${{ strategy.job-index }}
          path: test-job-${{ strategy.job-index }}.txt
name: Test strategy
on: push
jobs:
  test:
    runs-on: ubuntu-latest
    strategy:
      matrix:
        test-group: [1, 2]
        node: [14, 16]
    steps:
      - run: echo "Mock test logs" > test-job-${{ strategy.job-index }}.txt
      - name: Upload logs
        uses: actions/upload-artifact@v4
        with:
          name: Build log for job ${{ strategy.job-index }}
          path: test-job-${{ strategy.job-index }}.txt
matrix 上下文
对于具有矩阵的工作流,matrix 上下文包含工作流程文件中定义的适用于当前作业的矩阵属性。 例如,如果使用 os 和 node 键配置矩阵,则 matrix 上下文对象包含 os 和 node 属性,该属性具有用于当前作业的值。
matrix 上下文中没有标准属性,只有工作流文件中定义的属性。
| 属性名称 | 类型 | 说明 | 
|---|---|---|
| matrix | object | 此上下文仅适用于矩阵中的作业,并且对于工作流运行中的每个作业都会发生更改。 您可以从工作流程中的任何作业或步骤访问此上下文。 此对象包含下面列出的属性。 | 
| matrix.<property_name> | string | 矩阵属性的值。 | 
matrix 上下文的示例内容
matrix 上下文的以下示例内容来自具有工作流中定义的 os 和 node 矩阵属性的矩阵中的作业。 该作业正在执行 ubuntu-latest OS 和 Node.js 版本 16 的矩阵合并。
{
  "os": "ubuntu-latest",
  "node": 16
}
matrix 上下文的示例用法
此示例工作流创建包含 os 和 node 键的矩阵。 它使用 matrix.os 属性为每个作业设置运行器类型,并使用 matrix.node 属性为每个作业设置 Node.js 版本。
name: Test matrix
on: push
jobs:
  build:
    runs-on: ${{ matrix.os }}
    strategy:
      matrix:
        os: [ubuntu-latest, windows-latest]
        node: [14, 16]
    steps:
      - uses: actions/setup-node@v4
        with:
          node-version: ${{ matrix.node }}
      - name: Output node version
        run: node --version
name: Test matrix
on: push
jobs:
  build:
    runs-on: ${{ matrix.os }}
    strategy:
      matrix:
        os: [ubuntu-latest, windows-latest]
        node: [14, 16]
    steps:
      - uses: actions/setup-node@v4
        with:
          node-version: ${{ matrix.node }}
      - name: Output node version
        run: node --version
needs 上下文
needs 上下文包含定义为当前作业直接依赖项的所有作业的输出。 请注意,这不包括隐式依赖作业(例如依赖作业的依赖作业)。 有关定义作业依赖项的详细信息,请参阅“GitHub Actions 的工作流语法”。
| 属性名称 | 类型 | 说明 | 
|---|---|---|
| needs | object | 仅为具有相关作业的工作流程运行填充此上下文,并为工作流程运行中的每个作业填充此上下文。 您可以从工作流程中的任何作业或步骤访问此上下文。 此对象包含下面列出的所有属性。 | 
| needs.<job_id> | object | 当前作业依赖的单个作业。 | 
| needs.<job_id>.outputs | object | 当前作业依赖的作业的输出集。 | 
| needs.<job_id>.outputs.<output name> | string | 当前作业依赖的作业的特定输出值。 | 
| needs.<job_id>.result | string | 当前作业依赖的作业的结果。 可能的值为 success、failure、cancelled或skipped。 | 
needs 上下文的示例内容
needs 上下文的以下示例内容显示了当前作业所依赖的两个作业的信息。
{
  "build": {
    "result": "success",
    "outputs": {
      "build_id": "123456"
    }
  },
  "deploy": {
    "result": "failure",
    "outputs": {}
  }
}
needs 上下文的示例用法
此示例工作流有三个作业:一个 build 作业(执行生成),一个 deploy 作业(需要 build 作业)以及一个 debug 作业(需要 build 和 deploy 作业且仅当工作流中有故障时运行)。 deploy 作业还使用 needs 上下文来访问 build 作业中的输出。
name: Build and deploy
on: push
jobs:
  build:
    runs-on: ubuntu-latest
    outputs:
      build_id: ${{ steps.build_step.outputs.build_id }}
    steps:
      - name: Build
        id: build_step
        run: echo "build_id=$RANDOM" >> $GITHUB_OUTPUT
  deploy:
    needs: build
    runs-on: ubuntu-latest
    steps:
      - run: echo "Deploying build ${{ needs.build.outputs.build_id }}"
  debug:
    needs: [build, deploy]
    runs-on: ubuntu-latest
    if: ${{ failure() }}
    steps:
      - run: echo "Failed to build and deploy"
name: Build and deploy
on: push
jobs:
  build:
    runs-on: ubuntu-latest
    outputs:
      build_id: ${{ steps.build_step.outputs.build_id }}
    steps:
      - name: Build
        id: build_step
        run: echo "build_id=$RANDOM" >> $GITHUB_OUTPUT
  deploy:
    needs: build
    runs-on: ubuntu-latest
    steps:
      - run: echo "Deploying build ${{ needs.build.outputs.build_id }}"
  debug:
    needs: [build, deploy]
    runs-on: ubuntu-latest
    if: ${{ failure() }}
    steps:
      - run: echo "Failed to build and deploy"
inputs 上下文
inputs 上下文包含传递给操作、可重用工作流或手动触发的工作流的输入属性。 对于可重用工作流,输入名称和类型是在可重用工作流的 workflow_call 事件配置中定义的,输入值从调用可重用工作流的外部工作流中的 jobs.<job_id>.with 传递。 对于手动触发的工作流,输入是在工作流的 workflow_dispatch 事件配置中定义的。
inputs 上下文中的属性在工作流文件中定义。 它们仅在可重用工作流或 workflow_dispatch 事件触发的工作流中可用
| 属性名称 | 类型 | 描述 | 
|---|---|---|
| inputs | object | 此上下文仅在可重用工作流或 workflow_dispatch事件触发的工作流中可用。 您可以从工作流程中的任何作业或步骤访问此上下文。 此对象包含下面列出的属性。 | 
| inputs.<name> | string或number或boolean或choice | 从外部工作流传递的每个输入值。 | 
inputs 上下文的示例内容
inputs 上下文的以下示例内容来自已定义 build_id、deploy_target 和 perform_deploy 输入的工作流。
{
  "build_id": 123456768,
  "deploy_target": "deployment_sys_1a",
  "perform_deploy": true
}
可重用工作流中 inputs 上下文的示例用法
此示例可重用工作流使用 inputs 上下文从调用方工作流获取传递到可重用工作流的 build_id、deploy_target 和 perform_deploy 输入的值。
name: Reusable deploy workflow
on:
  workflow_call:
    inputs:
      build_id:
        required: true
        type: number
      deploy_target:
        required: true
        type: string
      perform_deploy:
        required: true
        type: boolean
jobs:
  deploy:
    runs-on: ubuntu-latest
    if: ${{ inputs.perform_deploy }}
    steps:
      - name: Deploy build to target
        run: echo "Deploying build:${{ inputs.build_id }} to target:${{ inputs.deploy_target }}"
name: Reusable deploy workflow
on:
  workflow_call:
    inputs:
      build_id:
        required: true
        type: number
      deploy_target:
        required: true
        type: string
      perform_deploy:
        required: true
        type: boolean
jobs:
  deploy:
    runs-on: ubuntu-latest
    if: ${{ inputs.perform_deploy }}
    steps:
      - name: Deploy build to target
        run: echo "Deploying build:${{ inputs.build_id }} to target:${{ inputs.deploy_target }}"
手动触发的工作流中 inputs 上下文的示例用法
这个由 workflow_dispatch 事件触发的示例工作流使用 inputs 上下文来获取传递给工作流的 build_id、deploy_target 和 perform_deploy 输入的值。
on:
  workflow_dispatch:
    inputs:
      build_id:
        required: true
        type: string
      deploy_target:
        required: true
        type: string
      perform_deploy:
        required: true
        type: boolean
jobs:
  deploy:
    runs-on: ubuntu-latest
    if: ${{ inputs.perform_deploy }}
    steps:
      - name: Deploy build to target
        run: echo "Deploying build:${{ inputs.build_id }} to target:${{ inputs.deploy_target }}"
on:
  workflow_dispatch:
    inputs:
      build_id:
        required: true
        type: string
      deploy_target:
        required: true
        type: string
      perform_deploy:
        required: true
        type: boolean
jobs:
  deploy:
    runs-on: ubuntu-latest
    if: ${{ inputs.perform_deploy }}
    steps:
      - name: Deploy build to target
        run: echo "Deploying build:${{ inputs.build_id }} to target:${{ inputs.deploy_target }}"