假设:
问题是:如何使用以下格式的命令来部署它们:dep deploy [frontend|backend]
。
现在的问题是:你必须将它们描述为2个独立的主机,因为它们使用不同的参数repository
&至少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
个参数,它只是覆盖了文件中最后一个主机配置的deploy参数。
就此而言,我使用的是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
,但对于日常操作来说,这很不方便,比如数据库导入/导出......
请分享您对此问题的意见或解决方案
答案 0 :(得分:0)
定义任务:前端和后端,然后你可以简单地执行:dep backend hostname / stage或dep frontend。
dep命令的第二个参数是任务名称,而不是固定的单词deploy。