Skip to content

Instantly share code, notes, and snippets.

@StevenLangbroek
Last active August 29, 2015 14:11
Show Gist options
  • Save StevenLangbroek/9c9428f54e0b76651a19 to your computer and use it in GitHub Desktop.
Save StevenLangbroek/9c9428f54e0b76651a19 to your computer and use it in GitHub Desktop.
Sample Flightplan for Deployments + Rollbacks
var plan = require('flightplan');
var moment = require('moment');
var currentTime = new Date().getTime();
var formattedCurrentTime = moment(currentTime).format('YYYY-MM-DD_HH-mm');
var backupsFilename = 'backups.json';
plan.target('staging', {
host: 'staging.some-host.com',
username: 'root-level-user',
agent: process.env.SSH_AUTH_SOCK
});
plan.target('master', {
host: 'www.some-host.com',
username: 'root-level-user',
agent: process.env.SSH_AUTH_SOCK
});
plan.local(function(local){
var target, filesToCopy;
target = plan.runtime.target;
local.log('========== Clearing dist folder ==========');
local.exec('rm -rf dist');
local.log('========== Starting build ==========');
local.exec('ember build --environment ' + target);
local.log('========== Starting transfer ==========');
filesToCopy = local.find('dist/ -type f', { silent: true }).stdout.split('\n');
local.transfer(filesToCopy, 'tmp');
local.log('========== Cleaning dist ==========');
local.rm('-rf dist');
});
plan.remote(function(remote){
var release;
release = 'releases/' + formattedCurrentTime;
remote.log('========== Moving release to releases folder ==========');
remote.cp('-a tmp/dist/. ' + release + '/');
remote.log('========== Creating new Symlink ==========');
remote.exec('ln -s ' + release + ' current');
remote.log('========== Cleaning tmp ==========');
remote.with('rm -rf tmp', function(){
remote.exec('mkdir tmp');
});
});
plan.remote('rollback', function(remote){
var backups, selectedBackup;
remote.with('cd releases', function(){
backups = remote.find('-type d -maxdepth 1');
});
selectedBackup = remote.prompt("Select a backup:");
remote.exec('ln -s releases/' + selectedBackup.replace('./', '') + ' current');
});
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment