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";