如何在 GitHub 操作中的 json 中发送多行字符串?

拉克什米拉瓦利 rimmalapudi

我正在处理 GitHub 操作,我有一个案例,我需要将多行字符串作为 json 发送。我收到一些意外的令牌错误。

这是我的 test.md 和工作流程:

---------------------------
  **test**
  - update something
  - another (update)
  
  **test2**
  - Add `test` to param
  
steps:
    - uses: actions/checkout@v2
    - name: Get Log
      id: getLog
      run: |
        CHANGELOG="$(cat test.md)"
        CHANGELOG="$($CHANGELOG//'%'/'%25')"
        CHANGELOG="$($CHANGELOG//$'\n'/'%0A')" 
        CHANGELOG="$($CHANGELOG//$'\r'/'%0D')"
        echo "::set-output name=changeLog::$CHANGELOG"
    - name: Invoke CLI workflow with changelog
      uses: benc-uk/workflow-dispatch@v1
      with:
        workflow: Workflow publish
        token: ${{ secrets.TOKEN }}
        repo: repo/name
        inputs: '{ "changeLog": "${{steps.getLog.outputs.changeLog}}"}'

我收到意外的令牌错误。这个怎么解决?

提前致谢

姆昆格尔

您在提供的示例中似乎有两个问题。

  1. 您的字符串替换似乎无效。那应该是这样的。
run: |
  CHANGELOG=$(cat test.md)
  CHANGELOG="${CHANGELOG//'%'/'%25'}"
  CHANGELOG="${CHANGELOG//$'\n'/'%0A'}"
  CHANGELOG="${CHANGELOG//$'\r'/'%0D'}"
  echo "::set-output name=changeLog::$CHANGELOG"
  1. 您只是json为对象编写无效
inputs: '{ "changeLog": "${{steps.getLog.outputs.changeLog}}"}'

输出无效的json:

{ "changeLog": "---------------------------
  **test**
  - update something
  - another (update)
  
  **test2**
  - Add `test` to param"}

修复这个使用上下文功能toJSON()

inputs: '{ "changeLog": ${{ toJSON(steps.getLog.outputs.changeLog) }}}'

输出有效的json:

{ "changeLog": "---------------------------\n  **test**\n  - update something\n  - another (update)\n  \n  **test2**\n  - Add `test` to param"}

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章