Deployer-6-部署流-Flow

本文详细解析了基于Deployer的部署流程,包括默认部署流中的任务如deploy:prepare, deploy:update_code等,以及如何自定义部署流,如在符号链接前运行额外任务或在部署后发送通知。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

如果我们的配方基于 '常用配方或 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
	打印一个成功消息。

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值