GitHub API,使用变量发布新评论
Posted
技术标签:
【中文标题】GitHub API,使用变量发布新评论【英文标题】:GitHub API, posting new comment using a variable 【发布时间】:2022-01-14 15:59:31 【问题描述】:我有一个包含一些性能测试输出的文件。它看起来类似于以下内容:
index | master | performance-fix | change %
--- | --- | --- | ---
load | 26212.8 | 28223.6 | 7.67%
type | 67.5 | 75.41 | 11.72%
minType | 56.91 | 59.6 | 4.73%
maxInserterSearch | 185.45 | 283.25 | 52.74%
minInserterHover | 25.97 | 27.55 | 6.08%
maxInserterHover | 44.47 | 44.7 | 0.52%
我正在尝试使用该表数据提交关于 Github 问题的新评论。标准文本工作正常,但是当我尝试传递表格时,我得到了错误:
"message": "Problems parsing JSON",
"documentation_url": "https://docs.github.com/rest/reference/issues#update-an-issue-comment"
我的cURL请求如下:
NEW_COMMENT=$(curl -sS \
-X PATCH \
-u $GH_LOGIN:$GH_AUTH_TOKEN \
-H "Accept: application/vnd.github.v3+json" \
"https://api.github.com/repos/$CIRCLE_PROJECT_USERNAME/$CIRCLE_PROJECT_REPONAME/issues/comments/$COMMENT_ID" \
-d '"body": "Results: <br />'"$TEST_RESULTS"'"')
我还尝试使用 jq 创建 "body": ...
,并使用 --data-urlencode
标志。两者都返回相同的“解析 JSON 的问题”错误。
【问题讨论】:
单引号字符串不插入变量。参见手册中的3.1.2 Quoting 这可能是因为您的TEST_RESULTS
包含换行符。后处理它,例如将\n
替换为<br>
,然后重试。
【参考方案1】:
看起来$TEST_RESULTS
包含使 JSON 与您想象的不同的字符,例如包括引号和换行符
也许像 this 这样转义 JSON 输出会有所帮助
escaped="$(printf '%s' "$TEST_RESULTS" | jq -Rs '.')"
... \
-d '"body": "Results: <br />'"$escaped"'"')
【讨论】:
以上是关于GitHub API,使用变量发布新评论的主要内容,如果未能解决你的问题,请参考以下文章
从 Google+ 评论框获取特定 URL 的评论计数 - Google+ API