在Git推送之后部署Gulp构建

时间:2016-10-12 16:05:05

标签: git deployment gulp

我刚刚完成了 Gulp 脚本来优化我的Wordpress项目。这是我的主题结构:

ROOT

  • / dev /(工作文件)
  • / bower.json (bower package list)
  • / gulpfile.js (我所有的gulp任务,如minify,concat,......)
  • / package.json (节点包列表)
  • / node_modules /(gulp packages)
  • / bower_components /(我的主题中使用的前端包)

我的gulp build命令创建一个包含“准备好去”主题的/ dist /目录。

我只使用GitLab跟踪/ dev /目录和gulpfile.js,package.json文件。我的目标如下:

  

对于每个push origin master,我想在我的部署“/ dist /”目录   生产服务器在“/ wp-content / themes / theme-name /".

有什么想法吗?我正在努力解决这个问题:(

2 个答案:

答案 0 :(得分:0)

git hook可能就是你想要的

  

在远程引用更新之后但在传输任何对象之前,在git push期间运行预推钩。它接收远程作为参数的名称和位置,以及通过stdin获取的待更新引用列表。您可以使用它在推送发生之前验证一组ref更新(非零退出代码将中止推送)。

所以你要做的就是创建一个git钩子,以bash命令的形式触发你的远程服务器的推送

答案 1 :(得分:0)

我们无法在没有访问您的服务器的情况下进行测试,所以我只能说“我会尝试......”但如果您设置了FTP,我会尝试vinyl-ftp

此示例直接取自vinyl-ftp(0.5.0,2016-06-18)文档,只是为了使这个答案更全面。您需要自定义globsbase变量以及conn目标。 (您也可以删除log参数)

var gutil = require( 'gulp-util' );
var ftp = require( 'vinyl-ftp' );

gulp.task( 'deploy', function () {

    var conn = ftp.create( {
        host:     'mywebsite.tld',
        user:     'me',
        password: 'mypass',
        parallel: 10,
        log:      gutil.log
    } );

    var globs = [
        'src/**',
        'css/**',
        'js/**',
        'fonts/**',
        'index.html'
    ];

    // using base = '.' will transfer everything to /public_html correctly
    // turn off buffering in gulp.src for best performance

    return gulp.src( globs, { base: '.', buffer: false } )
        .pipe( conn.newer( '/public_html' ) ) // only upload newer files
        .pipe( conn.dest( '/public_html' ) );

} );