hpatoio / deploy-bundle
通过rsync轻松部署。从Symfony 1项目迁移:deploy命令。
Requires
- php: >=5.3.2
- symfony/framework-bundle: ~2.0|~3.0
README
安装
运行命令
$ composer require hpatoio/deploy-bundle ~1.5
注意:此项目遵循语义化版本控制。最新稳定分支是1.5
。
在项目中启用此包
// 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许可协议 - 有关详细信息,请参阅这里