1

鉴于:

  • 单页前端应用(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.phpdep deploy stage -f [frontend|backend].php,但是对于日常操作来说很不方便,比如数据库导入/导出...

请分享您对此问题的意见或解决方案

4

1 回答 1

0

定义任务:前端和后端,然后你可以简单地做:dep backend hostname/stage 或 dep frontend。

dep 命令的第二个参数是任务名称,而不是固定词 deploy。

于 2017-10-19T20:57:37.930 回答