当我在Azure网站上使用GitHub推送事件处理一个简单的webhook事件监听器时,我欣喜若狂,但我现在意识到我没有在json有效负载中看到分支名称或id(例如https://developer.github.com/v3/activity/events/types/#pushevent )
我想也许“tree_id”会是它,但它似乎不是。我在GitHubs的文档中找不到任何关于此的信息。也许我需要从事件中获取一个id并进行另一个api调用以获得分支?这样做的原因是我希望能够将GitHub推送事件与我的应用程序组合链接,后者已定义了分支。因此,推送事件是在我的不同应用程序上查看代码更改活动的一种方式 - 因此知道分支是重要的。
答案 0 :(得分:6)
我写信给GitHub支持,他们告诉我,分支名称是" ref" json有效负载根目录中的元素。从名为jsonBody
的JToken对象解析时,C#看起来像这样
var branchName = jsonBody["ref"].ToString().Split('/').Last();
例如在" refs / heads / master"中,分支名称为" master"
答案 1 :(得分:0)
您需要主要关注WEBHOOK响应。这是JSONPATH的窍门(至少是我对jenkins所做的事情):
首先用字符“ $”阅读您的webhook整个响应。您可以看到它是一些变量,例如:
$ webhookres ='$'
echo $ webhookres
打印出答复后,将其复制并粘贴到此处:https://jsonpath.com/
一旦有了分支名称(将带有/的多余字符串),只需使用 awk 或 cut (Linux命令)修剪不需要的部分。
您不仅限于此。您只需进行模式操作,就可以利用此方法获取其他值,例如author,git repo url等,然后将其进一步用于自动化。
即使您使用的是Azure等其他平台,JSONPATH的概念也将相同。因为按照接受的答案“ jsonBody [” ref“]”的建议,它等同于$ .ref ,因为您必须一起识别PATTERN(因为PATTERN在此是 'ref' )