Capifony - 当 Symfony 应用程序不在 Git 存储库的根目录时部署
Capifony - deploy when Symfony app is not in root of Git repo
我正在使用 Capifony (v2.15.5) 将我的 Symfony (2.6.5) 应用程序部署到远程服务器。我正在使用 deployment strategy "a)",其中更改被推送到 Git,然后在部署时服务器克隆 repo 以提供最新的应用程序文件。直到最近,我的这个工作正常,但我已经改变了我的回购协议的结构,现在不行了。
具体以前是这样的,Symfony project root 和 Git root:
[root]
app/
src/
web/
但现在是这样的,Symfony 项目根是 Git 根的子节点:
[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 根目录,这让我到目前为止,但目前我的部署在 Composer 步骤失败,因为它正在执行安装命令Git 根,这不是 composer.json
和 composer.lock
所在的位置。
我在这里发现了一个非常相似的问题:Redefined symfony root project。那里没有太多细节,而且它已有 3 年历史,所以我认为值得重温。
我可能会把它移回原来的样子,并可能使用 Git 子模块(虽然对我来说是新领域)来保持旧结构的一些外观。但我的问题是:是否可以将 Capifony 配置为与不在 Git 根目录中的 Symfony 根目录一起正常工作?如果是这样,如何;如果不是,最好的解决方法是什么。
提前致谢!
我找到了一个德国博客 post 谈论这个问题 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
目录中。只需根据您的需要进行更改即可。
我正在使用 Capifony (v2.15.5) 将我的 Symfony (2.6.5) 应用程序部署到远程服务器。我正在使用 deployment strategy "a)",其中更改被推送到 Git,然后在部署时服务器克隆 repo 以提供最新的应用程序文件。直到最近,我的这个工作正常,但我已经改变了我的回购协议的结构,现在不行了。
具体以前是这样的,Symfony project root 和 Git root:
[root]
app/
src/
web/
但现在是这样的,Symfony 项目根是 Git 根的子节点:
[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 根目录,这让我到目前为止,但目前我的部署在 Composer 步骤失败,因为它正在执行安装命令Git 根,这不是 composer.json
和 composer.lock
所在的位置。
我在这里发现了一个非常相似的问题:Redefined symfony root project。那里没有太多细节,而且它已有 3 年历史,所以我认为值得重温。
我可能会把它移回原来的样子,并可能使用 Git 子模块(虽然对我来说是新领域)来保持旧结构的一些外观。但我的问题是:是否可以将 Capifony 配置为与不在 Git 根目录中的 Symfony 根目录一起正常工作?如果是这样,如何;如果不是,最好的解决方法是什么。
提前致谢!
我找到了一个德国博客 post 谈论这个问题 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
目录中。只需根据您的需要进行更改即可。