我是詹金斯的新手。我按照这个help来实现 Jenkins、Github 和 Webhook。
但是,我陷入了这个问题。我想获取 Jenkins 中的有效负载参数,以检查来自有效负载 json 的更改、操作等信息。
我写了一些脚本来测试。
ACTION
和 $payload
始终返回空
# !/bin/bash
ACTION=`echo $payload | php -r '$data = file_get_contents("php://stdin"); $json = json_decode($data, true); echo $json["action"];'`
我读了一些教程但没有成功。
您应该遵循以下几个步骤:
在 GitHub 中配置一个 web-hook,您将通过它开始与 Jenkins 进行通信。这可以很容易地通过转到您的 GitHub 存储库 --> 设置 --> Web-hooks。
将内容类型条目设置为
application/x-www-form-encoded
。
选择事件为推送事件。
在 Jenkins Server 中创建一个名为
payload
的字符串参数。
按照第 3 步,GitHub 将能够将内容包装在该变量中并将其发送到 Jenkins。
在 Jenkins 中,您可以在构建启动时读取 $payload 变量。
使用您选择的库解析 JSON
更简单的方法是使用 Jenkins 中的Generic Webhook Trigger Plugin,无需额外的解析 JSON 的库。
它可以使用 JSONPath 解析 JSON 中的任何值,并将其分配给构建中可用的变量。