nisbirahsieu / deploy-bundle
通过rsync轻松部署。从Symfony 1项目迁移:deploy命令。
Requires
- php: ^7.0.8 || ^8.0
- symfony/config: ^5.0
- symfony/console: ^5.0
- symfony/dependency-injection: ^5.0
- symfony/http-kernel: ^5.0
- symfony/process: ^5.0
README
本项目是基于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许可证 - 有关详细信息,请参阅此处。