【问题标题】:Get payload parameters in Jenkins在 Jenkins 中获取有效负载参数
【发布时间】:2017-08-08 07:13:39
【问题描述】:

我是 Jenkins 的新手。我按照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 jenkins webhooks


    【解决方案1】:

    在没有用于解析 JSON 的额外库的情况下,更简单的方法是在 Jenkins 中使用 Generic Webhook Trigger Plugin

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

    【讨论】:

      【解决方案2】:

      您应该遵循几个步骤:

      1. 在 GitHub 中配置一个 web-hook,您将通过它开始与 Jenkins 通信。这可以通过转到您的 GitHub 存储库 --> 设置 --> Web-hooks 来轻松实现。

      2. 将 content-type 条目设为 application/x-www-form-encoded。

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

      参考资料: How to process a github webhook payload in Jenkins? https://developer.github.com/webhooks/#payloads

      【讨论】:

      • 我在 github web hook 上启用了 push 事件,但我无法在 jenkins 上加载 payload 变量。有什么想法吗?
      • 执行上述步骤并得到一个无效的 crumb 问题 --> 然后您必须禁用 CSRF 保护才能使其工作,但这存在安全问题......所以要小心
      • 以及如何传递多个参数?
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-11-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-10-03
      相关资源
      最近更新 更多