【问题标题】:GitHub does not re-trigger webhook on Release changesGitHub 不会在发布更改时重新触发 webhook
【发布时间】:2016-12-29 01:52:00
【问题描述】:

对于我的 https://github.com/bkimminich/juice-shop 项目,我使用 Sourceforge (https://sourceforge.net/p/juice-shop/files/github_webhook) 提供的 webhook 来在 GitHub 触发 Release 事件时在那里创建一个发布。这个 webhook 会提取所有附加到版本(在 GitHub 上)的文件并将它们上传到 Sourceforge。到目前为止,一切顺利。

我现在的问题是,在 CI/CD 过程的后期,我将更多文件附加到版本中,即基于 Tavis-CI 和 Appveyor 构建的预打包分发档案。这些不会进入 Sourceforge,因为在最初执行 webhook 时它们还不存在。似乎不会在更改(即附加更多文件)到 GitHub 版本时自动重新触发 webhook。

解决此问题的方法是手动重新触发最后一次 webhook 调用,然后它将拾取所有文件,包括后来添加的文件,并将它们上传到 Sourceforge。

但这是一个手动过程,所以它打破了我自动化链中的最后一步。有没有办法正确地自动化这个?

【问题讨论】:

    标签: github webhooks continuous-deployment sourceforge


    【解决方案1】:

    这是 GitHub 支持团队的官方回答,明确建议使用第一个选项:

    • 在包含所有文件之前不要发布版本。而是创建预发布版或草稿版,然后触发 Travis/Appveyor 构建您需要的文件,然后将文件添加到 发布,最后发布发布。网络钩子将是 发布版本时触发,此时所有文件 将会出现。

    • 使用附加文件更新版本后,使用 API 获取这些文件并将它们上传到 SourceForge。我不确定是否 SourceForge 最终提供了执行此操作所需的 API,因此 你需要征求他们的意见。

    • 使用附加文件更新版本后,取消发布版本并再次发布。这应该会触发 webhook 再次,您可以通过 API 执行此步骤。

    【讨论】:

    • 不幸的是,GitHub 也会在标记为预发布的版本上触发 SourceForge webhook,并且 Sourceforge 不会将这些与“真实”版本区分开来,并在其末尾创建一个版本。另一种方法可能是自动单击 GitHub 上最后一个版本的“重新交付”按钮,因为这是一个普通的 GET-URL,例如github.com/bkimminich/juice-shop/settings/hooks/…>。唯一可变的部分是最后调用的哈希值。假设您需要发送身份验证标头,否则这将是一个很大的 CSRF 漏洞。
    • 将版本保持在草稿状态就可以了。至少 AppVeyor 有一个标志来保持草案的发布,对于 Travis-CI,这没有记录。见github.com/travis-ci/travis-ci/issues/6132
    猜你喜欢
    • 1970-01-01
    • 2019-03-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-09-03
    • 2019-11-04
    • 2017-11-08
    相关资源
    最近更新 更多