在 Jenkins 中获取 payload 参数

Get payload parameters in Jenkins

我是 Jenkins 的新手。我按照这个 help 来实现 Jenkins、Github 和 Webhook。

但是,我陷入了这个问题。我想在 Jenkins 中获取 payload 参数以检查更改、操作等信息...来自 payload json.

我写了一些脚本来测试。 ACTION$payload 总是 returns 空

# !/bin/bash    
ACTION=`echo $payload | php -r '$data = file_get_contents("php://stdin"); $json = json_decode($data, true); echo $json["action"];'`

我看了一些教程但没有成功。

您应该遵循几个步骤:

  1. 在 GitHub 中配置一个网络挂钩,您将通过它开始与 Jenkins 通信。通过转到您的 GitHub 存储库 --> 设置 --> Web-hooks 可以很容易地做到这一点。

  2. 将内容类型设为application/x-www-form-encoded。

  3. Select 事件作为推送事件。
  4. 在 Jenkins 服务器中创建一个名为 "payload" 的字符串参数。
  5. 按照步骤 3 GitHub 将能够将内容包装在这个变量中并将其发送给 Jenkins。
  6. 在 Jenkins 中,您可以在开始构建时读取 $payload 变量。
  7. 使用您选择的库
  8. 解析JSON

参考资料: https://developer.github.com/webhooks/#payloads

更简单的方法是在 Jenkins 中使用 Generic Webhook Trigger Plugin,无需额外的库来解析 JSON。

它可以使用 JSONPath 解析 JSON 中的任何值,并将其分配给构建中可用的变量。