jenkins 使用generic-webhook-trigger并按原样传递JSON主体,而不是单个变量

rqmkfv5c  于 2023-01-16  发布在  Jenkins
关注(0)|答案(1)|浏览(124)

我在Jenkins中使用generic-webhook-trigger来在Github中发生事件时触发job。
看来我必须从大的JSON请求体中提取所需的每个变量,以将它们转换为env-var。
是否可以将整个JSON主体传递给Jenkins作业并让它解析它?

wa7juj8i

wa7juj8i1#

您可以通过将整个正文赋给特定变量,然后在代码中将其作为Json读取并自行解析,来实现您想要的效果。
例如,如果您的有效负载(收到的帖子内容)是:

{
    "ref": "refs/heads/master",
    "head_commit": {
        "committer": {
          "name": "ido",
          "email": "ido@test.com"
        }
      }
    }

您可以在通用webhook配置中定义一个名为payload的参数,将该参数的 expression 设置为$,并设置 expressionTypeJSONPath,当触发作业时,该参数将包括接收到的帖子内容的全部内容。
然后您可以自己解析它:

def payloadMap = readJSON text: payload
println "ref value is: ${payloadMap .ref}"
println "committer name is: ${payloadMap.head_commit.committer.name}"

您可以看到更多使用generic-webhook-trigger配置插件Here的高级示例,尤其是与您的需求更相关的This one

相关问题