使用Git进行PHP部署.如何让它更加自动化?

Tre*_*non 15 php git deployment

我负责启动网络项目,目前从客户签到最终发布需要一段时间.它位于我可以访问root的服务器上,但是它运行Plesk以便老板可以设置VirtualHosts,这意味着它上面运行着许多站点.

每个项目都有自己的git存储库,所以目前我有以下设置.

在我的临时服务器上有一个repo的克隆,我有两个裸存储库.一个在锻造(由Indefero提供动力),另一个在实时服务器上.

项目的每个版本都标有今天的日期,例如.git tag -a deployed-2011-04-20.

所以在登台服务器上我执行类似的东西git push --tags live master,它针对的是真实服务器上的裸仓库.

然后在实时服务器上通过SSH执行一个简短的bash脚本,该脚本基本上将存储库从实时裸仓库克隆到Apache将提供的文件夹.

因此,如果这一切都有意义,您是否能够推荐一个工具或任何东西,以使我的生活更容易遵循工作流程或可以适应?

它看起来像这样:

Forge (authoritative source)
  ^
  |
  v
Staging/development server
  |
  v
Live server bare repo
  |
  v
Releases folder (symlinked to htdocs)
Run Code Online (Sandbox Code Playgroud)

Von*_*onC 2

我想到的一种解决方案是在实时服务器裸存储库上添加一些接收后挂钩,以便检测来自临时存储库的任何已部署 2011-xx-yy 标签,并从那里触发 ssh 脚本。

另一个解决方案是有一个调度程序(就像 Hudson 在pderaaij回答中提到的那样,以便:

  • 监视状态存储库,并在右侧标签上触发实时服务器上的推送
  • 监控实时裸存储库,并触发 ssh 脚本。

第二种解决方案的优点是在 Hudson 作业报告中跟踪所有发布实例,每次所述作业检测到正确的标签并执行发布过程。