donal
2018-04-26 9f311a49e45ae2999e2cf510cd16a8abb6a738bf
Gruntfile.js
@@ -2,7 +2,7 @@
'use strict';
module.exports = function (grunt) {
  var localConfig;
  let localConfig;
  try {
    localConfig = require('./server/config/local.env');
  } catch(e) {
@@ -72,47 +72,25 @@
          'server/**/*.spec.js'
        ]
      },
      bm_client: {
        options: {
          jshintrc: 'client/.jshintrc',
          reporter: require('jshint-junit-reporter'),
          reporterOutput: 'reports/client/linting/jshint-junit-client.xml'
        },
        src: [
          '<%= yeoman.client %>/app/**/*.js',
          '<%= yeoman.client %>/app/**/*.spec.js',
          '<%= yeoman.client %>/app/**/*.mock.js'
        ]
      },
      bm_server: {
        options: {
          jshintrc: 'server/.jshintrc',
          reporter: require('jshint-junit-reporter'),
          reporterOutput: 'reports/server/linting/jshint-junit-server.xml'
        },
        src: [
          'server/**/*.js',
          'server/**/*.spec.js'
        ]
      }
      // bm_server: {
      //   options: {
      //     jshintrc: 'server/.jshintrc',
      //     reporter: require('jshint-junit-reporter'),
      //     reporterOutput: 'reports/server/linting/jshint-junit-server.xml'
      //   },
      //   src: [
      //     'server/**/*.js',
      //     'server/**/*.spec.js'
      //   ]
      // }
    },
    // Empties folders to start fresh
    clean: {
      server: '.tmp',
      karmareports: 'reports/client/karma/**',
      mochareports: 'reports/server/mocha/**',
      lint: 'reports/{server,client}/jshint/**',
      coverage: 'reports/{server,client}/coverage/**'
    },
    // Debugging with node inspector
    'node-inspector': {
      custom: {
        options: {
          'web-host': 'localhost'
        }
      }
      lint: 'reports/{server}/linting/**',
      coverage: 'reports/coverage/**'
    },
    // Use nodemon to run server in debug mode with an initial breakpoint
@@ -149,7 +127,6 @@
      debug: {
        tasks: [
          'nodemon',
          'node-inspector'
        ],
        options: {
          logConcurrentOutput: true
@@ -231,7 +208,7 @@
  grunt.registerTask('wait', function () {
    grunt.log.ok('Waiting for server reload...');
    var done = this.async();
    const done = this.async();
    setTimeout(function () {
      grunt.log.writeln('Done waiting!');
@@ -244,12 +221,12 @@
  });
  grunt.registerTask('build-image', 'Build the image', function(imageId) {
    var shell = require("shelljs");
    const shell = require("shelljs");
    grunt.log.ok('BUILDING IMAGE');
    if (!imageId) {
      grunt.fail.warn('must supply an imageId to build');
    }
    var rc = shell.exec('docker build -t todolist:' + imageId + ' -f ./dist/Dockerfile ./dist').code;
    const rc = shell.exec('docker build -t todolist:' + imageId + ' -f ./dist/Dockerfile ./dist').code;
    if (rc > 0){
      grunt.fail.warn("DOCKER FAILURE")
    }
@@ -257,7 +234,7 @@
  grunt.registerTask('deploy', 'deploy the node js app to a docker container and start it in the correct mode', function(target_env, build_tag) {
    grunt.log.ok('this task must run on a host that has the Docker Daemon running on it');
    var ports = {
    const ports = {
      ci: '9001',
      si: '9002',
      production: '80'
@@ -266,24 +243,24 @@
    if (target_env === undefined || build_tag === undefined){
      grunt.fail.warn('Required param not set - use grunt deploy\:\<target\>\:\<tag\>');
    } else {
      var shell = require("shelljs");
      const shell = require("shelljs");
      grunt.log.ok('STOPPING AND REMOVING EXISTING CONTAINERS');
      shell.exec('docker stop todolist-'+ target_env + ' && docker rm todolist-'+ target_env);
      grunt.log.ok('DEPLOYING ' + target_env + ' CONTAINER');
      if (target_env === 'ci'){
        var rc = shell.exec('docker run -t -d --name todolist-' + target_env + ' -p ' + ports[target_env]+ ':'+ports[target_env]+' --env NODE_ENV=' + target_env + ' todolist:' + build_tag);
        const rc = shell.exec('docker run -t -d --name todolist-' + target_env + ' -p ' + ports[target_env]+ ':'+ports[target_env]+' --env NODE_ENV=' + target_env + ' todolist:' + build_tag);
        if (rc > 0){
          grunt.fail.warn("DOCKER FAILURE")
        }
      } else {
        // ensure mongo is up
        var isMongo = shell.exec('docker ps | grep devops-mongo').code;
        const isMongo = shell.exec('docker ps | grep devops-mongo').code;
        if (isMongo > 0){
          grunt.log.ok('DEPLOYING Mongodb CONTAINER FIRST');
          shell.exec('docker run --name devops-mongo -p 27017:27017 -d mongo');
        }
        var rc = shell.exec('docker run -t -d --name todolist-' + target_env + ' --link devops-mongo:mongo.server -p '
        const rc = shell.exec('docker run -t -d --name todolist-' + target_env + ' --link devops-mongo:mongo.server -p '
            + ports[target_env]+ ':' + ports[target_env] + ' --env NODE_ENV=' + target_env + ' todolist:' + build_tag).code;
        if (rc > 0){
          grunt.fail.warn("DOCKER FAILURE");
@@ -295,7 +272,7 @@
  grunt.registerTask('serve', function (target) {
    if (target === 'dist') {
      return grunt.task.run(['build', 'env:all', 'env:prod', 'express:prod', 'wait', 'open', 'express-keepalive']);
      return grunt.task.run(['build', 'env:all', 'env:prod', 'express:prod', 'wait', 'express-keepalive']);
    }
    if (target === 'debug') {
@@ -313,20 +290,14 @@
      'env:' + (target || 'dev'),
      'express:dev',
      'wait',
      'open',
      'watch'
      'express-keepalive'
    ]);
  });
  grunt.registerTask('test', function(target, environ) {
    environ = environ !== undefined ? environ : 'test';
    var usePhantom = false;
    if (environ === 'phantom') {
      environ = 'test';
      usePhantom = true;
    }
    var reporter = 'terminal';
    var coverage = 'travis';
    const reporter = 'terminal';
    const coverage = 'travis';
    if (target === 'server-jenkins') {
      target = 'server';
      reporter = 'junit';
@@ -351,8 +322,10 @@
  });
  grunt.registerTask('build', [
    'clean:dist',
    'clean',
    'concurrent:dist',
    'newer:jshint',
    'test',
  ]);
  grunt.registerTask('default', [