Capifony - 当Symfony app不在Git repo的根目录时进行部署

时间:2015-04-15 22:43:03

标签: git symfony capifony

我正在使用Capifony(v2.15.5)将我的Symfony(2.6.5)应用程序部署到远程服务器。我正在使用deployment strategy "a)",其中更改被推送到Git,然后在部署时,服务器克隆repo以提供最新的应用程序文件。直到最近我才把这个工作正常,但我已经改变了我的回购结构,现在却没有。

具体来说,它曾经是这样的,Symfony项目root与Git root相同:

[root]
    app/
    src/
    web/

但现在就是这样,Symfony项目root是Git root的孩子:

[root]
    dbscripts/
    docs/
    webapp/
        app/
        src/
        web/

这给Capifony带来了一些麻烦并不奇怪,但是我认为可以配置我的方式,到目前为止没有运气。

这是我的一些deploy.rb:

set :app_path,    "webapp/app"

set :repository,  "ssh://[repodetails]"
set :scm,         :git

set :shared_files,      [app_path+"/config/parameters.yml"]
set :shared_children,     [app_path + "/logs", "webapp/vendor"]

set :use_composer, true

正如你所看到的,我试图在配置中反映新的Symfony root,这让我到目前为止,但目前我的部署在Composer步骤失败了,因为它正在Git root中执行install命令,这不是composer.jsoncomposer.lock的位置。

我在这里发现了一个非常相似的问题:Redefined symfony root project。那里的细节不是很多,而且已经有3年了,所以我觉得值得重温一下。

我可能会以原来的方式将其移回原点,并且可能使用Git子模块保留旧结构的一些外观(尽管我有新的领域)。但我的问题是:是否可以将Capifony配置为与不在Git根目录中的Symfony根一起正常工作;如果是的话,如何;如果不是,那么最好的解决方法是什么。

提前致谢!

1 个答案:

答案 0 :(得分:2)

我找到一篇德国博客文章谈论这个问题here。您基本上需要更改这些配置值:

set :cache_path, "api/app/cache"
set :composer_options, "--no-dev --verbose --prefer-dist --optimize-autoloader --working-dir=api"
set :composer_dump_autoload_options, "--optimize --working-dir=api"
set :symfony_console, "api/app/console"

同时适当更改shared_files / shared_children值。

在此示例中,Symfony2项目安装在api目录中。只需根据您的需要进行更改。