shell 从nodejs脚本中设置bamboo变量并在curl in script任务中使用它

5n0oy7gb  于 2023-08-07  发布在  Shell
关注(0)|答案(1)|浏览(101)

我有一个包含2个脚本任务的bamboo管道。
1.安装npm包的脚本任务(工作正常)
1.运行nodejs脚本和curl命令的脚本任务(有问题)
在第二个脚本任务中,我

tee -a test.js > /dev/null <<  EOT
  nodejs script that sets a variable
  
  var signedToken = token + "." + signature;

  process.env.AuthToken = signedToken;

EOT

echo "xxxxxxxxxxxxxxxxx"
node test.js
echo "xxxxxxxxxxxxxxxxx"

curl --location 'https://test.com/' \
--header 'Content-Type: application/json' \
--header 'Authorization: ${bamboo.AuthToken}' \ not working
--data '{ }'

字符串
curl命令中,如何将头Authorization设置为在nodejs脚本中设置的变量(本例中为signedToken)的值?

slsn1g29

slsn1g291#

process.env是您的节点进程。您需要一种方法将signedToken暴露给当前的shell进程。一种方法是将标记打印到stdout并在bash中捕获它,假设节点脚本不产生任何其他输出。以下是它的要点:

tee -a test.js > /dev/null <<  EOT
...
process.stdout.write(signedToken);
EOT
...
token=$(node test.js)
...
--header "Authorization: $token"
...

字符串
如果节点脚本产生其他输出,则将令牌写入外部文件,然后bash脚本将在curl命令中读取和使用该文件。

相关问题