我有一个小的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,但是我仍然不知道如何正确地解析它,以便保留换行符。
1条答案
按热度按时间ebdffaop1#
经过多次尝试,我最终使用:
delta="${delta//$'\n'/'<br />'}"
强制在注解中换行。这是因为这是强制markdown换行的方法之一。使用\
或双空格对我不起作用。