lak*_*udi 3 string github-actions
我正在处理 GitHub actions,并且有一个情况需要将多行字符串作为 json 发送。我收到一些意外的令牌错误。
这是我的 test.md 和工作流程:
---------------------------
**test**
- update something
- another (update)
**test2**
- Add `test` to param
Run Code Online (Sandbox Code Playgroud)
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}}"}'
Run Code Online (Sandbox Code Playgroud)
我收到意外的令牌错误。怎么解决这个问题?
提前致谢
您提供的示例中似乎存在两个问题。
run: |
CHANGELOG=$(cat test.md)
CHANGELOG="${CHANGELOG//'%'/'%25'}"
CHANGELOG="${CHANGELOG//$'\n'/'%0A'}"
CHANGELOG="${CHANGELOG//$'\r'/'%0D'}"
echo "::set-output name=changeLog::$CHANGELOG"
Run Code Online (Sandbox Code Playgroud)
json
为对象撰写无效内容。inputs: '{ "changeLog": "${{steps.getLog.outputs.changeLog}}"}'
Run Code Online (Sandbox Code Playgroud)
输出无效的 json:
inputs: '{ "changeLog": "${{steps.getLog.outputs.changeLog}}"}'
Run Code Online (Sandbox Code Playgroud)
要修复此问题,请使用Context 函数toJSON()
{ "changeLog": "---------------------------
**test**
- update something
- another (update)
**test2**
- Add `test` to param"}
Run Code Online (Sandbox Code Playgroud)
输出有效的 json:
inputs: '{ "changeLog": ${{ toJSON(steps.getLog.outputs.changeLog) }}}'
Run Code Online (Sandbox Code Playgroud)
编辑
我发布了小型复合集文本输出操作来处理多行字符串。
{ "changeLog": "---------------------------\n **test**\n - update something\n - another (update)\n \n **test2**\n - Add `test` to param"}
Run Code Online (Sandbox Code Playgroud)