Last active
August 29, 2015 14:11
-
-
Save StevenLangbroek/9c9428f54e0b76651a19 to your computer and use it in GitHub Desktop.
Sample Flightplan for Deployments + Rollbacks
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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