gpt4 book ai didi

command-line-interface - 尝试在 Github Action 中解析 JSON 输出

转载 作者:行者123 更新时间:2023-12-05 00:54:25 25 4
gpt4 key购买 nike

我正在尝试在 GitHub 操作中提取 HTTP 请求的值,然后在另一个步骤中使用该值。

这是当前代码:

  - run: call some https endpoint

然后返回控制台输出:

{
"authorizationToken": "<snip>",
"expiration": "2021-02-26T18:18:38+00:00"
}

我正在尝试提取 authorizationToken 值,然后在下一步中使用它,例如

  -name: Get auth token
run: call some https endpoint

-name: set something which uses the token
run: set blah --token $token_from_previous_step
<罢工>现在,我什至无法使用“jq”程序从 json 输出中提取身份验证 token 的值:
~  - run: call some https endpoint | echo "jq '.authorizationToken'"~

哪些错误:

jq '.authorizationToken'
Exception ignored in: <_io.TextIOWrapper name='<stdout>' mode='w' encoding='utf-8'>
BrokenPipeError: [Errno 32] Broken pipe

我现在可以提取键/值 .. 但不确定如何将其设置为环境变量,以便在其他步骤中使用。

这行得通:

    - run: call some https endpoint > at.json
- run: jq '.authorizationToken' at.json

以便从该 https 端点结果中获取 json 输出并将结果保存到名为 at.json 的文件中(上面是 json 文本)。

接下来,我运行 jq 命令,提取 authorizationToken 值。哪个有效!

现在我需要将此值设置为 env-var。 Reading the docs on this, it looks like it can be done ,但我不确定如何调用 jq 并将键/值设置为 env-var。

我觉得我需要做这样的事情:

    - run: echo "AUTH_TOKEN=run the jq command here" >> $GITHUB_ENV

类似这样的事情(完全失败):

    - run: echo "AUTH_TOKEN=${{ jq '.authorizationToken' at.json }}" >> $GITHUB_ENV

最佳答案

我将在这里添加更多解决方案。就像您自己发现的那样,您可以将其作为环境变量传递:

steps:
- run: |
token=$( callEndpoint | jq '.authorizationToken' )
echo "AUTH_TOKEN=$token" >> "$GITHUB_ENV"

- run: echo "$AUTH_TOKEN"

您也可以使用步进输出:

steps:
- id: get-token
run: |
token=$( callEndpoint | jq '.authorizationToken' )
echo "::set-output name=auth_token::$token"

- run: echo ${{ steps.get-token.outputs.auth_token }}

这两种解决方案都适用于在同一作业的步骤之间传递值。

如果需要在不同作业的步骤之间传递值,可以使用作业输出:


jobs:
job-a:
runs-on: ubuntu-latest
outputs:
auth_token: ${{ steps.get-token.outputs.auth_token }}
steps:
- id: get-token
run: |
token=$( callEndpoint | jq '.authorizationToken' )
echo "::set-output name=auth_token::$token"

job-b:
runs-on: ubuntu-latest
needs: job-a
steps:
- run: echo ${{ needs.job-a.outputs.auth_token }}

关于command-line-interface - 尝试在 Github Action 中解析 JSON 输出,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/66381595/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com