capistrano 3.8,shared_path 似乎部分被忽略
capistrano 3.8, shared_path seems partly be ignored
我正在处理 capistrano 部署配置,想在另一个地方设置共享文件夹。背景是,我想使用通配符部署(审查应用程序)并且目标目录将即时生成(这意味着其中没有共享文件夹)并且我会使用共享文件夹此环境中所有评论应用的资产。
因此我在服务器上有目录:
/var/www/review/application_name
/var/www/review/application_name/shared/...(这里是我想在所有评论应用程序中共享的资产和配置)
/var/www/review/application_name/branch-name/ - 这是 capistrano 在将特定分支部署到审查阶段时将创建的部署路径。
我用过shared_path
set :shared_path, "/var/www/review/#{fetch(:application)}"
这对 linked_dirs 很好用,但对 linked_files 不行。我收到错误消息:
00:01 deploy:check:linked_files
ERROR linked file /var/www/review/www.app.tld/123/shared/myfile does not exist on review.app.tld
这是真的 - 但我不知道如何告诉 cap 将其放置到位。当然,命名文件在共享文件夹中
/var/www/review/www.app.tld/shared/
但是 capistrano 在尝试检查 linked_files 时似乎搜索了错误的位置(再次:linked_dirs 处理正确)。
有什么提示吗?提前致谢!
如果您的 :application
变量在稍后定义或更改,您将需要设置为延迟变量:
set :shared_path, -> { "/var/www/review/#{fetch(:application)}" }
这会按需而不是提前评估该字符串。
shared_path
不是您可以直接配置的东西。使用 set
不会有任何效果。
Capistrano 中的共享路径总是 一个在您的:deploy_to
位置内名为shared
的目录。因此如果你想改变共享路径,你必须设置:deploy_to
,像这样:
set :deploy_to, -> { "/var/www/review/#{fetch(:application)}" }
这将有效地导致 shared_path
变为:
"/var/www/review/#{fetch(:application)}/shared"
请记住,:deploy_to
用作许多内容的基本目录:releases
、repo
、current
等。因此,如果您更改 :deploy_to
你会影响他们所有人。
我正在处理 capistrano 部署配置,想在另一个地方设置共享文件夹。背景是,我想使用通配符部署(审查应用程序)并且目标目录将即时生成(这意味着其中没有共享文件夹)并且我会使用共享文件夹此环境中所有评论应用的资产。
因此我在服务器上有目录:
/var/www/review/application_name
/var/www/review/application_name/shared/...(这里是我想在所有评论应用程序中共享的资产和配置)
/var/www/review/application_name/branch-name/ - 这是 capistrano 在将特定分支部署到审查阶段时将创建的部署路径。
我用过shared_path
set :shared_path, "/var/www/review/#{fetch(:application)}"
这对 linked_dirs 很好用,但对 linked_files 不行。我收到错误消息:
00:01 deploy:check:linked_files
ERROR linked file /var/www/review/www.app.tld/123/shared/myfile does not exist on review.app.tld
这是真的 - 但我不知道如何告诉 cap 将其放置到位。当然,命名文件在共享文件夹中
/var/www/review/www.app.tld/shared/
但是 capistrano 在尝试检查 linked_files 时似乎搜索了错误的位置(再次:linked_dirs 处理正确)。
有什么提示吗?提前致谢!
如果您的 :application
变量在稍后定义或更改,您将需要设置为延迟变量:
set :shared_path, -> { "/var/www/review/#{fetch(:application)}" }
这会按需而不是提前评估该字符串。
shared_path
不是您可以直接配置的东西。使用 set
不会有任何效果。
Capistrano 中的共享路径总是 一个在您的:deploy_to
位置内名为shared
的目录。因此如果你想改变共享路径,你必须设置:deploy_to
,像这样:
set :deploy_to, -> { "/var/www/review/#{fetch(:application)}" }
这将有效地导致 shared_path
变为:
"/var/www/review/#{fetch(:application)}/shared"
请记住,:deploy_to
用作许多内容的基本目录:releases
、repo
、current
等。因此,如果您更改 :deploy_to
你会影响他们所有人。