如果我们的配方基于 '常用配方或 Deployer 附带的框架配方之一',那么我们正在使用默认部署流中的一个。每个部署流都被描述为 deploy 命名空间下的一组其他任务。一个常见的部署流可能如下所示:
task('deploy', [
'deploy:prepare',
'deploy:lock',
'deploy:release',
'deploy:update_code',
'deploy:shared',
'deploy:writable',
'deploy:vendors',
'deploy:clear_paths',
'deploy:symlink',
'deploy:unlock',
'cleanup',
'success'
]);
框架配方的流程可能不同,但是基本结构是相同的。我们可以通过覆盖 deploy 任务,来创建我们自己的部署流,但更好的解决方案是,使用缓存。例如,如果我们想要在,对新发布版本进行符号链接之前,运行一些任务:
before('deploy:symlink', 'deploy:build');
或者,在成功部署之后,发送通知:
after('success', 'notify');
下一节简要介绍了每个任务。
deploy:prepare
准备部署。检查是否存在 deploy_path,否则创建它。也检查下面的路径是否存在:
releases - 该目录存储发布版本
shared - 所有版本中共享的文件
.dep - Deployer 使用的元数据(metadata)
deploy:lock
锁定部署,以便只能运行一个并发部署。要锁定部署,该任务检查 .dep/deploy.lock 文件是否存在。如果部署过程被 Ctrl+C 取消,运行 dep deploy:unlock 来删除该文件。如果部署失败,将会自动触发 deploy:unlock 任务。
deploy:release
基于 release_name 配置参数创建一个新的发布目录。还会读取 .dep/releases 来获取之前创建的发布版本列表。
此外,如果在 deploy_path 目录中,有一个之前发布版本的符号链接,也将被删除。
deploy:update_code
通过 Git 下载新版本的代码。如果我们使用的是 Git 2.0 版本,并且打开了 git_cache 配置,该任务将使用之前发布版本的文件,因此只会下载改变过的文件。
在 deploy.php 中覆盖该任务,来创建我们自己的代码传输策略:
task('deploy:update_code', function(){
upload('.', '{{release_path}}');
});
deploy:shared
将共享文件和目录,从 shared 目录创建到 release_path 目录。我们可以在 shared_dirs 和 shared_files 配置变量中指定共享目录和文件。该过程分为以下步骤:
1.将 dir 从 release_path 复制到 shared,如果 dir 不存在。
2.从 release_path 目录中删除 dir。
3.从 shared 创建 dir 的符号链接到 release_path。
共享文件遵循同样的步骤。如果我们的系统支持相对符号链接,那么将使用相对符号链接,否则将使用绝对符号链接。
deploy:writable
默认情况下,使用 acl 模式(使用 setfacl 命令),使 writable_dirs 中的目录可写。此任务将尝试猜测 http_user 名称,或者我们可以自己配置它:
set('http_user', 'www-data');
// 或者只针对指定主机
host(...)
->set('http_user', 'www-data');
此外,该任务支持其他写入模式:
chown
chgrp
chmod
acl
要使用其中之一,添加:
set('writable_mode', 'chmod');
写入时要使用 sudo, 添加:
set('writable_use_sudo', true);
deploy:vendors
安装 composer 依赖。我们可以使用 composer_options 参数配置 composer 选项。
deploy:clear_paths
删除指定在 clear_paths 中的目录。使用 clear_use_sudo 参数,可以使用 sudo 命令来运行该任务。
deploy:symlink
将 current 符号链接切换到 release_path。如果目标系统支持符号链接的原子转换,它将使用。
deploy:unlock
删除 .dep/deploy.lock 文件。我们可以直接运行该任务来删除锁定文件。
dep deploy:unlock staging
cleanup
使用 keep_releases 选项来清除旧发布版本。-1 视为不限制版本个数。
success
打印一个成功消息。
Deployer-6-部署流-Flow
猜你喜欢
转载自blog.csdn.net/beyond__devil/article/details/86496716
今日推荐
周排行