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

如何在Bamboo脚本任务中用Node.js变量配置curl的Authorization头

解决Bamboo流水线中Node生成Token传递给curl的问题

问题原因

你当前的写法无法生效,核心原因是:Node进程是shell的子进程,子进程无法修改父进程(shell)的环境变量,所以你在Node脚本里设置的process.env.AuthToken不会被shell读取到;另外${bamboo.AuthToken}是Bamboo的预定义变量,和shell环境变量不是一回事。

正确解决方案

让Node脚本直接输出生成的signedToken,再在shell中捕获这个输出值,赋值给shell变量后传给curl:

# 生成Node脚本,直接输出token而非设置环境变量
tee -a test.js > /dev/null <<  EOT
  // 你的token生成逻辑
  var token = "实际生成的token";
  var signature = "实际生成的签名";
  
  var signedToken = token + "." + signature;

  console.log(signedToken); // 将token输出到标准输出
EOT

echo "xxxxxxxxxxxxxxxxx"
# 捕获Node脚本的输出,赋值给shell变量
AUTH_TOKEN=$(node test.js)
echo "xxxxxxxxxxxxxxxxx"

# 使用shell变量填充Authorization头
curl --location 'https://test.com/' \
--header 'Content-Type: application/json' \
--header "Authorization: $AUTH_TOKEN" \
--data '{ }'

关键说明

  • 子进程(Node)无法修改父进程(shell)的环境变量,必须通过标准输出传递值
  • shell中用$(command)语法捕获命令的输出,赋值给变量
  • curl的header必须用双引号包裹,这样shell才会解析变量;单引号会把$AUTH_TOKEN当作字面量直接传递

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.17 01:47:02