Exemplo n.º 1
0
exports.releaseSite = function (sitename, message, assets, env) {

  // 1. check that all required vars have been passed by command line
  // 2. check that the build directory has been created
  // 3. check which assets need to be released
    // @todo, ftp release files need to take into account the environment in their paths
  // 4. ftp to server
  // 5. increment 'releases' property in micrositeList.json
  // 6. store release notes somewhere?

  var dirname, localPaths, remotePaths, environments = ['eng', 'qa', 'prod']; // media server environments

  // check user errors
  try {
    check.that('hasSiteName', [sitename], 'release');
    check.that('siteExists', [sitename]);
    check.that('hasReleaseNotes', [message]);
    check.that('environmentSpecified', [env]);
    check.that('correctEnvironment', [environments, env]);
    check.that('buildDirectoryExists', [sites.getSiteDir(sitename)]);
  } catch (e) {
    return;
  }

  msg.con('info', 'releasingSite', sitename);

  // get directory name of site being released
  dirname = sites.getSiteDir(sitename);

  // get an array of requested assets
  assets = build.assetsToArray(assets);

  // paths of local files that will be uploaded to media server
  localPaths = build.getAssetPaths(sitename, 'local', assets, env);

  // ftp files to remote server
  release.pushToRemoteServer(localPaths, dirname, env);

  // send email on release if enabled
  if (cfg.notifications.release.sendEmails) {

    // paths of files as they will be found on the media server
    remotePaths = build.getAssetPaths(sitename, 'ftp', assets, env);
    msg.con('info', 'emailSending', 'release notes');
    notify.send('release', {
      site: sitename,
      msg: message,
      date: '04/09/2013',
      files: remotePaths
    });

  }

  return;

};
Exemplo n.º 2
0
exports.purgeCdn = function (sitename, assets) {

  var urls, spawn, purge;

  // check user errors
  try {
    check.that('hasSiteName', [sitename], 'purge');
    check.that('siteExists', [sitename]);
    check.that('buildDirectoryExists', [sites.getSiteDir(sitename)]);
  } catch (e) {
    return;
  }

  // get an array of requested assets
  assets = build.assetsToArray(assets);

  // get array of urls to be purged on cdn
  urls = build.getAssetPaths(sitename, 'cdn', assets);

  // check if any urls are returned
  if (urls.length < 1) {
    return msg.con('error', 'cdnPurgeNoUrls', sitename);
  }

  // start CDN purge
  msg.con('info', 'cdnPurgeStart');

  // list the urls that are being purged
  msg.log('list', '\t', urls.join('\n\t'));

  // pass urls to purge.js
  spawn = require('child_process').spawn;
  purge = spawn('casperjs', ['./lib/scripts/purgeCdn.js', urls]);

  // log purge.js results to console
  purge.stdout.on('data', function (data) {
    return msg.log('list', data);
  });

  purge.stdout.on('close', function (data) {
    msg.con('info', 'cdnPurgeEnd');
  });

  purge.stderr.on('data', function (data) {
    return msg.log('error', data);
  });

  return;

};