You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

GitHub Actions中合并多上下文与额外变量至env的语法咨询

在GitHub Actions的env字段中合并多个上下文与自定义变量

GitHub Actions内置的${{ combine() }}函数可以直接实现仅用YAML语法合并多个上下文对象(如steps.split.outputs、vars、github)与自定义变量,无需额外添加run步骤。该函数会将传入的多个对象合并为一个新对象,若存在重复键名,后续对象的键值会覆盖前面的。

正确用法示例

1. 合并步骤输出上下文与自定义变量

- run: |
    echo "$($env:port)"    
    echo "$($env:anothername)"
  shell: pwsh
  env: 
    ${{ combine(steps.split.outputs, { anothername: 'withvalue' }) }}

2. 合并多个上下文与自定义变量

- run: |
    echo "$($env:port)"    
    echo "$($env:MY_VAR)"  # 来自vars上下文
    echo "$($env:github_actor)"  # 来自github上下文
    echo "$($env:anothername)"
  shell: pwsh
  env: 
    ${{ combine(steps.split.outputs, vars, github, { anothername: 'withvalue' }) }}

关键说明

  • 自定义变量需要用YAML对象语法{ key: value }包裹,作为combine()的参数之一。
  • 各类上下文(如steps.split.outputs、vars)本身就是对象类型,可直接传入combine()。
  • 若不同对象存在同名键,后传入的对象的键值会覆盖先传入的,比如自定义变量与上下文键同名时,自定义值优先生效。

为什么之前的写法无效

之前尝试在env下直接并列上下文和键值对的写法不符合YAML语法规则,GitHub Actions无法识别这种混合格式,必须通过combine()将所有需要合并的对象统一处理成一个完整对象后,才能赋值给env字段。

内容的提问来源于stack exchange,提问作者jessehouwing

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.21 02:54:56