Select Git revision
check_dns_responsetime
-
Hahn Axel (hahn) authoredHahn Axel (hahn) authored
act_build.php 9.57 KiB
<?php
/* ######################################################################
IML DEPLOYMENT
webgui - build a package
---------------------------------------------------------------------
2014-11-14 Axel <axel.hahn@iml.unibe.ch> selector for branches
2014-02-14 Axel <axel.hahn@iml.unibe.ch> build was "ajaxified"
2013-11-08 Axel <axel.hahn@iml.unibe.ch>
###################################################################### */
require_once("./classes/project_gui.class.php");
require_once("./classes/formgen.class.php");
set_time_limit(0);
// --- Checks
$oPrj = new projectgui($aParams["prj"]);
$sOut = '';
// switch to a branch if it was selected
$sBranchname = '';
if (array_key_exists("branchname", $aParams)) {
$sBranchname = $aParams["branchname"];
$oPrj->setBranchname($aParams["branchname"]);
} else {
$sBranchname = $oPrj->getBranchname();
}
if (!array_key_exists("confirm", $aParams)) {
// ------------------------------------------------------------
// let the user click a button to make a new build
// ------------------------------------------------------------
$sNext = $oPrj->getNextPhase();
$aPhaseData2 = $oPrj->getPhaseInfos($sNext);
$sBranchontarget = isset($aPhaseData2["ready2install"]["branch"]) ? $aPhaseData2["ready2install"]["branch"] : '';
print_r($sBranchname);
$bIgnoreCache = isset($aParams['reloadBranches']) ? $aParams['reloadBranches'] : false;
// $sOut.='<p>Re-Read Branches (ignore caching) - '.($bIgnoreCache ? "JA" : "mein" ).'</p>';
$sOut .= '<p>' . sprintf(t("page-build-info"), $sNext, $sNext) . '</p>';
$sRevison = false;
$aRepodata = $oPrj->getRepoRevision(true);
if (isset($aRepodata["revision"])) {
$sRevison = $aRepodata["revision"];
if (
array_key_exists("revision", $aPhaseData2["onhold"]) && $aPhaseData2["onhold"]["revision"] == $sRevison
) {
$sOut .= $oHtml->getBox("warning", sprintf(t("page-build-warning-version-exists"), $sNext, $sRevison));
}
if (
array_key_exists("revision", $aPhaseData2["ready2install"]) && $aPhaseData2["ready2install"]["revision"] == $sRevison
) {
$sOut .= $oHtml->getBox("warning", sprintf(t("page-build-warning-version-is-installed"), $sNext, $sRevison));
}
}
$sOut .= '
<table>
<thead>
<tr>
<th class="versioncontrol" colspan="3">' . $oHtml->getIcon('repository') . t("versioncontrol") . '<br></th>
<th> </th>
<th class="' . $sNext . '" colspan="2">' . $oHtml->getIcon('phase') . $sNext . '</th>
</tr>
</thead>
<tbody>
<tr>
<td class="">
' . $oPrj->renderSelectRemoteBranches(false, $bIgnoreCache) . '
' . (
$sBranchontarget && $sBranchontarget != $sBranchname
? '
<form action="?" method="post" enctype="multipart/form-data">
<input type="hidden" name="reloadBranches" value="1">
<input type="hidden" name="branchname" value="' . $sBranchontarget . '">
' . sprintf(t('page-build-branch-on-target'), $sBranchontarget) . '<br>
<button type="submit" class="btn btn-default">' . sprintf(t('page-build-switch-to-target'), $sBranchontarget) . '</button>
</form>
<br><hr>
'
: ''
) . '
<form action="?" method="post" enctype="multipart/form-data">
<input type="hidden" name="reloadBranches" value="1">
<input type="hidden" name="branchname" value="' . $sBranchname . '">
<fieldset>
<button type="submit" class="btn btn-default">' . $oHtml->getIcon('refresh') . t("page-build-reload-branches") . '</button>
</fieldset>
</form>
</td>
<td> </td>
<td class="">
' . $oPrj->renderRepoInfo() . '
</td>
<td style="vertical-align: middle;">
<img src="/deployment/images/nuvola64x64/apps/noatun.png" alt="arrow to the right">
</td>
<td class="' . $sNext . '">
' . t("onhold") . ':<br>
' . $oPrj->renderPhaseDetail($sNext, "onhold", false) . '
</td>
<td class="' . $sNext . '">
' . t("ready2install") . ':<br>
' . $oPrj->renderPhaseDetail($sNext, "ready2install", false) . '
</td>
</tr>
</tbody>
</table>
<br>
';
// Eingabe Kommentare zum Deployment
if ($sRevison) {
$sOut .= '
<form action="?" method="post" enctype="multipart/form-data">
<input type="hidden" name="confirm" value="1">
<input type="hidden" name="branchname" value="' . $sBranchname . '">
<!-- ' . enterDeployinfos() . '
<hr>
-->
<fieldset>
' . aGoback() . '
<button type="submit" class="btn btn-large ' . $sNext . '" >' . $oHtml->getIcon('build') . sprintf(t("page-build-buttonlabel"), $sNext) . '</button>
</fieldset>
</form>
';
}
$BODY =
$renderAdminLTE->addRow(
$renderAdminLTE->addCol(
$renderAdminLTE->getCard([
'type' => 'success',
'variant' => 'outline',
'text' => $sOut,
]),
12
)
);
} else {
// ------------------------------------------------------------
// start new build
// ------------------------------------------------------------
$sOutDir = sys_get_temp_dir();
// action run: start action as background process
// it will be initialized with jQuery $.post( "' . $sUrlStartAction . '" ... )
// see a few lines below
if (array_key_exists("run", $aParams)) {
echo $oPrj->build($sOutDir . "/" . $aParams["ajax"]);
die();
}
// the ajax polling request reads tmpfile
// read produced content from tempfile
// remark: this part was moved to ../webservice/getfile.php
/*
if (array_key_exists("ajax", $aParams)) {
$sLine = "<h2 class=\"warning\">" . t("page-build-info-processing") . "</h2>";
$sProcesses = t("page-build-info-load") . ": "
. shell_exec("uptime")
. "<br>" . t("page-build-info-processes") . ":<pre>"
. shell_exec("ps -f | fgrep -v apache | fgrep -v 'ps -f' | fgrep -v fgrep")
. "</pre>";
$sTmpFile = $sOutDir . "/" . $aParams["ajax"];
$sOut = file_exists($sTmpFile) ? file_get_contents($sTmpFile) : "";
echo $sLine . $sProcesses;
if ($sOut) {
echo '<div style="margin-left: 3em; border-left: 5px dotted #eee; padding-left: 1em;">'
. $sOut . '</div><div style="clear: both;"></div>' . $sLine;
}
die();
}
*/
// html code after pressing build button:
// initiate one request to start the build and one to fetch preocess output
// $sTmpFile = basename(tempnam("", "out_".$aParams["prj"]."_".$aParams["action"])."_");
$sAjaxFile = $aParams["prj"] . "_" . $aParams["action"];
$sDivname = "outAjax";
$sUrlStartAction = "/deployment/?"
. "&prj=" . $aParams["prj"]
. "&action=" . $aParams["action"]
. "&confirm=" . $aParams["confirm"]
. "&branchname=" . $aParams["branchname"]
. "&ajax=" . $sAjaxFile
. "&run=1"
;
$sUrlFile = "/webservice/getfile.php?" . "&ajax=" . $sAjaxFile;
$sOut .= '<div id="' . $sDivname . '"></div>'
. '<script>
var iRepeat=2000;
// start build process
$.post( "' . $sUrlStartAction . '", function( data ) {
$( "#' . $sDivname . '" ).html( data );
iRepeat=false; // stop polling if build is finished
});
// polling result during progress...
function AjaxPolling(sUrl, sDivname){
if (!iRepeat) return false;
$.post( sUrl, function( data ) {
if (iRepeat) {
$("#"+sDivname ).html( data );
}
});
if (iRepeat){
window.setTimeout("AjaxPolling( \'"+sUrl+"\', \'"+sDivname+"\', \'"+iRepeat+"\')", iRepeat);
}
}
// init polling
AjaxPolling("' . $sUrlFile . '", "' . $sDivname . '");
</script>';
}
// $sOut.= '<div id="navbuttom">' . aPrjHome() . '</div>';
// -- Ausgabe
echo $sOut;