我有一個小的 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 字串然后傳遞到注釋中。這是 MR 上的評論的樣子: 評論示例
此特定注釋是通過命令列完成的,以嘗試與以下文本不同的格式:
Using against master
Comparing code size of current .elf
---------
| Region |
---------
我通過使用 --data-binary 將換行符替換為 、 來嘗試使用jq、 不使用jq、 通過文本檔案。\\n但我仍然無法弄清楚如何正確決議它以便保留換行符。
uj5u.com熱心網友回復:
經過無數次嘗試,我最終使用:delta="${delta//$'\n'/'<br />'}"在評論上強制換行。這是因為它是強制 markdown 換行的方法之一。使用\空格或雙空格對我不起作用。
轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/505197.html
