个人服务器上类似heroku的工作流程

set*_*rgo 19 git ubuntu workflow ruby-on-rails heroku

我正在尝试使用类似于heroku的 pure-git工作流来设置服务器.我并不需要帮助设置git的,但对于信息的目的,我使用gitolite.我想(不知何故)在这个系统的操作系统(Ubuntu)中编写自定义钩子,这样当它在特定分支上接收推送时,它会执行heroku所做的所有操作(启动Rack,Mongrel,Apache(用于)在我的情况下静态服务页面)等

有人可以指向我这样做的资源或至少开始吗?谷歌搜索似乎没有帮助......

sem*_*ros 28

听起来您想要在Git工作流中的某个点执行任意功能.Git钩子是要走的路.

如果您查看任何Git仓库(在.git文件夹内),您将看到一个hooks文件夹.在其中有许多具有不同名称的示例钩子文件.根据上面的解释,您需要编辑post-receive挂钩文件,因为在远程仓库中更新新的ref后会立即调用它(由本地推送引起的).有关更多信息,请阅读关于钩子的官方文档或阅读这个更平易近人的解释.

您可以将任何所需的shell命令放在钩子文件中.将文件名更改post-receive.sample为简单post-receive,添加启动Rack,Mongrel,Apache等所需的命令,然后快速使文件可执行chmod +x post-receive并完成所有设置.


bha*_*mby 19

你看过Capistrano吗?来自维基:

Capistrano是一个实用程序和框架,用于通过SSH在多个远程计算机上并行执行命令.它使用一种简单的域特定语言,部分来自工具rake.Rake类似于C世界中的make,允许您定义任务,这些任务可以应用于某些角色的计算机.它还支持通过某些网关机器进行隧道连接,以允许在VPN和防火墙后面执行操作.

Capistrano最初旨在简化和自动化Web应用程序到分布式环境的部署,最初捆绑了一组专门用于部署Rails应用程序的任务.部署任务现在(从Capistrano 2.0开始)选择加入并要求客户在其配方中明确地"加载'部署'".

它不是基于任何类型的提交或后挂钩,虽然我确定你是否真的需要它,然后你将能够找到一些示例配方来做类似的事情.

更新:也许git-deploy(基于Capistrano)是你想要的:

在远程存储库上安装有用的git挂钩的工具,用于在主机上启用基于推送的Heroku类部署.

  • 您可以在Capistrano中创建任务来控制应用程序服务器的启动和停止.所以不,不是*完全*无关紧要. (6认同)

set*_*rgo 5

我刚刚发现了https://github.com/mislav/git-deploy,这正是我想要的.我将把另一个答案保留为"正确"(因为它当时是最好的),但我现在正在使用git-deploy :)