Deployer-6-部署流-Flow

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

猜你喜欢

转载自blog.csdn.net/beyond__devil/article/details/86496716