123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138 |
- var bower = require('gulp-bower');
- var config = require('./config');
- var common = require('./common');
- var gulp = require('gulp');
- var fs = require('fs-extra');
- var markdown = require('gulp-markdown');
- var replace = require('gulp-replace');
- var rsync = require('gulp-rsync');
- var gutil = require('gulp-util');
- var _ = require('lodash');
- var args = require('yargs').argv;
- var git = require('gulp-git');
- var addsrc = require('gulp-add-src');
-
- var stagingBasePath = config.paths.staging.cdn;
- var version = config.version;
- var host = config.cdnHost;
- var permalink = config.permalink;
- var stagingPath = stagingBasePath + '/' + version;
- var testPath = process.cwd() + '/' + stagingPath + '/test';
-
- gulp.task('clean:cdn', function() {
- fs.removeSync(stagingBasePath);
- });
-
- gulp.task('cdn:stage-bower_components', function() {
- return bower({
- directory: stagingPath,
- forceLatest: true,
- cmd: 'install'
- });
- });
-
- gulp.task('cdn:stage-vaadin-components', function() {
- return gulp.src(['LICENSE.html', 'ga.js', 'vaadin-components.html', 'demo/*', 'apidoc/*'], {base:"."})
- .pipe(replace('https://cdn.vaadin.com/vaadin-components/latest/', '../../'))
- .pipe(addsrc('README.md'))
- .pipe(gulp.dest(stagingPath + "/vaadin-components"));
- });
-
- gulp.task('stage:cdn', [ 'clean:cdn', 'cdn:stage-bower_components', 'cdn:stage-vaadin-components' ]);
-
- gulp.task('upload:cdn', ['stage:cdn'], function() {
- common.checkArguments(['cdnUsername', 'cdnDestination']);
- gutil.log('Uploading to cdn (rsync): ' + stagingPath + ' -> '+ args.cdnUsername + '@' + host + ':' + args.cdnDestination + version);
- return gulp.src(stagingPath)
- .pipe(rsync({
- username: args.cdnUsername,
- hostname: host,
- root: stagingPath,
- emptyDirectories: false,
- recursive: true,
- clean: true,
- silent: true,
- destination: args.cdnDestination + version
- }));
- });
-
- gulp.task('deploy:cdn', ['upload:cdn'], function(done) {
- if (permalink) {
- var cmd = 'rm -f ' + args.cdnDestination + permalink + '; ln -s ' + version + ' ' + args.cdnDestination + permalink + '; ls -l ' + args.cdnDestination;
- gutil.log('Deploying CDN : ssh ' + args.cdnUsername + '@' + host + ' ' + cmd);
- require('node-ssh-exec')({
- host: host,
- username: args.cdnUsername,
- privateKey: config.paths.privateKey()
- }, cmd, function (error, response) {
- if (error) {
- throw error;
- }
- gutil.log(response);
- done();
- });
- } else {
- done();
- }
- });
-
- gulp.task('cdn-test:clean', function() {
- fs.removeSync(stagingPath + '/test');
- });
-
- gulp.task('cdn-test:install-dependencies', function() {
- return bower({
- directory: stagingPath,
- cmd: 'install'
- }, [['web-component-tester#2.2.6']]);
- });
-
- config.components.forEach(function (n) {
- gulp.task('cdn-test:stage:' + n, ['cdn-test:clean', 'cdn-test:install-dependencies'], function(done) {
- fs.mkdirsSync(testPath);
- return git.clone('https://github.com/vaadin/' + n, {cwd: testPath}, function (err) {
- gulp.src(testPath + '/' + n + '/test/**')
- .pipe(replace(/(src|href)=("|')(.*?)\.\.\/\.\.\/(bower_components|node_modules)\/(.*?)\//mg, '$1=$2https://cdn.vaadin.com/vaadin-components/'+ version + '/$5/'))
- .pipe(replace(/(src|href)=("|')(.*?)\.\.\//mg, '$1=$2https://cdn.vaadin.com/vaadin-components/'+ version +'/' + n + '/'))
- .pipe(replace(/(src|href)=("|')(.*?)(web-component-tester)\//mg, '$1=$2../../web-component-tester/'))
- .pipe(gulp.dest(testPath + '/' + n + '/test/'));
- done();
- });
- });
- });
-
- gulp.task('cdn-test:stage', _.map(config.components, function (n) {
- return 'cdn-test:stage:' + n;
- }));
-
- gulp.task('verify:cdn', ['cdn-test:stage'], function(done) {
- if(args.autoRevert) {
- common.checkArguments(['cdnUsername', 'cdnDestination']);
- }
-
- // use unique browser combination because bower,cdn,zip verifications are run
- // at the same time and TeamCity test results will get mixed up if same browsers are used.
- common.testSauce(
- ['target/cdn/' + version + '/test/**/index.html'],
- ['Windows 7/firefox@36'],
- 'vaadin-components / cdn.vaadin.com / ' + version,
- function(err) {
- common.autoRevert(err, function() {
- gutil.log('Deleting folder ' + args.cdnDestination + version);
-
- require('node-ssh-exec')({
- host: host,
- username: args.cdnUsername,
- privateKey: config.paths.privateKey()
- }, 'rm -rf ' + args.cdnDestination + version, function (error, response) {
- if (error) {
- throw error;
- }
-
- gutil.log(response);
-
- done(err);
- });
-
- }, done)});
- });
|