namelesscoder/typo3-repository-gizzle

GitHub Webhook 监听器,在创建标签时将 TYPO3 扩展发布到 TER

1.1.4 2015-03-08 16:11 UTC

This package is auto-updated.

Last update: 2024-09-12 04:33:53 UTC


README

TYPO3 GitHub Repository Releaser

Build Status Coverage Status

本项目允许任何托管在 GitHub 的包含 TYPO3 CMS 扩展的仓库通过添加一个非常简单的 GitHub web hook 发布到官方 TYPO3 扩展仓库(以下简称 TER)。

此服务的官方端点是 https://release.namelesscoder.net,但您也可以将此包安装在自己的服务器上,并使用该安装位置作为端点。

该项目使用 Gizzle 监听 GitHub 事件,并使用 Gizzle TYPO3 插件进行实际上传。内部,Gizzle TYPO3 插件使用 TYPO3 仓库客户端。

要求

  • 包含您的扩展源代码的 公开 GitHub 仓库。
  • 仅限自定义端点:访问 gitphp CLI 命令,以及一种通过 HTTP/HTTPS 服务器 web/index.php 文件的方式。

安装

  1. 编辑您的仓库设置并定位到 "Webhooks & services"。
  2. 点击 "添加 webhook" 创建一个新的钩子。
  3. 在 "Payload URL" 中,填写您希望使用的端点 URL。默认 URL 是 https://release.namelesscoder.net
  4. 将您独特的凭据和信息添加到 URL 中。有两种可能的 URL 格式
    • 如果您的 GitHub 仓库名称与您的 TER 扩展密钥不同,则必须使用类似 https://release.namelesscoder.net/my_extension/user:password 的 URL - 这会将仓库以密钥 my_extension 发布。
    • 如果您的 GitHub 仓库已命名为与扩展密钥相同的名称,则可以省略该部分 URL 并使用更短的 URL,例如 https://release.namelesscoder.net/user:password
    • 或者,如果您觉得这种方式更舒服,并且端点支持,则可以使用 https://username:password@release.namelesscoder.net/my_extension。此方法仅在服务器支持 authnz_external_module 或相应的外部身份验证时才有效 - 请见下文。
  5. 输入一个 "Secret"。我们现在使用一个固定的密钥 - 输入文本 typo3rocks
  6. 保留 "Which events..." 选择器不变。我们只需要 push 事件。

不幸的是,没有方法可以隔离仅在创建新标签时才会分发的事件 - 这也是为什么我们必须监听所有 push 事件的原因。我们只是忽略那些不引用标签的。

安全

因为您的凭据包含在 URL 中,所以在默认端点我们正在执行以下操作,如果您创建了一个端点,您也绝对应该这样做

  • URL 受 SSL 保护。
  • 请求的完整 URL 从不被记录。

请注意,此 URL 中凭据的方法被认为是 临时 的,并且仅实现,因为目前没有其他方法。最终目标是使用令牌解决方案,包括当前固定的 "Secret",以及必须传递给 TER 的凭据。前者将通过创建官方 GitHub 服务来解决,而后者将取决于在 TER 或甚至 TYPO3 SSO 本身上完成的工作。

如果您的 web 服务器支持它(Apache 通过 authnz_external_module 支持),则可以注册外部身份验证器(如果需要更改/移动路径)

<IfModule authnz_external_module>
    DefineExternalAuth fake environment /var/www/release.namelesscoder.net/fake-auth.sh
</IfModule>

...这需要添加到您的虚拟主机或根服务器配置中。fake-auth.sh 脚本是一个模拟脚本,允许任何用户名和密码进行认证 - 如果按照这种方式操作,该项目将读取这些(模拟的)凭据。这意味着您可以在上传到TER时指定要使用的凭据,例如 https://username:password@release.namelesscoder.net/my_extension

使用方法

要从GitHub仓库创建新的TER版本,只需创建一个新的标签并推送即可。上传程序将使用您标记的提交消息作为TER上的上传注释。要创建并推送新的标签

git tag 1.2.3
git push origin 1.2.3

这将创建一个名为 1.2.3 的新标签并将其推送到名为 origin 的远程仓库。

查看结果

以这种方式触发的上传结果可以在两个不同的地方查看

  • 创建版本时添加的 公开消息 会作为注释添加到标记时仓库的HEAD提交。
  • 可以查看的 私有调试信息 通过在安装部分所述的“Webhooks & services”面板中查找,并点击添加的URL来查看。显示最近交易的一个简短列表,点击其中任何一个都可以查看任何技术错误。

行为

该插件的行为描述得非常简单

  1. 每当您向GitHub推送时,我们会收到一个事件。
  2. 我们分析Payload HEAD
    • 如果不是新标签,则退出。
    • 如果是新标签,则上传新的版本。
  3. 我们在您标记的提交上设置“成功”状态标志。
  4. 我们在您标记的提交上添加注释,说明它已发布到TER。
  5. 我们添加一些调试信息并将我们的响应发送到GitHub。

整个过程只需几秒钟,具体取决于您的扩展大小。如果在过程中出现任何错误,它会捕获并可以像上面描述的那样在web hook响应中检查。