Skip to content
Snippets Groups Projects
convert_projects_2_rollout-plugins.php 3.91 KiB
<?php
/**
 * 
 * CRONJOB
 * deploy all queued packages
 * 
 */

// http://iml:deployment@ci.iml.unibe.ch/deployment/?prj=ci&action=deploy&par3=preview&confirm=1

$sDocroot = (dirname(__dir__)) . "/public_html";
$processUser = posix_getpwuid(posix_geteuid());
if ($processUser['name']=="root"){
    die("Do not start the script as user root\n");
};

require_once("$sDocroot/deployment/classes/logger.class.php");
global $oCLog;
$oCLog = new logger();

require_once("$sDocroot/../config/inc_projects_config.php");
require_once("$sDocroot/deployment/inc_functions.php");
require_once("$sDocroot/deployment/classes/project.class.php");

$aSkipped=array();
$aUntouched=array();

// ----------------------------------------------------------------------
// FUNCTIONS
// ----------------------------------------------------------------------

function getUrl($s){
    return 'https://ci.iml.unibe.ch/deployment/'.$s.'/setup/';
}


// ----------------------------------------------------------------------
// MAIN
// ----------------------------------------------------------------------

echo "\n";
echo "===== IMLDEPLOYMENT - converter for rollout plugins\n";
echo "\n";
$oPrj1 = new project();

foreach ($oPrj1->getProjects() as $sPrj) {
    $oPrj = new project($sPrj);

    echo "----- $sPrj:\n";
    $aCfg=$oPrj->getConfig();

    // NEXT STEPS:
    // test if a pluin was set already...
    if(isset($aCfg['deploy']['enabled_rollout_plugin'])){
        echo "SKIP: Project uses rollout plugin [".$aCfg['deploy']['enabled_rollout_plugin']."]\n";
    } else {
        
        echo "INFO: No rollout plugin is set - Project needs to be converted...\n";
        $bSave=false;
        
        if (preg_match('/_se$/', $aCfg['label'])){
            echo "UNTOUCHED: project ending with _se\n";
            $aUntouched[]=$sPrj.' - SE project - '.getUrl($sPrj);
            /*
            if ($aCfg['deploy']['enabled_rollout_plugin']){
                $bSave=false;
                echo "  CONFLICT: rollout plugin was set to [".$aCfg['deploy']['enabled_rollout_plugin']."]\n";
                echo "  \n";
            }
             * 
             */
        } else {
            foreach (array_keys($aCfg['phases']) as $sPhase){
                echo "--- phase $sPhase \n";
                if ($aCfg['phases'][$sPhase]['hosts']){
                    $bSave=true;
                    echo "  TASK: target hosts detected: phases -> $sPhase -> hosts = " . $aCfg['phases'][$sPhase]['hosts'] . "\n";
                    echo "  - set plugin [ssh] for rollout\n";
                    $aCfg['deploy']['enabled_rollout_plugin']='ssh';
                    echo "  - set hosts for ssh plugin phases -> $sPhase -> plugins -> rollout -> ssh -> hosts = ".$aCfg['phases'][$sPhase]['hosts']."\n";
                    $aCfg['phases'][$sPhase]['plugins']['rollout']['ssh']['hosts']=$aCfg['phases'][$sPhase]['hosts'];
                }
            }
            if(!$bSave){
                echo "UNTOUCHED: No Deploy host was found.\n";
                $aUntouched[]=$sPrj.' - no deploy host in any phase - '.getUrl($sPrj);    
            }
        }
        
        if($bSave){
            echo "INFO: save new config\n";
            $aCfg['id']=$sPrj;
            if ($oPrj->saveConfig($aCfg)) {
                echo "  OK, config was saved \n";
            } else {
                echo "  ERROR: config was NOT saved :-/ \n";
                die("  Aborting\n\n");
            }
        } else {
            echo "SKIP: do NOT saving config.\n";
            $aSkipped[]=$sPrj;
        }



    }
        

    echo "\n";
}

echo "----------------------------------------------------------------------\n";
echo "processed: ".count($oPrj1->getProjects())."\n";
echo "skipped  : ".count($aSkipped)."\n";
echo "untouched: ".count($aUntouched)." (watch them manually):\n";
print_r($aUntouched);
echo "done\n";