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

如何将GitHub Action中的set-output替换为GITHUB_OUTPUT?

解决GitHub Actions中github-script替换旧set-output的问题

你不需要用console.log或者shell输出重定向的方式,actions/github-script内置了@actions/core库,直接用它的setOutput方法就能完成变量输出,这才是官方推荐的正确方案。

你的原代码存在两个问题:

  1. 使用了即将废弃的::set-output命令
  2. 手动拼接JSON字符串时用了单引号,不符合JSON标准格式

下面是修正后的完整步骤代码:

steps:
- name: Parse Assignee Properties
  id: assignee_properties
  uses: actions/github-script@v6
  with:
    script: |
      const assignees = context.payload.issue.assignees;
      // 用JSON.stringify生成标准JSON,避免手动拼接的格式错误
      const assigneeJson = JSON.stringify(assignees.map(a => ({
        login: a.login,
        id: a.id,
        url: a.html_url
      })));
      // 调用内置的core.setOutput输出变量
      core.setOutput('assigneeJson', assigneeJson);

关键说明:

  • core是actions/github-script自动提供的全局对象,无需额外引入
  • setOutput方法接收变量名和对应值两个参数,底层会自动处理写入GITHUB_OUTPUT的逻辑,不用自行处理shell语法
  • 用JSON.stringify替代手动拼接JSON字符串,既保证格式合规,又能避免转义错误

你之前尝试的console.log写法无效,是因为github-script运行在Node.js环境中,并非直接执行shell命令,所以shell的重定向语法>> $GITHUB_OUTPUT在这里不生效,Node.js的console.log只会输出到工作流日志,不会写入GITHUB_OUTPUT对应的文件。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.26 16:02:09