curl 将JSON字符串中的换行符传递给gitlab管道中的注解

pwuypxnk  于 2022-11-13  发布在  Git
关注(0)|答案(1)|浏览(173)

我有一个小的bash脚本,它计算代码大小的差异,并尝试在从管道调用合并请求时创建注解。

delta=$(python scripts/python/codesizes.py diff build/release/artefacts/build.elf)
echo $delta 
json_data=$(jq -n \
--arg body "$delta" \
'{"body": $body}')
echo $json_data
echo $1 # CI_API_TOKEN
echo $2 # CI_COMMIT_REF_NAME
echo $3 # CI_API_V4_URL
echo $4 # CI_PROJECT_ID
merge_request_iid=$( \
        curl --request GET \
          --header "PRIVATE-TOKEN: $1" \
          "$3/merge_requests?scope=all&state=opened&source_branch=$2" | \
        jq '.[0].iid' \
      )
echo $merge_request_iid
curl --request POST \
        --header "PRIVATE-TOKEN: $1" \
        --header "Content-Type: application/json" \
        --data "$json_data" \
        "$3/projects/$4/merge_requests/${merge_request_iid}/notes"

$delta如下所示:

Using `git merge-base` against master branch
Comparing code size of current .elf against: 1234abcd...
+---------+--------+-------+-------+
| Region  | .text  | .data | .bss  |
+---------+--------+-------+-------+
| Local   | 206324 | 5012  | 44868 |
| Against | 202692 | 5016  | 44868 |
| Delta   | 3632   | -4    | 0     |
+---------+--------+-------+-------+

几乎所有的东西都能完美地工作,除了将这个传入一个json字符串,然后传入注解。Comment example
此特定注解是通过命令行完成的,以尝试与以下文本不同的格式:

Using against master
Comparing code size of current .elf
+---------+
|  Region |
+---------+

我尝试使用jq,不使用jq,通过文本文件,用\\n替换换行符,使用--data-binary,但是我仍然不知道如何正确地解析它,以便保留换行符。

ebdffaop

ebdffaop1#

经过多次尝试,我最终使用:delta="${delta//$'\n'/'<br />'}"强制在注解中换行。这是因为这是强制markdown换行的方法之一。使用\或双空格对我不起作用。

相关问题