nisbirahsieu/deploy-bundle

通过rsync轻松部署。从Symfony 1项目迁移:deploy命令。

安装: 15

依赖者: 0

建议者: 0

安全: 0

星标: 0

关注者: 2

分支: 13

类型:symfony-bundle

1.6.4 2023-11-23 09:05 UTC

This package is auto-updated.

Last update: 2024-09-14 13:42:26 UTC


README

Total Downloads Latest Stable Version SensioLabsInsight Project Status

本项目是基于https://github.com/hpatoio/DeployBundle的分支。

安装

运行以下命令

$ composer require nibsirahsieu/deploy-bundle ~1.6

注意:本项目遵循语义化版本控制。最新稳定分支是1.6

在您的项目中启用此捆绑包

// app/AppKernel.php
public function registerBundles()
{
    $bundles = array(
        // ...
        new Hpatoio\DeployBundle\DeployBundle(),
        // ...
    );
}

配置

配置主要是定义环境。您可以定义任意数量的环境,唯一必填的值是host。部署是通过rsync进行的,所以如果没有指定,则使用默认值。记住,要获取此捆绑包的配置参考,您可以运行

bin/console config:dump-reference DeployBundle

配置示例

# app/config/config.yml
deploy:
  prod:
    rsync-options: '-azC --force --delete --progress -h --checksum'
    host: my.destination.env
    dir: /path/to/project/root
    user: root
    port: 22
    timeout: 120 # Connection timeout in seconds. 0 for no timeout.
  uat:
    host: 192.168.1.10
    user: root2
    dir: /path/to/project/root
    port: 22022
    post_deploy_operations: 
        - bin/console cache:clear --env=prod
        - bin/console assets:install --env=prod
        - bin/console assetic:dump --env=prod    

大多数密钥不需要解释,除了

post_deploy_operations

您可以在部署后添加要运行在远程服务器上的命令列表。在上面的配置中,您可以查看部署后通常运行的常见命令(清除缓存、发布资源等)。这些命令在远程服务器上作为shell命令运行。因此,您可以输入任何shell命令(cp、rm等)。

请不要将Symfony环境与部署环境混淆。如上所示,我们在部署环境uat上为Symfony环境prod运行post_deploy_operations

rsync选项

如果您在环境中添加了rsync-options键,则会覆盖用于rsync的默认选项。因此,如果没有指定,系统使用以下选项:

  • "-azC --force --delete --progress -h --checksum"。
  • 如果已在config.yml中为目标环境指定了rsync-options键,则使用该键的值
  • 命令行选项--rsync-options的值

Rsync排除

app/config下创建一个rsync_exclude.txt文件来排除部署中的文件。这里是一个很好的起点。

您还可以创建每个环境的rsync_exclude。只需在app/config中创建一个名为rsync_exclude_{env}.txt的文件。有关更多详细信息,请参阅此处 #3 和此处 #7。

强制供应商同步

通常,vendor目录会被排除在rsync之外。如果您需要同步它,可以添加--force-vendor。(稍后会有示例)

用法

部署很简单

php bin/console project:deploy --go prod

有点不确定?模拟部署

php bin/console project:deploy prod

需要更新供应商?使用选项--force-vendor(通常供应商被排除在rsync之外)

php bin/console project:deploy --go --force-vendor prod

自定义rsync参数

php bin/console project:deploy --rsync-options="-azChdl" prod

许可证

DeployBundle采用CC-BY-SA-3.0许可证 - 有关详细信息,请参阅此处