Select

Agenda

  • Select
    • Node Express Application
  • Developent
  • Unit Test Process
  • Build Process
  • Deploy Process
  • Sirius Config (2 min)

Select Pipeline

Components of Select

Two Node Express Applications: Score and App

Select Dev Environment

Mac OS X or Linux (Vagrant or Docker)

Vagrant (VirtualBox)

  • build script dev (teamcity)
  • system dev/testing (devops)
  • docker on Linux (devops or dev)
  • other troubleshooting

DockerMachine (VirtualBox)

  • Development (dev)
  • Unit Tests (dev and CI)
  • Docker Testing (devops)
  • Other Tests

Select Dev Pipeline

Tools in the Pipeline

RubyMine (Rails and Node platforms)

  • direct Mac OS X or Linux (docker)
  • unit test front end
  • command line

Team City (Build System)

  • unit test (teamcity mocha reporting)
  • build (docker hub)
  • deploy (remote ssh - ansible)

Build Tools

Node 

Node vs. NVM

  • NVM (Node Version Manager)
    • results vary
  • Node Package Repo (Linux)
    • only major version, 4.x
  • HomeBrew (Mac OS X)
    • only latest stable

NPM

Node Package Manager

{
  "name": "express_pony",
  "version": "1.0.1",
  "description": "Pony Express App",
  "author": "Rainbow Brite <rbrite@gobalto.com>",
  "main": "server.js",
  "scripts": {
    "start": "node server.js"
  },
  "dependencies": {
    "express": "^4.13.3"
  }
}

Grunt

Task Manager

module.exports = function(grunt){
  grunt.initConfig({
    ngconstant: {
      options:{
        name: 'config',
        dest: 'static/shared/javascripts/config/config.js'
      },
      dev: {
        constants: { ...}
      },
      test: {
        constants: { ... }
      },
      prod: {
        constants: { ... }
      }
    },
    "bower-install-simple":{
      dev: { options:{ production: false } },
      test: { options:{ production: false } },
      prod: { options:{ production: true } } }
  });

  grunt.loadNpmTasks('grunt-bower-install-simple');
  grunt.loadNpmTasks('grunt-ng-constant');

  grunt.registerTask('configure:prod','ngconstant:prod');
  grunt.registerTask('configure:test','ngconstant:test');
  grunt.registerTask('configure:dev','ngconstant:dev');
  grunt.registerTask('configure','configure:dev');

  grunt.registerTask('dev',['configure:dev','bower-install-simple:dev']);
  grunt.registerTask('test',['configure:test','bower-install-simple:test']);
  grunt.registerTask('prod',['configure:prod','bower-install-simple:prod']);

  // Added by DevOps for Docker build optimization
  grunt.registerTask('prod-no-bower',['configure:prod']);
  grunt.registerTask('test-no-bower',['configure:test']);
  grunt.registerTask('dev-no-bower',['configure:prod']);

  grunt.registerTask('default',['dev']);

};

Bower

Front End Modules

{
  "name": "Select",
  "version": "15.3.0",
  "dependencies": {
    "bootstrap": "~3.3.5",
    "angular": "~1.4.3",
    "angular-route": "~1.4.3",
    "jquery": "~2.1.4",
    "angular-resource": "~1.4.3",
    "angular-ui-grid": "3.1.1",
    "angular-bootstrap": "~0.14.0",
    "ngUpload": "~0.5.17",
    "highcharts-release": "~4.1.9",
    "angular-filter": "~0.5.8",
    "angular-animate": "~1.4.8",
    "angular-filepicker": "~1.1.3",
    "angular-drag-and-drop-lists": "~1.3.0",
    "lodash": "^4.0.0",
    "ng-idle": "~1.1.1",
    "textAngular": "~1.5.0",
    "font-awesome": "fontawesome#~4.6.1",
    "angular-ui-tab-scroll": "~2.2.7"
  },
  "resolutions": {
    "angular": "1.4.3"
  }
}

GoBalto Select

By Joaquín Menchaca

GoBalto Select

  • 1,009