鉴于:
- 单页前端应用(angularJS) & API 后端服务(Symfony3)
- 一个主机用于一个阶段,同时托管前端和后端
- 部署者版本 6.0.3
问题是:如何能够使用以下命令格式部署它们:dep deploy [frontend|backend]
. repository
现在的问题是:您必须将它们描述为 2个独立的主机,因为它们deploy_path
至少使用不同的参数。然后,如果您将它们保存在一个文件中,则不能只为后端和前端提供 2 个任务,如下所述:
task('deploy', [
'deploy:info',
.
.
.
])->onHosts(['[frontend|backend]']);
我的意思是你可以,但是在命令行中你会写dep deploy stage --hosts frontend
&dep deploy stage --hosts backend
其中任何一个都会失败并出现错误:
No task will be executed, because the selected hosts do not meet the conditions of the tasks.
我的猜测是它会覆盖任务本身并执行最后一个。
好的。我也可以有一个解决方法
task('deploy:frontend', [
'deploy:info',
.
.
.
]);
task('deploy:backend', [
'deploy:info',
.
.
.
]);
这样,运行它是合乎逻辑的dep deploy:[frontend|backend] stage
,但是因为前端和后端都位于同一台服务器上,并且它们都有deploy_path
参数,例如,它只是用文件中最后一个主机的配置覆盖部署参数。
就此而言,我使用的是onHosts()
对主机声明进行一些调整的函数;
host('backend')
->hostname('host.com')
host('frontend')
->hostname('host.com')
& 2 个任务定义:
task('deploy:[frontend|backend]', [
'deploy:info',
.
.
.
])->onHosts(['[frontend|backend]']);
这样你就必须这样部署:dep deploy:[frontend|backend] stage --hosts [frontend|backend]
你们都同意这是荒谬的。
我进一步的猜测是将部署分成 2 个文件作为backend.php
& frontend.php
。dep deploy stage -f [frontend|backend].php
,但是对于日常操作来说很不方便,比如数据库导入/导出...
请分享您对此问题的意见或解决方案