当我shell:clean
最后打电话时,似乎在任务完成~/tmp/<domain>
之前删除了目录。shell:sync
我在目标中缺少文件~/www/versions/<domain>
。
shell:sync
任务执行命令将rsync
文件从复制~/tmp
到~/www
.
grunt.registerTask('deploy', 'Deploy web app', function(){
grunt.task.run('shell:create_temp');
//create version directories
grunt.task.run('shell:create_version');
grunt.task.run('shell:sync');
//create symlink to live site
grunt.task.run('shell:symlink');
grunt.task.run('shell:clean');
});
这是配置:
grunt.initConfig({
pkg: grunt.file.readJSON('package.json'),
cfg: _.extend(grunt.file.readJSON('config.json'), grunt.file.readJSON('config.'+env+'.json'), { env: env }),
version_path: '<%= cfg.www_dir %>/versions/<%= cfg.domain %>@<%= pkg.version %>',
tmp_site_path: '<%= cfg.tmp_dir %>/<%= cfg.domain %>',
live_path: '<%= cfg.www_dir %>/<%= cfg.domain %>',
shell: {
create_temp: {
command: 'mkdir -p <%= tmp_site_path %>',
options: {
stdout: true,
stderr: true
}
},
create_version: {
command: 'mkdir -p <%= version_path %>',
options: {
stdout: true,
stderr: true
}
},
sync: {
command: 'rsync -avz --delete --progress <%= tmp_site_path %>/ <%= version_path %>/',
options: {
stdout: true,
stderr: true
}
},
symlink: {
command: 'rm <%= live_path %>; ln -sv <%= version_path %> <%= live_path %>',
options: {
stdout: true,
stderr: true
}
},
clean: {
command: 'rm -rf <%= tmp_site_path %>',
options: {
stdout: true,
stderr: true
}
}
}
});