2017-10-07 35 views
1

我试图在CI运行时自动创建一个请求注释。给定命令的输出写入一个文件(也可以只存储在环境变量中)。问题是,我通常会得到如下回应:将命令输出内插到GitHub REST请求中

curl -XPOST -d "{'body':'$RESULT'}" https://api.github.com/repo/name/issues/number/comment 

{ 
    "message": "Problems parsing JSON", 
    "documentation_url": "https://developer.github.com/v3/issues/comments/#create-a-comment" 
} 

这通常是由于unescpaed字符,如\n\t"

有没有简单的方法来实现这一目标的命令行或者用bq,sh,用jq或者Python?使用Octokit.rb库可以直接使用,但我不想在构建环境中安装Ruby。

回答

0

您可以使用jq来创建您的JSON对象。假如你有RESULT变量您的评论内容,完整的请求是:

DATA=$(echo '{}' | jq --arg val "$RESULT" '.| {"body": $val}') 

curl -s -H 'Content-Type: application/json' \ 
     -H 'Authorization: token YOUR_TOKEN' \ 
     -d "$DATA" \ 
     "https://api.github.com/repos/:owner/:repo/issues/:number/comments"