首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用Capistrano和Git将多个应用程序部署到单个树中

使用Capistrano和Git将多个应用程序部署到单个树中
EN

Stack Overflow用户
提问于 2012-03-25 13:43:18
回答 2查看 767关注 0票数 1

我正在尝试使用Capistrano部署一个PHP网站。该网站由4个组件(前端代码和3个web服务)组成,每个组件都存储在自己的git存储库中。我想把所有4个组件部署到一个单一的树状结构中(见下文),这样在网站版本之间的切换就像移动“当前”链接一样简单。

我看到默认情况下,Capistrano部署被设计为部署单个存储库。如果我正确理解它,即使使用类似集线器的东西也不会对我有帮助,因为这4个组件将被部署到4个不同的树中,从而使回滚到特定的时间点是一个很麻烦的过程。

是否有一种方法可以使用Capistrano获得下面的配置?在这种情况下,最好的做法是什么?

代码语言:javascript
复制
root/
| current/
| releases/
| | <timestamp/>
| | | frontend/
| | | webservice-1/
| | | webservice-2/
| | | webservice-3/
| | <timestamp/>
| | | frontend/
| | | webservice-1/
| | | webservice-2/
| | | webservice-3/
| shared/

更新:

使用可接受的答案中建议的子模块解决方案结束。我创建了一个包含4个子模块的网站存储库,并创建了一个网站部署存储库,在这里我保存了capistrano部署文件。我编写了一个简单的shell脚本,以避免在每次部署中更新子模块的麻烦(非常麻烦的过程!)要进行部署,我运行脚本(下面是源代码),然后运行“”。

代码语言:javascript
复制
#!/bin/sh 

git clone gitserver:path_to_git_repositories/website.git cloned 
cd cloned 
git submodule init 
git submodule update 
git submodule foreach git pull origin master # updating all modules to the current code in the master branch
git submodule foreach git add .  
git commit -a -m "Updating submodules" 
git push origin master 
cd .. 
rm -rf cloned 
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2012-03-30 11:30:20

在部署rails应用程序和一个webservice时,我遇到了非常类似的问题。我决定使用git子模块,它应该可以解决所有的问题。

您只需要创建一个主要的git存储库,它将添加前端和所有and服务作为子模块。然后,在capistrano中,您只需指向这个主存储库并将git_enable_submodules设置为1。

然后,您可以单独开发所有4个组件,当您想要部署时,只需更新子模块来更正点并提交主存储库。这种方法应该给出您所介绍的目录布局,并且应该可以轻松地回滚。

票数 2
EN

Stack Overflow用户

发布于 2016-11-05 16:57:43

我在使用Capistrano v3.6执行由3个单独Git存储库组成的web应用程序的原子部署时遇到了同样的问题。

正如您所讨论的,我使用了子模块方法,但是对于v3 (查看post的日期,可能是v2),使用了更自动化的方式。

步骤

  1. 有一个repo用于configuration,另一个用于将主项目repos分组为子模块。 set :repository, 'submodules-repo-url'
  2. 替换Cap的Git策略以支持子模块(v2支持,在v3中删除)。 在这里找到脚本set :git_strategy, SubmoduleStrategy 上面的策略负责更新子模块,所以它就像一个简单的Git。 它将子模块作为当前发行版下的单独文件夹获取,就像在大纲中一样。
  3. cap deploy和享受。

我写了一篇关于它的博文,更多的信息可以找到这里

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/9860593

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档