diff options
| author | Vojta Jina | 2013-07-01 16:21:56 -0700 | 
|---|---|---|
| committer | Vojta Jina | 2013-07-02 13:58:52 -0700 | 
| commit | 2c2adbcab54d3504f1ae9c91b761c2a18a5d8468 (patch) | |
| tree | be6495fd2177a8e458a68ead12bfda173baae51a | |
| parent | 6e1b64176f91ef6049cd03dc666554b7e04a9000 (diff) | |
| download | angular.js-2c2adbcab54d3504f1ae9c91b761c2a18a5d8468.tar.bz2 | |
chore(travis): speed up the build
- parallelize the tasks
- cache requests (e2e tests)
This reduces the time from ~18min to ~12min.
It makes the output little messy. We could buffer output of each task and display it once it's fully finished, nicely. I think giving instant feedback is better.
| -rw-r--r-- | .travis.yml | 3 | ||||
| -rw-r--r-- | Gruntfile.js | 35 | ||||
| -rw-r--r-- | karma-shared.conf.js | 1 | ||||
| -rw-r--r-- | lib/grunt/utils.js | 25 | ||||
| -rw-r--r-- | package.json | 3 | 
5 files changed, 61 insertions, 6 deletions
| diff --git a/.travis.yml b/.travis.yml index 92da3ed9..3b439f7c 100644 --- a/.travis.yml +++ b/.travis.yml @@ -13,8 +13,7 @@ before_script:    - ./lib/sauce/sauce_connect_setup.sh    - npm install -g grunt-cli    - grunt package -  - grunt webserver > /dev/null &    - ./lib/sauce/sauce_connect_block.sh  script: -  - grunt test --reporters dots --browsers SL_Chrome +  - grunt parallel:travis --reporters dots --browsers SL_Chrome diff --git a/Gruntfile.js b/Gruntfile.js index 968b2b82..e420498a 100644 --- a/Gruntfile.js +++ b/Gruntfile.js @@ -9,6 +9,7 @@ module.exports = function(grunt) {    grunt.loadNpmTasks('grunt-contrib-compress');    grunt.loadNpmTasks('grunt-contrib-jasmine-node');    grunt.loadNpmTasks('grunt-shell'); +  grunt.loadNpmTasks('grunt-parallel');    grunt.loadTasks('lib/grunt');    var NG_VERSION = util.getVersion(); @@ -23,6 +24,21 @@ module.exports = function(grunt) {    grunt.initConfig({      NG_VERSION: NG_VERSION, +    parallel: { +      travis: { +        options: { +          stream: true, +        }, +        tasks: [ +          util.parallelTask('test:docs'), +          util.parallelTask('test:modules'), +          util.parallelTask('test:jquery'), +          util.parallelTask('test:jqlite'), +          util.parallelTask('test:e2e') +        ] +      } +    }, +      connect: {        devserver: {          options: { @@ -42,7 +58,24 @@ module.exports = function(grunt) {            }          }        }, -      testserver: {} +      testserver: { +        options: { +          middleware: function(connect, options){ +            return [ +              function(req, resp, next) { +                // cache get requests to speed up tests on travis +                if (req.method === 'GET') { +                  resp.setHeader('Cache-control', 'public, max-age=3600'); +                } + +                next(); +              }, +              connect.favicon('images/favicon.ico'), +              connect.static(options.base) +            ]; +          } +        } +      }      }, diff --git a/karma-shared.conf.js b/karma-shared.conf.js index 3157d50f..81476708 100644 --- a/karma-shared.conf.js +++ b/karma-shared.conf.js @@ -5,6 +5,7 @@ module.exports = function(config) {      logLevel: config.LOG_INFO,      logColors: true,      browsers: ['Chrome'], +    runnerPort: 0,      // config for Travis CI      sauceLabs: { diff --git a/lib/grunt/utils.js b/lib/grunt/utils.js index 23211039..44332380 100644 --- a/lib/grunt/utils.js +++ b/lib/grunt/utils.js @@ -36,11 +36,13 @@ module.exports = {      var browsers = grunt.option('browsers');      var reporters = grunt.option('reporters');      var noColor = grunt.option('no-colors'); +    var port = grunt.option('port');      var p = spawn('node', ['node_modules/karma/bin/karma', 'start', config,        singleRun ? '--single-run=true' : '',        reporters ? '--reporters=' + reporters : '',        browsers ? '--browsers=' + browsers : '', -      noColor ? '--no-colors' : '' +      noColor ? '--no-colors' : '', +      port ? '--port=' + port : ''      ]);      p.stdout.pipe(process.stdout);      p.stderr.pipe(process.stderr); @@ -235,5 +237,24 @@ module.exports = {        }        next();      }; -  } +  }, + +  parallelTask: function(name) { +    var args = [name, '--port=' + this.lastParallelTaskPort]; + +    if (grunt.option('browsers')) { +      args.push('--browsers=' + grunt.option('browsers')); +    } + +    if (grunt.option('reporters')) { +      args.push('--reporters=' + grunt.option('reporters')); +    } + +    this.lastParallelTaskPort++; + + +    return {grunt: true, args: args}; +  }, + +  lastParallelTaskPort: 9876  }; diff --git a/package.json b/package.json index 94d8da82..3b39cea0 100644 --- a/package.json +++ b/package.json @@ -27,7 +27,8 @@      "yaml-js": "0.0.5",      "showdown": "0.3.1",      "rewire": "1.1.3", -    "grunt-contrib-jasmine-node": "~0.1.1" +    "grunt-contrib-jasmine-node": "~0.1.1", +    "grunt-parallel": "~0.2.0"    },    "licenses": [      { | 
