如何将GitHub Action中的set-output替换为GITHUB_OUTPUT?
解决GitHub Actions中github-script替换旧set-output的问题
你不需要用console.log或者shell输出重定向的方式,actions/github-script内置了@actions/core库,直接用它的setOutput方法就能完成变量输出,这才是官方推荐的正确方案。
你的原代码存在两个问题:
- 使用了即将废弃的
::set-output命令 - 手动拼接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
相关产品推荐
相关产品推荐

