我是YAML/CURL和Github Actions的新手,所以我试图在YML上分配一个变量,我试图从cURL生成的JSON响应中分配一个键值。我尝试通过 -o 将JSON响应放入一个文件中,并将该文件的信息分配给一个变量,但根本没有成功。也许我这样做是错的,但我只是不知道。
下面是我的一个尝试的例子:
curl -u ${{ secrets.test1 }}/token:${{ secrets.test2 }} "https://test/api/v2/blablabla/test" -o Data.json
info="$(<Data.json).info" >> $GITHUB_OUTPUT
我也试着这样做:
info = "$(curl -u ${{ secrets.test1 }}/token:${{ secrets.test2 }} 'https://test/api/v2/blablabla/test' | jq -r 'info.blablabla')"
我不知道该怎么分配,我试过这些方法和其他一些方法,但我突然不知道该怎么做。任何解决方案对我来说都是令人满意的。谢谢你!
1条答案
按热度按时间laawzig21#
你的方法有Bash问题,独立于Actions;在赋值语句中
=
周围不能有空格:然后,您可能会自己控制secret,但通常最好的做法是从环境中的Actions上下文设置值,然后引用环境变量:
这有助于防止shell注入攻击。
最后,设置多行输出参数在历史上是相当挑剔的,但现在很简单:你必须使用here-doc。文档展示了如何对环境变量执行此操作,但它对输出参数的作用相同:
这将使curl命令的输出在
param
输出参数中可用。如果您不确定here-doc的内容,您可能希望将输出持久化到一个文件中,然后读取该文件,而不是传递参数(文档中的当前建议),或者您可以使用随机化参数(以前推荐):
综上所述,对于您的情况,假设JSON负载在其自己的行中不包含字符串
EOF
,您可以这样做: