GitHub Actions中Node.js的::set-output弃用后替代方案咨询
GitHub Actions ::set-output 弃用后的替代方案
原来的::set-output命令已被GitHub弃用,官方现在推荐通过写入$GITHUB_OUTPUT环境变量指向的临时文件来设置步骤输出。
修改后的Node.js代码
替换原代码里的process.stdout.write语句,改成往指定文件写入键值对即可:
const fs = require('fs'); async function run() { try { const blocks = "some value"; // 获取GitHub提供的输出文件路径 const outputFile = process.env.GITHUB_OUTPUT; // 按「key=value」格式写入,注意不要给值加额外引号 fs.appendFileSync(outputFile, `my-key=${blocks}\n`); } catch (error) { console.error(error); process.exit(1); } } run();
关键说明
$GITHUB_OUTPUT是GitHub Actions自动注入的环境变量,指向一个临时文件,所有写入这里的key=value内容都会被识别为当前步骤的输出。- 如果输出值包含换行、空格或特殊字符,无需额外转义,直接写入即可,GitHub会自动处理格式。
- 后续步骤调用输出的方式和之前完全一致,比如:
- name: 调用输出值 run: echo "获取到的值是 ${{ steps.your-step-id.outputs.my-key }}" # 这里的your-step-id是你设置输出的步骤的id
多行输出处理
如果输出是多行文本,可以用EOF包裹内容(Node.js示例):
const multiLineValue = `第一行内容 第二行内容 第三行内容`; fs.appendFileSync(process.env.GITHUB_OUTPUT, `my-key<<EOF\n${multiLineValue}\nEOF\n`);
内容的提问来源于stack exchange,提问作者subair_a
相关产品推荐
相关产品推荐

