Deployer-4-任务-Tasks

使用 task 函数来定义我们自己的任务。此外,我们可以使用 desc 函数来为任务设置一个描述。
	desc('My task');
	task('my_task', function(){
		run(...);
	});

运行我们的任务:
	dep my_task

列出所有可用的命令:
	dep list

仅在一个指定的主机(host)或应用环境(stage)上,运行任务:
	dep deploy main

我们可以通过 --hosts 选项来指定主机(多个值用 ',' 分隔),以及 --roles 选项来指定角色:
	dep deploy --hosts domain.com
	dep deploy --roles app

简单任务
	如果我们的任务只包含 run 调用,或者仅仅一个 bash 命令,我们可以简化任务的定义:
		task('build', 'npm build');

		默认情况下,所有简单任务会 cd 到 release_path,我们不需要手动切换目录

	或者,我们可以使用一个多行脚本:
		task('build', '
			gulp build;
			webpack -p;
			echo "Build down";
		');

任务组
	我们可以组合任务:
		task('deploy', [
			'deploy:prepare',
			'deploy:update_code',
			'deploy:vendor',
			'deploy:symlink',
			'cleanup',
		]);

前置和后置任务
	我们可以定义 '在某些任务之前或之后运行的' 任务。
		task('deploy:done', function(){
			write('Deploy down!');
		});
		after('deploy', 'deploy:done');

	deploy 任务调用后,会执行 deploy:done。

过滤
	我们可以指定要在哪个 '主机/应用环境/角色' 上运行任务。

	按应用环境
		按应用环境过滤任务:
			desc('Run tests for applications');
			task('test', function(){
				...	
			})->onStage('test');

	按角色
		按角色过滤任务
			desc('Migrate database');
			task('migrate', function(){
				...	
			})->onRoles('db');

		我们也可以指定多个角色:onRoles('app', 'db', ...);

	按主机
		按主机过滤任务
			desc('Migrate database');
			task('migrate', function(){
				...	
			})->onHosts('db.domain.com');

		我们也可以指定多个主机:onHosts('db.domain.com', ...);

本地任务
	使用 local 来标记任务,以在本地运行该任务,并且只运行一次,与主机计数无关。
		task('build', function(){
			...	
		})->local();

	注意,在本地任务内调用 run,同调用 runLocally 具有同样的效果。

只运行一次
	仅运行任务一次:
		task('do', ...)->once();

	将只在第一台主机上运行

重新配置
	我们可以重新配置任务,例如,由第三方提供的任务,通过名称检索它们来进行配置。
		task('notify')->onStage('production');

覆盖任务
	有时候我们可能想要,常见配方(recipes)中的一些任务,有不同的表现行为。只需简单覆盖它:

		// deploy:update_code - 就是常见配方中预定义的一个任务

		task('deploy:update_code', function(){
			upload(...);
		});

使用输入选项
	我们可以在定义任务之前,定义额外的输入选项和参数:
		use Symfony\Component\Console\Input\InputOption;
		use Symfony\Component\Console\Input\InputArgument;

		argument('stage', InputArgument::OPTIONAL, 'Run tasks only on this host or stage.');
		option('tag', null, InputOption::VALUE_OPTIONAL, 'Tag to deploy.');

	要在任务内部获取输入,可以使用:
		task('foo:bar', function() {
		    // 对于参数
		    $stage = null;
		    if (input()->hasArgument('stage')) {
		        $stage = input()->getArgument('stage');
		    }

		    // 对于选项
		    $tag = null;
		    if (input()->hasOption('tag')) {
		        $tag = input()->getOption('tag');
		    }
		});

并行任务执行
	当部署多台主机时,Deployer 将会在每台主机上运行一个任务:
		/*
			看文档图片
		 */

	要加速部署,可以添加 --parallel 或 -p 选项。这将会在每台主机上并行地运行任务。如果某台主机上执行任务的时间比其他主机时间长,Deployer 将会等待,直到所有主机完成它们的任务。
		/*
			看文档图片
		 */

	通过指定一个数字来限制并发任务的数量。默认情况下,最多可并发处理 10 个任务。
		dep deploy --parallel --limit 2
		/*
			看文档图片
		 */

接下来:主机(https://deployer.org/docs/hosts)

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值