我最近部署了一个 ruby 应用程序,它利用一些本地 heroku 功能通过 github 运行提交后挂钩。
https://github.com/ajlai/github-heroku-pusher。
现在我很好奇它是如何工作的,以及我如何构建一个与 heroku 类似的低级插件,可能是另一种语言。
程序功能的简要总结:
基本上,这个红宝石程序:
每次推送到 github 时自动部署我的 heroku
仅由 4 个参数配置(主要参数是 heroku API 密钥)。
开箱即用完美:不需要对heroku进行特定的处理。我只是将这个应用程序部署为一个新的 heroku 应用程序,并将 post recieve 挂钩添加到 github,然后发现每次我将它提交到 github 时,heroku 都会自动为我构建我的应用程序。
我关于这个 ruby 脚本(https://github.com/ajlai/github-heroku-pusher/blob/master/web.rb)如何将这个 github 驱动到 heroku 自动部署服务的问题
它似乎运行一个shell命令。这在 heroku 中是否允许?
来自 github 的实际“git pull”在哪里发生?我看到一个“GitPusher”对象,但不清楚该对象的定义位置(我怀疑它是静态导入到类中的 ruby gem 对象,但我看不出它可能来自什么 gem)。
我想知道构建这个项目的勇敢的灵魂在哪里找到了为 Heroku 构建这样一个低级挂钩所需的文档。任何关于我如何构建相同同类的自定义工作者钩子(最好是使用 Ruby 以外的语言)的提示都将不胜感激。