Deployer 开源项目教程
1. 项目的目录结构及介绍
Deployer 是一个用于 PHP 项目的部署工具,其 GitHub 仓库的目录结构如下:
deployphp/deployer/
├── bin/
│ └── dep
├── contrib/
│ └── recipes/
├── recipes/
│ └── framework/
├── src/
│ └── Deployer/
├── tests/
│ └── Deployer/
├── .gitignore
├── .gitattributes
├── .github/
│ └── workflows/
├── CHANGELOG.md
├── composer.json
├── composer.lock
├── LICENSE
├── README.md
├── deploy.php
└── deploy.yaml
目录介绍
bin/
: 包含 Deployer 的可执行文件dep
。contrib/
: 包含社区贡献的额外 recipes。recipes/
: 包含官方提供的 recipes,支持多种框架。src/
: 包含 Deployer 的核心源代码。tests/
: 包含测试代码。.gitignore
: Git 忽略文件配置。.gitattributes
: Git 属性配置。.github/
: 包含 GitHub 相关配置,如 workflows。CHANGELOG.md
: 项目更新日志。composer.json
和composer.lock
: Composer 依赖管理文件。LICENSE
: 项目许可证。README.md
: 项目说明文档。deploy.php
和deploy.yaml
: 部署配置文件示例。
2. 项目的启动文件介绍
Deployer 的启动文件是 bin/dep
,这是一个可执行的 PHP 脚本,用于启动 Deployer 的命令行工具。用户可以通过运行 dep
命令来执行各种部署任务。
启动文件内容示例
#!/usr/bin/env php
<?php
require_once __DIR__ . '/../vendor/autoload.php';
use Deployer\Console\Application;
use Deployer\Deployer;
$configFile = getenv('DEPLOYER_CONFIG') ?: 'deploy.php';
$deployer = Deployer::create()->load($configFile);
$application = new Application('Deployer', Deployer::VERSION);
$application->add($deployer->getConsole());
$application->run();
3. 项目的配置文件介绍
Deployer 的配置文件可以是 deploy.php
或 deploy.yaml
。通常情况下,用户会使用 deploy.php
文件来定义部署任务和配置。
deploy.php
配置文件示例
<?php
namespace Deployer;
require 'recipe/common.php';
// 配置
set('repository', 'git@github.com:username/repository.git');
set('deploy_path', '/var/www/html');
set('keep_releases', 5);
// 主机配置
host('example.com')
->set('remote_user', 'deployer')
->set('deploy_path', '~/example');
// 任务
task('deploy', [
'deploy:prepare',
'deploy:release',
'deploy:update_code',
'deploy:vendors',
'deploy:symlink',
'cleanup',
]);
after('deploy:failed', 'deploy:unlock');
配置文件内容介绍
set('repository', 'git@github.com:username/repository.git')
: 设置代码仓库地址。set('deploy_path', '/var/www/html')
: 设置部署路径。set('keep_releases', 5)
: 设置保留的发布版本数量。host('example.com')
: 定义部署主机。task('deploy', [...])
: 定义部署任务流程。after('deploy:failed', 'deploy:unlock')
: 定义任务失败后的处理。
通过以上配置,用户可以自定义部署流程,包括代码拉取、依赖安装、文件同步等操作。