mirror of https://github.com/hauke68/Magallanes
Andrs Montaez
13 years ago
15 changed files with 277 additions and 0 deletions
@ -0,0 +1,10 @@ |
|||||||
|
<?php |
||||||
|
class Magallanes_Autoload |
||||||
|
{ |
||||||
|
public static function autoload($className) |
||||||
|
{ |
||||||
|
$baseDir = dirname(dirname(__FILE__)); |
||||||
|
$classFile = $baseDir . '/' . str_replace('_', '/', $className . '.php'); |
||||||
|
require_once $classFile; |
||||||
|
} |
||||||
|
} |
@ -0,0 +1,26 @@ |
|||||||
|
<?php |
||||||
|
class Magallanes_Config |
||||||
|
{ |
||||||
|
private $_environment = null; |
||||||
|
private $_csm = null; |
||||||
|
|
||||||
|
public function loadEnvironment($environment) |
||||||
|
{ |
||||||
|
$this->_environment = yaml_parse_file('.mage/environment/' . $environment . '.yaml'); |
||||||
|
} |
||||||
|
|
||||||
|
public function loadCSM() |
||||||
|
{ |
||||||
|
$this->_csm = yaml_parse_file('.mage/csm.yaml'); |
||||||
|
} |
||||||
|
|
||||||
|
public function getEnvironment() |
||||||
|
{ |
||||||
|
return $this->_environment; |
||||||
|
} |
||||||
|
|
||||||
|
public function getCSM() |
||||||
|
{ |
||||||
|
return $this->_csm; |
||||||
|
} |
||||||
|
} |
@ -0,0 +1,65 @@ |
|||||||
|
<?php |
||||||
|
class Magallanes_Console |
||||||
|
{ |
||||||
|
private $_args; |
||||||
|
private $_action; |
||||||
|
private $_actionOptions; |
||||||
|
private $_environment; |
||||||
|
|
||||||
|
public function setArgs($args) |
||||||
|
{ |
||||||
|
$this->_args = $args; |
||||||
|
array_shift($this->_args); |
||||||
|
} |
||||||
|
|
||||||
|
public function parse() |
||||||
|
{ |
||||||
|
foreach ($this->_args as $argument) { |
||||||
|
if ($argument == 'deploy') { |
||||||
|
$this->_action = 'deploy'; |
||||||
|
|
||||||
|
} else if ($argument == 'update') { |
||||||
|
$this->_action = 'update'; |
||||||
|
|
||||||
|
} else if (preg_match('/to:[\w]+/i', $argument)) { |
||||||
|
$this->_environment = str_replace('to:', '', $argument); |
||||||
|
} |
||||||
|
} |
||||||
|
} |
||||||
|
|
||||||
|
public function getAction() |
||||||
|
{ |
||||||
|
return $this->_action; |
||||||
|
} |
||||||
|
|
||||||
|
public function getEnvironment() |
||||||
|
{ |
||||||
|
return $this->_environment; |
||||||
|
} |
||||||
|
|
||||||
|
public static function output($message) |
||||||
|
{ |
||||||
|
echo $message; |
||||||
|
} |
||||||
|
|
||||||
|
public function run() |
||||||
|
{ |
||||||
|
$config = new Magallanes_Config; |
||||||
|
|
||||||
|
switch ($this->getAction()) { |
||||||
|
case 'deploy': |
||||||
|
$config->loadEnvironment($this->getEnvironment()); |
||||||
|
$task = new Magallanes_Task_Deploy; |
||||||
|
break; |
||||||
|
|
||||||
|
case 'update'; |
||||||
|
$config->loadCSM(); |
||||||
|
$task = new Magallanes_Task_Update; |
||||||
|
break; |
||||||
|
} |
||||||
|
|
||||||
|
$task->run($config); |
||||||
|
} |
||||||
|
} |
||||||
|
|
||||||
|
define('PHP_TAB', "\t"); |
@ -0,0 +1,53 @@ |
|||||||
|
<?php |
||||||
|
class Magallanes_Console_Colors { |
||||||
|
private static $foreground_colors = array (); |
||||||
|
private static $background_colors = array (); |
||||||
|
|
||||||
|
public function __construct() { |
||||||
|
// Set up shell colors |
||||||
|
self::$foreground_colors ['black'] = '0;30'; |
||||||
|
self::$foreground_colors ['dark_gray'] = '1;30'; |
||||||
|
self::$foreground_colors ['blue'] = '0;34'; |
||||||
|
self::$foreground_colors ['light_blue'] = '1;34'; |
||||||
|
self::$foreground_colors ['green'] = '0;32'; |
||||||
|
self::$foreground_colors ['light_green'] = '1;32'; |
||||||
|
self::$foreground_colors ['cyan'] = '0;36'; |
||||||
|
self::$foreground_colors ['light_cyan'] = '1;36'; |
||||||
|
self::$foreground_colors ['red'] = '0;31'; |
||||||
|
self::$foreground_colors ['light_red'] = '1;31'; |
||||||
|
self::$foreground_colors ['purple'] = '0;35'; |
||||||
|
self::$foreground_colors ['light_purple'] = '1;35'; |
||||||
|
self::$foreground_colors ['brown'] = '0;33'; |
||||||
|
self::$foreground_colors ['yellow'] = '1;33'; |
||||||
|
self::$foreground_colors ['light_gray'] = '0;37'; |
||||||
|
self::$foreground_colors ['white'] = '1;37'; |
||||||
|
|
||||||
|
self::$background_colors ['black'] = '40'; |
||||||
|
self::$background_colors ['red'] = '41'; |
||||||
|
self::$background_colors ['green'] = '42'; |
||||||
|
self::$background_colors ['yellow'] = '43'; |
||||||
|
self::$background_colors ['blue'] = '44'; |
||||||
|
self::$background_colors ['magenta'] = '45'; |
||||||
|
self::$background_colors ['cyan'] = '46'; |
||||||
|
self::$background_colors ['light_gray'] = '47'; |
||||||
|
} |
||||||
|
|
||||||
|
// Returns colored string |
||||||
|
public static function g($string, $foreground_color = null, $background_color = null) { |
||||||
|
$colored_string = ""; |
||||||
|
|
||||||
|
// Check if given foreground color found |
||||||
|
if (isset ( self::$foreground_colors [$foreground_color] )) { |
||||||
|
$colored_string .= "\033[" . self::$foreground_colors [$foreground_color] . "m"; |
||||||
|
} |
||||||
|
// Check if given background color found |
||||||
|
if (isset ( self::$background_colors [$background_color] )) { |
||||||
|
$colored_string .= "\033[" . self::$background_colors [$background_color] . "m"; |
||||||
|
} |
||||||
|
|
||||||
|
// Add string and end coloring |
||||||
|
$colored_string .= $string . "\033[0m"; |
||||||
|
|
||||||
|
return $colored_string; |
||||||
|
} |
||||||
|
} |
@ -0,0 +1,16 @@ |
|||||||
|
<?php |
||||||
|
class Magallanes_Task_CSM_Git |
||||||
|
{ |
||||||
|
private $_url = null; |
||||||
|
|
||||||
|
public function run($url) |
||||||
|
{ |
||||||
|
$this->_url = $url; |
||||||
|
$this->_update(); |
||||||
|
} |
||||||
|
|
||||||
|
private function _update() |
||||||
|
{ |
||||||
|
Magallanes_Console::output('git pull ' . $this->_url . PHP_EOL); |
||||||
|
} |
||||||
|
} |
@ -0,0 +1,30 @@ |
|||||||
|
<?php |
||||||
|
class Magallanes_Task_Deploy |
||||||
|
{ |
||||||
|
private $_config = null; |
||||||
|
|
||||||
|
public function run(Magallanes_Config $config) |
||||||
|
{ |
||||||
|
$this->_config = $config; |
||||||
|
$this->_rsync(); |
||||||
|
} |
||||||
|
|
||||||
|
private function _rsync() |
||||||
|
{ |
||||||
|
$config = $this->_config->getEnvironment(); |
||||||
|
$user = $config['user']; |
||||||
|
$to = $config['deploy-to']; |
||||||
|
$from = $config['deploy-from']; |
||||||
|
|
||||||
|
foreach ($config['hosts'] as $host) { |
||||||
|
Magallanes_Console::output(PHP_TAB . 'Deploying to: ' . $host); |
||||||
|
$result = Magallanes_Task_Deploy_Rsync::exec($user, $host, $from, $to); |
||||||
|
if ($result == 0) { |
||||||
|
Magallanes_Console::output(PHP_TAB . 'OK' . PHP_EOL); |
||||||
|
} else { |
||||||
|
Magallanes_Console::output(PHP_TAB . 'FAIL' . PHP_EOL); |
||||||
|
} |
||||||
|
} |
||||||
|
|
||||||
|
} |
||||||
|
} |
@ -0,0 +1,11 @@ |
|||||||
|
<?php |
||||||
|
class Magallanes_Task_Deploy_Rsync |
||||||
|
{ |
||||||
|
public static function exec($user, $host, $from, $to) |
||||||
|
{ |
||||||
|
$output = array(); |
||||||
|
$command = 'rsync -avz ' . $from . ' ' . $user . '@' . $host . ':' . $to; |
||||||
|
exec($command . ' 2>&1 ', $command, $result); |
||||||
|
return $result; |
||||||
|
} |
||||||
|
} |
@ -0,0 +1,12 @@ |
|||||||
|
<?php |
||||||
|
class Magallanes_Task_Update |
||||||
|
{ |
||||||
|
private $_config = null; |
||||||
|
|
||||||
|
public function run(Magallanes_Config $config) |
||||||
|
{ |
||||||
|
$csmConfig = $config->getCSM(); |
||||||
|
$csm = new Magallanes_Task_CSM_Git; |
||||||
|
$csm->run($csmConfig['url']); |
||||||
|
} |
||||||
|
} |
@ -0,0 +1,8 @@ |
|||||||
|
#!/bin/sh |
||||||
|
|
||||||
|
SCRIPT=$(readlink -f $0) |
||||||
|
DIR=$(dirname $SCRIPT) |
||||||
|
PHP_BIN=$(which php) |
||||||
|
|
||||||
|
$PHP_BIN -d safe_mode=Off -f $DIR/mage.php -- $@ |
||||||
|
|
@ -0,0 +1,21 @@ |
|||||||
|
<?php |
||||||
|
# mage deploy to:production |
||||||
|
# mage update |
||||||
|
# mage up |
||||||
|
# mage task:init to:production |
||||||
|
# mage run:full-deployment to:production |
||||||
|
|
||||||
|
# full-deployment = update, deploy to:production |
||||||
|
|
||||||
|
$baseDir = dirname(dirname(__FILE__)); |
||||||
|
|
||||||
|
require_once $baseDir . '/Magallanes/Autoload.php'; |
||||||
|
spl_autoload_register(array('Magallanes_Autoload', 'autoload')); |
||||||
|
|
||||||
|
Magallanes_Console::output('Begining Magallanes' . PHP_EOL . PHP_EOL); |
||||||
|
|
||||||
|
$console = new Magallanes_Console; |
||||||
|
$console->setArgs($argv); |
||||||
|
$console->parse(); |
||||||
|
|
||||||
|
$console->run(); |
@ -0,0 +1,2 @@ |
|||||||
|
type: git |
||||||
|
url: git://github.com/andres-montanez/Zend-Framework-Twig-example-app.git |
@ -0,0 +1,8 @@ |
|||||||
|
#production |
||||||
|
user: prod_example |
||||||
|
deploy-from: application |
||||||
|
deploy-to: /var/www/vhosts/example.com/www |
||||||
|
hosts: |
||||||
|
- s01.example.com |
||||||
|
- s02.example.com |
||||||
|
- s03.example.com |
@ -0,0 +1,6 @@ |
|||||||
|
#staging |
||||||
|
user: stg_example |
||||||
|
deploy-from: application |
||||||
|
deploy-to: /var/www/vhosts/example.com/staging |
||||||
|
hosts: |
||||||
|
- staging.example.com |
Loading…
Reference in new issue