mirror of
https://github.com/cytopia/devilbox.git
synced 2025-04-23 18:13:39 +00:00
Compare commits
No commits in common. "master" and "v1.11.0" have entirely different histories.
@ -13,8 +13,8 @@ error_reporting(-1);
|
|||||||
putenv('RES_OPTIONS=retrans:1 retry:1 timeout:1 attempts:1');
|
putenv('RES_OPTIONS=retrans:1 retry:1 timeout:1 attempts:1');
|
||||||
|
|
||||||
|
|
||||||
$DEVILBOX_VERSION = 'v3.0.0-beta-0.3';
|
$DEVILBOX_VERSION = 'v1.11.0';
|
||||||
$DEVILBOX_DATE = '2023-01-02';
|
$DEVILBOX_DATE = '2022-03-22';
|
||||||
$DEVILBOX_API_PAGE = 'devilbox-api/status.json';
|
$DEVILBOX_API_PAGE = 'devilbox-api/status.json';
|
||||||
|
|
||||||
//
|
//
|
||||||
|
@ -36,32 +36,31 @@ if (loadClass('Helper')->isLoggedIn()) {
|
|||||||
//
|
//
|
||||||
else if (isset($_GET['software'])) {
|
else if (isset($_GET['software'])) {
|
||||||
$no = '<span class="text-danger">not installed</span>';
|
$no = '<span class="text-danger">not installed</span>';
|
||||||
$no_mod = '<span class="text-warning">PHP module not loaded</span>';
|
|
||||||
$software = array();
|
$software = array();
|
||||||
|
|
||||||
if ($_GET['software'] == 'angular_cli') {
|
if ($_GET['software'] == 'composer') {
|
||||||
echo json_encode(array(
|
|
||||||
$_GET['software'] => (($version = loadClass('Php')->getAngularCliVersion()) !== false) ? $version : $no
|
|
||||||
));
|
|
||||||
}
|
|
||||||
else if ($_GET['software'] == 'asgardcms_installer') {
|
|
||||||
echo json_encode(array(
|
|
||||||
$_GET['software'] => (($version = loadClass('Php')->getAsgardCmsInstallerVersion()) !== false) ? $version : $no
|
|
||||||
));
|
|
||||||
}
|
|
||||||
else if ($_GET['software'] == 'codeception') {
|
|
||||||
echo json_encode(array(
|
|
||||||
$_GET['software'] => (($version = loadClass('Php')->getCodeceptionVersion()) !== false) ? $version : $no
|
|
||||||
));
|
|
||||||
}
|
|
||||||
else if ($_GET['software'] == 'composer') {
|
|
||||||
echo json_encode(array(
|
echo json_encode(array(
|
||||||
$_GET['software'] => (($version = loadClass('Php')->getComposerVersion()) !== false) ? $version : $no
|
$_GET['software'] => (($version = loadClass('Php')->getComposerVersion()) !== false) ? $version : $no
|
||||||
));
|
));
|
||||||
}
|
}
|
||||||
else if ($_GET['software'] == 'deployer') {
|
else if ($_GET['software'] == 'drupalc') {
|
||||||
echo json_encode(array(
|
echo json_encode(array(
|
||||||
$_GET['software'] => (($version = loadClass('Php')->getDeployerVersion()) !== false) ? $version : $no
|
$_GET['software'] => (($version = loadClass('Php')->getDrupalConsoleVersion()) !== false) ? $version : $no
|
||||||
|
));
|
||||||
|
}
|
||||||
|
else if ($_GET['software'] == 'drush7') {
|
||||||
|
echo json_encode(array(
|
||||||
|
$_GET['software'] => (($version = loadClass('Php')->getDrushVersion(7)) !== false) ? $version : $no
|
||||||
|
));
|
||||||
|
}
|
||||||
|
else if ($_GET['software'] == 'drush8') {
|
||||||
|
echo json_encode(array(
|
||||||
|
$_GET['software'] => (($version = loadClass('Php')->getDrushVersion(8)) !== false) ? $version : $no
|
||||||
|
));
|
||||||
|
}
|
||||||
|
else if ($_GET['software'] == 'drush9') {
|
||||||
|
echo json_encode(array(
|
||||||
|
$_GET['software'] => (($version = loadClass('Php')->getDrushVersion(9)) !== false) ? $version : $no
|
||||||
));
|
));
|
||||||
}
|
}
|
||||||
else if ($_GET['software'] == 'git') {
|
else if ($_GET['software'] == 'git') {
|
||||||
@ -69,24 +68,9 @@ if (loadClass('Helper')->isLoggedIn()) {
|
|||||||
$_GET['software'] => (($version = loadClass('Php')->getGitVersion()) !== false) ? $version : $no
|
$_GET['software'] => (($version = loadClass('Php')->getGitVersion()) !== false) ? $version : $no
|
||||||
));
|
));
|
||||||
}
|
}
|
||||||
else if ($_GET['software'] == 'grunt_cli') {
|
else if ($_GET['software'] == 'laravel') {
|
||||||
echo json_encode(array(
|
echo json_encode(array(
|
||||||
$_GET['software'] => (($version = loadClass('Php')->getGruntCliVersion()) !== false) ? $version : $no
|
$_GET['software'] => (($version = loadClass('Php')->getLaravelVersion()) !== false) ? $version : $no
|
||||||
));
|
|
||||||
}
|
|
||||||
else if ($_GET['software'] == 'gulp') {
|
|
||||||
echo json_encode(array(
|
|
||||||
$_GET['software'] => (($version = loadClass('Php')->getGulpVersion()) !== false) ? $version : $no
|
|
||||||
));
|
|
||||||
}
|
|
||||||
else if ($_GET['software'] == 'laravel_installer') {
|
|
||||||
echo json_encode(array(
|
|
||||||
$_GET['software'] => (($version = loadClass('Php')->getLaravelInstallerVersion()) !== false) ? $version : $no
|
|
||||||
));
|
|
||||||
}
|
|
||||||
else if ($_GET['software'] == 'laravel_lumen') {
|
|
||||||
echo json_encode(array(
|
|
||||||
$_GET['software'] => (($version = loadClass('Php')->getLaravelLumenVersion()) !== false) ? $version : $no
|
|
||||||
));
|
));
|
||||||
}
|
}
|
||||||
else if ($_GET['software'] == 'mds') {
|
else if ($_GET['software'] == 'mds') {
|
||||||
@ -94,11 +78,6 @@ if (loadClass('Helper')->isLoggedIn()) {
|
|||||||
$_GET['software'] => (($version = loadClass('Php')->getMdsVersion()) !== false) ? $version : $no
|
$_GET['software'] => (($version = loadClass('Php')->getMdsVersion()) !== false) ? $version : $no
|
||||||
));
|
));
|
||||||
}
|
}
|
||||||
else if ($_GET['software'] == 'mupdf_tools') {
|
|
||||||
echo json_encode(array(
|
|
||||||
$_GET['software'] => (($version = loadClass('Php')->getMupdfToolsVersion()) !== false) ? $version : $no
|
|
||||||
));
|
|
||||||
}
|
|
||||||
else if ($_GET['software'] == 'node') {
|
else if ($_GET['software'] == 'node') {
|
||||||
echo json_encode(array(
|
echo json_encode(array(
|
||||||
$_GET['software'] => (($version = loadClass('Php')->getNodeVersion()) !== false) ? $version : $no
|
$_GET['software'] => (($version = loadClass('Php')->getNodeVersion()) !== false) ? $version : $no
|
||||||
@ -109,56 +88,20 @@ if (loadClass('Helper')->isLoggedIn()) {
|
|||||||
$_GET['software'] => (($version = loadClass('Php')->getNpmVersion()) !== false) ? $version : $no
|
$_GET['software'] => (($version = loadClass('Php')->getNpmVersion()) !== false) ? $version : $no
|
||||||
));
|
));
|
||||||
}
|
}
|
||||||
else if ($_GET['software'] == 'phalcon_devtools') {
|
else if ($_GET['software'] == 'phalcon') {
|
||||||
if (!extension_loaded('phalcon')) {
|
|
||||||
echo json_encode(array(
|
echo json_encode(array(
|
||||||
$_GET['software'] => $no_mod
|
$_GET['software'] => (($version = loadClass('Php')->getPhalconVersion()) !== false) ? $version : $no
|
||||||
));
|
|
||||||
} else {
|
|
||||||
echo json_encode(array(
|
|
||||||
$_GET['software'] => (($version = loadClass('Php')->getPhalconDevtoolsVersion()) !== false) ? $version : $no
|
|
||||||
));
|
));
|
||||||
}
|
}
|
||||||
}
|
else if ($_GET['software'] == 'symfony') {
|
||||||
else if ($_GET['software'] == 'phpunit') {
|
|
||||||
echo json_encode(array(
|
echo json_encode(array(
|
||||||
$_GET['software'] => (($version = loadClass('Php')->getPhpunitVersion()) !== false) ? $version : $no
|
$_GET['software'] => (($version = loadClass('Php')->getSymfonyVersion()) !== false) ? $version : $no
|
||||||
));
|
|
||||||
}
|
|
||||||
else if ($_GET['software'] == 'stylelint') {
|
|
||||||
echo json_encode(array(
|
|
||||||
$_GET['software'] => (($version = loadClass('Php')->getStylelintVersion()) !== false) ? $version : $no
|
|
||||||
));
|
|
||||||
}
|
|
||||||
else if ($_GET['software'] == 'symfony_cli') {
|
|
||||||
echo json_encode(array(
|
|
||||||
$_GET['software'] => (($version = loadClass('Php')->getSymfonyCliVersion()) !== false) ? $version : $no
|
|
||||||
));
|
|
||||||
}
|
|
||||||
else if ($_GET['software'] == 'vue_cli') {
|
|
||||||
echo json_encode(array(
|
|
||||||
$_GET['software'] => (($version = loadClass('Php')->getVueCliVersion()) !== false) ? $version : $no
|
|
||||||
));
|
|
||||||
}
|
|
||||||
else if ($_GET['software'] == 'webpack_cli') {
|
|
||||||
echo json_encode(array(
|
|
||||||
$_GET['software'] => (($version = loadClass('Php')->getWebpackCliVersion()) !== false) ? $version : $no
|
|
||||||
));
|
));
|
||||||
}
|
}
|
||||||
else if ($_GET['software'] == 'wpcli') {
|
else if ($_GET['software'] == 'wpcli') {
|
||||||
echo json_encode(array(
|
echo json_encode(array(
|
||||||
$_GET['software'] => (($version = loadClass('Php')->getWpcliVersion()) !== false) ? $version : $no
|
$_GET['software'] => (($version = loadClass('Php')->getWpcliVersion()) !== false) ? $version : $no
|
||||||
));
|
));
|
||||||
}
|
|
||||||
else if ($_GET['software'] == 'wscat') {
|
|
||||||
echo json_encode(array(
|
|
||||||
$_GET['software'] => (($version = loadClass('Php')->getWscatVersion()) !== false) ? $version : $no
|
|
||||||
));
|
|
||||||
}
|
|
||||||
else if ($_GET['software'] == 'yarn') {
|
|
||||||
echo json_encode(array(
|
|
||||||
$_GET['software'] => (($version = loadClass('Php')->getYarnVersion()) !== false) ? $version : $no
|
|
||||||
));
|
|
||||||
} else {
|
} else {
|
||||||
echo json_encode(array($_GET['software'] => 'unknown software'));
|
echo json_encode(array($_GET['software'] => 'unknown software'));
|
||||||
}
|
}
|
||||||
|
22
.devilbox/www/htdocs/assets/js/html-email.js
Normal file
22
.devilbox/www/htdocs/assets/js/html-email.js
Normal file
@ -0,0 +1,22 @@
|
|||||||
|
class HtmlEmail extends HTMLElement {
|
||||||
|
constructor() {
|
||||||
|
super();
|
||||||
|
this.attachShadow({ mode: 'open' });
|
||||||
|
|
||||||
|
let emailContent;
|
||||||
|
const templateId = this.dataset.templateId;
|
||||||
|
try {
|
||||||
|
emailContent = document.getElementById(templateId).innerHTML;
|
||||||
|
} catch (error) {
|
||||||
|
console.log(error);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
const container = document.createElement('div');
|
||||||
|
container.innerHTML = emailContent;
|
||||||
|
|
||||||
|
this.shadowRoot.appendChild(container);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
customElements.define('html-email', HtmlEmail);
|
@ -1,179 +0,0 @@
|
|||||||
<?php require '../config.php'; ?>
|
|
||||||
<?php loadClass('Helper')->authPage(); ?>
|
|
||||||
<?php
|
|
||||||
// TODO: This is currently a temporary hack to talk to supervisor on the HTTPD server
|
|
||||||
function run_supervisor_command($command) {
|
|
||||||
$supervisor_config_file = '/tmp/supervisorctl.conf';
|
|
||||||
$port = getenv('SVCTL_LISTEN_PORT');
|
|
||||||
$user = getenv('SVCTL_USER');
|
|
||||||
$pass = getenv('SVCTL_PASS');
|
|
||||||
|
|
||||||
$content = "[supervisorctl]\n";
|
|
||||||
$content .= "serverurl=http://httpd:" . $port . "\n";
|
|
||||||
$content .= "username=" . $user . "\n";
|
|
||||||
$content .= "password=" . $pass . "\n";
|
|
||||||
|
|
||||||
$fp = fopen($supervisor_config_file, 'w');
|
|
||||||
fwrite($fp, $content);
|
|
||||||
fclose($fp);
|
|
||||||
|
|
||||||
return loadClass('Helper')->exec('supervisorctl -c ' . $supervisor_config_file . ' ' . $command);
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
?>
|
|
||||||
<?php if ( isset($_POST['watcherd']) && $_POST['watcherd'] == 'reload' ) {
|
|
||||||
run_supervisor_command('restart watcherd');
|
|
||||||
sleep(1);
|
|
||||||
loadClass('Helper')->redirect('/cnc.php');
|
|
||||||
}
|
|
||||||
?>
|
|
||||||
<!DOCTYPE html>
|
|
||||||
<html lang="en">
|
|
||||||
<head>
|
|
||||||
<?php echo loadClass('Html')->getHead(true); ?>
|
|
||||||
</head>
|
|
||||||
|
|
||||||
<body>
|
|
||||||
<?php echo loadClass('Html')->getNavbar(); ?>
|
|
||||||
|
|
||||||
<div class="container">
|
|
||||||
<h1>Command & Control</h1>
|
|
||||||
<br/>
|
|
||||||
<br/>
|
|
||||||
|
|
||||||
<div class="row">
|
|
||||||
<div class="col-md-12">
|
|
||||||
|
|
||||||
<?php
|
|
||||||
$status_w = run_supervisor_command('status watcherd');
|
|
||||||
$status_h = run_supervisor_command('status httpd');
|
|
||||||
|
|
||||||
$words = preg_split("/\s+/", $status_w);
|
|
||||||
$data_w = array(
|
|
||||||
'name' => isset($words[0]) ? $words[0] : '',
|
|
||||||
'state' => isset($words[1]) ? $words[1] : '',
|
|
||||||
'pid' => isset($words[3]) ? preg_replace('/,$/', '', $words[3]) : '',
|
|
||||||
'uptime' => isset($words[5]) ? $words[5] : '',
|
|
||||||
);
|
|
||||||
$words = preg_split("/\s+/", $status_h);
|
|
||||||
$data_h = array(
|
|
||||||
'name' => isset($words[0]) ? $words[0] : '',
|
|
||||||
'state' => isset($words[1]) ? $words[1] : '',
|
|
||||||
'pid' => isset($words[3]) ? preg_replace('/,$/', '', $words[3]) : '',
|
|
||||||
'uptime' => isset($words[5]) ? $words[5] : '',
|
|
||||||
);
|
|
||||||
?>
|
|
||||||
<h3>Daemon overview</h3><br/>
|
|
||||||
<p>If you made any changes to vhost settings (vhost-gen templates or backend configuration) or to the webserver configuration itself, you can trigger a manual reload of <code>watcherd</code> here to apply them. No need to restart the Docker Compose stack.</p>
|
|
||||||
<table class="table table-striped">
|
|
||||||
<thead class="thead-inverse">
|
|
||||||
<tr>
|
|
||||||
<th>Daemon</th>
|
|
||||||
<th>Status</th>
|
|
||||||
<th>Pid</th>
|
|
||||||
<th>Uptime</th>
|
|
||||||
<th>Action</th>
|
|
||||||
</tr>
|
|
||||||
</thead>
|
|
||||||
<tbody>
|
|
||||||
<tr>
|
|
||||||
<td><?php echo $data_w['name']; ?></td>
|
|
||||||
<td><?php echo $data_w['state']; ?></td>
|
|
||||||
<td><?php echo $data_w['pid']; ?></td>
|
|
||||||
<td><?php echo $data_w['uptime']; ?></td>
|
|
||||||
<td><form method="post"><button type="submit" name="watcherd" value="reload" class="btn btn-primary">Reload</button></form></td>
|
|
||||||
</tr>
|
|
||||||
<tr>
|
|
||||||
<td><?php echo $data_h['name']; ?></td>
|
|
||||||
<td><?php echo $data_h['state']; ?></td>
|
|
||||||
<td><?php echo $data_h['pid']; ?></td>
|
|
||||||
<td><?php echo $data_h['uptime']; ?></td>
|
|
||||||
<td></td>
|
|
||||||
</tr>
|
|
||||||
</tbody>
|
|
||||||
</table>
|
|
||||||
<br/>
|
|
||||||
<br/>
|
|
||||||
|
|
||||||
<h3>watcherd stderr</h3>
|
|
||||||
<br/>
|
|
||||||
<?php
|
|
||||||
$output = run_supervisor_command('tail -1000000 watcherd stderr');
|
|
||||||
echo '<pre>';
|
|
||||||
foreach(preg_split("/((\r?\n)|(\r\n?))/", $output) as $line) {
|
|
||||||
if ( strpos($line, "[ERR]") !== false ) {
|
|
||||||
echo '<span style="color: #ff0000">' . $line . '</span>';
|
|
||||||
} else if ( strpos($line, "[emerg]") !== false ) {
|
|
||||||
echo '<span style="color: #ff0000">' . $line . '</span>';
|
|
||||||
} else if ( strpos($line, "Syntax error") !== false ) {
|
|
||||||
echo '<span style="color: #ff0000">' . $line . '</span>';
|
|
||||||
} else if ( strpos($line, "[WARN]") !== false ) {
|
|
||||||
echo '<span style="color: #ccaa00">' . $line . '</span>';
|
|
||||||
} else {
|
|
||||||
echo $line;
|
|
||||||
}
|
|
||||||
echo "\n";
|
|
||||||
}
|
|
||||||
echo '</pre>';
|
|
||||||
?>
|
|
||||||
<h3>watcherd stdout</h3>
|
|
||||||
<br/>
|
|
||||||
<?php
|
|
||||||
$output = run_supervisor_command('tail -1000000 watcherd');
|
|
||||||
echo '<pre>';
|
|
||||||
foreach(preg_split("/((\r?\n)|(\r\n?))/", $output) as $line) {
|
|
||||||
$pos_info = strpos($line, "[INFO]");
|
|
||||||
$pos_ok = strpos($line, "[OK]");
|
|
||||||
if ( $pos_ok !== false ) {
|
|
||||||
echo '<span style="color: #669a00"><strong>' . $line . '</strong></span>';
|
|
||||||
} else if ( $pos_info !== false && $pos_info == 0 ) {
|
|
||||||
echo '<span style="color: #0088cd">' . $line . '</span>';
|
|
||||||
} else {
|
|
||||||
echo $line;
|
|
||||||
}
|
|
||||||
echo "\n";
|
|
||||||
}
|
|
||||||
echo '</pre>';
|
|
||||||
?>
|
|
||||||
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
</div><!-- /.container -->
|
|
||||||
|
|
||||||
<?php echo loadClass('Html')->getFooter(); ?>
|
|
||||||
<script>
|
|
||||||
$(function() {
|
|
||||||
$('.subject').click(function() {
|
|
||||||
const id = ($(this).attr('id'));
|
|
||||||
const row = $('#mail-'+id);
|
|
||||||
row.toggle();
|
|
||||||
|
|
||||||
const bodyElement = row.find('.email-body')[0];
|
|
||||||
if(bodyElement.shadowRoot !== null){
|
|
||||||
// We've already fetched the message content.
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
bodyElement.attachShadow({ mode: 'open' });
|
|
||||||
bodyElement.shadowRoot.innerHTML = 'Loading...';
|
|
||||||
|
|
||||||
$.get('?get-body=' + id, function(response){
|
|
||||||
response = JSON.parse(response);
|
|
||||||
row.find('.raw-email-body').html(response.raw);
|
|
||||||
|
|
||||||
const body = response.body;
|
|
||||||
if(body === null){
|
|
||||||
row.find('.alert').show();
|
|
||||||
}
|
|
||||||
else{
|
|
||||||
bodyElement.shadowRoot.innerHTML = body;
|
|
||||||
}
|
|
||||||
})
|
|
||||||
})
|
|
||||||
// Handler for .ready() called.
|
|
||||||
});
|
|
||||||
</script>
|
|
||||||
</body>
|
|
||||||
</html>
|
|
@ -334,121 +334,10 @@ $HEALTH_PERCENT = 100 - ceil(100 * $HEALTH_FAILS / $HEALTH_TOTAL);
|
|||||||
<div class="row">
|
<div class="row">
|
||||||
<div class="col-lg-4 col-md-6 col-sm-12 col-xs-12 col-margin">
|
<div class="col-lg-4 col-md-6 col-sm-12 col-xs-12 col-margin">
|
||||||
<div class="dash-box">
|
<div class="dash-box">
|
||||||
<div class="dash-box-head"><i class="fa fa-info-circle" aria-hidden="true"></i> Available CLI Tools</div>
|
<div class="dash-box-head"><i class="fa fa-info-circle" aria-hidden="true"></i> PHP Container Setup</div>
|
||||||
<div class="dash-box-body">
|
<div class="dash-box-body">
|
||||||
<p><small>You can also enter the php container via <code style="background-color:#3d3d3d;">./shell.sh</code> and use the following cli tools:</small></p>
|
|
||||||
<table class="table table-striped table-hover table-bordered table-sm font-small">
|
|
||||||
<thead class="thead-inverse">
|
|
||||||
<tr>
|
|
||||||
<th colspan="2">Tools</th>
|
|
||||||
</tr>
|
|
||||||
</thead>
|
|
||||||
<tbody>
|
|
||||||
<tr>
|
|
||||||
<th style="width: 50%;">Angular Cli</th>
|
|
||||||
<td id="app_angular_cli"></td>
|
|
||||||
</tr>
|
|
||||||
<tr>
|
|
||||||
<th>AsgardCMS Installer</th>
|
|
||||||
<td id="app_asgardcms_installer"></td>
|
|
||||||
</tr>
|
|
||||||
<tr>
|
|
||||||
<th>Codeception</th>
|
|
||||||
<td id="app_codeception"></td>
|
|
||||||
</tr>
|
|
||||||
<tr>
|
|
||||||
<th>Composer</th>
|
|
||||||
<td id="app_composer"></td>
|
|
||||||
</tr>
|
|
||||||
<tr>
|
|
||||||
<th>Deployer</th>
|
|
||||||
<td id="app_deployer"></td>
|
|
||||||
</tr>
|
|
||||||
<tr>
|
|
||||||
<th>Git</th>
|
|
||||||
<td id="app_git"></td>
|
|
||||||
</tr>
|
|
||||||
<tr>
|
|
||||||
<th>Grunt Cli</th>
|
|
||||||
<td id="app_grunt_cli"></td>
|
|
||||||
</tr>
|
|
||||||
<tr>
|
|
||||||
<th>Gulp</th>
|
|
||||||
<td id="app_gulp"></td>
|
|
||||||
</tr>
|
|
||||||
<tr>
|
|
||||||
<th>Laravel Installer</th>
|
|
||||||
<td id="app_laravel_installer"></td>
|
|
||||||
</tr>
|
|
||||||
<tr>
|
|
||||||
<th>Laravel Lumen</th>
|
|
||||||
<td id="app_laravel_lumen"></td>
|
|
||||||
</tr>
|
|
||||||
<tr>
|
|
||||||
<th>Mupdf Tools</th>
|
|
||||||
<td id="app_mupdf_tools"></td>
|
|
||||||
</tr>
|
|
||||||
<tr>
|
|
||||||
<th>mysqldump-secure</th>
|
|
||||||
<td id="app_mds"></td>
|
|
||||||
</tr>
|
|
||||||
<tr>
|
|
||||||
<th>Node</th>
|
|
||||||
<td id="app_node"></td>
|
|
||||||
</tr>
|
|
||||||
<tr>
|
|
||||||
<th>Npm</th>
|
|
||||||
<td id="app_npm"></td>
|
|
||||||
</tr>
|
|
||||||
<tr>
|
|
||||||
<th>Phalcon Devtools</th>
|
|
||||||
<td id="app_phalcon_devtools"></td>
|
|
||||||
</tr>
|
|
||||||
<tr>
|
|
||||||
<th>Phpunit</th>
|
|
||||||
<td id="app_phpunit"></td>
|
|
||||||
</tr>
|
|
||||||
<tr>
|
|
||||||
<th>Stylelint</th>
|
|
||||||
<td id="app_stylelint"></td>
|
|
||||||
</tr>
|
|
||||||
<tr>
|
|
||||||
<th>Symfony Cli</th>
|
|
||||||
<td id="app_symfony_cli"></td>
|
|
||||||
</tr>
|
|
||||||
<tr>
|
|
||||||
<th>Vue Cli</th>
|
|
||||||
<td id="app_vue_cli"></td>
|
|
||||||
</tr>
|
|
||||||
<tr>
|
|
||||||
<th>Webpack Cli</th>
|
|
||||||
<td id="app_webpack_cli"></td>
|
|
||||||
</tr>
|
|
||||||
<tr>
|
|
||||||
<th>Wordpress Cli</th>
|
|
||||||
<td id="app_wpcli"></td>
|
|
||||||
</tr>
|
|
||||||
<tr>
|
|
||||||
<th>Wscat</th>
|
|
||||||
<td id="app_wscat"></td>
|
|
||||||
</tr>
|
|
||||||
<tr>
|
|
||||||
<th>Yarn</th>
|
|
||||||
<td id="app_yarn"></td>
|
|
||||||
</tr>
|
|
||||||
</tbody>
|
|
||||||
</table>
|
|
||||||
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<div class="col-lg-4 col-md-6 col-sm-12 col-xs-12 offset-lg-4 offset-md-0 offset-sm-0 col-margin">
|
|
||||||
<div class="dash-box">
|
|
||||||
<div class="dash-box-head"><i class="fa fa-info-circle" aria-hidden="true"></i> PHP Container Status</div>
|
|
||||||
<div class="dash-box-body">
|
|
||||||
<p><small>You have made the following base configuration to the Devilbox:</small></p>
|
|
||||||
<table class="table table-striped table-hover table-bordered table-sm font-small">
|
<table class="table table-striped table-hover table-bordered table-sm font-small">
|
||||||
|
<p><small>You can also enter the php container and work from inside. The following is available inside the container:</small></p>
|
||||||
<thead class="thead-inverse">
|
<thead class="thead-inverse">
|
||||||
<tr>
|
<tr>
|
||||||
<th colspan="2">Settings</th>
|
<th colspan="2">Settings</th>
|
||||||
@ -485,7 +374,78 @@ $HEALTH_PERCENT = 100 - ceil(100 * $HEALTH_FAILS / $HEALTH_TOTAL);
|
|||||||
</tr>
|
</tr>
|
||||||
</tbody>
|
</tbody>
|
||||||
</table>
|
</table>
|
||||||
<p><small>The PHP container can connect to the following services via the specified hostnames and IP addresses.</small></p>
|
|
||||||
|
<table class="table table-striped table-hover table-bordered table-sm font-small">
|
||||||
|
<thead class="thead-inverse">
|
||||||
|
<tr>
|
||||||
|
<th colspan="2">Tools</th>
|
||||||
|
</tr>
|
||||||
|
</thead>
|
||||||
|
<tbody>
|
||||||
|
<tr>
|
||||||
|
<th>composer</th>
|
||||||
|
<td id="app_composer"></td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<th>drupal-console</th>
|
||||||
|
<td id="app_drupalc"></td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<th>drush7</th>
|
||||||
|
<td id="app_drush7"></td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<th>drush8</th>
|
||||||
|
<td id="app_drush8"></td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<th>drush9</th>
|
||||||
|
<td id="app_drush9"></td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<th>git</th>
|
||||||
|
<td id="app_git"></td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<th>Laravel installer</th>
|
||||||
|
<td id="app_laravel"></td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<th>mysqldump-secure</th>
|
||||||
|
<td id="app_mds"></td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<th>node</th>
|
||||||
|
<td id="app_node"></td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<th>npm</th>
|
||||||
|
<td id="app_npm"></td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<th>Phalcon devtools</th>
|
||||||
|
<td id="app_phalcon"></td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<th>Symfony installer</th>
|
||||||
|
<td id="app_symfony"></td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<th>Wordpress cli</th>
|
||||||
|
<td id="app_wpcli"></td>
|
||||||
|
</tr>
|
||||||
|
</tbody>
|
||||||
|
</table>
|
||||||
|
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="col-lg-4 col-md-6 col-sm-12 col-xs-12 offset-lg-4 offset-md-0 offset-sm-0 col-margin">
|
||||||
|
<div class="dash-box">
|
||||||
|
<div class="dash-box-head"><i class="fa fa-info-circle" aria-hidden="true"></i> PHP Container Status</div>
|
||||||
|
<div class="dash-box-body">
|
||||||
|
<p><small>The PHP Docker can connect to the following services via the specified hostnames and IP addresses.</small></p>
|
||||||
<table class="table table-striped table-hover table-bordered table-sm font-small">
|
<table class="table table-striped table-hover table-bordered table-sm font-small">
|
||||||
<thead class="thead-inverse">
|
<thead class="thead-inverse">
|
||||||
<tr>
|
<tr>
|
||||||
@ -953,29 +913,19 @@ $HEALTH_PERCENT = 100 - ceil(100 * $HEALTH_FAILS / $HEALTH_TOTAL);
|
|||||||
xhttp.open('GET', '_ajax_callback.php?software='+app, true);
|
xhttp.open('GET', '_ajax_callback.php?software='+app, true);
|
||||||
xhttp.send();
|
xhttp.send();
|
||||||
}
|
}
|
||||||
updateVersions('angular_cli');
|
|
||||||
updateVersions('asgardcms_installer');
|
|
||||||
updateVersions('codeception');
|
|
||||||
updateVersions('composer');
|
updateVersions('composer');
|
||||||
updateVersions('deployer');
|
updateVersions('drupalc');
|
||||||
|
updateVersions('drush7');
|
||||||
|
updateVersions('drush8');
|
||||||
|
updateVersions('drush9');
|
||||||
updateVersions('git');
|
updateVersions('git');
|
||||||
updateVersions('grunt_cli');
|
updateVersions('laravel');
|
||||||
updateVersions('gulp');
|
|
||||||
updateVersions('laravel_installer');
|
|
||||||
updateVersions('laravel_lumen');
|
|
||||||
updateVersions('mds');
|
updateVersions('mds');
|
||||||
updateVersions('mupdf_tools');
|
|
||||||
updateVersions('node');
|
updateVersions('node');
|
||||||
updateVersions('npm');
|
updateVersions('npm');
|
||||||
updateVersions('phalcon_devtools');
|
updateVersions('phalcon');
|
||||||
updateVersions('phpunit');
|
updateVersions('symfony');
|
||||||
updateVersions('stylelint');
|
|
||||||
updateVersions('symfony_cli');
|
|
||||||
updateVersions('vue_cli');
|
|
||||||
updateVersions('webpack_cli');
|
|
||||||
updateVersions('wpcli');
|
updateVersions('wpcli');
|
||||||
updateVersions('wscat');
|
|
||||||
updateVersions('yarn');
|
|
||||||
})();
|
})();
|
||||||
</script>
|
</script>
|
||||||
</body>
|
</body>
|
||||||
|
66
.devilbox/www/htdocs/info_vhostgen.php
Normal file
66
.devilbox/www/htdocs/info_vhostgen.php
Normal file
@ -0,0 +1,66 @@
|
|||||||
|
<?php require '../config.php'; ?>
|
||||||
|
<?php loadClass('Helper')->authPage(); ?>
|
||||||
|
<?php
|
||||||
|
if (!isset($_GET['name'])) {
|
||||||
|
loadClass('Helper')->redirect('/vhosts.php');
|
||||||
|
}
|
||||||
|
if (!strlen($_GET['name'])) {
|
||||||
|
loadClass('Helper')->redirect('/vhosts.php');
|
||||||
|
}
|
||||||
|
$vhost = $_GET['name'];
|
||||||
|
$found = false;
|
||||||
|
$vhosts = loadClass('Httpd')->getVirtualHosts();
|
||||||
|
foreach ($vhosts as $v) {
|
||||||
|
if ($vhost == $v['name']) {
|
||||||
|
$found = true;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
// Be safe before using outputs
|
||||||
|
$vhost = htmlentities($vhost);
|
||||||
|
|
||||||
|
?>
|
||||||
|
<!DOCTYPE html>
|
||||||
|
<html lang="en">
|
||||||
|
<head>
|
||||||
|
<?php echo loadClass('Html')->getHead(true); ?>
|
||||||
|
</head>
|
||||||
|
|
||||||
|
<body>
|
||||||
|
<?php echo loadClass('Html')->getNavbar(); ?>
|
||||||
|
|
||||||
|
<div class="container">
|
||||||
|
|
||||||
|
<h1>vhost-gen: <?php echo $vhost;?></h1>
|
||||||
|
<br/>
|
||||||
|
<br/>
|
||||||
|
|
||||||
|
<div class="row">
|
||||||
|
<div class="col-md-12">
|
||||||
|
<?php if (!$found): ?>
|
||||||
|
<p>The Virtual Host "<?php echo $vhost; ?>" does not exist.</p>
|
||||||
|
<?php else: ?>
|
||||||
|
<?php $tpl = loadClass('Httpd')->getVhostgenTemplatePath($vhost); ?>
|
||||||
|
<?php if (!$tpl): ?>
|
||||||
|
<p>No custom vhost-gen configuration found for "<?php echo $vhost; ?>".</p>
|
||||||
|
<?php else: ?>
|
||||||
|
<p>Note: If the resulting virtual host config does not reflect the vhost-gen template changes, you will need to restart the Devilbox.</p>
|
||||||
|
<a href="/vhosts.php"><i class="fa fa-chevron-left" aria-hidden="true"></i> Overview</a><br/>
|
||||||
|
<br/><h3>virtual host config</h3><br/>
|
||||||
|
<a title="Virtual host: <?php echo $vhost;?>.conf" target="_blank" href="/vhost.d/<?php echo $vhost;?>.conf">
|
||||||
|
<i class="fa fa-external-link" aria-hidden="true"></i> <?php echo $vhost;?>.conf
|
||||||
|
</a>
|
||||||
|
<br/><br/><h3>vhost-gen config</h3><br/>
|
||||||
|
<code><?php echo $tpl; ?></code><br/><br/>
|
||||||
|
<?php $lines = file($tpl); ?>
|
||||||
|
<pre style="border: 1px solid black; padding:5px;"><code><?php foreach ($lines as $line): ?><?php echo $line; ?><?php endforeach; ?></code></pre>
|
||||||
|
<?php endif; ?>
|
||||||
|
<?php endif; ?>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
</div><!-- /.container -->
|
||||||
|
|
||||||
|
<?php echo loadClass('Html')->getFooter(); ?>
|
||||||
|
</body>
|
||||||
|
</html>
|
@ -24,28 +24,6 @@ require $VEN_DIR . DIRECTORY_SEPARATOR . 'Mail' . DIRECTORY_SEPARATOR .'mimeDeco
|
|||||||
require $LIB_DIR . DIRECTORY_SEPARATOR . 'Mail.php';
|
require $LIB_DIR . DIRECTORY_SEPARATOR . 'Mail.php';
|
||||||
require $LIB_DIR . DIRECTORY_SEPARATOR . 'Sort.php';
|
require $LIB_DIR . DIRECTORY_SEPARATOR . 'Sort.php';
|
||||||
|
|
||||||
if (isset($_GET['get-body']) && is_numeric($_GET['get-body'])) {
|
|
||||||
$messageNumber = $_GET['get-body'];
|
|
||||||
$MyMbox = new \devilbox\Mail('/var/mail/devilbox');
|
|
||||||
$message = $MyMbox->getMessage($messageNumber-1);
|
|
||||||
$structure = $message['decoded'];
|
|
||||||
|
|
||||||
$body = null;
|
|
||||||
if (isset($structure->body)) {
|
|
||||||
$body = $structure->body;
|
|
||||||
}
|
|
||||||
elseif(isset($structure->parts[1]->body)) {
|
|
||||||
$body = $structure->parts[1]->body;
|
|
||||||
}
|
|
||||||
elseif(isset($structure->parts[0]->body)) {
|
|
||||||
$body = $structure->parts[0]->body;
|
|
||||||
}
|
|
||||||
|
|
||||||
exit(json_encode(array(
|
|
||||||
'raw' => htmlentities($message['raw']),
|
|
||||||
'body' => $body,
|
|
||||||
)));
|
|
||||||
}
|
|
||||||
|
|
||||||
if (isset($_GET['delete']) && is_numeric($_GET['delete'])) {
|
if (isset($_GET['delete']) && is_numeric($_GET['delete'])) {
|
||||||
$message = $_GET['delete'];
|
$message = $_GET['delete'];
|
||||||
@ -193,6 +171,17 @@ $messages = $MyMbox->get($sortOrderArr);
|
|||||||
<?php
|
<?php
|
||||||
$message = htmlentities($data['raw']);
|
$message = htmlentities($data['raw']);
|
||||||
$structure = $data['decoded'];
|
$structure = $data['decoded'];
|
||||||
|
$body = null;
|
||||||
|
|
||||||
|
if (isset($structure->body)) {
|
||||||
|
$body = $structure->body;
|
||||||
|
}
|
||||||
|
elseif(isset($structure->parts[1]->body)) {
|
||||||
|
$body = $structure->parts[1]->body;
|
||||||
|
}
|
||||||
|
elseif(isset($structure->parts[0]->body)) {
|
||||||
|
$body = $structure->parts[0]->body;
|
||||||
|
}
|
||||||
?>
|
?>
|
||||||
<tr id="<?php echo $data['num'];?>" class="subject">
|
<tr id="<?php echo $data['num'];?>" class="subject">
|
||||||
<td><?php echo $data['num'];?></td>
|
<td><?php echo $data['num'];?></td>
|
||||||
@ -209,13 +198,17 @@ $messages = $MyMbox->get($sortOrderArr);
|
|||||||
<tr id="mail-<?php echo $data['num'];?>" style="display:none">
|
<tr id="mail-<?php echo $data['num'];?>" style="display:none">
|
||||||
<td></td>
|
<td></td>
|
||||||
<td colspan="5">
|
<td colspan="5">
|
||||||
<div class="email-body"></div>
|
<?php if ($body !== null): ?>
|
||||||
<div class="alert alert-warning" role="alert" style="display:none">
|
<template id="mail-body-<?=$data['num']?>"><?=$body?></template>
|
||||||
|
<html-email data-template-id="mail-body-<?=$data['num']?>"></html-email>
|
||||||
|
<?php else: ?>
|
||||||
|
<div class="alert alert-warning" role="alert">
|
||||||
No valid body found
|
No valid body found
|
||||||
</div>
|
</div>
|
||||||
|
<?php endif; ?>
|
||||||
<hr>
|
<hr>
|
||||||
<p><a class="btn btn-primary" data-toggle="collapse" href="#email-<?php echo $data['num'];?>" aria-expanded="false" aria-controls="email-<?php echo $data['num'];?>">Raw source</a></p>
|
<p><a class="btn btn-primary" data-toggle="collapse" href="#email-<?php echo $data['num'];?>" aria-expanded="false" aria-controls="email-<?php echo $data['num'];?>">Raw source</a></p>
|
||||||
<div class="collapse" id="email-<?php echo $data['num'];?>"><pre class="raw-email-body"></pre></div>
|
<div class="collapse" id="email-<?php echo $data['num'];?>"><pre><?php echo $message;?></pre></div>
|
||||||
</td>
|
</td>
|
||||||
</tr>
|
</tr>
|
||||||
<?php endforeach; ?>
|
<?php endforeach; ?>
|
||||||
@ -234,34 +227,12 @@ $messages = $MyMbox->get($sortOrderArr);
|
|||||||
<script>
|
<script>
|
||||||
$(function() {
|
$(function() {
|
||||||
$('.subject').click(function() {
|
$('.subject').click(function() {
|
||||||
const id = ($(this).attr('id'));
|
var id = ($(this).attr('id'));
|
||||||
const row = $('#mail-'+id);
|
$('#mail-'+id).toggle();
|
||||||
row.toggle();
|
|
||||||
|
|
||||||
const bodyElement = row.find('.email-body')[0];
|
|
||||||
if(bodyElement.shadowRoot !== null){
|
|
||||||
// We've already fetched the message content.
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
bodyElement.attachShadow({ mode: 'open' });
|
|
||||||
bodyElement.shadowRoot.innerHTML = 'Loading...';
|
|
||||||
|
|
||||||
$.get('?get-body=' + id, function(response){
|
|
||||||
response = JSON.parse(response);
|
|
||||||
row.find('.raw-email-body').html(response.raw);
|
|
||||||
|
|
||||||
const body = response.body;
|
|
||||||
if(body === null){
|
|
||||||
row.find('.alert').show();
|
|
||||||
}
|
|
||||||
else{
|
|
||||||
bodyElement.shadowRoot.innerHTML = body;
|
|
||||||
}
|
|
||||||
})
|
|
||||||
})
|
})
|
||||||
// Handler for .ready() called.
|
// Handler for .ready() called.
|
||||||
});
|
});
|
||||||
</script>
|
</script>
|
||||||
|
<script src="/assets/js/html-email.js"></script>
|
||||||
</body>
|
</body>
|
||||||
</html>
|
</html>
|
||||||
|
@ -16,7 +16,6 @@
|
|||||||
<p>I am currently the sole creator and maintainer of the Devilbox and all of its required projects.<br/>If you find this useful or if it makes your daily programming life easier, consider donating to keep this project alive.</p>
|
<p>I am currently the sole creator and maintainer of the Devilbox and all of its required projects.<br/>If you find this useful or if it makes your daily programming life easier, consider donating to keep this project alive.</p>
|
||||||
<ul>
|
<ul>
|
||||||
<li><a target="_blank" href="https://github.com/sponsors/cytopia"><strong>GitHub sponsorship</strong></a></li>
|
<li><a target="_blank" href="https://github.com/sponsors/cytopia"><strong>GitHub sponsorship</strong></a></li>
|
||||||
<li><a target="_blank" href="https://opencollective.com/devilbox"><strong>Open Collective</strong></a></li>
|
|
||||||
<li><a target="_blank" href="https://www.patreon.com/devilbox"><strong>Patreon</strong></a></li>
|
<li><a target="_blank" href="https://www.patreon.com/devilbox"><strong>Patreon</strong></a></li>
|
||||||
</ul>
|
</ul>
|
||||||
<br/>
|
<br/>
|
||||||
@ -40,63 +39,55 @@
|
|||||||
</tr>
|
</tr>
|
||||||
<tr>
|
<tr>
|
||||||
<td><i class="fa fa-github-alt" aria-hidden="true"></i> <a target="_blank" href="https://github.com/devilbox/docker-php-fpm-5.2">docker-php-fpm-5.2</a></td>
|
<td><i class="fa fa-github-alt" aria-hidden="true"></i> <a target="_blank" href="https://github.com/devilbox/docker-php-fpm-5.2">docker-php-fpm-5.2</a></td>
|
||||||
<td>Legacy PHP 5.2 base images (<code>amd64</code> and <code>i386</code>)</td>
|
<td>Legacy PHP 5.2 base images (amd64 and i386)</td>
|
||||||
</tr>
|
</tr>
|
||||||
<tr>
|
<tr>
|
||||||
<td><i class="fa fa-github-alt" aria-hidden="true"></i> <a target="_blank" href="https://github.com/devilbox/docker-php-fpm-5.3">docker-php-fpm-5.3</a></td>
|
<td><i class="fa fa-github-alt" aria-hidden="true"></i> <a target="_blank" href="https://github.com/devilbox/docker-php-fpm-5.3">docker-php-fpm-5.3</a></td>
|
||||||
<td>Legacy PHP 5.3 base images (<code>amd64</code> and <code>arm64</code>)</td>
|
<td>Legacy PHP 5.3 base images (amd64 and arm64)</td>
|
||||||
</tr>
|
</tr>
|
||||||
<tr>
|
<tr>
|
||||||
<td><i class="fa fa-github-alt" aria-hidden="true"></i> <a target="_blank" href="https://github.com/devilbox/docker-php-fpm-5.4">docker-php-fpm-5.4</a></td>
|
<td><i class="fa fa-github-alt" aria-hidden="true"></i> <a target="_blank" href="https://github.com/devilbox/docker-php-fpm-5.4">docker-php-fpm-5.4</a></td>
|
||||||
<td>Legacy PHP 5.4 base images (<code>amd64</code> and <code>arm64</code>)</td>
|
<td>Legacy PHP 5.4 base images (amd64 and arm64)</td>
|
||||||
</tr>
|
</tr>
|
||||||
<tr>
|
<tr>
|
||||||
<td><i class="fa fa-github-alt" aria-hidden="true"></i> <a target="_blank" href="https://github.com/devilbox/docker-php-fpm-5.5">docker-php-fpm-5.5</a></td>
|
<td><i class="fa fa-github-alt" aria-hidden="true"></i> <a target="_blank" href="https://github.com/devilbox/docker-php-fpm-5.5">docker-php-fpm-5.5</a></td>
|
||||||
<td>Legacy PHP 5.5 base images (<code>amd64</code> and <code>arm64</code>)</td>
|
<td>Legacy PHP 5.5 base images (amd64 and arm64)</td>
|
||||||
</tr>
|
</tr>
|
||||||
<tr>
|
<tr>
|
||||||
<td><i class="fa fa-github-alt" aria-hidden="true"></i> <a target="_blank" href="https://github.com/devilbox/docker-php-fpm-8.0">docker-php-fpm-8.0</a></td>
|
<td><i class="fa fa-github-alt" aria-hidden="true"></i> <a target="_blank" href="https://github.com/devilbox/docker-php-fpm-8.0">docker-php-fpm-8.0</a></td>
|
||||||
<td>PHP 8.0 base images (<code>amd64</code> and <code>arm64</code>)</td>
|
<td>PHP 8.0 base images (amd64 and arm64)</td>
|
||||||
</tr>
|
</tr>
|
||||||
<tr>
|
<tr>
|
||||||
<td><i class="fa fa-github-alt" aria-hidden="true"></i> <a target="_blank" href="https://github.com/devilbox/docker-php-fpm-8.1">docker-php-fpm-8.1</a></td>
|
<td><i class="fa fa-github-alt" aria-hidden="true"></i> <a target="_blank" href="https://github.com/devilbox/docker-php-fpm-8.1">docker-php-fpm-8.1</a></td>
|
||||||
<td>PHP 8.1 base images (<code>amd64</code> and <code>arm64</code>)</td>
|
<td>PHP 8.1 base images (amd64 and arm64)</td>
|
||||||
</tr>
|
</tr>
|
||||||
<tr>
|
<tr>
|
||||||
<td><i class="fa fa-github-alt" aria-hidden="true"></i> <a target="_blank" href="https://github.com/devilbox/docker-php-fpm-8.2">docker-php-fpm-8.2</a></td>
|
<td><i class="fa fa-github-alt" aria-hidden="true"></i> <a target="_blank" href="https://github.com/devilbox/docker-php-fpm-8.2">docker-php-fpm-8.2</a></td>
|
||||||
<td>PHP 8.2 base images (<code>amd64</code> and <code>arm64</code>)</td>
|
<td>Upcoming PHP 8.2 base images (amd64 and arm64)</td>
|
||||||
</tr>
|
|
||||||
<tr>
|
|
||||||
<td><i class="fa fa-github-alt" aria-hidden="true"></i> <a target="_blank" href="https://github.com/devilbox/docker-php-fpm-8.3">docker-php-fpm-8.3</a></td>
|
|
||||||
<td>PHP 8.3 base images (<code>amd64</code> and <code>arm64</code>)</td>
|
|
||||||
</tr>
|
</tr>
|
||||||
<tr>
|
<tr>
|
||||||
<td><i class="fa fa-github-alt" aria-hidden="true"></i> <a target="_blank" href="https://github.com/devilbox/docker-php-fpm">docker-php-fpm</a></td>
|
<td><i class="fa fa-github-alt" aria-hidden="true"></i> <a target="_blank" href="https://github.com/devilbox/docker-php-fpm">docker-php-fpm</a></td>
|
||||||
<td>PHP-FPM Devilbox images (<code>amd64</code> and <code>arm64</code>)</td>
|
<td>PHP-FPM Devilbox images</td>
|
||||||
</tr>
|
|
||||||
<tr>
|
|
||||||
<td><i class="fa fa-github-alt" aria-hidden="true"></i> <a target="_blank" href="https://github.com/devilbox/docker-php-fpm-community">docker-php-fpm-community</a></td>
|
|
||||||
<td>PHP-FPM Community images (<code>amd64</code> and <code>arm64</code>)</td>
|
|
||||||
</tr>
|
</tr>
|
||||||
<tr>
|
<tr>
|
||||||
<td><i class="fa fa-github-alt" aria-hidden="true"></i> <a target="_blank" href="https://github.com/devilbox/docker-mysql">docker-mysql</a></td>
|
<td><i class="fa fa-github-alt" aria-hidden="true"></i> <a target="_blank" href="https://github.com/devilbox/docker-mysql">docker-mysql</a></td>
|
||||||
<td>MySQL, MariaDB and PerconaDB images (<code>amd64</code> and <code>arm64</code>)</td>
|
<td>MySQL, MariaDB and PerconaDB images (amd64 and arm64)</td>
|
||||||
</tr>
|
</tr>
|
||||||
<tr>
|
<tr>
|
||||||
<td><i class="fa fa-github-alt" aria-hidden="true"></i> <a target="_blank" href="https://github.com/devilbox/docker-apache-2.2">docker-apache-2.2</a></td>
|
<td><i class="fa fa-github-alt" aria-hidden="true"></i> <a target="_blank" href="https://github.com/devilbox/docker-apache-2.2">docker-apache-2.2</a></td>
|
||||||
<td>Apache 2.2 images (<code>amd64</code> and <code>arm64</code>)</td>
|
<td>Apache 2.2 images (amd64 and arm64)</td>
|
||||||
</tr>
|
</tr>
|
||||||
<tr>
|
<tr>
|
||||||
<td><i class="fa fa-github-alt" aria-hidden="true"></i> <a target="_blank" href="https://github.com/devilbox/docker-apache-2.4">docker-apache-2.4</a></td>
|
<td><i class="fa fa-github-alt" aria-hidden="true"></i> <a target="_blank" href="https://github.com/devilbox/docker-apache-2.4">docker-apache-2.4</a></td>
|
||||||
<td>Apache 2.4 images (<code>amd64</code> and <code>arm64</code>)</td>
|
<td>Apache 2.4 images (amd64 and arm64)</td>
|
||||||
</tr>
|
</tr>
|
||||||
<tr>
|
<tr>
|
||||||
<td><i class="fa fa-github-alt" aria-hidden="true"></i> <a target="_blank" href="https://github.com/devilbox/docker-nginx-stable">docker-nginx-stable</a></td>
|
<td><i class="fa fa-github-alt" aria-hidden="true"></i> <a target="_blank" href="https://github.com/devilbox/docker-nginx-stable">docker-nginx-stable</a></td>
|
||||||
<td>Nginx stable images (<code>amd64</code> and <code>arm64</code>)</td>
|
<td>Nginx stable images (amd64 and arm64)</td>
|
||||||
</tr>
|
</tr>
|
||||||
<tr>
|
<tr>
|
||||||
<td><i class="fa fa-github-alt" aria-hidden="true"></i> <a target="_blank" href="https://github.com/devilbox/docker-nginx-mainline">docker-nginx-mainline</a></td>
|
<td><i class="fa fa-github-alt" aria-hidden="true"></i> <a target="_blank" href="https://github.com/devilbox/docker-nginx-mainline">docker-nginx-mainline</a></td>
|
||||||
<td>Nginx mainline images (<code>amd64</code> and <code>arm64</code>)</td>
|
<td>Nginx mainline images (amd64 and arm64)</td>
|
||||||
</tr>
|
</tr>
|
||||||
<tr>
|
<tr>
|
||||||
<td><i class="fa fa-github-alt" aria-hidden="true"></i> <a target="_blank" href="https://github.com/devilbox/docker-haproxy">docker-haproxy</a></td>
|
<td><i class="fa fa-github-alt" aria-hidden="true"></i> <a target="_blank" href="https://github.com/devilbox/docker-haproxy">docker-haproxy</a></td>
|
||||||
@ -104,7 +95,7 @@
|
|||||||
</tr>
|
</tr>
|
||||||
<tr>
|
<tr>
|
||||||
<td><i class="fa fa-github-alt" aria-hidden="true"></i> <a target="_blank" href="https://github.com/devilbox/docker-ngrok">docker-ngrok</a></td>
|
<td><i class="fa fa-github-alt" aria-hidden="true"></i> <a target="_blank" href="https://github.com/devilbox/docker-ngrok">docker-ngrok</a></td>
|
||||||
<td>Ngrok image (<code>amd64</code> and <code>arm64</code>)</td>
|
<td>Ngrok image</td>
|
||||||
</tr>
|
</tr>
|
||||||
<tr>
|
<tr>
|
||||||
<td><i class="fa fa-github-alt" aria-hidden="true"></i> <a target="_blank" href="https://github.com/devilbox/docker-varnish">docker-varnish</a></td>
|
<td><i class="fa fa-github-alt" aria-hidden="true"></i> <a target="_blank" href="https://github.com/devilbox/docker-varnish">docker-varnish</a></td>
|
||||||
@ -151,19 +142,15 @@
|
|||||||
<td>Re-usable GitHub Action Workflows</td>
|
<td>Re-usable GitHub Action Workflows</td>
|
||||||
</tr>
|
</tr>
|
||||||
<tr>
|
<tr>
|
||||||
<td><i class="fa fa-github-alt" aria-hidden="true"></i> <a target="_blank" href="https://github.com/cytopia/shell-command-retry-action">shell-command-retry</a></td>
|
<td><i class="fa fa-github-alt" aria-hidden="true"></i> <a target="_blank" href="https://github.com/cytopia/shell-command-retry-action">shell-command-retry-action</a></td>
|
||||||
<td>GitHub Action</td>
|
<td>GitHub Action</td>
|
||||||
</tr>
|
</tr>
|
||||||
<tr>
|
<tr>
|
||||||
<td><i class="fa fa-github-alt" aria-hidden="true"></i> <a target="_blank" href="https://github.com/cytopia/docker-tag-action">docker-tag</a></td>
|
<td><i class="fa fa-github-alt" aria-hidden="true"></i> <a target="_blank" href="https://github.com/cytopia/docker-tag-action">docker-tag-action</a></td>
|
||||||
<td>GitHub Action</td>
|
<td>GitHub Action</td>
|
||||||
</tr>
|
</tr>
|
||||||
<tr>
|
<tr>
|
||||||
<td><i class="fa fa-github-alt" aria-hidden="true"></i> <a target="_blank" href="https://github.com/cytopia/git-ref-matrix-action">git-ref-matrix</a></td>
|
<td><i class="fa fa-github-alt" aria-hidden="true"></i> <a target="_blank" href="https://github.com/cytopia/git-ref-matrix-action">git-ref-matrix-action</a></td>
|
||||||
<td>GitHub Action</td>
|
|
||||||
</tr>
|
|
||||||
<tr>
|
|
||||||
<td><i class="fa fa-github-alt" aria-hidden="true"></i> <a target="_blank" href="https://github.com/cytopia/upload-artifact-verify-action">upload-artifact-verify</a></td>
|
|
||||||
<td>GitHub Action</td>
|
<td>GitHub Action</td>
|
||||||
</tr>
|
</tr>
|
||||||
<tr>
|
<tr>
|
||||||
|
@ -76,7 +76,6 @@ class Connection {
|
|||||||
|
|
||||||
// Detect version and choose appropriate database driver
|
// Detect version and choose appropriate database driver
|
||||||
switch (substr($version,0,2)) {
|
switch (substr($version,0,2)) {
|
||||||
case '15': return 'Postgres';break;
|
|
||||||
case '14': return 'Postgres';break;
|
case '14': return 'Postgres';break;
|
||||||
case '13': return 'Postgres13';break;
|
case '13': return 'Postgres13';break;
|
||||||
case '12': return 'Postgres12';break;
|
case '12': return 'Postgres12';break;
|
||||||
|
@ -24,95 +24,31 @@
|
|||||||
<tr>
|
<tr>
|
||||||
<th>Project</th>
|
<th>Project</th>
|
||||||
<th>DocumentRoot</th>
|
<th>DocumentRoot</th>
|
||||||
<th>Backend</th>
|
|
||||||
<th>Config</th>
|
<th>Config</th>
|
||||||
<th style="width:60px;">Valid</th>
|
<th>Valid</th>
|
||||||
<th style="width:260px;">URL</th>
|
<th>URL</th>
|
||||||
</tr>
|
</tr>
|
||||||
</thead>
|
</thead>
|
||||||
<tbody>
|
<tbody>
|
||||||
|
<?php
|
||||||
|
$totals = 70;
|
||||||
|
$filler = ' ';
|
||||||
|
for ($i=0; $i<$totals; $i++) {
|
||||||
|
$filler = $filler. ' ';
|
||||||
|
}
|
||||||
|
?>
|
||||||
<?php foreach ($vHosts as $vHost): ?>
|
<?php foreach ($vHosts as $vHost): ?>
|
||||||
<tr>
|
<tr>
|
||||||
<td><?php echo $vHost['name'];?></td>
|
<td><?php echo $vHost['name'];?></td>
|
||||||
<td><?php echo loadClass('Helper')->getEnv('HOST_PATH_HTTPD_DATADIR');?>/<?php echo $vHost['name'];?>/<?php echo loadClass('Helper')->getEnv('HTTPD_DOCROOT_DIR');?></td>
|
<td><?php echo loadClass('Helper')->getEnv('HOST_PATH_HTTPD_DATADIR');?>/<?php echo $vHost['name'];?>/<?php echo loadClass('Helper')->getEnv('HTTPD_DOCROOT_DIR');?></td>
|
||||||
<td><?php echo loadClass('Httpd')->getVhostBackend($vHost['name']); ?></td>
|
|
||||||
<td>
|
<td>
|
||||||
<?php $id_vhost_httpd = str_replace('=', '', base64_encode('vhost_httpd_conf_' . $vHost['name'])); ?>
|
<a title="Virtual host: <?php echo $vHost['name'];?>.conf" target="_blank" href="/vhost.d/<?php echo $vHost['name'];?>.conf"><i class="fa fa-cog" aria-hidden="true"></i></a>
|
||||||
<?php $id_vhost_vhostgen = str_replace('=', '', base64_encode('vhost_vhost_gen_' . $vHost['name'])); ?>
|
<?php if (($vhostGen = loadClass('Httpd')->getVhostgenTemplatePath($vHost['name'])) !== false): ?>
|
||||||
|
<a title="vhost-gen: <?php echo basename($vhostGen);?> for <?php echo $vHost['name'];?>" href="/info_vhostgen.php?name=<?php echo $vHost['name'];?>"><i class="fa fa-filter" aria-hidden="true"></i></a>
|
||||||
<!-- [httpd.conf] Button trigger modal -->
|
|
||||||
<a href="#"><i class="fa fa-cog" aria-hidden="true" data-toggle="modal" data-target="#<?php echo $id_vhost_httpd;?>"></i></a>
|
|
||||||
<!-- [httpd.conf] Modal -->
|
|
||||||
<div class="modal" id="<?php echo $id_vhost_httpd;?>" tabindex="-1" role="dialog" aria-labelledby="<?php echo $id_vhost_httpd;?>Label" aria-hidden="true">
|
|
||||||
<div class="modal-dialog modal-lg" role="document">
|
|
||||||
<div class="modal-content">
|
|
||||||
<div class="modal-header">
|
|
||||||
<h5 class="modal-title" id="<?php echo $id_vhost_httpd;?>Label"><?php echo '<strong>httpd.conf: </strong><code>'.$vHost['name'].'.'.loadClass('Httpd')->getTldSuffix(). '</code>'; ?></h5>
|
|
||||||
<button type="button" class="close" data-dismiss="modal" aria-label="Close">
|
|
||||||
<span aria-hidden="true">×</span>
|
|
||||||
</button>
|
|
||||||
</div>
|
|
||||||
<div class="modal-body">
|
|
||||||
<?php $url = (isset($_SERVER['HTTPS']) && $_SERVER['HTTPS'] === 'on' ? "https" : "http") . "://$_SERVER[HTTP_HOST]"; ?>
|
|
||||||
<?php $src = file_get_contents($url.'/vhost.d/' . $vHost['name'] . '.conf'); ?>
|
|
||||||
<?php //$src = htmlentities($src); ?>
|
|
||||||
<?php $src = str_replace('<', '<', $src); ?>
|
|
||||||
<?php $src = str_replace('>', '>', $src); ?>
|
|
||||||
<?php $src = preg_replace('/<(\/?.*)>/m', '<strong><\1></strong>', $src); // Apache directives ?>
|
|
||||||
<?php $src = preg_replace('/(.*{\s*)$/m', '<strong>\1</strong>', $src); // Nginx directives ?>
|
|
||||||
<?php $src = preg_replace('/^(\s*}\s*)$/m', '<strong>\1</strong>', $src); // Nginx directives ?>
|
|
||||||
<?php //$src = preg_replace('/"(.+)"/m', '<span style="color: blue;">"\1"</span>', $src); ?>
|
|
||||||
<?php $src = preg_replace('/^(\s*(?!<#)[^#"]*)"(.*)"/m', '\1<span style="color: blue;">"\2"</span>', $src); // double quotes?>
|
|
||||||
<?php $src = preg_replace("/^(\s*(?!<#)[^#']*)'(.*)'/m", '\1<span style="color: blue;">"\2"</span>', $src); // single quotes ?>
|
|
||||||
<?php $src = preg_replace('/^(\s*#)(.*)$/m', '<span style="color: gray;">\1\2</span>', $src); // comments ?>
|
|
||||||
<?php echo '<pre><code>' . $src . '</code></pre>';?>
|
|
||||||
</div>
|
|
||||||
<div class="modal-footer">
|
|
||||||
<button type="button" class="btn btn-secondary" data-dismiss="modal">Close</button>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<?php if (($vhostGenPath = loadClass('Httpd')->getVhostgenTemplatePath($vHost['name'])) !== false): ?>
|
|
||||||
<!-- [vhost-gen] Button trigger modal -->
|
|
||||||
<a href="#"><i class="fa fa-filter" aria-hidden="true" data-toggle="modal" data-target="#<?php echo $id_vhost_vhostgen;?>"></i></a>
|
|
||||||
<!-- [vhost-gen] Modal -->
|
|
||||||
<div class="modal" id="<?php echo $id_vhost_vhostgen;?>" tabindex="-1" role="dialog" aria-labelledby="<?php echo $id_vhost_vhostgen;?>Label" aria-hidden="true">
|
|
||||||
<div class="modal-dialog modal-lg" role="document">
|
|
||||||
<div class="modal-content">
|
|
||||||
<div class="modal-header">
|
|
||||||
<h5 class="modal-title" id="<?php echo $id_vhost_vhostgen;?>Label"><?php echo '<code>'.$vhostGenPath.'</code>'; ?></h5>
|
|
||||||
<button type="button" class="close" data-dismiss="modal" aria-label="Close">
|
|
||||||
<span aria-hidden="true">×</span>
|
|
||||||
</button>
|
|
||||||
</div>
|
|
||||||
<div class="modal-body">
|
|
||||||
<?php $src = file_get_contents($vhostGenPath); ?>
|
|
||||||
<?php //$src = htmlentities($src); ?>
|
|
||||||
<?php $src = str_replace('<', '<', $src); ?>
|
|
||||||
<?php $src = str_replace('>', '>', $src); ?>
|
|
||||||
<?php $src = preg_replace('/<(\/?.*)>/m', '<strong><\1></strong>', $src); // Apache directives ?>
|
|
||||||
<?php $src = preg_replace('/(.*{\s*)$/m', '<strong>\1</strong>', $src); // Nginx directives ?>
|
|
||||||
<?php $src = preg_replace('/^(\s*}\s*)$/m', '<strong>\1</strong>', $src); // Nginx directives ?>
|
|
||||||
<?php //$src = preg_replace('/"(.+)"/m', '<span style="color: blue;">"\1"</span>', $src); ?>
|
|
||||||
<?php //$src = preg_replace("/'(.+)'/m", '<span style="color: blue;">'."'".'\1'."'".'</span>', $src); ?>
|
|
||||||
<?php $src = preg_replace('/^(\s*(?!<#)[^#"]*)"(.*)"/m', '\1<span style="color: blue;">"\2"</span>', $src); // double quotes ?>
|
|
||||||
<?php $src = preg_replace("/^(\s*(?!<#)[^#']*)'(.*)'/m", '\1<span style="color: blue;">"\2"</span>', $src); // single quotes ?>
|
|
||||||
<?php $src = preg_replace('/^(\s*#)(.*)$/m', '<span style="color: gray;">\1\2</span>', $src); // comments ?>
|
|
||||||
<?php $src = preg_replace('/^(\s*[_a-z]+):/m', '<span style="color: green;"><strong>\1</strong></span>:', $src); // yaml keys ?>
|
|
||||||
<?php $src = preg_replace('/(__[_A-Z]+__)/m', '<span style="color: red;">\1</span>', $src); // variables ?>
|
|
||||||
<?php echo '<pre><code>' . $src . '</code></pre>';?>
|
|
||||||
</div>
|
|
||||||
<div class="modal-footer">
|
|
||||||
<button type="button" class="btn btn-secondary" data-dismiss="modal">Close</button>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<?php endif; ?>
|
<?php endif; ?>
|
||||||
</td>
|
</td>
|
||||||
<td class="text-xs-center text-xs-small" id="valid-<?php echo $vHost['name'];?>"></td>
|
<td class="text-xs-center text-xs-small" id="valid-<?php echo $vHost['name'];?>"> </td>
|
||||||
<td id="href-<?php echo $vHost['name'];?>"></td>
|
<td id="href-<?php echo $vHost['name'];?>"><?php echo $filler;?></td>
|
||||||
</tr>
|
</tr>
|
||||||
<input type="hidden" name="vhost[]" class="vhost" value="<?php echo $vHost['name'];?>" />
|
<input type="hidden" name="vhost[]" class="vhost" value="<?php echo $vHost['name'];?>" />
|
||||||
<?php endforeach; ?>
|
<?php endforeach; ?>
|
||||||
@ -127,60 +63,6 @@
|
|||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<?php
|
|
||||||
$cmd="netstat -wneeplt 2>/dev/null | sort | grep '\s1000\s' | awk '{print \"app=\"\$9\"|addr=\"\$4}' | sed 's/\(app=\)\([0-9]*\/\)/\\1/g' | sed 's/\(.*\)\(:[0-9][0-9]*\)/\\1|port=\\2/g' | sed 's/port=:/port=/g'";
|
|
||||||
$output=loadClass('Helper')->exec($cmd);
|
|
||||||
$daemons = array();
|
|
||||||
foreach (preg_split("/((\r?\n)|(\r\n?))/", $output) as $line) {
|
|
||||||
$section = preg_split("/\|/", $line);
|
|
||||||
if (count($section) == 3) {
|
|
||||||
$tool = preg_split("/=/", $section[0]);
|
|
||||||
$addr = preg_split("/=/", $section[1]);
|
|
||||||
$port = preg_split("/=/", $section[2]);
|
|
||||||
$tool = $tool[1];
|
|
||||||
$addr = $addr[1];
|
|
||||||
$port = $port[1];
|
|
||||||
$daemons[] = array(
|
|
||||||
'tool' => $tool,
|
|
||||||
'addr' => $addr,
|
|
||||||
'port' => $port
|
|
||||||
);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
?>
|
|
||||||
<?php if (count($daemons)): ?>
|
|
||||||
<br/>
|
|
||||||
<br/>
|
|
||||||
<div class="row">
|
|
||||||
<div class="col-md-12">
|
|
||||||
|
|
||||||
<h2>Local listening daemons</h2>
|
|
||||||
<table class="table table-striped">
|
|
||||||
<thead class="thead-inverse">
|
|
||||||
<tr>
|
|
||||||
<th>Application</th>
|
|
||||||
<th>Listen Address</th>
|
|
||||||
<th>Listen Port</th>
|
|
||||||
<th>Host</th>
|
|
||||||
</tr>
|
|
||||||
</thead>
|
|
||||||
<tbody>
|
|
||||||
<?php foreach ($daemons as $daemon): ?>
|
|
||||||
<tr>
|
|
||||||
<td><?php echo $daemon['tool']; ?></td>
|
|
||||||
<td><?php echo $daemon['addr']; ?></td>
|
|
||||||
<td><?php echo $daemon['port']; ?></td>
|
|
||||||
<td>php (172.16.238.10)</td>
|
|
||||||
</tr>
|
|
||||||
<?php endforeach; ?>
|
|
||||||
</tbody>
|
|
||||||
</table>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<?php endif; ?>
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
</div><!-- /.container -->
|
</div><!-- /.container -->
|
||||||
|
|
||||||
<?php echo loadClass('Html')->getFooter(); ?>
|
<?php echo loadClass('Html')->getFooter(); ?>
|
||||||
@ -199,7 +81,7 @@
|
|||||||
var el_valid;
|
var el_valid;
|
||||||
var el_href;
|
var el_href;
|
||||||
|
|
||||||
if (this.readyState == 4 && this.status == 200 || this.status == 426) {
|
if (this.readyState == 4 && this.status == 200) {
|
||||||
el_valid = document.getElementById('valid-' + vhost);
|
el_valid = document.getElementById('valid-' + vhost);
|
||||||
el_href = document.getElementById('href-' + vhost);
|
el_href = document.getElementById('href-' + vhost);
|
||||||
error = this.responseText;
|
error = this.responseText;
|
||||||
@ -245,14 +127,13 @@
|
|||||||
var el_href = document.getElementById('href-' + vhost);
|
var el_href = document.getElementById('href-' + vhost);
|
||||||
var error = this.responseText;
|
var error = this.responseText;
|
||||||
|
|
||||||
if (this.readyState == 4 && (this.status == 200 || this.status == 426)) {
|
if (this.readyState == 4 && this.status == 200) {
|
||||||
clearTimeout(xmlHttpTimeout);
|
clearTimeout(xmlHttpTimeout);
|
||||||
el_valid.className += ' bg-success';
|
el_valid.className += ' bg-success';
|
||||||
if (el_valid.innerHTML != 'WARN') {
|
if (el_valid.innerHTML != 'WARN') {
|
||||||
el_valid.innerHTML = 'OK';
|
el_valid.innerHTML = 'OK';
|
||||||
}
|
}
|
||||||
//el_href.innerHTML = '(<a target="_blank" href="'+proto+'//localhost/devilbox-project/'+name+'">ext</a>) <a target="_blank" href="'+proto+'//'+name+port+'">'+name+port+'</a>' + el_href.innerHTML;
|
el_href.innerHTML = '<a target="_blank" href="'+proto+'//'+name+port+'">'+name+port+'</a>' + el_href.innerHTML;
|
||||||
el_href.innerHTML = '<a target="_blank" href="'+proto+'//'+name+port+'">'+name+port+'</a>';
|
|
||||||
} else {
|
} else {
|
||||||
//console.log(vhost);
|
//console.log(vhost);
|
||||||
}
|
}
|
||||||
|
@ -18,10 +18,6 @@ class Html
|
|||||||
'name' => 'Virtual Hosts',
|
'name' => 'Virtual Hosts',
|
||||||
'path' => '/vhosts.php'
|
'path' => '/vhosts.php'
|
||||||
),
|
),
|
||||||
array(
|
|
||||||
'name' => 'C&C',
|
|
||||||
'path' => '/cnc.php'
|
|
||||||
),
|
|
||||||
array(
|
array(
|
||||||
'name' => 'Emails',
|
'name' => 'Emails',
|
||||||
'path' => '/mail.php'
|
'path' => '/mail.php'
|
||||||
@ -267,7 +263,7 @@ HTML;
|
|||||||
<nav class="navbar navbar-toggleable-md navbar-inverse bg-inverse footer">
|
<nav class="navbar navbar-toggleable-md navbar-inverse bg-inverse footer">
|
||||||
<div class="container justify-content-end">
|
<div class="container justify-content-end">
|
||||||
<ul class="nav navbar-nav">
|
<ul class="nav navbar-nav">
|
||||||
<li class="nav-item nav-link">Render time: {$render_time} sec</li>
|
<li class="nav-item nav-link">Render time: ${render_time} sec</li>
|
||||||
<li class="nav-item"><a class="nav-link" target="_blank" href="https://github.com/cytopia/devilbox"><code>Github</code></a></li>
|
<li class="nav-item"><a class="nav-link" target="_blank" href="https://github.com/cytopia/devilbox"><code>Github</code></a></li>
|
||||||
<li class="nav-item"><a class="nav-link" href="/credits.php"><code>Credits</code></a></li>
|
<li class="nav-item"><a class="nav-link" href="/credits.php"><code>Credits</code></a></li>
|
||||||
<li class="nav-item"><a class="nav-link" href="/support.php"><code>Support</code></a></li>
|
<li class="nav-item"><a class="nav-link" href="/support.php"><code>Support</code></a></li>
|
||||||
|
@ -70,22 +70,6 @@ class Mail
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Returns a single message
|
|
||||||
*
|
|
||||||
* @param int $messageIndex The zero-based index of the message to return.
|
|
||||||
*/
|
|
||||||
public function getMessage($messageIndex){
|
|
||||||
$message = $this->_Mbox->get($messageIndex);
|
|
||||||
$Decoder = new \Mail_mimeDecode($message, "\r\n");
|
|
||||||
return array(
|
|
||||||
'num' => $messageIndex + 1,
|
|
||||||
'raw' => $message,
|
|
||||||
'decoded' => $Decoder->decode($this->_defaultMimeParams)
|
|
||||||
);
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Retrieve emails.
|
* Retrieve emails.
|
||||||
*
|
*
|
||||||
@ -103,7 +87,13 @@ class Mail
|
|||||||
|
|
||||||
// Get messages in reverse order (last entry first)
|
// Get messages in reverse order (last entry first)
|
||||||
for ($n = $total; $n >= 0; --$n) {
|
for ($n = $total; $n >= 0; --$n) {
|
||||||
$messages[] = $this->getMessage($n);
|
$message = $this->_Mbox->get($n);
|
||||||
|
$Decoder = new \Mail_mimeDecode($message, "\r\n");
|
||||||
|
$messages[] = array(
|
||||||
|
'num' => $n + 1,
|
||||||
|
'raw' => $message,
|
||||||
|
'decoded' => $Decoder->decode($this->_defaultMimeParams)
|
||||||
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
// Optionally sort messages
|
// Optionally sort messages
|
||||||
|
@ -29,19 +29,11 @@ class Httpd extends BaseClass implements BaseInterface
|
|||||||
$url = 'http://'.$domain;
|
$url = 'http://'.$domain;
|
||||||
$error = array();
|
$error = array();
|
||||||
|
|
||||||
|
|
||||||
$backend = $this->getVhostBackend($vhost);
|
|
||||||
$pos_def = strpos($backend, 'default');
|
|
||||||
$pos_phpfpm = strpos($backend, 'tcp://');
|
|
||||||
|
|
||||||
// Only if backend 'default' or 'phpfpm', we need a htdocs/ directory
|
|
||||||
if ( ($pos_def !== false && $pos_def == 0) || ($pos_phpfpm !== false && $pos_phpfpm == 0) ) {
|
|
||||||
// 1. Check htdocs folder
|
// 1. Check htdocs folder
|
||||||
if (!$this->_is_valid_dir($docroot)) {
|
if (!$this->_is_valid_dir($docroot)) {
|
||||||
$error[] = 'error';
|
$error[] = 'error';
|
||||||
$error[] = 'Missing <strong>'.$htdocs.'</strong> directory in: <strong>'.loadClass('Helper')->getEnv('HOST_PATH_HTTPD_DATADIR').'/'.$vhost.'/</strong>';
|
$error[] = 'Missing <strong>'.$htdocs.'</strong> directory in: <strong>'.loadClass('Helper')->getEnv('HOST_PATH_HTTPD_DATADIR').'/'.$vhost.'/</strong>';
|
||||||
}
|
}
|
||||||
}
|
|
||||||
|
|
||||||
// 2. Check internal DNS server
|
// 2. Check internal DNS server
|
||||||
$err = false;
|
$err = false;
|
||||||
@ -204,33 +196,6 @@ class Httpd extends BaseClass implements BaseInterface
|
|||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
public function getVhostBackend($vhost)
|
|
||||||
{
|
|
||||||
$dir = loadClass('Helper')->getEnv('HTTPD_TEMPLATE_DIR');
|
|
||||||
$name = 'backend.cfg';
|
|
||||||
$file = '/shared/httpd/'.$vhost.'/'.$dir.'/'.$name;
|
|
||||||
if (!file_exists($file)) {
|
|
||||||
return 'default';
|
|
||||||
}
|
|
||||||
|
|
||||||
$fp = fopen($file, 'r');
|
|
||||||
$cont = stream_get_contents($fp);
|
|
||||||
fclose($fp);
|
|
||||||
|
|
||||||
// conf:<type>:<proto>:<server>:<port>
|
|
||||||
$arr = explode(':', $cont);
|
|
||||||
|
|
||||||
$type = $arr[1];
|
|
||||||
$prot = $arr[2];
|
|
||||||
$addr = ''; // this may contain ':' itself due to IPv6 addresses
|
|
||||||
for ($i=3; $i<(count($arr)-1); $i++) {
|
|
||||||
$addr .= $arr[$i];
|
|
||||||
}
|
|
||||||
$port = $arr[count($arr) - 1];
|
|
||||||
|
|
||||||
return $prot.'://'.$addr.':'.$port;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
/*********************************************************************************
|
/*********************************************************************************
|
||||||
*
|
*
|
||||||
|
@ -71,8 +71,7 @@ class Pgsql extends BaseClass implements BaseInterface
|
|||||||
public function __destruct()
|
public function __destruct()
|
||||||
{
|
{
|
||||||
if ($this->_link) {
|
if ($this->_link) {
|
||||||
// DO NOT CLOSE. It is kind of shared.
|
pg_close($this->_link);
|
||||||
//pg_close($this->_link);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -149,7 +148,7 @@ class Pgsql extends BaseClass implements BaseInterface
|
|||||||
// Get schemas for each database
|
// Get schemas for each database
|
||||||
foreach ($databases as $name => &$database) {
|
foreach ($databases as $name => &$database) {
|
||||||
$PSQL = new Pgsql(
|
$PSQL = new Pgsql(
|
||||||
$GLOBALS['PGSQL_HOST_NAME'],
|
$this->getIpAddress(),
|
||||||
array(
|
array(
|
||||||
'user' => loadClass('Helper')->getEnv('PGSQL_ROOT_USER'),
|
'user' => loadClass('Helper')->getEnv('PGSQL_ROOT_USER'),
|
||||||
'pass' => loadClass('Helper')->getEnv('PGSQL_ROOT_PASSWORD'),
|
'pass' => loadClass('Helper')->getEnv('PGSQL_ROOT_PASSWORD'),
|
||||||
@ -180,7 +179,7 @@ class Pgsql extends BaseClass implements BaseInterface
|
|||||||
public function getSchemaSize($database, $schema)
|
public function getSchemaSize($database, $schema)
|
||||||
{
|
{
|
||||||
$PSQL = new Pgsql(
|
$PSQL = new Pgsql(
|
||||||
$GLOBALS['PGSQL_HOST_NAME'],
|
$this->getIpAddress(),
|
||||||
array(
|
array(
|
||||||
'user' => loadClass('Helper')->getEnv('PGSQL_ROOT_USER'),
|
'user' => loadClass('Helper')->getEnv('PGSQL_ROOT_USER'),
|
||||||
'pass' => loadClass('Helper')->getEnv('PGSQL_ROOT_PASSWORD'),
|
'pass' => loadClass('Helper')->getEnv('PGSQL_ROOT_PASSWORD'),
|
||||||
@ -218,7 +217,7 @@ class Pgsql extends BaseClass implements BaseInterface
|
|||||||
public function getTableCount($database, $schema)
|
public function getTableCount($database, $schema)
|
||||||
{
|
{
|
||||||
$PSQL = new Pgsql(
|
$PSQL = new Pgsql(
|
||||||
$GLOBALS['PGSQL_HOST_NAME'],
|
$this->getIpAddress(),
|
||||||
array(
|
array(
|
||||||
'user' => loadClass('Helper')->getEnv('PGSQL_ROOT_USER'),
|
'user' => loadClass('Helper')->getEnv('PGSQL_ROOT_USER'),
|
||||||
'pass' => loadClass('Helper')->getEnv('PGSQL_ROOT_PASSWORD'),
|
'pass' => loadClass('Helper')->getEnv('PGSQL_ROOT_PASSWORD'),
|
||||||
|
@ -35,19 +35,9 @@ class Php extends BaseClass implements BaseInterface
|
|||||||
$uid = loadClass('Helper')->egrep('/[0-9]+/', $uid);
|
$uid = loadClass('Helper')->egrep('/[0-9]+/', $uid);
|
||||||
return $uid;
|
return $uid;
|
||||||
}
|
}
|
||||||
public function getAngularCliVersion()
|
public function getGitVersion()
|
||||||
{
|
{
|
||||||
$output = loadClass('Helper')->exec('ng version 2>/dev/null | grep -i "^Angular CLI" | head -1', $output);
|
$output = loadClass('Helper')->exec('git --version 2>/dev/null', $output);
|
||||||
return loadClass('Helper')->egrep('/[0-9.]+/', $output);
|
|
||||||
}
|
|
||||||
public function getAsgardCmsInstallerVersion()
|
|
||||||
{
|
|
||||||
$output = loadClass('Helper')->exec('asgardcms --version --no-ansi 2>/dev/null', $output);
|
|
||||||
return loadClass('Helper')->egrep('/[0-9.]+/', $output);
|
|
||||||
}
|
|
||||||
public function getCodeceptionVersion()
|
|
||||||
{
|
|
||||||
$output = loadClass('Helper')->exec('codecept --version --no-ansi 2>/dev/null | grep -i ^Codecept', $output);
|
|
||||||
return loadClass('Helper')->egrep('/[0-9.]+/', $output);
|
return loadClass('Helper')->egrep('/[0-9.]+/', $output);
|
||||||
}
|
}
|
||||||
public function getComposerVersion()
|
public function getComposerVersion()
|
||||||
@ -55,45 +45,15 @@ class Php extends BaseClass implements BaseInterface
|
|||||||
$output = loadClass('Helper')->exec('composer --version 2>/dev/null', $output);
|
$output = loadClass('Helper')->exec('composer --version 2>/dev/null', $output);
|
||||||
return loadClass('Helper')->egrep('/[0-9.]+/', $output);
|
return loadClass('Helper')->egrep('/[0-9.]+/', $output);
|
||||||
}
|
}
|
||||||
public function getDeployerVersion()
|
public function getDrushVersion($version)
|
||||||
{
|
{
|
||||||
$output = loadClass('Helper')->exec('dep --version --no-ansi 2>/dev/null | grep -i ^Deploy', $output);
|
$output = loadClass('Helper')->exec('drush'.$version.' --version 2>/dev/null', $output);
|
||||||
return loadClass('Helper')->egrep('/[0-9.]+/', $output);
|
return loadClass('Helper')->egrep('/[0-9.]+/', $output);
|
||||||
}
|
}
|
||||||
public function getGitVersion()
|
public function getDrupalConsoleVersion()
|
||||||
{
|
{
|
||||||
$output = loadClass('Helper')->exec('git --version 2>/dev/null', $output);
|
$output = loadClass('Helper')->exec('drupal --version 2>/dev/null | sed -r "s/\x1B\[([0-9]{1,2}(;[0-9]{1,2})?)?[mGK]//g"', $output);
|
||||||
return loadClass('Helper')->egrep('/[0-9.]+/', $output);
|
return loadClass('Helper')->egrep('/[0-9.]+[-rc0-9.]*/', $output);
|
||||||
}
|
|
||||||
public function getGruntCliVersion()
|
|
||||||
{
|
|
||||||
$output = loadClass('Helper')->exec('grunt --version 2>/dev/null', $output);
|
|
||||||
return loadClass('Helper')->egrep('/[0-9.]+/', $output);
|
|
||||||
}
|
|
||||||
public function getGulpVersion()
|
|
||||||
{
|
|
||||||
$output = loadClass('Helper')->exec('gulp --version --no-color 2>/dev/null | head -1', $output);
|
|
||||||
return loadClass('Helper')->egrep('/[0-9.]+/', $output);
|
|
||||||
}
|
|
||||||
public function getLaravelInstallerVersion()
|
|
||||||
{
|
|
||||||
$output = loadClass('Helper')->exec('laravel --version --no-ansi 2>/dev/null', $output);
|
|
||||||
return loadClass('Helper')->egrep('/[0-9.]+/', $output);
|
|
||||||
}
|
|
||||||
public function getLaravelLumenVersion()
|
|
||||||
{
|
|
||||||
$output = loadClass('Helper')->exec('lumen --version --no-ansi 2>/dev/null', $output);
|
|
||||||
return loadClass('Helper')->egrep('/[0-9.]+/', $output);
|
|
||||||
}
|
|
||||||
public function getMdsVersion()
|
|
||||||
{
|
|
||||||
$output = loadClass('Helper')->exec('mysqldump-secure --version 2>/dev/null', $output);
|
|
||||||
return loadClass('Helper')->egrep('/[0-9.]+/', $output);
|
|
||||||
}
|
|
||||||
public function getMupdfToolsVersion()
|
|
||||||
{
|
|
||||||
$output = loadClass('Helper')->exec('mutool -v 2>&1', $output);
|
|
||||||
return loadClass('Helper')->egrep('/[0-9.]+/', $output);
|
|
||||||
}
|
}
|
||||||
public function getNodeVersion()
|
public function getNodeVersion()
|
||||||
{
|
{
|
||||||
@ -105,61 +65,31 @@ class Php extends BaseClass implements BaseInterface
|
|||||||
$output = loadClass('Helper')->exec('npm --version 2>/dev/null', $output);
|
$output = loadClass('Helper')->exec('npm --version 2>/dev/null', $output);
|
||||||
return loadClass('Helper')->egrep('/[0-9.]+/', $output);
|
return loadClass('Helper')->egrep('/[0-9.]+/', $output);
|
||||||
}
|
}
|
||||||
public function getPhalconDevtoolsVersion()
|
public function getLaravelVersion()
|
||||||
|
{
|
||||||
|
$output = loadClass('Helper')->exec('laravel --version 2>/dev/null', $output);
|
||||||
|
return loadClass('Helper')->egrep('/[0-9.]+/', $output);
|
||||||
|
}
|
||||||
|
public function getMdsVersion()
|
||||||
|
{
|
||||||
|
$output = loadClass('Helper')->exec('mysqldump-secure --version 2>/dev/null', $output);
|
||||||
|
return loadClass('Helper')->egrep('/[0-9.]+/', $output);
|
||||||
|
}
|
||||||
|
public function getPhalconVersion()
|
||||||
{
|
{
|
||||||
$output = loadClass('Helper')->exec('phalcon --version 2>/dev/null', $output);
|
$output = loadClass('Helper')->exec('phalcon --version 2>/dev/null', $output);
|
||||||
return loadClass('Helper')->egrep('/[0-9.]+/', $output);
|
return loadClass('Helper')->egrep('/[0-9.]+/', $output);
|
||||||
}
|
}
|
||||||
public function getPhpunitVersion()
|
public function getSymfonyVersion()
|
||||||
{
|
|
||||||
$output = loadClass('Helper')->exec('phpunit --version 2>/dev/null', $output);
|
|
||||||
return loadClass('Helper')->egrep('/[0-9.]+/', $output);
|
|
||||||
}
|
|
||||||
public function getStylelintVersion()
|
|
||||||
{
|
|
||||||
$output = loadClass('Helper')->exec('stylelint --version 2>/dev/null', $output);
|
|
||||||
return loadClass('Helper')->egrep('/[0-9.]+/', $output);
|
|
||||||
}
|
|
||||||
public function getSymfonyCliVersion()
|
|
||||||
{
|
{
|
||||||
$output = loadClass('Helper')->exec('symfony -V 2>/dev/null | tr -d "[:cntrl:]" | sed "s/\[[0-9]*m//g"', $output);
|
$output = loadClass('Helper')->exec('symfony -V 2>/dev/null | tr -d "[:cntrl:]" | sed "s/\[[0-9]*m//g"', $output);
|
||||||
return loadClass('Helper')->egrep('/[0-9.]+/', $output);
|
return loadClass('Helper')->egrep('/[0-9.]+/', $output);
|
||||||
}
|
}
|
||||||
public function getVueCliVersion()
|
|
||||||
{
|
|
||||||
$output = loadClass('Helper')->exec('vue --version 2>/dev/null', $output);
|
|
||||||
return loadClass('Helper')->egrep('/[0-9.]+/', $output);
|
|
||||||
}
|
|
||||||
public function getWebpackCliVersion()
|
|
||||||
{
|
|
||||||
$output = loadClass('Helper')->exec('webpack-cli --version --no-stats --no-target --no-watch --no-color 2>/dev/null | grep webpack-cli', $output);
|
|
||||||
return loadClass('Helper')->egrep('/[0-9.]+/', $output);
|
|
||||||
}
|
|
||||||
public function getWpcliVersion()
|
public function getWpcliVersion()
|
||||||
{
|
{
|
||||||
$output = loadClass('Helper')->exec('wp --version 2>/dev/null | grep -i ^WP', $output);
|
$output = loadClass('Helper')->exec('wp --version 2>/dev/null', $output);
|
||||||
return loadClass('Helper')->egrep('/[0-9.]+/', $output);
|
return loadClass('Helper')->egrep('/[0-9.]+/', $output);
|
||||||
}
|
}
|
||||||
public function getWscatVersion()
|
|
||||||
{
|
|
||||||
$output = loadClass('Helper')->exec('wscat --version 2>/dev/null | head -1', $output);
|
|
||||||
return loadClass('Helper')->egrep('/[0-9.]+/', $output);
|
|
||||||
}
|
|
||||||
public function getYarnVersion()
|
|
||||||
{
|
|
||||||
$output = loadClass('Helper')->exec('yarn --version 2>/dev/null', $output);
|
|
||||||
return loadClass('Helper')->egrep('/[0-9.]+/', $output);
|
|
||||||
}
|
|
||||||
//public function getDrushVersion($version)
|
|
||||||
//{
|
|
||||||
// $output = loadClass('Helper')->exec('drush'.$version.' --version 2>/dev/null', $output);
|
|
||||||
// return loadClass('Helper')->egrep('/[0-9.]+/', $output);
|
|
||||||
//}
|
|
||||||
//public function getDrupalConsoleVersion()
|
|
||||||
//{
|
|
||||||
// $output = loadClass('Helper')->exec('drupal --version 2>/dev/null | sed -r "s/\x1B\[([0-9]{1,2}(;[0-9]{1,2})?)?[mGK]//g"', $output);
|
|
||||||
// return loadClass('Helper')->egrep('/[0-9.]+[-rc0-9.]*/', $output);
|
|
||||||
//}
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
@ -832,12 +832,10 @@ class Mail_mimeDecode extends PEAR
|
|||||||
// Remove soft line breaks
|
// Remove soft line breaks
|
||||||
$input = preg_replace("/=\r?\n/", '', $input);
|
$input = preg_replace("/=\r?\n/", '', $input);
|
||||||
|
|
||||||
|
// cytopia edit
|
||||||
if (version_compare(PHP_VERSION, '7.2.0', '>=')) {
|
if (version_compare(PHP_VERSION, '7.2.0', '>=')) {
|
||||||
$cb = function($matches) {
|
$cb = function($matches) {
|
||||||
// cytopia edit (added ctype_xdigit() check around)
|
|
||||||
if (ctype_xdigit($matches[0])) {
|
|
||||||
return chr(hexdec($matches[0]));
|
return chr(hexdec($matches[0]));
|
||||||
}
|
|
||||||
};
|
};
|
||||||
} else {
|
} else {
|
||||||
// Replace encoded characters
|
// Replace encoded characters
|
||||||
|
85
.github/ISSUE_TEMPLATE/bug_report.md
vendored
Normal file
85
.github/ISSUE_TEMPLATE/bug_report.md
vendored
Normal file
@ -0,0 +1,85 @@
|
|||||||
|
---
|
||||||
|
name: "\U0001F41B Bug report"
|
||||||
|
about: Something is not working? Create a report to help us improve
|
||||||
|
title: ''
|
||||||
|
labels: bug
|
||||||
|
assignees: ''
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
<!---
|
||||||
|
1. Verify first that your issue/request is not already reported on GitHub.
|
||||||
|
|
||||||
|
2. Verify that your question is not covered in the docs: https://devilbox.readthedocs.io
|
||||||
|
|
||||||
|
3. PLEASE FILL OUT ALL REQUIRED INFORMATION BELOW! Otherwise it might take more time to properly handle this bug report.
|
||||||
|
-->
|
||||||
|
|
||||||
|
|
||||||
|
### ISSUE TYPE
|
||||||
|
<!-- DO NOT CHANGE THIS -->
|
||||||
|
- Bug Report
|
||||||
|
<!-- DO NOT CHANGE THIS -->
|
||||||
|
|
||||||
|
|
||||||
|
### Checklist
|
||||||
|
<!-- ENSURE YOU HAVE DONE THE FOLLOWING -->
|
||||||
|
* [ ] `.env` file is attached
|
||||||
|
* [ ] `./check-config.sh` output is added below
|
||||||
|
* [ ] `docker-compose logs` output is added below
|
||||||
|
* [ ] `docker-compose.override.yml` is attached (if exists)
|
||||||
|
* [ ] Custom configs from `cfg/` dir are attached (if exist)
|
||||||
|
* [ ] I've looked through the docs: https://devilbox.readthedocs.io/en/latest/
|
||||||
|
* [ ] I've looked through existing issues: https://github.com/cytopia/devilbox/issues
|
||||||
|
* [ ] I've read troubleshooting: https://devilbox.readthedocs.io/en/latest/support/troubleshooting.html
|
||||||
|
|
||||||
|
|
||||||
|
### OS / ENVIRONMENT
|
||||||
|
<!-- COMPLETE ALL 6 BULLET POINTS BELOW: -->
|
||||||
|
1. Host operating system and version:
|
||||||
|
2. (Windows only) Native Docker or Docker Toolbox:
|
||||||
|
3. Docker version:
|
||||||
|
4. Docker Compose version:
|
||||||
|
5. (Linux) Is SELinux enabled?:
|
||||||
|
6. What git commit hash are you on?:
|
||||||
|
|
||||||
|
|
||||||
|
### SUMMARY
|
||||||
|
<!-- Explain the problem briefly -->
|
||||||
|
|
||||||
|
|
||||||
|
### STEPS TO REPRODUCE
|
||||||
|
<!-- Show exactly how to reproduce the problem -->
|
||||||
|
<!-- Make this as detailed as possible and be sure that others can fully reproduce this issue -->
|
||||||
|
|
||||||
|
|
||||||
|
### EXPECTED BEHAVIOUR
|
||||||
|
<!-- What is the expected behaviour? -->
|
||||||
|
|
||||||
|
|
||||||
|
### ACTUAL BEHAVIOUR
|
||||||
|
<!-- What is the actual behaviour? -->
|
||||||
|
|
||||||
|
|
||||||
|
### OTHER INFORMATION
|
||||||
|
|
||||||
|
#### Start command
|
||||||
|
<!-- Add the command you have used to start the devilbox -->
|
||||||
|
```
|
||||||
|
$ docker-compose up...
|
||||||
|
```
|
||||||
|
|
||||||
|
#### Outputs
|
||||||
|
<!-- 1/2 Add the output from ./check-config.sh -->
|
||||||
|
```bash
|
||||||
|
$ ./check-config.sh
|
||||||
|
|
||||||
|
<<< REPLACE THIS LINE WITH OUTPUT FROM ABOVE COMMAND >>>
|
||||||
|
```
|
||||||
|
|
||||||
|
<!-- 2/2 Add the output from docker-compose logs -->
|
||||||
|
```bash
|
||||||
|
$ docker-compose logs
|
||||||
|
|
||||||
|
<<< REPLACE THIS LINE WITH OUTPUT FROM ABOVE COMMAND >>>
|
||||||
|
```
|
190
.github/ISSUE_TEMPLATE/bug_report.yml
vendored
190
.github/ISSUE_TEMPLATE/bug_report.yml
vendored
@ -1,190 +0,0 @@
|
|||||||
---
|
|
||||||
name: "\U0001F41B Bug report"
|
|
||||||
description: File a bug report
|
|
||||||
title: "[Bug]: "
|
|
||||||
labels: ["bug", "triage"]
|
|
||||||
assignees:
|
|
||||||
- cytopia
|
|
||||||
|
|
||||||
body:
|
|
||||||
|
|
||||||
- type: markdown
|
|
||||||
attributes:
|
|
||||||
value: |
|
|
||||||
Thanks for taking the time to fill out this bug report!
|
|
||||||
|
|
||||||
- type: checkboxes
|
|
||||||
attributes:
|
|
||||||
label: Have you already looked into this bug?
|
|
||||||
description: Please invest some time and check if this bug is already mentioned or documented elsewhere (You may select more than one).
|
|
||||||
options:
|
|
||||||
- label: I have checked the [Troubleshooting Guide](https://devilbox.readthedocs.io/en/latest/support/troubleshooting.html)
|
|
||||||
- label: I have checked [Release notes](https://github.com/cytopia/devilbox/releases) for potential migration steps
|
|
||||||
- label: I have checked [existing issues](https://github.com/cytopia/devilbox/issues) for similar bugs
|
|
||||||
- label: I have googled this bug already with no luck
|
|
||||||
- label: I have not done any of the above
|
|
||||||
validations:
|
|
||||||
required: true
|
|
||||||
|
|
||||||
- type: input
|
|
||||||
attributes:
|
|
||||||
label: (Optional) Error message
|
|
||||||
description: If you encountered any error message, copy and paste it here. This will be used for googling the issue.
|
|
||||||
validations:
|
|
||||||
required: false
|
|
||||||
|
|
||||||
- type: textarea
|
|
||||||
id: what-happened
|
|
||||||
attributes:
|
|
||||||
label: What went wrong?
|
|
||||||
description: What exactly went wrong of what bug did you encounter?
|
|
||||||
validations:
|
|
||||||
required: true
|
|
||||||
|
|
||||||
- type: textarea
|
|
||||||
id: expected-behaviour
|
|
||||||
attributes:
|
|
||||||
label: Expected behaviour
|
|
||||||
description: What did you expect to happen instead?
|
|
||||||
validations:
|
|
||||||
required: true
|
|
||||||
|
|
||||||
- type: textarea
|
|
||||||
id: steps-to-reproduce
|
|
||||||
attributes:
|
|
||||||
label: How can we reproduce the bug?
|
|
||||||
description: How do you trigger this bug? Please walk us through it step by step in detail. This is crucial in order to triage the bug and support you in resolving it.
|
|
||||||
validations:
|
|
||||||
required: true
|
|
||||||
|
|
||||||
- type: dropdown
|
|
||||||
id: host-os
|
|
||||||
attributes:
|
|
||||||
label: Host Operating System
|
|
||||||
description: What operating system are you using?
|
|
||||||
multiple: false
|
|
||||||
options:
|
|
||||||
- Linux
|
|
||||||
- macOS
|
|
||||||
- Windows
|
|
||||||
validations:
|
|
||||||
required: true
|
|
||||||
|
|
||||||
- type: dropdown
|
|
||||||
id: host-platform
|
|
||||||
attributes:
|
|
||||||
label: Host Platform (amd64, arm64, other)
|
|
||||||
description: What host platform are you running on?
|
|
||||||
options:
|
|
||||||
- amd64
|
|
||||||
- arm64
|
|
||||||
- other
|
|
||||||
validations:
|
|
||||||
required: true
|
|
||||||
|
|
||||||
- type: dropdown
|
|
||||||
attributes:
|
|
||||||
label: (Linux only) Is SELinux enabled?
|
|
||||||
description: When using Linux as your host operating system, check if SELinux is enabled or not. [More info here](https://devilbox.readthedocs.io/en/latest/getting-started/install-the-devilbox.html?highlight=selinux#linux-selinux)
|
|
||||||
options:
|
|
||||||
- Yes, SELinux is enabled
|
|
||||||
- No, SELinux is disabled
|
|
||||||
- I don't know
|
|
||||||
- I am not on Linux
|
|
||||||
validations:
|
|
||||||
required: true
|
|
||||||
|
|
||||||
- type: input
|
|
||||||
id: docker-version
|
|
||||||
attributes:
|
|
||||||
label: Docker version
|
|
||||||
description: "What Docker version are you using? Please copy and paste the output of `docker --version` into this text area."
|
|
||||||
validations:
|
|
||||||
required: true
|
|
||||||
|
|
||||||
- type: input
|
|
||||||
id: docker-compose-version
|
|
||||||
attributes:
|
|
||||||
label: Docker Compose version
|
|
||||||
description: "What Docker Compose version are you using? Please copy and paste the output of `docker-compose --version` into this text area."
|
|
||||||
validations:
|
|
||||||
required: true
|
|
||||||
|
|
||||||
- type: input
|
|
||||||
id: devilbox-version
|
|
||||||
attributes:
|
|
||||||
label: Devilbox version
|
|
||||||
description: "What version of Devilbox are you running (latest master, specific tag, git hash, etc)?"
|
|
||||||
validations:
|
|
||||||
required: true
|
|
||||||
|
|
||||||
- type: dropdown
|
|
||||||
attributes:
|
|
||||||
label: Have you removed stopped containers before starting?
|
|
||||||
description: "Have you done a `docker-compose rm` before starting up the Devilbox? [More info here](https://docs.docker.com/compose/reference/rm/)"
|
|
||||||
multiple: false
|
|
||||||
options:
|
|
||||||
- "Yes"
|
|
||||||
- "No"
|
|
||||||
validations:
|
|
||||||
required: true
|
|
||||||
|
|
||||||
- type: dropdown
|
|
||||||
attributes:
|
|
||||||
label: Have you pulled latest Docker images before starting?
|
|
||||||
description: "Have you done a `docker-compose pull` before starting up the Devilbox?"
|
|
||||||
multiple: false
|
|
||||||
options:
|
|
||||||
- "Yes"
|
|
||||||
- "No"
|
|
||||||
validations:
|
|
||||||
required: true
|
|
||||||
|
|
||||||
- type: input
|
|
||||||
attributes:
|
|
||||||
label: Devilbox start command
|
|
||||||
description: "What is the [start command](https://devilbox.readthedocs.io/en/latest/getting-started/start-the-devilbox.html) you have used to start the Devilbox?"
|
|
||||||
validations:
|
|
||||||
required: true
|
|
||||||
|
|
||||||
- type: textarea
|
|
||||||
id: log-env-file
|
|
||||||
attributes:
|
|
||||||
label: "Config: .env file"
|
|
||||||
description: "Please copy and paste your `.env` file into this text area"
|
|
||||||
render: shell
|
|
||||||
validations:
|
|
||||||
required: true
|
|
||||||
|
|
||||||
- type: textarea
|
|
||||||
attributes:
|
|
||||||
label: "Config: docker-compose.override.yml"
|
|
||||||
description: "If you are using `docker-compose.override.yml`, please copy and paste its contents into this text area."
|
|
||||||
render: shell
|
|
||||||
validations:
|
|
||||||
required: false
|
|
||||||
|
|
||||||
- type: textarea
|
|
||||||
id: log-check-config
|
|
||||||
attributes:
|
|
||||||
label: "Config: ./check-config.sh"
|
|
||||||
description: "Please copy and paste the output of `./check-config.sh` into this text area"
|
|
||||||
render: shell
|
|
||||||
validations:
|
|
||||||
required: true
|
|
||||||
|
|
||||||
- type: textarea
|
|
||||||
id: log-docker-compose
|
|
||||||
attributes:
|
|
||||||
label: "Log: docker-compose logs"
|
|
||||||
description: "Please copy and paste the output of `docker-compose logs` into this text area"
|
|
||||||
render: shell
|
|
||||||
validations:
|
|
||||||
required: true
|
|
||||||
|
|
||||||
- type: textarea
|
|
||||||
attributes:
|
|
||||||
label: (Optional) Additional information
|
|
||||||
description: Add any additional information that might help with this bug report. (E.g. customizations from the `autostart/`, `bash/`, `cfg/` or `supervisor/` directory or relevant logfiles from the `log/` directory)
|
|
||||||
validations:
|
|
||||||
required: false
|
|
18
.github/ISSUE_TEMPLATE/config.yml
vendored
18
.github/ISSUE_TEMPLATE/config.yml
vendored
@ -1,18 +0,0 @@
|
|||||||
---
|
|
||||||
blank_issues_enabled: false
|
|
||||||
contact_links:
|
|
||||||
- name: Devilbox Discord Chat
|
|
||||||
url: https://discord.gg/2wP3V6kBj4
|
|
||||||
about: Please notify or discuss about any other requests here.
|
|
||||||
|
|
||||||
- name: Devilbox Discourse Forum
|
|
||||||
url: https://devilbox.discourse.group/
|
|
||||||
about: Please ask and answer general questions here.
|
|
||||||
|
|
||||||
- name: Devilbox Community Support
|
|
||||||
url: https://devilbox.discourse.group/
|
|
||||||
about: Please ask and answer questions here.
|
|
||||||
|
|
||||||
- name: Devilbox documentation
|
|
||||||
url: https://devilbox.readthedocs.io/
|
|
||||||
about: Find the Devilbox documentation here.
|
|
30
.github/ISSUE_TEMPLATE/documentation.md
vendored
Normal file
30
.github/ISSUE_TEMPLATE/documentation.md
vendored
Normal file
@ -0,0 +1,30 @@
|
|||||||
|
---
|
||||||
|
name: "\U0001F4DD Documentation"
|
||||||
|
about: Anything related to the Devilbox documentation
|
||||||
|
title: ''
|
||||||
|
labels: documentation
|
||||||
|
assignees: ''
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
<!---
|
||||||
|
1. Verify first that your question is not already reported on GitHub.
|
||||||
|
|
||||||
|
2. Verify that your question is not covered in the docs: https://devilbox.readthedocs.io
|
||||||
|
|
||||||
|
3. PLEASE FILL OUT ALL REQUIRED INFORMATION BELOW! Otherwise it might take more time to properly handle this question.
|
||||||
|
-->
|
||||||
|
|
||||||
|
|
||||||
|
#### ISSUE TYPE
|
||||||
|
<!-- DO NOT CHANGE THIS -->
|
||||||
|
- Documentation
|
||||||
|
<!-- DO NOT CHANGE THIS -->
|
||||||
|
|
||||||
|
|
||||||
|
#### SUMMARY
|
||||||
|
<!-- Add your information here -->
|
||||||
|
|
||||||
|
|
||||||
|
#### Goal
|
||||||
|
<!-- Explain what you actually want to accomplish -->
|
30
.github/ISSUE_TEMPLATE/documentation.yml
vendored
30
.github/ISSUE_TEMPLATE/documentation.yml
vendored
@ -1,30 +0,0 @@
|
|||||||
---
|
|
||||||
name: "\U0001F4DD Documentation"
|
|
||||||
description: Something is missing or wrong in the documentation.
|
|
||||||
title: "[Docs]: "
|
|
||||||
labels: ["documentation"]
|
|
||||||
assignees:
|
|
||||||
- cytopia
|
|
||||||
|
|
||||||
body:
|
|
||||||
|
|
||||||
- type: textarea
|
|
||||||
attributes:
|
|
||||||
label: What is wrong in the documentation?
|
|
||||||
description: Tell us, what is wrong in the documentation?
|
|
||||||
validations:
|
|
||||||
required: false
|
|
||||||
|
|
||||||
- type: textarea
|
|
||||||
attributes:
|
|
||||||
label: What is missing in the documentation?
|
|
||||||
description: Tell us, what is missing in the documentation?
|
|
||||||
validations:
|
|
||||||
required: false
|
|
||||||
|
|
||||||
- type: dropdown
|
|
||||||
attributes:
|
|
||||||
label: Are you willing to provide a PR to address this?
|
|
||||||
options:
|
|
||||||
- "Yes"
|
|
||||||
- "No"
|
|
30
.github/ISSUE_TEMPLATE/feature_request.md
vendored
Normal file
30
.github/ISSUE_TEMPLATE/feature_request.md
vendored
Normal file
@ -0,0 +1,30 @@
|
|||||||
|
---
|
||||||
|
name: "✨ Feature request"
|
||||||
|
about: Suggest an idea for this project
|
||||||
|
title: ''
|
||||||
|
labels: feature
|
||||||
|
assignees: ''
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
<!---
|
||||||
|
1. Verify first that your feature request is not already reported on GitHub.
|
||||||
|
|
||||||
|
2. Verify that your feature is not already implemented: https://devilbox.readthedocs.io
|
||||||
|
|
||||||
|
3. PLEASE FILL OUT ALL REQUIRED INFORMATION BELOW! Otherwise it might take more time to properly handle this feature request
|
||||||
|
-->
|
||||||
|
|
||||||
|
|
||||||
|
#### ISSUE TYPE
|
||||||
|
<!-- DO NOT CHANGE THIS -->
|
||||||
|
- Feature request
|
||||||
|
<!-- DO NOT CHANGE THIS -->
|
||||||
|
|
||||||
|
|
||||||
|
#### SUMMARY
|
||||||
|
<!-- Explain your feature idea briefly -->
|
||||||
|
|
||||||
|
|
||||||
|
#### Goal
|
||||||
|
<!-- Explain what you actually want to accomplish with that feature -->
|
36
.github/ISSUE_TEMPLATE/feature_request.yml
vendored
36
.github/ISSUE_TEMPLATE/feature_request.yml
vendored
@ -1,36 +0,0 @@
|
|||||||
---
|
|
||||||
name: "✨ Feature request"
|
|
||||||
description: Suggest an idea or feature for this project
|
|
||||||
title: "[Feature]: "
|
|
||||||
labels: ["feature"]
|
|
||||||
assignees: []
|
|
||||||
|
|
||||||
body:
|
|
||||||
|
|
||||||
- type: textarea
|
|
||||||
attributes:
|
|
||||||
label: What is your idea or feature suggestion?
|
|
||||||
description: Tell us, what idea or feature you suggest to be added to the Devilbox.
|
|
||||||
validations:
|
|
||||||
required: true
|
|
||||||
|
|
||||||
- type: textarea
|
|
||||||
attributes:
|
|
||||||
label: Benefits
|
|
||||||
description: Tell us, how this this will be beneficial to the Devilbox.
|
|
||||||
validations:
|
|
||||||
required: false
|
|
||||||
|
|
||||||
- type: textarea
|
|
||||||
attributes:
|
|
||||||
label: Where can we find information about this?
|
|
||||||
description: If you are proposing a software or tool, please add relevant links and documentation.
|
|
||||||
validations:
|
|
||||||
required: false
|
|
||||||
|
|
||||||
- type: dropdown
|
|
||||||
attributes:
|
|
||||||
label: Are you willing to provide a PR to address this?
|
|
||||||
options:
|
|
||||||
- "Yes"
|
|
||||||
- "No"
|
|
50
.github/ISSUE_TEMPLATE/howto.yml
vendored
50
.github/ISSUE_TEMPLATE/howto.yml
vendored
@ -1,50 +0,0 @@
|
|||||||
---
|
|
||||||
name: "❔ How to do ...?"
|
|
||||||
description: How do I do X or Y with the Devilbox?
|
|
||||||
title: "[Howto]: "
|
|
||||||
labels: ["question", "Community help wanted"]
|
|
||||||
assignees: []
|
|
||||||
|
|
||||||
body:
|
|
||||||
|
|
||||||
- type: markdown
|
|
||||||
attributes:
|
|
||||||
value: |
|
|
||||||
If this is a generic question, please consider using the [Devilbox forum](https://devilbox.discourse.group/) instead.
|
|
||||||
|
|
||||||
- type: checkboxes
|
|
||||||
attributes:
|
|
||||||
label: Have you already checked elsewhere?
|
|
||||||
description: You may select more than one.
|
|
||||||
options:
|
|
||||||
- label: I have read the [Devilbox documentation](https://devilbox.readthedocs.io/en/latest/)
|
|
||||||
- label: I have checked the [Devilbox Troubleshooting Guide](https://devilbox.readthedocs.io/en/latest/)
|
|
||||||
- label: I have checked the [Devilbox FAQ](https://devilbox.readthedocs.io/en/latest/support/faq.html)
|
|
||||||
- label: I have checked the [Devilbox Howto](https://devilbox.readthedocs.io/en/latest/support/howto.html)
|
|
||||||
- label: I have checked the [Devilbox Forum](https://devilbox.discourse.group/)
|
|
||||||
- label: I have checked [existing issues](https://github.com/cytopia/devilbox/issues)
|
|
||||||
- label: I have googled already with no luck
|
|
||||||
- label: I have not done any of the above
|
|
||||||
validations:
|
|
||||||
required: true
|
|
||||||
|
|
||||||
- type: textarea
|
|
||||||
attributes:
|
|
||||||
label: What are you struggling with?
|
|
||||||
description: Tell the community, what you are struggling with. Be as specific as possible to make it easier for other people to answer your question.
|
|
||||||
validations:
|
|
||||||
required: true
|
|
||||||
|
|
||||||
- type: textarea
|
|
||||||
attributes:
|
|
||||||
label: What have you tried already?
|
|
||||||
description: Add some details on what you have tried already, so this can be ruled out.
|
|
||||||
validations:
|
|
||||||
required: true
|
|
||||||
|
|
||||||
- type: textarea
|
|
||||||
attributes:
|
|
||||||
label: What is your goal?
|
|
||||||
description: Tell the community, what you want to accomplish? This might be helpful to know in order to prevent [XY problems](https://en.wikipedia.org/wiki/XY_problem).
|
|
||||||
validations:
|
|
||||||
required: true
|
|
40
.github/ISSUE_TEMPLATE/question.md
vendored
Normal file
40
.github/ISSUE_TEMPLATE/question.md
vendored
Normal file
@ -0,0 +1,40 @@
|
|||||||
|
---
|
||||||
|
name: "❔ Question"
|
||||||
|
about: 'Consider using the Devilbox Forum instead: https://devilbox.discourse.group/'
|
||||||
|
title: ''
|
||||||
|
labels: ''
|
||||||
|
assignees: ''
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
<!-- ---------- GITHUB QUESTIONS ARE DEPRECATED ---------- -->
|
||||||
|
<!-- ---------- USE THE FORUM ---------- ->
|
||||||
|
|
||||||
|
<!-- ---------- https://devilbox.discourse.group/ ---------- ->
|
||||||
|
|
||||||
|
|
||||||
|
<!---
|
||||||
|
1. A better place for questions is: https://devilbox.discourse.group/
|
||||||
|
|
||||||
|
2. VERIFY first that your question is not already reported on GitHub.
|
||||||
|
|
||||||
|
3. VERIFY that your question is not covered in the docs: https://devilbox.readthedocs.io
|
||||||
|
|
||||||
|
4. VERIFY that your question is not covered in the forum: https://devilbox.discourse.group/
|
||||||
|
|
||||||
|
5. PLEASE FILL OUT ALL REQUIRED INFORMATION BELOW! Otherwise it might take more time to properly handle this question.
|
||||||
|
-->
|
||||||
|
|
||||||
|
|
||||||
|
#### ISSUE TYPE
|
||||||
|
<!-- DO NOT CHANGE THIS -->
|
||||||
|
- Question
|
||||||
|
<!-- DO NOT CHANGE THIS -->
|
||||||
|
|
||||||
|
|
||||||
|
#### SUMMARY
|
||||||
|
<!-- Ask your question here -->
|
||||||
|
|
||||||
|
|
||||||
|
#### Goal
|
||||||
|
<!-- Explain what you actually want to accomplish -->
|
228
.github/workflows/ci-smoke-linux.yml
vendored
Normal file
228
.github/workflows/ci-smoke-linux.yml
vendored
Normal file
@ -0,0 +1,228 @@
|
|||||||
|
---
|
||||||
|
|
||||||
|
# -------------------------------------------------------------------------------------------------
|
||||||
|
# Job Name
|
||||||
|
# -------------------------------------------------------------------------------------------------
|
||||||
|
name: Linux
|
||||||
|
|
||||||
|
|
||||||
|
# -------------------------------------------------------------------------------------------------
|
||||||
|
# When to run
|
||||||
|
# -------------------------------------------------------------------------------------------------
|
||||||
|
on:
|
||||||
|
# Runs on Pull Requests
|
||||||
|
pull_request:
|
||||||
|
|
||||||
|
# Runs on master Branch and Tags
|
||||||
|
push:
|
||||||
|
branches:
|
||||||
|
- master
|
||||||
|
tags:
|
||||||
|
- '[0-9]+.[0-9]+*'
|
||||||
|
|
||||||
|
|
||||||
|
# -------------------------------------------------------------------------------------------------
|
||||||
|
# What to run
|
||||||
|
# -------------------------------------------------------------------------------------------------
|
||||||
|
jobs:
|
||||||
|
smoke_linux:
|
||||||
|
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
|
||||||
|
strategy:
|
||||||
|
fail-fast: false
|
||||||
|
matrix:
|
||||||
|
php:
|
||||||
|
- "5.3"
|
||||||
|
- "5.4"
|
||||||
|
- "5.5"
|
||||||
|
- "5.6"
|
||||||
|
- "7.0"
|
||||||
|
- "7.1"
|
||||||
|
- "7.2"
|
||||||
|
- "7.3"
|
||||||
|
- "7.4"
|
||||||
|
- "8.0"
|
||||||
|
- "8.1"
|
||||||
|
- "8.2"
|
||||||
|
httpd:
|
||||||
|
- "apache-2.2"
|
||||||
|
- "apache-2.4"
|
||||||
|
- "nginx-stable"
|
||||||
|
- "nginx-mainline"
|
||||||
|
|
||||||
|
name: "[PHP ${{ matrix.php }}] vs [${{ matrix.httpd }}]"
|
||||||
|
steps:
|
||||||
|
|
||||||
|
# ------------------------------------------------------------
|
||||||
|
# Checkout repository
|
||||||
|
# ------------------------------------------------------------
|
||||||
|
- name: Checkout repository
|
||||||
|
uses: actions/checkout@v1
|
||||||
|
|
||||||
|
- name: Show environment
|
||||||
|
shell: bash
|
||||||
|
run: |
|
||||||
|
env
|
||||||
|
|
||||||
|
- name: Show network
|
||||||
|
shell: bash
|
||||||
|
run: |
|
||||||
|
netstat -an || true
|
||||||
|
ss -tlun || true
|
||||||
|
|
||||||
|
- name: Show Docker version
|
||||||
|
shell: bash
|
||||||
|
run: |
|
||||||
|
docker version
|
||||||
|
|
||||||
|
# ------------------------------------------------------------
|
||||||
|
# Setup
|
||||||
|
# ------------------------------------------------------------
|
||||||
|
- name: Configure
|
||||||
|
shell: bash
|
||||||
|
run: |
|
||||||
|
cd .tests/
|
||||||
|
# Set the two candidates to test against
|
||||||
|
make configure KEY=PHP_SERVER VAL=${PHP}
|
||||||
|
make configure KEY=HTTPD_SERVER VAL=${HTTPD}
|
||||||
|
# 3306 is taken, so chose another one
|
||||||
|
make configure KEY=HOST_PORT_MYSQL VAL=3307
|
||||||
|
env:
|
||||||
|
PHP: ${{ matrix.php }}
|
||||||
|
HTTPD: ${{ matrix.httpd }}
|
||||||
|
|
||||||
|
- name: Pull images
|
||||||
|
shell: bash
|
||||||
|
run: |
|
||||||
|
cd .tests/
|
||||||
|
make pull
|
||||||
|
|
||||||
|
- name: Startup
|
||||||
|
shell: bash
|
||||||
|
run: |
|
||||||
|
cd .tests/
|
||||||
|
make start
|
||||||
|
|
||||||
|
- name: Docker logs
|
||||||
|
shell: bash
|
||||||
|
run: |
|
||||||
|
cd .tests/
|
||||||
|
make logs
|
||||||
|
|
||||||
|
# ------------------------------------------------------------
|
||||||
|
# Run tests
|
||||||
|
# ------------------------------------------------------------
|
||||||
|
- name: Test Modules
|
||||||
|
shell: bash
|
||||||
|
run: |
|
||||||
|
cd .tests/
|
||||||
|
make test-smoke-modules
|
||||||
|
if: success() || failure()
|
||||||
|
|
||||||
|
- name: Test Config
|
||||||
|
shell: bash
|
||||||
|
run: |
|
||||||
|
cd .tests/
|
||||||
|
make test-smoke-config
|
||||||
|
if: success() || failure()
|
||||||
|
|
||||||
|
- name: Test Intranet
|
||||||
|
shell: bash
|
||||||
|
run: |
|
||||||
|
cd .tests/
|
||||||
|
make test-smoke-intranet
|
||||||
|
if: success() || failure()
|
||||||
|
|
||||||
|
- name: Test Vendors
|
||||||
|
shell: bash
|
||||||
|
run: |
|
||||||
|
cd .tests/
|
||||||
|
make test-smoke-vendors
|
||||||
|
if: success() || failure()
|
||||||
|
|
||||||
|
- name: Test Vhosts
|
||||||
|
shell: bash
|
||||||
|
run: |
|
||||||
|
cd .tests/
|
||||||
|
make test-smoke-vhosts
|
||||||
|
if: success() || failure()
|
||||||
|
|
||||||
|
- name: Test Reverse Proxy
|
||||||
|
shell: bash
|
||||||
|
run: |
|
||||||
|
cd .tests/
|
||||||
|
make test-smoke-rproxies
|
||||||
|
if: success() || failure()
|
||||||
|
|
||||||
|
- name: Test SSL
|
||||||
|
shell: bash
|
||||||
|
run: |
|
||||||
|
cd .tests/
|
||||||
|
make test-smoke-ssl
|
||||||
|
if: success() || failure()
|
||||||
|
|
||||||
|
- name: Test Bind
|
||||||
|
shell: bash
|
||||||
|
run: |
|
||||||
|
cd .tests/
|
||||||
|
make test-smoke-bind
|
||||||
|
if: success() || failure()
|
||||||
|
|
||||||
|
- name: Test Autostart
|
||||||
|
shell: bash
|
||||||
|
run: |
|
||||||
|
cd .tests/
|
||||||
|
make test-smoke-autostart
|
||||||
|
if: success() || failure()
|
||||||
|
|
||||||
|
- name: "Test Framework: CakePHP"
|
||||||
|
shell: bash
|
||||||
|
run: |
|
||||||
|
cd .tests/
|
||||||
|
make test-smoke-framework-cakephp
|
||||||
|
if: success() || failure()
|
||||||
|
|
||||||
|
- name: "Test Framework: Drupal"
|
||||||
|
shell: bash
|
||||||
|
run: |
|
||||||
|
cd .tests/
|
||||||
|
make test-smoke-framework-drupal
|
||||||
|
if: success() || failure()
|
||||||
|
|
||||||
|
- name: "Test Framework: Wordpress"
|
||||||
|
shell: bash
|
||||||
|
run: |
|
||||||
|
cd .tests/
|
||||||
|
make test-smoke-framework-wordpress
|
||||||
|
if: success() || failure()
|
||||||
|
|
||||||
|
- name: "Test Container"
|
||||||
|
shell: bash
|
||||||
|
run: |
|
||||||
|
retry() {
|
||||||
|
for n in $(seq 5); do
|
||||||
|
echo "[${n}/5] ${*}";
|
||||||
|
if eval "${*}"; then
|
||||||
|
echo "[SUCC] ${n}/5";
|
||||||
|
return 0;
|
||||||
|
fi;
|
||||||
|
sleep 5;
|
||||||
|
echo "[FAIL] ${n}/5";
|
||||||
|
done;
|
||||||
|
return 1;
|
||||||
|
}
|
||||||
|
cd .tests/
|
||||||
|
retry make test-smoke-container
|
||||||
|
if: success() || failure()
|
||||||
|
|
||||||
|
# ------------------------------------------------------------
|
||||||
|
# Finish
|
||||||
|
# ------------------------------------------------------------
|
||||||
|
|
||||||
|
- name: "Finish: Docker logs"
|
||||||
|
shell: bash
|
||||||
|
run: |
|
||||||
|
cd .tests/
|
||||||
|
make logs
|
||||||
|
if: success() || failure()
|
262
.github/workflows/ci-smoke-macos.yml.off
vendored
Normal file
262
.github/workflows/ci-smoke-macos.yml.off
vendored
Normal file
@ -0,0 +1,262 @@
|
|||||||
|
---
|
||||||
|
|
||||||
|
# -------------------------------------------------------------------------------------------------
|
||||||
|
# Job Name
|
||||||
|
# -------------------------------------------------------------------------------------------------
|
||||||
|
name: MacOS
|
||||||
|
|
||||||
|
|
||||||
|
# -------------------------------------------------------------------------------------------------
|
||||||
|
# When to run
|
||||||
|
# -------------------------------------------------------------------------------------------------
|
||||||
|
on:
|
||||||
|
# Runs on Pull Requests
|
||||||
|
pull_request:
|
||||||
|
|
||||||
|
# Runs on master Branch and Tags
|
||||||
|
push:
|
||||||
|
branches:
|
||||||
|
- master
|
||||||
|
tags:
|
||||||
|
- '[0-9]+.[0-9]+*'
|
||||||
|
|
||||||
|
|
||||||
|
# -------------------------------------------------------------------------------------------------
|
||||||
|
# What to run
|
||||||
|
# -------------------------------------------------------------------------------------------------
|
||||||
|
jobs:
|
||||||
|
smoke_macos:
|
||||||
|
|
||||||
|
runs-on: macos-latest
|
||||||
|
|
||||||
|
strategy:
|
||||||
|
fail-fast: false
|
||||||
|
matrix:
|
||||||
|
php:
|
||||||
|
- "7.2"
|
||||||
|
httpd:
|
||||||
|
- "nginx-stable"
|
||||||
|
|
||||||
|
name: "[PHP ${{ matrix.php }}] vs [${{ matrix.httpd }}]"
|
||||||
|
steps:
|
||||||
|
|
||||||
|
# ------------------------------------------------------------
|
||||||
|
# Checkout repository
|
||||||
|
# ------------------------------------------------------------
|
||||||
|
- name: Checkout repository
|
||||||
|
uses: actions/checkout@v1
|
||||||
|
|
||||||
|
- name: "[Pre] Install Requirements"
|
||||||
|
shell: bash
|
||||||
|
run: |
|
||||||
|
brew install coreutils
|
||||||
|
brew install bash
|
||||||
|
brew install socat
|
||||||
|
|
||||||
|
- name: "[Pre] Install Docker"
|
||||||
|
shell: bash
|
||||||
|
run: |
|
||||||
|
brew install docker docker-machine-driver-xhyve
|
||||||
|
sudo chown root:wheel $(brew --prefix)/opt/docker-machine-driver-xhyve/bin/docker-machine-driver-xhyve
|
||||||
|
sudo chmod u+s $(brew --prefix)/opt/docker-machine-driver-xhyve/bin/docker-machine-driver-xhyve
|
||||||
|
while ! docker-machine create --driver xhyve default; do
|
||||||
|
docker-machine rm -f default
|
||||||
|
sleep 1;
|
||||||
|
done
|
||||||
|
# Export variable (this target)
|
||||||
|
eval "$(docker-machine env default)"
|
||||||
|
DOCKER_TLS_VERIFY="$( docker-machine env default | grep DOCKER_TLS_VERIFY | sed -e 's/.*="//g' -e 's/"$//g' )"
|
||||||
|
DOCKER_HOST="$( docker-machine env default | grep DOCKER_HOST | sed -e 's/.*="//g' -e 's/"$//g' )"
|
||||||
|
DOCKER_CERT_PATH="$( docker-machine env default | grep DOCKER_CERT_PATH | sed -e 's/.*="//g' -e 's/"$//g' )"
|
||||||
|
DOCKER_MACHINE_NAME="$( docker-machine env default | grep DOCKER_MACHINE_NAME | sed -e 's/.*="//g' -e 's/"$//g' )"
|
||||||
|
# Export variable (this other targets)
|
||||||
|
# https://help.github.com/en/actions/automating-your-workflow-with-github-actions/development-tools-for-github-actions#set-an-environment-variable-set-env
|
||||||
|
echo ::set-env name=DOCKER_TLS_VERIFY::${DOCKER_TLS_VERIFY}
|
||||||
|
echo ::set-env name=DOCKER_HOST::${DOCKER_HOST}
|
||||||
|
echo ::set-env name=DOCKER_CERT_PATH::${DOCKER_CERT_PATH}
|
||||||
|
echo ::set-env name=DOCKER_MACHINE_NAME::${DOCKER_MACHINE_NAME}
|
||||||
|
# Show info
|
||||||
|
docker-machine ls
|
||||||
|
docker-machine env default
|
||||||
|
docker version
|
||||||
|
|
||||||
|
- name: "[Pre] Install Docker Compose"
|
||||||
|
shell: bash
|
||||||
|
run: |
|
||||||
|
sudo curl -L https://github.com/docker/compose/releases/download/1.25.0/docker-compose-`uname -s`-`uname -m` -o /usr/local/bin/docker-compose
|
||||||
|
sudo chmod +x /usr/local/bin/docker-compose
|
||||||
|
docker-compose version
|
||||||
|
|
||||||
|
- name: "[Pre] Setup Docker machine"
|
||||||
|
shell: bash
|
||||||
|
run: |
|
||||||
|
# Setup DNS records
|
||||||
|
echo "127.0.0.1 localhost" | sudo tee -a /etc/hosts
|
||||||
|
|
||||||
|
# Portforwarding from DOCKER_HOST to local
|
||||||
|
HOST="$( echo "${DOCKER_HOST}" | sed -e 's|^tcp://||g' -e 's|:.*||g' )"
|
||||||
|
echo "${HOST}"
|
||||||
|
sudo socat -s -d -d tcp-listen:80,reuseaddr,fork tcp:${HOST}:80 &
|
||||||
|
sleep 2
|
||||||
|
sudo socat -s -d -d tcp-listen:443,reuseaddr,fork tcp:${HOST}:443 &
|
||||||
|
sleep 2
|
||||||
|
if ! netstat -an | grep -i LISTEN | grep -E '(:80)|(\.80)\s'; then
|
||||||
|
netstat -an | grep -i LISTEN;
|
||||||
|
false;
|
||||||
|
fi
|
||||||
|
if ! netstat -an | grep -i LISTEN | grep -E '(:443)|(\.443)\s'; then
|
||||||
|
netstat -an | grep -i LISTEN;
|
||||||
|
false;
|
||||||
|
fi
|
||||||
|
host localhost
|
||||||
|
curl -sS -I 'http://localhost:80' || true
|
||||||
|
curl -sS -I 'https://localhost:443' || true
|
||||||
|
|
||||||
|
- name: "[Info] Show environment"
|
||||||
|
shell: bash
|
||||||
|
run: |
|
||||||
|
env
|
||||||
|
if: success() || failure()
|
||||||
|
|
||||||
|
- name: "[Info] Show network"
|
||||||
|
shell: bash
|
||||||
|
run: |
|
||||||
|
netstat -an || true
|
||||||
|
ss -tlun || true
|
||||||
|
if: success() || failure()
|
||||||
|
|
||||||
|
# ------------------------------------------------------------
|
||||||
|
# Setup
|
||||||
|
# ------------------------------------------------------------
|
||||||
|
- name: Configure
|
||||||
|
shell: bash
|
||||||
|
run: |
|
||||||
|
cd .tests/
|
||||||
|
# Set the two candidates to test against
|
||||||
|
make configure KEY=PHP_SERVER VAL=${PHP}
|
||||||
|
make configure KEY=HTTPD_SERVER VAL=${HTTPD}
|
||||||
|
# 3306 is taken, so chose another one
|
||||||
|
make configure KEY=HOST_PORT_MYSQL VAL=3307
|
||||||
|
env:
|
||||||
|
PHP: ${{ matrix.php }}
|
||||||
|
HTTPD: ${{ matrix.httpd }}
|
||||||
|
if: success() || failure()
|
||||||
|
|
||||||
|
- name: Pull images
|
||||||
|
shell: bash
|
||||||
|
run: |
|
||||||
|
cd .tests/
|
||||||
|
make pull
|
||||||
|
if: success() || failure()
|
||||||
|
|
||||||
|
- name: Startup
|
||||||
|
shell: bash
|
||||||
|
run: |
|
||||||
|
cd .tests/
|
||||||
|
make start
|
||||||
|
if: success() || failure()
|
||||||
|
|
||||||
|
- name: Docker logs
|
||||||
|
shell: bash
|
||||||
|
run: |
|
||||||
|
cd .tests/
|
||||||
|
make logs
|
||||||
|
if: success() || failure()
|
||||||
|
|
||||||
|
# ------------------------------------------------------------
|
||||||
|
# Run tests
|
||||||
|
# ------------------------------------------------------------
|
||||||
|
- name: Test Modules
|
||||||
|
shell: bash
|
||||||
|
run: |
|
||||||
|
cd .tests/
|
||||||
|
make test-smoke-modules
|
||||||
|
if: success() || failure()
|
||||||
|
|
||||||
|
- name: Test Config
|
||||||
|
shell: bash
|
||||||
|
run: |
|
||||||
|
cd .tests/
|
||||||
|
make test-smoke-config
|
||||||
|
if: success() || failure()
|
||||||
|
|
||||||
|
- name: Test Intranet
|
||||||
|
shell: bash
|
||||||
|
run: |
|
||||||
|
cd .tests/
|
||||||
|
make test-smoke-intranet
|
||||||
|
if: success() || failure()
|
||||||
|
|
||||||
|
- name: Test Vendors
|
||||||
|
shell: bash
|
||||||
|
run: |
|
||||||
|
cd .tests/
|
||||||
|
make test-smoke-vendors
|
||||||
|
if: success() || failure()
|
||||||
|
|
||||||
|
- name: Test Vhosts
|
||||||
|
shell: bash
|
||||||
|
run: |
|
||||||
|
cd .tests/
|
||||||
|
make test-smoke-vhosts
|
||||||
|
if: success() || failure()
|
||||||
|
|
||||||
|
- name: Test Reverse Proxy
|
||||||
|
shell: bash
|
||||||
|
run: |
|
||||||
|
cd .tests/
|
||||||
|
make test-smoke-rproxies
|
||||||
|
if: success() || failure()
|
||||||
|
|
||||||
|
- name: Test SSL
|
||||||
|
shell: bash
|
||||||
|
run: |
|
||||||
|
cd .tests/
|
||||||
|
make test-smoke-ssl
|
||||||
|
if: success() || failure()
|
||||||
|
|
||||||
|
- name: Test Bind
|
||||||
|
shell: bash
|
||||||
|
run: |
|
||||||
|
cd .tests/
|
||||||
|
make test-smoke-bind
|
||||||
|
if: success() || failure()
|
||||||
|
|
||||||
|
- name: Test Autostart
|
||||||
|
shell: bash
|
||||||
|
run: |
|
||||||
|
cd .tests/
|
||||||
|
make test-smoke-autostart
|
||||||
|
if: success() || failure()
|
||||||
|
|
||||||
|
- name: "Test Framework: CakePHP"
|
||||||
|
shell: bash
|
||||||
|
run: |
|
||||||
|
cd .tests/
|
||||||
|
make test-smoke-framework-cakephp
|
||||||
|
if: success() || failure()
|
||||||
|
|
||||||
|
- name: "Test Framework: Drupal"
|
||||||
|
shell: bash
|
||||||
|
run: |
|
||||||
|
cd .tests/
|
||||||
|
make test-smoke-framework-drupal
|
||||||
|
if: success() || failure()
|
||||||
|
|
||||||
|
- name: "Test Framework: Wordpress"
|
||||||
|
shell: bash
|
||||||
|
run: |
|
||||||
|
cd .tests/
|
||||||
|
make test-smoke-framework-wordpress
|
||||||
|
if: success() || failure()
|
||||||
|
|
||||||
|
# ------------------------------------------------------------
|
||||||
|
# Finish
|
||||||
|
# ------------------------------------------------------------
|
||||||
|
|
||||||
|
- name: "[Post] Docker logs"
|
||||||
|
shell: bash
|
||||||
|
run: |
|
||||||
|
cd .tests/
|
||||||
|
make logs
|
||||||
|
if: success() || failure()
|
39
.github/workflows/documentation.yml
vendored
39
.github/workflows/documentation.yml
vendored
@ -12,16 +12,12 @@ name: Docs
|
|||||||
on:
|
on:
|
||||||
# Runs on Pull Requests
|
# Runs on Pull Requests
|
||||||
pull_request:
|
pull_request:
|
||||||
paths:
|
|
||||||
- 'docs/**'
|
|
||||||
- '!**.md'
|
|
||||||
# Runs on master Branch and Tags
|
# Runs on master Branch and Tags
|
||||||
push:
|
push:
|
||||||
paths:
|
|
||||||
- 'docs/**'
|
|
||||||
- '!**.md'
|
|
||||||
branches:
|
branches:
|
||||||
- master
|
- master
|
||||||
|
tags:
|
||||||
|
|
||||||
|
|
||||||
# -------------------------------------------------------------------------------------------------
|
# -------------------------------------------------------------------------------------------------
|
||||||
@ -29,14 +25,16 @@ on:
|
|||||||
# -------------------------------------------------------------------------------------------------
|
# -------------------------------------------------------------------------------------------------
|
||||||
jobs:
|
jobs:
|
||||||
docs:
|
docs:
|
||||||
|
|
||||||
runs-on: ubuntu-latest
|
runs-on: ubuntu-latest
|
||||||
|
|
||||||
strategy:
|
strategy:
|
||||||
fail-fast: false
|
fail-fast: false
|
||||||
matrix:
|
matrix:
|
||||||
target:
|
target:
|
||||||
- build
|
- build
|
||||||
- linkcheck
|
- linkcheck
|
||||||
# - linkcheck2
|
- linkcheck2
|
||||||
|
|
||||||
name: "[Docs ${{ matrix.target }}]"
|
name: "[Docs ${{ matrix.target }}]"
|
||||||
steps:
|
steps:
|
||||||
@ -48,9 +46,24 @@ jobs:
|
|||||||
uses: actions/checkout@v1
|
uses: actions/checkout@v1
|
||||||
|
|
||||||
- name: Check documentation
|
- name: Check documentation
|
||||||
uses: cytopia/shell-command-retry-action@v0.1.3
|
shell: bash
|
||||||
with:
|
run: |
|
||||||
retries: 5
|
retry() {
|
||||||
workdir: "${{ github.workspace }}/docs/"
|
for n in $(seq ${RETRIES}); do
|
||||||
command: |
|
echo "[${n}/${RETRIES}] ${*}";
|
||||||
make ${{ matrix.target }}
|
if eval "${*}"; then
|
||||||
|
echo "[SUCC] ${n}/${RETRIES}";
|
||||||
|
return 0;
|
||||||
|
fi;
|
||||||
|
sleep ${PAUSE};
|
||||||
|
echo "[FAIL] ${n}/${RETRIES}";
|
||||||
|
done;
|
||||||
|
return 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
cd docs
|
||||||
|
retry make ${TARGET}
|
||||||
|
env:
|
||||||
|
TARGET: ${{ matrix.target }}
|
||||||
|
RETRIES: 20
|
||||||
|
PAUSE: 10
|
||||||
|
1
.github/workflows/lint.yml
vendored
1
.github/workflows/lint.yml
vendored
@ -17,6 +17,7 @@ on:
|
|||||||
push:
|
push:
|
||||||
branches:
|
branches:
|
||||||
- master
|
- master
|
||||||
|
tags:
|
||||||
|
|
||||||
|
|
||||||
# -------------------------------------------------------------------------------------------------
|
# -------------------------------------------------------------------------------------------------
|
||||||
|
59
.github/workflows/params-httpd.yml
vendored
59
.github/workflows/params-httpd.yml
vendored
@ -1,59 +0,0 @@
|
|||||||
---
|
|
||||||
|
|
||||||
# -------------------------------------------------------------------------------------------------
|
|
||||||
# Job Name
|
|
||||||
# -------------------------------------------------------------------------------------------------
|
|
||||||
name: params
|
|
||||||
|
|
||||||
|
|
||||||
# -------------------------------------------------------------------------------------------------
|
|
||||||
# Custom Variables
|
|
||||||
# -------------------------------------------------------------------------------------------------
|
|
||||||
env:
|
|
||||||
# Note: Older PHP versions use an older version of phpPgMyAdmin, which does not work with later
|
|
||||||
# PgSQL server versions. That's why we need to tell those combinations to use an old PgSQL server
|
|
||||||
MATRIX: >-
|
|
||||||
[
|
|
||||||
{"HTTPD_SERVER": "apache-2.2", "HTTPD_FLAVOUR": "alpine"},
|
|
||||||
{"HTTPD_SERVER": "apache-2.2", "HTTPD_FLAVOUR": "debian"},
|
|
||||||
|
|
||||||
{"HTTPD_SERVER": "apache-2.4", "HTTPD_FLAVOUR": "alpine"},
|
|
||||||
{"HTTPD_SERVER": "apache-2.4", "HTTPD_FLAVOUR": "debian"},
|
|
||||||
|
|
||||||
{"HTTPD_SERVER": "nginx-stable", "HTTPD_FLAVOUR": "alpine"},
|
|
||||||
{"HTTPD_SERVER": "nginx-stable", "HTTPD_FLAVOUR": "debian"},
|
|
||||||
|
|
||||||
{"HTTPD_SERVER": "nginx-mainline", "HTTPD_FLAVOUR": "alpine"},
|
|
||||||
{"HTTPD_SERVER": "nginx-mainline", "HTTPD_FLAVOUR": "debian"}
|
|
||||||
]
|
|
||||||
|
|
||||||
|
|
||||||
# -------------------------------------------------------------------------------------------------
|
|
||||||
# When to run
|
|
||||||
# -------------------------------------------------------------------------------------------------
|
|
||||||
on:
|
|
||||||
workflow_call:
|
|
||||||
outputs:
|
|
||||||
matrix:
|
|
||||||
description: "The determined version matrix"
|
|
||||||
value: ${{ jobs.params.outputs.matrix }}
|
|
||||||
|
|
||||||
jobs:
|
|
||||||
params:
|
|
||||||
runs-on: ubuntu-latest
|
|
||||||
|
|
||||||
outputs:
|
|
||||||
matrix: ${{ steps.set-matrix.outputs.matrix }}
|
|
||||||
|
|
||||||
steps:
|
|
||||||
- name: "[Set-Output] Matrix"
|
|
||||||
id: set-matrix
|
|
||||||
run: |
|
|
||||||
echo "::set-output name=matrix::$( echo '${{ env.MATRIX }}' | jq -M -c )"
|
|
||||||
|
|
||||||
- name: "[DEBUG] Show settings'"
|
|
||||||
run: |
|
|
||||||
echo 'Matrix'
|
|
||||||
echo '--------------------'
|
|
||||||
echo '${{ steps.set-matrix.outputs.matrix }}'
|
|
||||||
echo
|
|
54
.github/workflows/params-memcd.yml
vendored
54
.github/workflows/params-memcd.yml
vendored
@ -1,54 +0,0 @@
|
|||||||
---
|
|
||||||
|
|
||||||
# -------------------------------------------------------------------------------------------------
|
|
||||||
# Job Name
|
|
||||||
# -------------------------------------------------------------------------------------------------
|
|
||||||
name: params
|
|
||||||
|
|
||||||
|
|
||||||
# -------------------------------------------------------------------------------------------------
|
|
||||||
# Custom Variables
|
|
||||||
# -------------------------------------------------------------------------------------------------
|
|
||||||
env:
|
|
||||||
MATRIX: >-
|
|
||||||
[
|
|
||||||
{"MEMCD_SERVER": "Memcd 1.4"},
|
|
||||||
{"MEMCD_SERVER": "Memcd 1.4-alpine"},
|
|
||||||
{"MEMCD_SERVER": "Memcd 1.5"},
|
|
||||||
{"MEMCD_SERVER": "Memcd 1.5-alpine"},
|
|
||||||
{"MEMCD_SERVER": "Memcd 1.6"},
|
|
||||||
{"MEMCD_SERVER": "Memcd 1.6-alpine"},
|
|
||||||
{"MEMCD_SERVER": "Memcd latest"},
|
|
||||||
{"MEMCD_SERVER": "Memcd alpine"}
|
|
||||||
]
|
|
||||||
|
|
||||||
|
|
||||||
# -------------------------------------------------------------------------------------------------
|
|
||||||
# When to run
|
|
||||||
# -------------------------------------------------------------------------------------------------
|
|
||||||
on:
|
|
||||||
workflow_call:
|
|
||||||
outputs:
|
|
||||||
matrix:
|
|
||||||
description: "The determined version matrix"
|
|
||||||
value: ${{ jobs.params.outputs.matrix }}
|
|
||||||
|
|
||||||
jobs:
|
|
||||||
params:
|
|
||||||
runs-on: ubuntu-latest
|
|
||||||
|
|
||||||
outputs:
|
|
||||||
matrix: ${{ steps.set-matrix.outputs.matrix }}
|
|
||||||
|
|
||||||
steps:
|
|
||||||
- name: "[Set-Output] Matrix"
|
|
||||||
id: set-matrix
|
|
||||||
run: |
|
|
||||||
echo "::set-output name=matrix::$( echo '${{ env.MATRIX }}' | jq -M -c )"
|
|
||||||
|
|
||||||
- name: "[DEBUG] Show settings'"
|
|
||||||
run: |
|
|
||||||
echo 'Matrix'
|
|
||||||
echo '--------------------'
|
|
||||||
echo '${{ steps.set-matrix.outputs.matrix }}'
|
|
||||||
echo
|
|
56
.github/workflows/params-mongo.yml
vendored
56
.github/workflows/params-mongo.yml
vendored
@ -1,56 +0,0 @@
|
|||||||
---
|
|
||||||
|
|
||||||
# -------------------------------------------------------------------------------------------------
|
|
||||||
# Job Name
|
|
||||||
# -------------------------------------------------------------------------------------------------
|
|
||||||
name: params
|
|
||||||
|
|
||||||
|
|
||||||
# -------------------------------------------------------------------------------------------------
|
|
||||||
# Custom Variables
|
|
||||||
# -------------------------------------------------------------------------------------------------
|
|
||||||
env:
|
|
||||||
# CI for Mongo 2.8 and Mongo 3.0 removed due to local segfault and non-segfault, but error in CI
|
|
||||||
# https://github.com/docker-library/mongo/issues/251
|
|
||||||
#
|
|
||||||
# CI for Mongo 3.2 and 3.4 removed due to non-reproducible error in CI
|
|
||||||
MATRIX: >-
|
|
||||||
[
|
|
||||||
{"MONGO_SERVER": "Mongo 3.6"},
|
|
||||||
{"MONGO_SERVER": "Mongo 4.0"},
|
|
||||||
{"MONGO_SERVER": "Mongo 4.2"},
|
|
||||||
{"MONGO_SERVER": "Mongo 4.4"},
|
|
||||||
{"MONGO_SERVER": "Mongo 5.0"},
|
|
||||||
{"MONGO_SERVER": "Mongo latest"}
|
|
||||||
]
|
|
||||||
|
|
||||||
|
|
||||||
# -------------------------------------------------------------------------------------------------
|
|
||||||
# When to run
|
|
||||||
# -------------------------------------------------------------------------------------------------
|
|
||||||
on:
|
|
||||||
workflow_call:
|
|
||||||
outputs:
|
|
||||||
matrix:
|
|
||||||
description: "The determined version matrix"
|
|
||||||
value: ${{ jobs.params.outputs.matrix }}
|
|
||||||
|
|
||||||
jobs:
|
|
||||||
params:
|
|
||||||
runs-on: ubuntu-latest
|
|
||||||
|
|
||||||
outputs:
|
|
||||||
matrix: ${{ steps.set-matrix.outputs.matrix }}
|
|
||||||
|
|
||||||
steps:
|
|
||||||
- name: "[Set-Output] Matrix"
|
|
||||||
id: set-matrix
|
|
||||||
run: |
|
|
||||||
echo "::set-output name=matrix::$( echo '${{ env.MATRIX }}' | jq -M -c )"
|
|
||||||
|
|
||||||
- name: "[DEBUG] Show settings'"
|
|
||||||
run: |
|
|
||||||
echo 'Matrix'
|
|
||||||
echo '--------------------'
|
|
||||||
echo '${{ steps.set-matrix.outputs.matrix }}'
|
|
||||||
echo
|
|
66
.github/workflows/params-mysql.yml
vendored
66
.github/workflows/params-mysql.yml
vendored
@ -1,66 +0,0 @@
|
|||||||
---
|
|
||||||
|
|
||||||
# -------------------------------------------------------------------------------------------------
|
|
||||||
# Job Name
|
|
||||||
# -------------------------------------------------------------------------------------------------
|
|
||||||
name: params
|
|
||||||
|
|
||||||
|
|
||||||
# -------------------------------------------------------------------------------------------------
|
|
||||||
# Custom Variables
|
|
||||||
# -------------------------------------------------------------------------------------------------
|
|
||||||
env:
|
|
||||||
MATRIX: >-
|
|
||||||
[
|
|
||||||
{"MYSQL_SERVER": "mysql-5.5"},
|
|
||||||
{"MYSQL_SERVER": "mysql-5.6"},
|
|
||||||
{"MYSQL_SERVER": "mysql-5.7"},
|
|
||||||
{"MYSQL_SERVER": "mysql-8.0"},
|
|
||||||
{"MYSQL_SERVER": "percona-5.5"},
|
|
||||||
{"MYSQL_SERVER": "percona-5.6"},
|
|
||||||
{"MYSQL_SERVER": "percona-5.7"},
|
|
||||||
{"MYSQL_SERVER": "percona-8.0"},
|
|
||||||
{"MYSQL_SERVER": "mariadb-5.5"},
|
|
||||||
{"MYSQL_SERVER": "mariadb-10.0"},
|
|
||||||
{"MYSQL_SERVER": "mariadb-10.1"},
|
|
||||||
{"MYSQL_SERVER": "mariadb-10.2"},
|
|
||||||
{"MYSQL_SERVER": "mariadb-10.3"},
|
|
||||||
{"MYSQL_SERVER": "mariadb-10.4"},
|
|
||||||
{"MYSQL_SERVER": "mariadb-10.5"},
|
|
||||||
{"MYSQL_SERVER": "mariadb-10.6"},
|
|
||||||
{"MYSQL_SERVER": "mariadb-10.7"},
|
|
||||||
{"MYSQL_SERVER": "mariadb-10.8"},
|
|
||||||
{"MYSQL_SERVER": "mariadb-10.9"},
|
|
||||||
{"MYSQL_SERVER": "mariadb-10.10"}
|
|
||||||
]
|
|
||||||
|
|
||||||
|
|
||||||
# -------------------------------------------------------------------------------------------------
|
|
||||||
# When to run
|
|
||||||
# -------------------------------------------------------------------------------------------------
|
|
||||||
on:
|
|
||||||
workflow_call:
|
|
||||||
outputs:
|
|
||||||
matrix:
|
|
||||||
description: "The determined version matrix"
|
|
||||||
value: ${{ jobs.params.outputs.matrix }}
|
|
||||||
|
|
||||||
jobs:
|
|
||||||
params:
|
|
||||||
runs-on: ubuntu-latest
|
|
||||||
|
|
||||||
outputs:
|
|
||||||
matrix: ${{ steps.set-matrix.outputs.matrix }}
|
|
||||||
|
|
||||||
steps:
|
|
||||||
- name: "[Set-Output] Matrix"
|
|
||||||
id: set-matrix
|
|
||||||
run: |
|
|
||||||
echo "::set-output name=matrix::$( echo '${{ env.MATRIX }}' | jq -M -c )"
|
|
||||||
|
|
||||||
- name: "[DEBUG] Show settings'"
|
|
||||||
run: |
|
|
||||||
echo 'Matrix'
|
|
||||||
echo '--------------------'
|
|
||||||
echo '${{ steps.set-matrix.outputs.matrix }}'
|
|
||||||
echo
|
|
72
.github/workflows/params-pgsql.yml
vendored
72
.github/workflows/params-pgsql.yml
vendored
@ -1,72 +0,0 @@
|
|||||||
---
|
|
||||||
|
|
||||||
# -------------------------------------------------------------------------------------------------
|
|
||||||
# Job Name
|
|
||||||
# -------------------------------------------------------------------------------------------------
|
|
||||||
name: params
|
|
||||||
|
|
||||||
|
|
||||||
# -------------------------------------------------------------------------------------------------
|
|
||||||
# Custom Variables
|
|
||||||
# -------------------------------------------------------------------------------------------------
|
|
||||||
env:
|
|
||||||
MATRIX: >-
|
|
||||||
[
|
|
||||||
{"PGSQL_SERVER": "PgSQL 9.0"},
|
|
||||||
{"PGSQL_SERVER": "PgSQL 9.1"},
|
|
||||||
{"PGSQL_SERVER": "PgSQL 9.2"},
|
|
||||||
{"PGSQL_SERVER": "PgSQL 9.2-alpine"},
|
|
||||||
{"PGSQL_SERVER": "PgSQL 9.3"},
|
|
||||||
{"PGSQL_SERVER": "PgSQL 9.3-alpine"},
|
|
||||||
{"PGSQL_SERVER": "PgSQL 9.4"},
|
|
||||||
{"PGSQL_SERVER": "PgSQL 9.4-alpine"},
|
|
||||||
{"PGSQL_SERVER": "PgSQL 9.5"},
|
|
||||||
{"PGSQL_SERVER": "PgSQL 9.5-alpine"},
|
|
||||||
{"PGSQL_SERVER": "PgSQL 9.6"},
|
|
||||||
{"PGSQL_SERVER": "PgSQL 9.6-alpine"},
|
|
||||||
{"PGSQL_SERVER": "PgSQL 10"},
|
|
||||||
{"PGSQL_SERVER": "PgSQL 10-alpine"},
|
|
||||||
{"PGSQL_SERVER": "PgSQL 11"},
|
|
||||||
{"PGSQL_SERVER": "PgSQL 11-alpine"},
|
|
||||||
{"PGSQL_SERVER": "PgSQL 12"},
|
|
||||||
{"PGSQL_SERVER": "PgSQL 12-alpine"},
|
|
||||||
{"PGSQL_SERVER": "PgSQL 13"},
|
|
||||||
{"PGSQL_SERVER": "PgSQL 13-alpine"},
|
|
||||||
{"PGSQL_SERVER": "PgSQL 14"},
|
|
||||||
{"PGSQL_SERVER": "PgSQL 14-alpine"},
|
|
||||||
{"PGSQL_SERVER": "PgSQL 15"},
|
|
||||||
{"PGSQL_SERVER": "PgSQL 15-alpine"},
|
|
||||||
{"PGSQL_SERVER": "PgSQL latest"},
|
|
||||||
{"PGSQL_SERVER": "PgSQL alpine"}
|
|
||||||
]
|
|
||||||
|
|
||||||
|
|
||||||
# -------------------------------------------------------------------------------------------------
|
|
||||||
# When to run
|
|
||||||
# -------------------------------------------------------------------------------------------------
|
|
||||||
on:
|
|
||||||
workflow_call:
|
|
||||||
outputs:
|
|
||||||
matrix:
|
|
||||||
description: "The determined version matrix"
|
|
||||||
value: ${{ jobs.params.outputs.matrix }}
|
|
||||||
|
|
||||||
jobs:
|
|
||||||
params:
|
|
||||||
runs-on: ubuntu-latest
|
|
||||||
|
|
||||||
outputs:
|
|
||||||
matrix: ${{ steps.set-matrix.outputs.matrix }}
|
|
||||||
|
|
||||||
steps:
|
|
||||||
- name: "[Set-Output] Matrix"
|
|
||||||
id: set-matrix
|
|
||||||
run: |
|
|
||||||
echo "::set-output name=matrix::$( echo '${{ env.MATRIX }}' | jq -M -c )"
|
|
||||||
|
|
||||||
- name: "[DEBUG] Show settings'"
|
|
||||||
run: |
|
|
||||||
echo 'Matrix'
|
|
||||||
echo '--------------------'
|
|
||||||
echo '${{ steps.set-matrix.outputs.matrix }}'
|
|
||||||
echo
|
|
99
.github/workflows/params-php.yml
vendored
99
.github/workflows/params-php.yml
vendored
@ -1,99 +0,0 @@
|
|||||||
---
|
|
||||||
|
|
||||||
# -------------------------------------------------------------------------------------------------
|
|
||||||
# Job Name
|
|
||||||
# -------------------------------------------------------------------------------------------------
|
|
||||||
name: params
|
|
||||||
|
|
||||||
|
|
||||||
# -------------------------------------------------------------------------------------------------
|
|
||||||
# Custom Variables
|
|
||||||
# -------------------------------------------------------------------------------------------------
|
|
||||||
env:
|
|
||||||
# Note: Older PHP versions use an older version of phpPgMyAdmin, which does not work with later
|
|
||||||
# PgSQL server versions. That's why we need to tell those combinations to use an old PgSQL server
|
|
||||||
MATRIX: >-
|
|
||||||
[
|
|
||||||
{"PHP_SERVER": "PHP 5.3", "HTTPD_SERVER": "apache-2.2", "PGSQL_SERVER": "PgSQL 12"},
|
|
||||||
{"PHP_SERVER": "PHP 5.4", "HTTPD_SERVER": "apache-2.2", "PGSQL_SERVER": "PgSQL 12"},
|
|
||||||
{"PHP_SERVER": "PHP 5.5", "HTTPD_SERVER": "apache-2.2", "PGSQL_SERVER": "PgSQL 12"},
|
|
||||||
{"PHP_SERVER": "PHP 5.6", "HTTPD_SERVER": "apache-2.2", "PGSQL_SERVER": "PgSQL 12"},
|
|
||||||
{"PHP_SERVER": "PHP 7.0", "HTTPD_SERVER": "apache-2.2", "PGSQL_SERVER": "PgSQL 12"},
|
|
||||||
{"PHP_SERVER": "PHP 7.1", "HTTPD_SERVER": "apache-2.2", "PGSQL_SERVER": "PgSQL 12"},
|
|
||||||
{"PHP_SERVER": "PHP 7.2", "HTTPD_SERVER": "apache-2.2"},
|
|
||||||
{"PHP_SERVER": "PHP 7.3", "HTTPD_SERVER": "apache-2.2"},
|
|
||||||
{"PHP_SERVER": "PHP 7.4", "HTTPD_SERVER": "apache-2.2"},
|
|
||||||
{"PHP_SERVER": "PHP 8.0", "HTTPD_SERVER": "apache-2.2"},
|
|
||||||
{"PHP_SERVER": "PHP 8.1", "HTTPD_SERVER": "apache-2.2"},
|
|
||||||
{"PHP_SERVER": "PHP 8.2", "HTTPD_SERVER": "apache-2.2"},
|
|
||||||
|
|
||||||
{"PHP_SERVER": "PHP 5.3", "HTTPD_SERVER": "apache-2.4", "PGSQL_SERVER": "PgSQL 12"},
|
|
||||||
{"PHP_SERVER": "PHP 5.4", "HTTPD_SERVER": "apache-2.4", "PGSQL_SERVER": "PgSQL 12"},
|
|
||||||
{"PHP_SERVER": "PHP 5.5", "HTTPD_SERVER": "apache-2.4", "PGSQL_SERVER": "PgSQL 12"},
|
|
||||||
{"PHP_SERVER": "PHP 5.6", "HTTPD_SERVER": "apache-2.4", "PGSQL_SERVER": "PgSQL 12"},
|
|
||||||
{"PHP_SERVER": "PHP 7.0", "HTTPD_SERVER": "apache-2.4", "PGSQL_SERVER": "PgSQL 12"},
|
|
||||||
{"PHP_SERVER": "PHP 7.1", "HTTPD_SERVER": "apache-2.4", "PGSQL_SERVER": "PgSQL 12"},
|
|
||||||
{"PHP_SERVER": "PHP 7.2", "HTTPD_SERVER": "apache-2.4"},
|
|
||||||
{"PHP_SERVER": "PHP 7.3", "HTTPD_SERVER": "apache-2.4"},
|
|
||||||
{"PHP_SERVER": "PHP 7.4", "HTTPD_SERVER": "apache-2.4"},
|
|
||||||
{"PHP_SERVER": "PHP 8.0", "HTTPD_SERVER": "apache-2.4"},
|
|
||||||
{"PHP_SERVER": "PHP 8.1", "HTTPD_SERVER": "apache-2.4"},
|
|
||||||
{"PHP_SERVER": "PHP 8.2", "HTTPD_SERVER": "apache-2.4"},
|
|
||||||
|
|
||||||
{"PHP_SERVER": "PHP 5.3", "HTTPD_SERVER": "nginx-stable", "PGSQL_SERVER": "PgSQL 12"},
|
|
||||||
{"PHP_SERVER": "PHP 5.4", "HTTPD_SERVER": "nginx-stable", "PGSQL_SERVER": "PgSQL 12"},
|
|
||||||
{"PHP_SERVER": "PHP 5.5", "HTTPD_SERVER": "nginx-stable", "PGSQL_SERVER": "PgSQL 12"},
|
|
||||||
{"PHP_SERVER": "PHP 5.6", "HTTPD_SERVER": "nginx-stable", "PGSQL_SERVER": "PgSQL 12"},
|
|
||||||
{"PHP_SERVER": "PHP 7.0", "HTTPD_SERVER": "nginx-stable", "PGSQL_SERVER": "PgSQL 12"},
|
|
||||||
{"PHP_SERVER": "PHP 7.1", "HTTPD_SERVER": "nginx-stable", "PGSQL_SERVER": "PgSQL 12"},
|
|
||||||
{"PHP_SERVER": "PHP 7.2", "HTTPD_SERVER": "nginx-stable"},
|
|
||||||
{"PHP_SERVER": "PHP 7.3", "HTTPD_SERVER": "nginx-stable"},
|
|
||||||
{"PHP_SERVER": "PHP 7.4", "HTTPD_SERVER": "nginx-stable"},
|
|
||||||
{"PHP_SERVER": "PHP 8.0", "HTTPD_SERVER": "nginx-stable"},
|
|
||||||
{"PHP_SERVER": "PHP 8.1", "HTTPD_SERVER": "nginx-stable"},
|
|
||||||
{"PHP_SERVER": "PHP 8.2", "HTTPD_SERVER": "nginx-stable"},
|
|
||||||
|
|
||||||
{"PHP_SERVER": "PHP 5.3", "HTTPD_SERVER": "nginx-mainline", "PGSQL_SERVER": "PgSQL 12"},
|
|
||||||
{"PHP_SERVER": "PHP 5.4", "HTTPD_SERVER": "nginx-mainline", "PGSQL_SERVER": "PgSQL 12"},
|
|
||||||
{"PHP_SERVER": "PHP 5.5", "HTTPD_SERVER": "nginx-mainline", "PGSQL_SERVER": "PgSQL 12"},
|
|
||||||
{"PHP_SERVER": "PHP 5.6", "HTTPD_SERVER": "nginx-mainline", "PGSQL_SERVER": "PgSQL 12"},
|
|
||||||
{"PHP_SERVER": "PHP 7.0", "HTTPD_SERVER": "nginx-mainline", "PGSQL_SERVER": "PgSQL 12"},
|
|
||||||
{"PHP_SERVER": "PHP 7.1", "HTTPD_SERVER": "nginx-mainline", "PGSQL_SERVER": "PgSQL 12"},
|
|
||||||
{"PHP_SERVER": "PHP 7.2", "HTTPD_SERVER": "nginx-mainline"},
|
|
||||||
{"PHP_SERVER": "PHP 7.3", "HTTPD_SERVER": "nginx-mainline"},
|
|
||||||
{"PHP_SERVER": "PHP 7.4", "HTTPD_SERVER": "nginx-mainline"},
|
|
||||||
{"PHP_SERVER": "PHP 8.0", "HTTPD_SERVER": "nginx-mainline"},
|
|
||||||
{"PHP_SERVER": "PHP 8.1", "HTTPD_SERVER": "nginx-mainline"},
|
|
||||||
{"PHP_SERVER": "PHP 8.2", "HTTPD_SERVER": "nginx-mainline"}
|
|
||||||
]
|
|
||||||
|
|
||||||
|
|
||||||
# -------------------------------------------------------------------------------------------------
|
|
||||||
# When to run
|
|
||||||
# -------------------------------------------------------------------------------------------------
|
|
||||||
on:
|
|
||||||
workflow_call:
|
|
||||||
outputs:
|
|
||||||
matrix:
|
|
||||||
description: "The determined version matrix"
|
|
||||||
value: ${{ jobs.params.outputs.matrix }}
|
|
||||||
|
|
||||||
jobs:
|
|
||||||
params:
|
|
||||||
runs-on: ubuntu-latest
|
|
||||||
|
|
||||||
outputs:
|
|
||||||
matrix: ${{ steps.set-matrix.outputs.matrix }}
|
|
||||||
|
|
||||||
steps:
|
|
||||||
- name: "[Set-Output] Matrix"
|
|
||||||
id: set-matrix
|
|
||||||
run: |
|
|
||||||
echo "::set-output name=matrix::$( echo '${{ env.MATRIX }}' | jq -M -c )"
|
|
||||||
|
|
||||||
- name: "[DEBUG] Show settings'"
|
|
||||||
run: |
|
|
||||||
echo 'Matrix'
|
|
||||||
echo '--------------------'
|
|
||||||
echo '${{ steps.set-matrix.outputs.matrix }}'
|
|
||||||
echo
|
|
63
.github/workflows/params-redis.yml
vendored
63
.github/workflows/params-redis.yml
vendored
@ -1,63 +0,0 @@
|
|||||||
---
|
|
||||||
|
|
||||||
# -------------------------------------------------------------------------------------------------
|
|
||||||
# Job Name
|
|
||||||
# -------------------------------------------------------------------------------------------------
|
|
||||||
name: params
|
|
||||||
|
|
||||||
|
|
||||||
# -------------------------------------------------------------------------------------------------
|
|
||||||
# Custom Variables
|
|
||||||
# -------------------------------------------------------------------------------------------------
|
|
||||||
env:
|
|
||||||
MATRIX: >-
|
|
||||||
[
|
|
||||||
{"REDIS_SERVER": "Redis 2.8"},
|
|
||||||
{"REDIS_SERVER": "Redis 3.0"},
|
|
||||||
{"REDIS_SERVER": "Redis 3.0-alpine"},
|
|
||||||
{"REDIS_SERVER": "Redis 3.2"},
|
|
||||||
{"REDIS_SERVER": "Redis 3.2-alpine"},
|
|
||||||
{"REDIS_SERVER": "Redis 4.0"},
|
|
||||||
{"REDIS_SERVER": "Redis 4.0-alpine"},
|
|
||||||
{"REDIS_SERVER": "Redis 5.0"},
|
|
||||||
{"REDIS_SERVER": "Redis 5.0-alpine"},
|
|
||||||
{"REDIS_SERVER": "Redis 6.0"},
|
|
||||||
{"REDIS_SERVER": "Redis 6.0-alpine"},
|
|
||||||
{"REDIS_SERVER": "Redis 6.2"},
|
|
||||||
{"REDIS_SERVER": "Redis 6.2-alpine"},
|
|
||||||
{"REDIS_SERVER": "Redis 7.0"},
|
|
||||||
{"REDIS_SERVER": "Redis 7.0-alpine"},
|
|
||||||
{"REDIS_SERVER": "Redis latest"},
|
|
||||||
{"REDIS_SERVER": "Redis alpine"}
|
|
||||||
]
|
|
||||||
|
|
||||||
|
|
||||||
# -------------------------------------------------------------------------------------------------
|
|
||||||
# When to run
|
|
||||||
# -------------------------------------------------------------------------------------------------
|
|
||||||
on:
|
|
||||||
workflow_call:
|
|
||||||
outputs:
|
|
||||||
matrix:
|
|
||||||
description: "The determined version matrix"
|
|
||||||
value: ${{ jobs.params.outputs.matrix }}
|
|
||||||
|
|
||||||
jobs:
|
|
||||||
params:
|
|
||||||
runs-on: ubuntu-latest
|
|
||||||
|
|
||||||
outputs:
|
|
||||||
matrix: ${{ steps.set-matrix.outputs.matrix }}
|
|
||||||
|
|
||||||
steps:
|
|
||||||
- name: "[Set-Output] Matrix"
|
|
||||||
id: set-matrix
|
|
||||||
run: |
|
|
||||||
echo "::set-output name=matrix::$( echo '${{ env.MATRIX }}' | jq -M -c )"
|
|
||||||
|
|
||||||
- name: "[DEBUG] Show settings'"
|
|
||||||
run: |
|
|
||||||
echo 'Matrix'
|
|
||||||
echo '--------------------'
|
|
||||||
echo '${{ steps.set-matrix.outputs.matrix }}'
|
|
||||||
echo
|
|
242
.github/workflows/test-config.yml
vendored
Normal file
242
.github/workflows/test-config.yml
vendored
Normal file
@ -0,0 +1,242 @@
|
|||||||
|
---
|
||||||
|
|
||||||
|
# -------------------------------------------------------------------------------------------------
|
||||||
|
# Job Name
|
||||||
|
# -------------------------------------------------------------------------------------------------
|
||||||
|
name: Config
|
||||||
|
|
||||||
|
|
||||||
|
# -------------------------------------------------------------------------------------------------
|
||||||
|
# When to run
|
||||||
|
# -------------------------------------------------------------------------------------------------
|
||||||
|
on:
|
||||||
|
# Runs on Pull Requests
|
||||||
|
pull_request:
|
||||||
|
|
||||||
|
# Runs on master Branch and Tags
|
||||||
|
push:
|
||||||
|
branches:
|
||||||
|
- master
|
||||||
|
tags:
|
||||||
|
- '[0-9]+.[0-9]+*'
|
||||||
|
|
||||||
|
|
||||||
|
# -------------------------------------------------------------------------------------------------
|
||||||
|
# What to run
|
||||||
|
# -------------------------------------------------------------------------------------------------
|
||||||
|
jobs:
|
||||||
|
test_config:
|
||||||
|
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
|
||||||
|
strategy:
|
||||||
|
fail-fast: false
|
||||||
|
matrix:
|
||||||
|
php:
|
||||||
|
- "5.3"
|
||||||
|
- "5.4"
|
||||||
|
- "5.5"
|
||||||
|
- "5.6"
|
||||||
|
- "7.0"
|
||||||
|
- "7.1"
|
||||||
|
- "7.2"
|
||||||
|
- "7.3"
|
||||||
|
- "7.4"
|
||||||
|
- "8.0"
|
||||||
|
- "8.1"
|
||||||
|
- "8.2"
|
||||||
|
httpd:
|
||||||
|
- "apache-2.2"
|
||||||
|
- "apache-2.4"
|
||||||
|
- "nginx-stable"
|
||||||
|
- "nginx-mainline"
|
||||||
|
|
||||||
|
name: "[PHP ${{ matrix.php }}] vs [${{ matrix.httpd }}]"
|
||||||
|
steps:
|
||||||
|
|
||||||
|
# ------------------------------------------------------------
|
||||||
|
# Checkout repository
|
||||||
|
# ------------------------------------------------------------
|
||||||
|
- name: Checkout repository
|
||||||
|
uses: actions/checkout@v1
|
||||||
|
|
||||||
|
- name: Show environment
|
||||||
|
shell: bash
|
||||||
|
run: |
|
||||||
|
env
|
||||||
|
|
||||||
|
- name: Show network
|
||||||
|
shell: bash
|
||||||
|
run: |
|
||||||
|
netstat -an || true
|
||||||
|
ss -tlun || true
|
||||||
|
|
||||||
|
- name: Show Docker version
|
||||||
|
shell: bash
|
||||||
|
run: |
|
||||||
|
docker version
|
||||||
|
|
||||||
|
# ------------------------------------------------------------
|
||||||
|
# Setup
|
||||||
|
# ------------------------------------------------------------
|
||||||
|
- name: Configure
|
||||||
|
shell: bash
|
||||||
|
run: |
|
||||||
|
cd .tests/
|
||||||
|
# Set the two candidates to test against
|
||||||
|
make configure KEY=PHP_SERVER VAL=${PHP}
|
||||||
|
make configure KEY=HTTPD_SERVER VAL=${HTTPD}
|
||||||
|
# 3306 is taken, so chose another one
|
||||||
|
make configure KEY=HOST_PORT_MYSQL VAL=3307
|
||||||
|
|
||||||
|
# Test full customization
|
||||||
|
make configure KEY=DEBUG_COMPOSE_ENTRYPOINT VAL="$(( RANDOM % 3 ))"
|
||||||
|
make configure KEY=DOCKER_LOGS VAL="$(( RANDOM % 1 ))"
|
||||||
|
make configure KEY=TLD_SUFFIX VAL=loc2
|
||||||
|
make configure KEY=TIMEZONE VAL='Europe/Berlin'
|
||||||
|
make configure KEY=PHP_MODULES_DISABLE VAL=
|
||||||
|
make configure KEY=HTTPD_TEMPLATE_DIR VAL=.config
|
||||||
|
make configure KEY=HOST_PORT_HTTPD VAL=8080
|
||||||
|
make configure KEY=HOST_PORT_HTTPD_SSL VAL=8443
|
||||||
|
make configure KEY=MYSQL_ROOT_PASSWORD VAL=mysqlpass
|
||||||
|
make configure KEY=PGSQL_ROOT_USER VAL=pgroot
|
||||||
|
make configure KEY=PGSQL_ROOT_PASSWORD VAL=pgsqlpass
|
||||||
|
make configure KEY=DEVILBOX_VENDOR_PHPMYADMIN_AUTOLOGIN VAL=0
|
||||||
|
env:
|
||||||
|
PHP: ${{ matrix.php }}
|
||||||
|
HTTPD: ${{ matrix.httpd }}
|
||||||
|
|
||||||
|
- name: Pull images
|
||||||
|
shell: bash
|
||||||
|
run: |
|
||||||
|
cd .tests/
|
||||||
|
make pull
|
||||||
|
|
||||||
|
- name: Startup
|
||||||
|
shell: bash
|
||||||
|
run: |
|
||||||
|
cd .tests/
|
||||||
|
make start
|
||||||
|
|
||||||
|
- name: Docker logs
|
||||||
|
shell: bash
|
||||||
|
run: |
|
||||||
|
cd .tests/
|
||||||
|
make logs
|
||||||
|
|
||||||
|
# ------------------------------------------------------------
|
||||||
|
# Run tests
|
||||||
|
# ------------------------------------------------------------
|
||||||
|
- name: Test Modules
|
||||||
|
shell: bash
|
||||||
|
run: |
|
||||||
|
cd .tests/
|
||||||
|
make test-smoke-modules
|
||||||
|
if: success() || failure()
|
||||||
|
|
||||||
|
- name: Test Config
|
||||||
|
shell: bash
|
||||||
|
run: |
|
||||||
|
cd .tests/
|
||||||
|
make test-smoke-config
|
||||||
|
if: success() || failure()
|
||||||
|
|
||||||
|
- name: Test Intranet
|
||||||
|
shell: bash
|
||||||
|
run: |
|
||||||
|
cd .tests/
|
||||||
|
make test-smoke-intranet
|
||||||
|
if: success() || failure()
|
||||||
|
|
||||||
|
- name: Test Vendors
|
||||||
|
shell: bash
|
||||||
|
run: |
|
||||||
|
cd .tests/
|
||||||
|
make test-smoke-vendors
|
||||||
|
if: success() || failure()
|
||||||
|
|
||||||
|
- name: Test Vhosts
|
||||||
|
shell: bash
|
||||||
|
run: |
|
||||||
|
cd .tests/
|
||||||
|
make test-smoke-vhosts
|
||||||
|
if: success() || failure()
|
||||||
|
|
||||||
|
- name: Test Reverse Proxy
|
||||||
|
shell: bash
|
||||||
|
run: |
|
||||||
|
cd .tests/
|
||||||
|
make test-smoke-rproxies
|
||||||
|
if: success() || failure()
|
||||||
|
|
||||||
|
- name: Test SSL
|
||||||
|
shell: bash
|
||||||
|
run: |
|
||||||
|
cd .tests/
|
||||||
|
make test-smoke-ssl
|
||||||
|
if: success() || failure()
|
||||||
|
|
||||||
|
- name: Test Bind
|
||||||
|
shell: bash
|
||||||
|
run: |
|
||||||
|
cd .tests/
|
||||||
|
make test-smoke-bind
|
||||||
|
if: success() || failure()
|
||||||
|
|
||||||
|
- name: Test Autostart
|
||||||
|
shell: bash
|
||||||
|
run: |
|
||||||
|
cd .tests/
|
||||||
|
make test-smoke-autostart
|
||||||
|
if: success() || failure()
|
||||||
|
|
||||||
|
- name: "Test Framework: CakePHP"
|
||||||
|
shell: bash
|
||||||
|
run: |
|
||||||
|
cd .tests/
|
||||||
|
make test-smoke-framework-cakephp
|
||||||
|
if: success() || failure()
|
||||||
|
|
||||||
|
- name: "Test Framework: Drupal"
|
||||||
|
shell: bash
|
||||||
|
run: |
|
||||||
|
cd .tests/
|
||||||
|
make test-smoke-framework-drupal
|
||||||
|
if: success() || failure()
|
||||||
|
|
||||||
|
- name: "Test Framework: Wordpress"
|
||||||
|
shell: bash
|
||||||
|
run: |
|
||||||
|
cd .tests/
|
||||||
|
make test-smoke-framework-wordpress
|
||||||
|
if: success() || failure()
|
||||||
|
|
||||||
|
- name: "Test Container"
|
||||||
|
shell: bash
|
||||||
|
run: |
|
||||||
|
retry() {
|
||||||
|
for n in $(seq 5); do
|
||||||
|
echo "[${n}/5] ${*}";
|
||||||
|
if eval "${*}"; then
|
||||||
|
echo "[SUCC] ${n}/t";
|
||||||
|
return 0;
|
||||||
|
fi;
|
||||||
|
sleep 5;
|
||||||
|
echo "[FAIL] ${n}/5";
|
||||||
|
done;
|
||||||
|
return 1;
|
||||||
|
}
|
||||||
|
cd .tests/
|
||||||
|
retry make test-smoke-container
|
||||||
|
if: success() || failure()
|
||||||
|
|
||||||
|
# ------------------------------------------------------------
|
||||||
|
# Finish
|
||||||
|
# ------------------------------------------------------------
|
||||||
|
|
||||||
|
- name: "Finish: Docker logs"
|
||||||
|
shell: bash
|
||||||
|
run: |
|
||||||
|
cd .tests/
|
||||||
|
make logs
|
||||||
|
if: success() || failure()
|
76
.github/workflows/test-httpd.yml
vendored
76
.github/workflows/test-httpd.yml
vendored
@ -1,76 +0,0 @@
|
|||||||
---
|
|
||||||
|
|
||||||
# -------------------------------------------------------------------------------------------------
|
|
||||||
# Job Name
|
|
||||||
# -------------------------------------------------------------------------------------------------
|
|
||||||
name: Httpd
|
|
||||||
|
|
||||||
|
|
||||||
# -------------------------------------------------------------------------------------------------
|
|
||||||
# When to run
|
|
||||||
# -------------------------------------------------------------------------------------------------
|
|
||||||
on:
|
|
||||||
# Runs on Pull Requests
|
|
||||||
pull_request:
|
|
||||||
paths:
|
|
||||||
- '.devilbox/**'
|
|
||||||
- '.github/workflows/params*.yml'
|
|
||||||
- '.github/workflows/test*.yml'
|
|
||||||
- '.github/workflows/zzz*.yml'
|
|
||||||
- '.tests/**'
|
|
||||||
- 'cfg/vhost-gen/**'
|
|
||||||
- 'compose/**'
|
|
||||||
- 'docker-compose.override.yml-example'
|
|
||||||
- 'docker-compose.yml'
|
|
||||||
- 'env-example'
|
|
||||||
- '!**.md'
|
|
||||||
# Runs on master Branch and Tags
|
|
||||||
push:
|
|
||||||
paths:
|
|
||||||
- '.devilbox/**'
|
|
||||||
- '.github/workflows/params*.yml'
|
|
||||||
- '.github/workflows/test*.yml'
|
|
||||||
- '.github/workflows/zzz*.yml'
|
|
||||||
- '.tests/**'
|
|
||||||
- 'cfg/vhost-gen/**'
|
|
||||||
- 'compose/**'
|
|
||||||
- 'docker-compose.override.yml-example'
|
|
||||||
- 'docker-compose.yml'
|
|
||||||
- 'env-example'
|
|
||||||
- '!**.md'
|
|
||||||
branches:
|
|
||||||
- master
|
|
||||||
tags:
|
|
||||||
- '[0-9]+.[0-9]+*'
|
|
||||||
|
|
||||||
|
|
||||||
jobs:
|
|
||||||
# -----------------------------------------------------------------------------------------------
|
|
||||||
# (1/3) Determine parameter settings
|
|
||||||
# -----------------------------------------------------------------------------------------------
|
|
||||||
params:
|
|
||||||
uses: ./.github/workflows/params-httpd.yml
|
|
||||||
|
|
||||||
|
|
||||||
# -----------------------------------------------------------------------------------------------
|
|
||||||
# (2/3) Test with default settings
|
|
||||||
# -----------------------------------------------------------------------------------------------
|
|
||||||
default:
|
|
||||||
needs: [params]
|
|
||||||
uses: ./.github/workflows/zzz-reuse-tests.yml
|
|
||||||
with:
|
|
||||||
matrix: ${{ needs.params.outputs.matrix }}
|
|
||||||
custom_config: false
|
|
||||||
operating_system: ubuntu-latest
|
|
||||||
|
|
||||||
|
|
||||||
# -----------------------------------------------------------------------------------------------
|
|
||||||
# (3/3) Test with customizedt settings
|
|
||||||
# -----------------------------------------------------------------------------------------------
|
|
||||||
custom:
|
|
||||||
needs: [params]
|
|
||||||
uses: ./.github/workflows/zzz-reuse-tests.yml
|
|
||||||
with:
|
|
||||||
matrix: ${{ needs.params.outputs.matrix }}
|
|
||||||
custom_config: true
|
|
||||||
operating_system: ubuntu-latest
|
|
76
.github/workflows/test-memcd.yml
vendored
76
.github/workflows/test-memcd.yml
vendored
@ -1,76 +0,0 @@
|
|||||||
---
|
|
||||||
|
|
||||||
# -------------------------------------------------------------------------------------------------
|
|
||||||
# Job Name
|
|
||||||
# -------------------------------------------------------------------------------------------------
|
|
||||||
name: Memcd
|
|
||||||
|
|
||||||
|
|
||||||
# -------------------------------------------------------------------------------------------------
|
|
||||||
# When to run
|
|
||||||
# -------------------------------------------------------------------------------------------------
|
|
||||||
on:
|
|
||||||
# Runs on Pull Requests
|
|
||||||
pull_request:
|
|
||||||
paths:
|
|
||||||
- '.devilbox/**'
|
|
||||||
- '.github/workflows/params*.yml'
|
|
||||||
- '.github/workflows/test*.yml'
|
|
||||||
- '.github/workflows/zzz*.yml'
|
|
||||||
- '.tests/**'
|
|
||||||
- 'cfg/vhost-gen/**'
|
|
||||||
- 'compose/**'
|
|
||||||
- 'docker-compose.override.yml-example'
|
|
||||||
- 'docker-compose.yml'
|
|
||||||
- 'env-example'
|
|
||||||
- '!**.md'
|
|
||||||
# Runs on master Branch and Tags
|
|
||||||
push:
|
|
||||||
paths:
|
|
||||||
- '.devilbox/**'
|
|
||||||
- '.github/workflows/params*.yml'
|
|
||||||
- '.github/workflows/test*.yml'
|
|
||||||
- '.github/workflows/zzz*.yml'
|
|
||||||
- '.tests/**'
|
|
||||||
- 'cfg/vhost-gen/**'
|
|
||||||
- 'compose/**'
|
|
||||||
- 'docker-compose.override.yml-example'
|
|
||||||
- 'docker-compose.yml'
|
|
||||||
- 'env-example'
|
|
||||||
- '!**.md'
|
|
||||||
branches:
|
|
||||||
- master
|
|
||||||
tags:
|
|
||||||
- '[0-9]+.[0-9]+*'
|
|
||||||
|
|
||||||
|
|
||||||
jobs:
|
|
||||||
# -----------------------------------------------------------------------------------------------
|
|
||||||
# (1/3) Determine parameter settings
|
|
||||||
# -----------------------------------------------------------------------------------------------
|
|
||||||
params:
|
|
||||||
uses: ./.github/workflows/params-memcd.yml
|
|
||||||
|
|
||||||
|
|
||||||
# -----------------------------------------------------------------------------------------------
|
|
||||||
# (2/3) Test with default settings
|
|
||||||
# -----------------------------------------------------------------------------------------------
|
|
||||||
default:
|
|
||||||
needs: [params]
|
|
||||||
uses: ./.github/workflows/zzz-reuse-tests.yml
|
|
||||||
with:
|
|
||||||
matrix: ${{ needs.params.outputs.matrix }}
|
|
||||||
custom_config: false
|
|
||||||
operating_system: ubuntu-latest
|
|
||||||
|
|
||||||
|
|
||||||
# -----------------------------------------------------------------------------------------------
|
|
||||||
# (3/3) Test with customizedt settings
|
|
||||||
# -----------------------------------------------------------------------------------------------
|
|
||||||
custom:
|
|
||||||
needs: [params]
|
|
||||||
uses: ./.github/workflows/zzz-reuse-tests.yml
|
|
||||||
with:
|
|
||||||
matrix: ${{ needs.params.outputs.matrix }}
|
|
||||||
custom_config: true
|
|
||||||
operating_system: ubuntu-latest
|
|
76
.github/workflows/test-mongo.yml
vendored
76
.github/workflows/test-mongo.yml
vendored
@ -1,76 +0,0 @@
|
|||||||
---
|
|
||||||
|
|
||||||
# -------------------------------------------------------------------------------------------------
|
|
||||||
# Job Name
|
|
||||||
# -------------------------------------------------------------------------------------------------
|
|
||||||
name: Mongo
|
|
||||||
|
|
||||||
|
|
||||||
# -------------------------------------------------------------------------------------------------
|
|
||||||
# When to run
|
|
||||||
# -------------------------------------------------------------------------------------------------
|
|
||||||
on:
|
|
||||||
# Runs on Pull Requests
|
|
||||||
pull_request:
|
|
||||||
paths:
|
|
||||||
- '.devilbox/**'
|
|
||||||
- '.github/workflows/params*.yml'
|
|
||||||
- '.github/workflows/test*.yml'
|
|
||||||
- '.github/workflows/zzz*.yml'
|
|
||||||
- '.tests/**'
|
|
||||||
- 'cfg/vhost-gen/**'
|
|
||||||
- 'compose/**'
|
|
||||||
- 'docker-compose.override.yml-example'
|
|
||||||
- 'docker-compose.yml'
|
|
||||||
- 'env-example'
|
|
||||||
- '!**.md'
|
|
||||||
# Runs on master Branch and Tags
|
|
||||||
push:
|
|
||||||
paths:
|
|
||||||
- '.devilbox/**'
|
|
||||||
- '.github/workflows/params*.yml'
|
|
||||||
- '.github/workflows/test*.yml'
|
|
||||||
- '.github/workflows/zzz*.yml'
|
|
||||||
- '.tests/**'
|
|
||||||
- 'cfg/vhost-gen/**'
|
|
||||||
- 'compose/**'
|
|
||||||
- 'docker-compose.override.yml-example'
|
|
||||||
- 'docker-compose.yml'
|
|
||||||
- 'env-example'
|
|
||||||
- '!**.md'
|
|
||||||
branches:
|
|
||||||
- master
|
|
||||||
tags:
|
|
||||||
- '[0-9]+.[0-9]+*'
|
|
||||||
|
|
||||||
|
|
||||||
jobs:
|
|
||||||
# -----------------------------------------------------------------------------------------------
|
|
||||||
# (1/3) Determine parameter settings
|
|
||||||
# -----------------------------------------------------------------------------------------------
|
|
||||||
params:
|
|
||||||
uses: ./.github/workflows/params-mongo.yml
|
|
||||||
|
|
||||||
|
|
||||||
# -----------------------------------------------------------------------------------------------
|
|
||||||
# (2/3) Test with default settings
|
|
||||||
# -----------------------------------------------------------------------------------------------
|
|
||||||
default:
|
|
||||||
needs: [params]
|
|
||||||
uses: ./.github/workflows/zzz-reuse-tests.yml
|
|
||||||
with:
|
|
||||||
matrix: ${{ needs.params.outputs.matrix }}
|
|
||||||
custom_config: false
|
|
||||||
operating_system: ubuntu-latest
|
|
||||||
|
|
||||||
|
|
||||||
# -----------------------------------------------------------------------------------------------
|
|
||||||
# (3/3) Test with customizedt settings
|
|
||||||
# -----------------------------------------------------------------------------------------------
|
|
||||||
custom:
|
|
||||||
needs: [params]
|
|
||||||
uses: ./.github/workflows/zzz-reuse-tests.yml
|
|
||||||
with:
|
|
||||||
matrix: ${{ needs.params.outputs.matrix }}
|
|
||||||
custom_config: true
|
|
||||||
operating_system: ubuntu-latest
|
|
76
.github/workflows/test-mysql.yml
vendored
76
.github/workflows/test-mysql.yml
vendored
@ -1,76 +0,0 @@
|
|||||||
---
|
|
||||||
|
|
||||||
# -------------------------------------------------------------------------------------------------
|
|
||||||
# Job Name
|
|
||||||
# -------------------------------------------------------------------------------------------------
|
|
||||||
name: MySQL
|
|
||||||
|
|
||||||
|
|
||||||
# -------------------------------------------------------------------------------------------------
|
|
||||||
# When to run
|
|
||||||
# -------------------------------------------------------------------------------------------------
|
|
||||||
on:
|
|
||||||
# Runs on Pull Requests
|
|
||||||
pull_request:
|
|
||||||
paths:
|
|
||||||
- '.devilbox/**'
|
|
||||||
- '.github/workflows/params*.yml'
|
|
||||||
- '.github/workflows/test*.yml'
|
|
||||||
- '.github/workflows/zzz*.yml'
|
|
||||||
- '.tests/**'
|
|
||||||
- 'cfg/vhost-gen/**'
|
|
||||||
- 'compose/**'
|
|
||||||
- 'docker-compose.override.yml-example'
|
|
||||||
- 'docker-compose.yml'
|
|
||||||
- 'env-example'
|
|
||||||
- '!**.md'
|
|
||||||
# Runs on master Branch and Tags
|
|
||||||
push:
|
|
||||||
paths:
|
|
||||||
- '.devilbox/**'
|
|
||||||
- '.github/workflows/params*.yml'
|
|
||||||
- '.github/workflows/test*.yml'
|
|
||||||
- '.github/workflows/zzz*.yml'
|
|
||||||
- '.tests/**'
|
|
||||||
- 'cfg/vhost-gen/**'
|
|
||||||
- 'compose/**'
|
|
||||||
- 'docker-compose.override.yml-example'
|
|
||||||
- 'docker-compose.yml'
|
|
||||||
- 'env-example'
|
|
||||||
- '!**.md'
|
|
||||||
branches:
|
|
||||||
- master
|
|
||||||
tags:
|
|
||||||
- '[0-9]+.[0-9]+*'
|
|
||||||
|
|
||||||
|
|
||||||
jobs:
|
|
||||||
# -----------------------------------------------------------------------------------------------
|
|
||||||
# (1/3) Determine parameter settings
|
|
||||||
# -----------------------------------------------------------------------------------------------
|
|
||||||
params:
|
|
||||||
uses: ./.github/workflows/params-mysql.yml
|
|
||||||
|
|
||||||
|
|
||||||
# -----------------------------------------------------------------------------------------------
|
|
||||||
# (2/3) Test with default settings
|
|
||||||
# -----------------------------------------------------------------------------------------------
|
|
||||||
default:
|
|
||||||
needs: [params]
|
|
||||||
uses: ./.github/workflows/zzz-reuse-tests.yml
|
|
||||||
with:
|
|
||||||
matrix: ${{ needs.params.outputs.matrix }}
|
|
||||||
custom_config: false
|
|
||||||
operating_system: ubuntu-latest
|
|
||||||
|
|
||||||
|
|
||||||
# -----------------------------------------------------------------------------------------------
|
|
||||||
# (3/3) Test with customizedt settings
|
|
||||||
# -----------------------------------------------------------------------------------------------
|
|
||||||
custom:
|
|
||||||
needs: [params]
|
|
||||||
uses: ./.github/workflows/zzz-reuse-tests.yml
|
|
||||||
with:
|
|
||||||
matrix: ${{ needs.params.outputs.matrix }}
|
|
||||||
custom_config: true
|
|
||||||
operating_system: ubuntu-latest
|
|
76
.github/workflows/test-pgsql.yml
vendored
76
.github/workflows/test-pgsql.yml
vendored
@ -1,76 +0,0 @@
|
|||||||
---
|
|
||||||
|
|
||||||
# -------------------------------------------------------------------------------------------------
|
|
||||||
# Job Name
|
|
||||||
# -------------------------------------------------------------------------------------------------
|
|
||||||
name: PgSQL
|
|
||||||
|
|
||||||
|
|
||||||
# -------------------------------------------------------------------------------------------------
|
|
||||||
# When to run
|
|
||||||
# -------------------------------------------------------------------------------------------------
|
|
||||||
on:
|
|
||||||
# Runs on Pull Requests
|
|
||||||
pull_request:
|
|
||||||
paths:
|
|
||||||
- '.devilbox/**'
|
|
||||||
- '.github/workflows/params*.yml'
|
|
||||||
- '.github/workflows/test*.yml'
|
|
||||||
- '.github/workflows/zzz*.yml'
|
|
||||||
- '.tests/**'
|
|
||||||
- 'cfg/vhost-gen/**'
|
|
||||||
- 'compose/**'
|
|
||||||
- 'docker-compose.override.yml-example'
|
|
||||||
- 'docker-compose.yml'
|
|
||||||
- 'env-example'
|
|
||||||
- '!**.md'
|
|
||||||
# Runs on master Branch and Tags
|
|
||||||
push:
|
|
||||||
paths:
|
|
||||||
- '.devilbox/**'
|
|
||||||
- '.github/workflows/params*.yml'
|
|
||||||
- '.github/workflows/test*.yml'
|
|
||||||
- '.github/workflows/zzz*.yml'
|
|
||||||
- '.tests/**'
|
|
||||||
- 'cfg/vhost-gen/**'
|
|
||||||
- 'compose/**'
|
|
||||||
- 'docker-compose.override.yml-example'
|
|
||||||
- 'docker-compose.yml'
|
|
||||||
- 'env-example'
|
|
||||||
- '!**.md'
|
|
||||||
branches:
|
|
||||||
- master
|
|
||||||
tags:
|
|
||||||
- '[0-9]+.[0-9]+*'
|
|
||||||
|
|
||||||
|
|
||||||
jobs:
|
|
||||||
# -----------------------------------------------------------------------------------------------
|
|
||||||
# (1/3) Determine parameter settings
|
|
||||||
# -----------------------------------------------------------------------------------------------
|
|
||||||
params:
|
|
||||||
uses: ./.github/workflows/params-pgsql.yml
|
|
||||||
|
|
||||||
|
|
||||||
# -----------------------------------------------------------------------------------------------
|
|
||||||
# (2/3) Test with default settings
|
|
||||||
# -----------------------------------------------------------------------------------------------
|
|
||||||
default:
|
|
||||||
needs: [params]
|
|
||||||
uses: ./.github/workflows/zzz-reuse-tests.yml
|
|
||||||
with:
|
|
||||||
matrix: ${{ needs.params.outputs.matrix }}
|
|
||||||
custom_config: false
|
|
||||||
operating_system: ubuntu-latest
|
|
||||||
|
|
||||||
|
|
||||||
# -----------------------------------------------------------------------------------------------
|
|
||||||
# (3/3) Test with customizedt settings
|
|
||||||
# -----------------------------------------------------------------------------------------------
|
|
||||||
custom:
|
|
||||||
needs: [params]
|
|
||||||
uses: ./.github/workflows/zzz-reuse-tests.yml
|
|
||||||
with:
|
|
||||||
matrix: ${{ needs.params.outputs.matrix }}
|
|
||||||
custom_config: true
|
|
||||||
operating_system: ubuntu-latest
|
|
76
.github/workflows/test-php.yml
vendored
76
.github/workflows/test-php.yml
vendored
@ -1,76 +0,0 @@
|
|||||||
---
|
|
||||||
|
|
||||||
# -------------------------------------------------------------------------------------------------
|
|
||||||
# Job Name
|
|
||||||
# -------------------------------------------------------------------------------------------------
|
|
||||||
name: PHP
|
|
||||||
|
|
||||||
|
|
||||||
# -------------------------------------------------------------------------------------------------
|
|
||||||
# When to run
|
|
||||||
# -------------------------------------------------------------------------------------------------
|
|
||||||
on:
|
|
||||||
# Runs on Pull Requests
|
|
||||||
pull_request:
|
|
||||||
paths:
|
|
||||||
- '.devilbox/**'
|
|
||||||
- '.github/workflows/params*.yml'
|
|
||||||
- '.github/workflows/test*.yml'
|
|
||||||
- '.github/workflows/zzz*.yml'
|
|
||||||
- '.tests/**'
|
|
||||||
- 'cfg/vhost-gen/**'
|
|
||||||
- 'compose/**'
|
|
||||||
- 'docker-compose.override.yml-example'
|
|
||||||
- 'docker-compose.yml'
|
|
||||||
- 'env-example'
|
|
||||||
- '!**.md'
|
|
||||||
# Runs on master Branch and Tags
|
|
||||||
push:
|
|
||||||
paths:
|
|
||||||
- '.devilbox/**'
|
|
||||||
- '.github/workflows/params*.yml'
|
|
||||||
- '.github/workflows/test*.yml'
|
|
||||||
- '.github/workflows/zzz*.yml'
|
|
||||||
- '.tests/**'
|
|
||||||
- 'cfg/vhost-gen/**'
|
|
||||||
- 'compose/**'
|
|
||||||
- 'docker-compose.override.yml-example'
|
|
||||||
- 'docker-compose.yml'
|
|
||||||
- 'env-example'
|
|
||||||
- '!**.md'
|
|
||||||
branches:
|
|
||||||
- master
|
|
||||||
tags:
|
|
||||||
- '[0-9]+.[0-9]+*'
|
|
||||||
|
|
||||||
|
|
||||||
jobs:
|
|
||||||
# -----------------------------------------------------------------------------------------------
|
|
||||||
# (1/3) Determine parameter settings
|
|
||||||
# -----------------------------------------------------------------------------------------------
|
|
||||||
params:
|
|
||||||
uses: ./.github/workflows/params-php.yml
|
|
||||||
|
|
||||||
|
|
||||||
# -----------------------------------------------------------------------------------------------
|
|
||||||
# (2/3) Test with default settings
|
|
||||||
# -----------------------------------------------------------------------------------------------
|
|
||||||
default:
|
|
||||||
needs: [params]
|
|
||||||
uses: ./.github/workflows/zzz-reuse-tests.yml
|
|
||||||
with:
|
|
||||||
matrix: ${{ needs.params.outputs.matrix }}
|
|
||||||
custom_config: false
|
|
||||||
operating_system: ubuntu-latest
|
|
||||||
|
|
||||||
|
|
||||||
# -----------------------------------------------------------------------------------------------
|
|
||||||
# (3/3) Test with customizedt settings
|
|
||||||
# -----------------------------------------------------------------------------------------------
|
|
||||||
custom:
|
|
||||||
needs: [params]
|
|
||||||
uses: ./.github/workflows/zzz-reuse-tests.yml
|
|
||||||
with:
|
|
||||||
matrix: ${{ needs.params.outputs.matrix }}
|
|
||||||
custom_config: true
|
|
||||||
operating_system: ubuntu-latest
|
|
76
.github/workflows/test-redis.yml
vendored
76
.github/workflows/test-redis.yml
vendored
@ -1,76 +0,0 @@
|
|||||||
---
|
|
||||||
|
|
||||||
# -------------------------------------------------------------------------------------------------
|
|
||||||
# Job Name
|
|
||||||
# -------------------------------------------------------------------------------------------------
|
|
||||||
name: Redis
|
|
||||||
|
|
||||||
|
|
||||||
# -------------------------------------------------------------------------------------------------
|
|
||||||
# When to run
|
|
||||||
# -------------------------------------------------------------------------------------------------
|
|
||||||
on:
|
|
||||||
# Runs on Pull Requests
|
|
||||||
pull_request:
|
|
||||||
paths:
|
|
||||||
- '.devilbox/**'
|
|
||||||
- '.github/workflows/params*.yml'
|
|
||||||
- '.github/workflows/test*.yml'
|
|
||||||
- '.github/workflows/zzz*.yml'
|
|
||||||
- '.tests/**'
|
|
||||||
- 'cfg/vhost-gen/**'
|
|
||||||
- 'compose/**'
|
|
||||||
- 'docker-compose.override.yml-example'
|
|
||||||
- 'docker-compose.yml'
|
|
||||||
- 'env-example'
|
|
||||||
- '!**.md'
|
|
||||||
# Runs on master Branch and Tags
|
|
||||||
push:
|
|
||||||
paths:
|
|
||||||
- '.devilbox/**'
|
|
||||||
- '.github/workflows/params*.yml'
|
|
||||||
- '.github/workflows/test*.yml'
|
|
||||||
- '.github/workflows/zzz*.yml'
|
|
||||||
- '.tests/**'
|
|
||||||
- 'cfg/vhost-gen/**'
|
|
||||||
- 'compose/**'
|
|
||||||
- 'docker-compose.override.yml-example'
|
|
||||||
- 'docker-compose.yml'
|
|
||||||
- 'env-example'
|
|
||||||
- '!**.md'
|
|
||||||
branches:
|
|
||||||
- master
|
|
||||||
tags:
|
|
||||||
- '[0-9]+.[0-9]+*'
|
|
||||||
|
|
||||||
|
|
||||||
jobs:
|
|
||||||
# -----------------------------------------------------------------------------------------------
|
|
||||||
# (1/3) Determine parameter settings
|
|
||||||
# -----------------------------------------------------------------------------------------------
|
|
||||||
params:
|
|
||||||
uses: ./.github/workflows/params-redis.yml
|
|
||||||
|
|
||||||
|
|
||||||
# -----------------------------------------------------------------------------------------------
|
|
||||||
# (2/3) Test with default settings
|
|
||||||
# -----------------------------------------------------------------------------------------------
|
|
||||||
default:
|
|
||||||
needs: [params]
|
|
||||||
uses: ./.github/workflows/zzz-reuse-tests.yml
|
|
||||||
with:
|
|
||||||
matrix: ${{ needs.params.outputs.matrix }}
|
|
||||||
custom_config: false
|
|
||||||
operating_system: ubuntu-latest
|
|
||||||
|
|
||||||
|
|
||||||
# -----------------------------------------------------------------------------------------------
|
|
||||||
# (3/3) Test with customizedt settings
|
|
||||||
# -----------------------------------------------------------------------------------------------
|
|
||||||
custom:
|
|
||||||
needs: [params]
|
|
||||||
uses: ./.github/workflows/zzz-reuse-tests.yml
|
|
||||||
with:
|
|
||||||
matrix: ${{ needs.params.outputs.matrix }}
|
|
||||||
custom_config: true
|
|
||||||
operating_system: ubuntu-latest
|
|
318
.github/workflows/test-versions.yml
vendored
Normal file
318
.github/workflows/test-versions.yml
vendored
Normal file
@ -0,0 +1,318 @@
|
|||||||
|
---
|
||||||
|
|
||||||
|
# -------------------------------------------------------------------------------------------------
|
||||||
|
# Job Name
|
||||||
|
# -------------------------------------------------------------------------------------------------
|
||||||
|
name: Versions
|
||||||
|
|
||||||
|
|
||||||
|
# -------------------------------------------------------------------------------------------------
|
||||||
|
# When to run
|
||||||
|
# -------------------------------------------------------------------------------------------------
|
||||||
|
on:
|
||||||
|
# Runs on Pull Requests
|
||||||
|
pull_request:
|
||||||
|
|
||||||
|
# Runs on master Branch and Tags
|
||||||
|
push:
|
||||||
|
branches:
|
||||||
|
- master
|
||||||
|
tags:
|
||||||
|
- '[0-9]+.[0-9]+*'
|
||||||
|
|
||||||
|
|
||||||
|
# -------------------------------------------------------------------------------------------------
|
||||||
|
# What to run
|
||||||
|
# -------------------------------------------------------------------------------------------------
|
||||||
|
jobs:
|
||||||
|
smoke_version:
|
||||||
|
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
|
||||||
|
strategy:
|
||||||
|
fail-fast: false
|
||||||
|
matrix:
|
||||||
|
version:
|
||||||
|
- "MYSQL_SERVER=mysql-5.5"
|
||||||
|
- "MYSQL_SERVER=mysql-5.6"
|
||||||
|
- "MYSQL_SERVER=mysql-5.7"
|
||||||
|
- "MYSQL_SERVER=mysql-8.0"
|
||||||
|
- "MYSQL_SERVER=mariadb-5.5"
|
||||||
|
- "MYSQL_SERVER=mariadb-10.0"
|
||||||
|
- "MYSQL_SERVER=mariadb-10.1"
|
||||||
|
- "MYSQL_SERVER=mariadb-10.2"
|
||||||
|
- "MYSQL_SERVER=mariadb-10.3"
|
||||||
|
- "MYSQL_SERVER=mariadb-10.4"
|
||||||
|
- "MYSQL_SERVER=mariadb-10.5"
|
||||||
|
- "MYSQL_SERVER=mariadb-10.6"
|
||||||
|
- "MYSQL_SERVER=mariadb-10.7"
|
||||||
|
- "MYSQL_SERVER=mariadb-10.8"
|
||||||
|
- "MYSQL_SERVER=percona-5.5"
|
||||||
|
- "MYSQL_SERVER=percona-5.6"
|
||||||
|
- "MYSQL_SERVER=percona-5.7"
|
||||||
|
- "MYSQL_SERVER=percona-8.0"
|
||||||
|
|
||||||
|
- "PGSQL_SERVER=9.0"
|
||||||
|
- "PGSQL_SERVER=9.1"
|
||||||
|
- "PGSQL_SERVER=9.2"
|
||||||
|
- "PGSQL_SERVER=9.2-alpine"
|
||||||
|
- "PGSQL_SERVER=9.3"
|
||||||
|
- "PGSQL_SERVER=9.3-alpine"
|
||||||
|
- "PGSQL_SERVER=9.4"
|
||||||
|
- "PGSQL_SERVER=9.4-alpine"
|
||||||
|
- "PGSQL_SERVER=9.5"
|
||||||
|
- "PGSQL_SERVER=9.5-alpine"
|
||||||
|
- "PGSQL_SERVER=9.6"
|
||||||
|
- "PGSQL_SERVER=9.6-alpine"
|
||||||
|
- "PGSQL_SERVER=10.0"
|
||||||
|
- "PGSQL_SERVER=10.0-alpine"
|
||||||
|
- "PGSQL_SERVER=10.1"
|
||||||
|
- "PGSQL_SERVER=10.1-alpine"
|
||||||
|
- "PGSQL_SERVER=10.2"
|
||||||
|
- "PGSQL_SERVER=10.2-alpine"
|
||||||
|
- "PGSQL_SERVER=10.3"
|
||||||
|
- "PGSQL_SERVER=10.3-alpine"
|
||||||
|
- "PGSQL_SERVER=10.4"
|
||||||
|
- "PGSQL_SERVER=10.4-alpine"
|
||||||
|
- "PGSQL_SERVER=10.5"
|
||||||
|
- "PGSQL_SERVER=10.5-alpine"
|
||||||
|
- "PGSQL_SERVER=10.6"
|
||||||
|
- "PGSQL_SERVER=10.6-alpine"
|
||||||
|
- "PGSQL_SERVER=11.0"
|
||||||
|
- "PGSQL_SERVER=11.0-alpine"
|
||||||
|
- "PGSQL_SERVER=11.1"
|
||||||
|
- "PGSQL_SERVER=11.1-alpine"
|
||||||
|
- "PGSQL_SERVER=11.2"
|
||||||
|
- "PGSQL_SERVER=11.2-alpine"
|
||||||
|
- "PGSQL_SERVER=11.3"
|
||||||
|
- "PGSQL_SERVER=11.3-alpine"
|
||||||
|
- "PGSQL_SERVER=11.4"
|
||||||
|
- "PGSQL_SERVER=11.4-alpine"
|
||||||
|
- "PGSQL_SERVER=11.5"
|
||||||
|
- "PGSQL_SERVER=11.5-alpine"
|
||||||
|
- "PGSQL_SERVER=11.6"
|
||||||
|
- "PGSQL_SERVER=11.6-alpine"
|
||||||
|
- "PGSQL_SERVER=11.7"
|
||||||
|
- "PGSQL_SERVER=11.7-alpine"
|
||||||
|
- "PGSQL_SERVER=11.8"
|
||||||
|
- "PGSQL_SERVER=11.8-alpine"
|
||||||
|
- "PGSQL_SERVER=11.9"
|
||||||
|
- "PGSQL_SERVER=11.9-alpine"
|
||||||
|
- "PGSQL_SERVER=12.0"
|
||||||
|
- "PGSQL_SERVER=12.0-alpine"
|
||||||
|
- "PGSQL_SERVER=12.1"
|
||||||
|
- "PGSQL_SERVER=12.1-alpine"
|
||||||
|
- "PGSQL_SERVER=12.2"
|
||||||
|
- "PGSQL_SERVER=12.2-alpine"
|
||||||
|
- "PGSQL_SERVER=12.3"
|
||||||
|
- "PGSQL_SERVER=12.3-alpine"
|
||||||
|
- "PGSQL_SERVER=13.0"
|
||||||
|
- "PGSQL_SERVER=13.0-alpine"
|
||||||
|
- "PGSQL_SERVER=latest"
|
||||||
|
- "PGSQL_SERVER=alpine"
|
||||||
|
|
||||||
|
- "REDIS_SERVER=2.8"
|
||||||
|
- "REDIS_SERVER=3.0"
|
||||||
|
- "REDIS_SERVER=3.0-alpine"
|
||||||
|
- "REDIS_SERVER=3.2"
|
||||||
|
- "REDIS_SERVER=3.2-alpine"
|
||||||
|
- "REDIS_SERVER=4.0"
|
||||||
|
- "REDIS_SERVER=4.0-alpine"
|
||||||
|
- "REDIS_SERVER=5.0"
|
||||||
|
- "REDIS_SERVER=5.0-alpine"
|
||||||
|
- "REDIS_SERVER=6.0"
|
||||||
|
- "REDIS_SERVER=6.0-alpine"
|
||||||
|
- "REDIS_SERVER=latest"
|
||||||
|
- "REDIS_SERVER=alpine"
|
||||||
|
|
||||||
|
- "MEMCD_SERVER=1.4"
|
||||||
|
- "MEMCD_SERVER=1.4-alpine"
|
||||||
|
- "MEMCD_SERVER=1.5"
|
||||||
|
- "MEMCD_SERVER=1.5-alpine"
|
||||||
|
- "MEMCD_SERVER=1.6"
|
||||||
|
- "MEMCD_SERVER=1.6-alpine"
|
||||||
|
- "MEMCD_SERVER=latest"
|
||||||
|
- "MEMCD_SERVER=alpine"
|
||||||
|
|
||||||
|
- "MONGO_SERVER=2.8"
|
||||||
|
- "MONGO_SERVER=3.0"
|
||||||
|
- "MONGO_SERVER=3.2"
|
||||||
|
- "MONGO_SERVER=3.4"
|
||||||
|
- "MONGO_SERVER=3.6"
|
||||||
|
- "MONGO_SERVER=4.0"
|
||||||
|
- "MONGO_SERVER=4.2"
|
||||||
|
- "MONGO_SERVER=4.4"
|
||||||
|
- "MONGO_SERVER=latest"
|
||||||
|
name: "[${{ matrix.version }}]"
|
||||||
|
steps:
|
||||||
|
|
||||||
|
# ------------------------------------------------------------
|
||||||
|
# Checkout repository
|
||||||
|
# ------------------------------------------------------------
|
||||||
|
- name: Checkout repository
|
||||||
|
uses: actions/checkout@v1
|
||||||
|
|
||||||
|
- name: Show environment
|
||||||
|
shell: bash
|
||||||
|
run: |
|
||||||
|
env
|
||||||
|
|
||||||
|
- name: Show network
|
||||||
|
shell: bash
|
||||||
|
run: |
|
||||||
|
netstat -an || true
|
||||||
|
ss -tlun || true
|
||||||
|
|
||||||
|
- name: Show Docker version
|
||||||
|
shell: bash
|
||||||
|
run: |
|
||||||
|
docker version
|
||||||
|
|
||||||
|
# ------------------------------------------------------------
|
||||||
|
# Setup
|
||||||
|
# ------------------------------------------------------------
|
||||||
|
- name: Configure
|
||||||
|
shell: bash
|
||||||
|
run: |
|
||||||
|
cd .tests/
|
||||||
|
# Set the matrix version
|
||||||
|
make configure KEY="${VERSION//=*/}" VAL="${VERSION//*=}"
|
||||||
|
# 3306 is taken, so chose another one
|
||||||
|
make configure KEY=HOST_PORT_MYSQL VAL=3307
|
||||||
|
env:
|
||||||
|
VERSION: ${{ matrix.version }}
|
||||||
|
|
||||||
|
- name: Pull images
|
||||||
|
shell: bash
|
||||||
|
run: |
|
||||||
|
cd .tests/
|
||||||
|
make pull
|
||||||
|
|
||||||
|
- name: Startup
|
||||||
|
shell: bash
|
||||||
|
run: |
|
||||||
|
cd .tests/
|
||||||
|
make start
|
||||||
|
|
||||||
|
- name: Docker logs
|
||||||
|
shell: bash
|
||||||
|
run: |
|
||||||
|
cd .tests/
|
||||||
|
make logs
|
||||||
|
|
||||||
|
# ------------------------------------------------------------
|
||||||
|
# Run tests
|
||||||
|
# ------------------------------------------------------------
|
||||||
|
- name: Test Modules
|
||||||
|
shell: bash
|
||||||
|
run: |
|
||||||
|
cd .tests/
|
||||||
|
make test-smoke-modules
|
||||||
|
if: success() || failure()
|
||||||
|
|
||||||
|
- name: Test Config
|
||||||
|
shell: bash
|
||||||
|
run: |
|
||||||
|
cd .tests/
|
||||||
|
make test-smoke-config
|
||||||
|
if: success() || failure()
|
||||||
|
|
||||||
|
- name: Test Intranet
|
||||||
|
shell: bash
|
||||||
|
run: |
|
||||||
|
cd .tests/
|
||||||
|
make test-smoke-intranet
|
||||||
|
if: success() || failure()
|
||||||
|
|
||||||
|
- name: Test Vendors
|
||||||
|
shell: bash
|
||||||
|
run: |
|
||||||
|
cd .tests/
|
||||||
|
make test-smoke-vendors
|
||||||
|
if: success() || failure()
|
||||||
|
|
||||||
|
- name: Test Vhosts
|
||||||
|
shell: bash
|
||||||
|
run: |
|
||||||
|
cd .tests/
|
||||||
|
make test-smoke-vhosts
|
||||||
|
if: success() || failure()
|
||||||
|
|
||||||
|
- name: Test Reverse Proxy
|
||||||
|
shell: bash
|
||||||
|
run: |
|
||||||
|
cd .tests/
|
||||||
|
make test-smoke-rproxies
|
||||||
|
if: success() || failure()
|
||||||
|
|
||||||
|
- name: Test SSL
|
||||||
|
shell: bash
|
||||||
|
run: |
|
||||||
|
cd .tests/
|
||||||
|
make test-smoke-ssl
|
||||||
|
if: success() || failure()
|
||||||
|
|
||||||
|
- name: Test Bind
|
||||||
|
shell: bash
|
||||||
|
run: |
|
||||||
|
cd .tests/
|
||||||
|
make test-smoke-bind
|
||||||
|
if: success() || failure()
|
||||||
|
|
||||||
|
- name: Test Autostart
|
||||||
|
shell: bash
|
||||||
|
run: |
|
||||||
|
cd .tests/
|
||||||
|
make test-smoke-autostart
|
||||||
|
if: success() || failure()
|
||||||
|
|
||||||
|
- name: "Test Framework: CakePHP"
|
||||||
|
shell: bash
|
||||||
|
run: |
|
||||||
|
cd .tests/
|
||||||
|
make test-smoke-framework-cakephp
|
||||||
|
if: success() || failure()
|
||||||
|
|
||||||
|
- name: "Test Framework: Drupal"
|
||||||
|
shell: bash
|
||||||
|
run: |
|
||||||
|
cd .tests/
|
||||||
|
make test-smoke-framework-drupal
|
||||||
|
if: success() || failure()
|
||||||
|
|
||||||
|
- name: "Test Framework: Wordpress"
|
||||||
|
shell: bash
|
||||||
|
run: |
|
||||||
|
cd .tests/
|
||||||
|
make test-smoke-framework-wordpress
|
||||||
|
if: success() || failure()
|
||||||
|
|
||||||
|
- name: "Test Container"
|
||||||
|
shell: bash
|
||||||
|
run: |
|
||||||
|
retry() {
|
||||||
|
for n in $(seq 5); do
|
||||||
|
echo "[${n}/5] ${*}";
|
||||||
|
if eval "${*}"; then
|
||||||
|
echo "[SUCC] ${n}/t";
|
||||||
|
return 0;
|
||||||
|
fi;
|
||||||
|
sleep 5;
|
||||||
|
echo "[FAIL] ${n}/5";
|
||||||
|
done;
|
||||||
|
return 1;
|
||||||
|
}
|
||||||
|
cd .tests/
|
||||||
|
retry make test-smoke-container
|
||||||
|
if: success() || failure()
|
||||||
|
|
||||||
|
# ------------------------------------------------------------
|
||||||
|
# Finish
|
||||||
|
# ------------------------------------------------------------
|
||||||
|
|
||||||
|
- name: "Finish: Docker logs"
|
||||||
|
shell: bash
|
||||||
|
run: |
|
||||||
|
cd .tests/
|
||||||
|
make logs
|
||||||
|
if: success() || failure()
|
284
.github/workflows/zzz-reuse-tests.yml
vendored
284
.github/workflows/zzz-reuse-tests.yml
vendored
@ -1,284 +0,0 @@
|
|||||||
---
|
|
||||||
name: Reusable worfklow for tests
|
|
||||||
|
|
||||||
on:
|
|
||||||
workflow_call:
|
|
||||||
###
|
|
||||||
### Variables
|
|
||||||
###
|
|
||||||
inputs:
|
|
||||||
matrix:
|
|
||||||
description: 'The test matrix'
|
|
||||||
required: true
|
|
||||||
type: string
|
|
||||||
custom_config:
|
|
||||||
description: 'Apply customized .env configuration?'
|
|
||||||
required: true
|
|
||||||
type: boolean
|
|
||||||
operating_system:
|
|
||||||
description: 'The operating system to run on'
|
|
||||||
required: true
|
|
||||||
type: string
|
|
||||||
|
|
||||||
|
|
||||||
jobs:
|
|
||||||
# -----------------------------------------------------------------------------------------------
|
|
||||||
# JOB: BUILD
|
|
||||||
# -----------------------------------------------------------------------------------------------
|
|
||||||
test:
|
|
||||||
runs-on: ${{ inputs.operating_system }}
|
|
||||||
strategy:
|
|
||||||
fail-fast: false
|
|
||||||
matrix:
|
|
||||||
include: ${{ fromJson(inputs.matrix) }}
|
|
||||||
steps:
|
|
||||||
|
|
||||||
# ------------------------------------------------------------
|
|
||||||
# Setup repository
|
|
||||||
# ------------------------------------------------------------
|
|
||||||
- name: "[SETUP] Checkout repository (current)"
|
|
||||||
uses: actions/checkout@v3
|
|
||||||
with:
|
|
||||||
fetch-depth: 0
|
|
||||||
|
|
||||||
- name: "[DEBUG] Show Matrix configuration"
|
|
||||||
shell: bash
|
|
||||||
run: |
|
|
||||||
echo '${{ toJson(matrix) }}' | jq -r
|
|
||||||
|
|
||||||
- name: "[DEBUG] Show env variables"
|
|
||||||
shell: bash
|
|
||||||
run: |
|
|
||||||
env
|
|
||||||
|
|
||||||
- name: "[DEBUG] Show open network ports"
|
|
||||||
shell: bash
|
|
||||||
run: |
|
|
||||||
netstat -an || true
|
|
||||||
ss -tlun || true
|
|
||||||
|
|
||||||
- name: "[DEBUG] Show Docker version"
|
|
||||||
shell: bash
|
|
||||||
run: |
|
|
||||||
docker version
|
|
||||||
|
|
||||||
- name: "[DEBUG] Show Docker Compose version"
|
|
||||||
shell: bash
|
|
||||||
run: |
|
|
||||||
docker-compose version
|
|
||||||
|
|
||||||
# ------------------------------------------------------------
|
|
||||||
# Configure
|
|
||||||
# ------------------------------------------------------------
|
|
||||||
- name: "[Configure] Configure customized configuration"
|
|
||||||
shell: bash
|
|
||||||
run: |
|
|
||||||
cd "${GITHUB_WORKSPACE}/.tests/"
|
|
||||||
|
|
||||||
# Test full customization
|
|
||||||
make configure KEY=DEBUG_ENTRYPOINT VAL="$(( RANDOM % 3 ))"
|
|
||||||
make configure KEY=DOCKER_LOGS VAL="$(( RANDOM % 1 ))"
|
|
||||||
make configure KEY=TLD_SUFFIX VAL=loc2
|
|
||||||
make configure KEY=TIMEZONE VAL='Europe/Berlin'
|
|
||||||
make configure KEY=PHP_MODULES_DISABLE VAL=
|
|
||||||
make configure KEY=HTTPD_TEMPLATE_DIR VAL=.config
|
|
||||||
make configure KEY=HOST_PORT_HTTPD VAL=8080
|
|
||||||
make configure KEY=HOST_PORT_HTTPD_SSL VAL=8443
|
|
||||||
make configure KEY=MYSQL_ROOT_PASSWORD VAL=mysqlpass
|
|
||||||
make configure KEY=PGSQL_ROOT_USER VAL=pgroot
|
|
||||||
make configure KEY=PGSQL_ROOT_PASSWORD VAL=pgsqlpass
|
|
||||||
make configure KEY=DEVILBOX_VENDOR_PHPMYADMIN_AUTOLOGIN VAL=0
|
|
||||||
if: inputs.custom_config
|
|
||||||
|
|
||||||
- name: "[Configure] Configure versions"
|
|
||||||
shell: bash
|
|
||||||
run: |
|
|
||||||
# (1/3) Change to .tests/ directory
|
|
||||||
cd "${GITHUB_WORKSPACE}/.tests/"
|
|
||||||
|
|
||||||
# (2/3) Change MySQL port 3306 to 3307 (3306 is already taken)
|
|
||||||
make configure KEY=HOST_PORT_MYSQL VAL=3307
|
|
||||||
|
|
||||||
# (3/3) Loop over configured values
|
|
||||||
while IFS= read -r line; do
|
|
||||||
KEY="${line}"
|
|
||||||
VAL="$( echo '${{ toJson(matrix) }}' | jq -r ".${KEY}" | awk '{print $NF}' )"
|
|
||||||
echo "KEY: ${KEY}"
|
|
||||||
echo "VAL: ${VAL}"
|
|
||||||
|
|
||||||
# Set the matrix version
|
|
||||||
make configure KEY="${KEY}" VAL="${VAL}"
|
|
||||||
done <<< "$( echo '${{ toJson(matrix) }}' | jq -r 'keys[]' )"
|
|
||||||
|
|
||||||
- name: "[Configure] Show .env file"
|
|
||||||
shell: bash
|
|
||||||
run: |
|
|
||||||
cat .env
|
|
||||||
|
|
||||||
|
|
||||||
# ------------------------------------------------------------
|
|
||||||
# Startup
|
|
||||||
# ------------------------------------------------------------
|
|
||||||
- name: "[Startup] Pull images"
|
|
||||||
uses: cytopia/shell-command-retry-action@v0.1.3
|
|
||||||
with:
|
|
||||||
retries: 3
|
|
||||||
workdir: "${{ github.workspace }}/.tests/"
|
|
||||||
command: |
|
|
||||||
make pull
|
|
||||||
|
|
||||||
- name: "[Startup] Start Devilbox"
|
|
||||||
uses: cytopia/shell-command-retry-action@v0.1.3
|
|
||||||
with:
|
|
||||||
retries: 3
|
|
||||||
workdir: "${{ github.workspace }}/.tests/"
|
|
||||||
command: |
|
|
||||||
make start
|
|
||||||
|
|
||||||
- name: "[Startup] Show Docker logs"
|
|
||||||
uses: cytopia/shell-command-retry-action@v0.1.3
|
|
||||||
with:
|
|
||||||
retries: 3
|
|
||||||
workdir: "${{ github.workspace }}/.tests/"
|
|
||||||
command: |
|
|
||||||
make logs
|
|
||||||
|
|
||||||
# ------------------------------------------------------------
|
|
||||||
# Run tests
|
|
||||||
# ------------------------------------------------------------
|
|
||||||
- name: Test Modules
|
|
||||||
uses: cytopia/shell-command-retry-action@v0.1.3
|
|
||||||
with:
|
|
||||||
retries: 3
|
|
||||||
workdir: "${{ github.workspace }}/.tests/"
|
|
||||||
command: |
|
|
||||||
make test-smoke-modules
|
|
||||||
|
|
||||||
- name: Test Config
|
|
||||||
uses: cytopia/shell-command-retry-action@v0.1.3
|
|
||||||
with:
|
|
||||||
retries: 3
|
|
||||||
workdir: "${{ github.workspace }}/.tests/"
|
|
||||||
command: |
|
|
||||||
make test-smoke-config
|
|
||||||
if: success() || failure()
|
|
||||||
|
|
||||||
- name: Test Intranet
|
|
||||||
uses: cytopia/shell-command-retry-action@v0.1.3
|
|
||||||
with:
|
|
||||||
retries: 3
|
|
||||||
workdir: "${{ github.workspace }}/.tests/"
|
|
||||||
command: |
|
|
||||||
make test-smoke-intranet
|
|
||||||
if: success() || failure()
|
|
||||||
|
|
||||||
- name: Test Vendors
|
|
||||||
uses: cytopia/shell-command-retry-action@v0.1.3
|
|
||||||
with:
|
|
||||||
retries: 3
|
|
||||||
workdir: "${{ github.workspace }}/.tests/"
|
|
||||||
command: |
|
|
||||||
make test-smoke-vendors
|
|
||||||
if: success() || failure()
|
|
||||||
|
|
||||||
- name: Test Vhosts
|
|
||||||
uses: cytopia/shell-command-retry-action@v0.1.3
|
|
||||||
with:
|
|
||||||
retries: 3
|
|
||||||
workdir: "${{ github.workspace }}/.tests/"
|
|
||||||
command: |
|
|
||||||
make test-smoke-vhosts
|
|
||||||
if: success() || failure()
|
|
||||||
|
|
||||||
- name: Test Reverse Proxy
|
|
||||||
uses: cytopia/shell-command-retry-action@v0.1.3
|
|
||||||
with:
|
|
||||||
retries: 3
|
|
||||||
workdir: "${{ github.workspace }}/.tests/"
|
|
||||||
command: |
|
|
||||||
make test-smoke-rproxies
|
|
||||||
if: success() || failure()
|
|
||||||
|
|
||||||
- name: Test SSL
|
|
||||||
uses: cytopia/shell-command-retry-action@v0.1.3
|
|
||||||
with:
|
|
||||||
retries: 3
|
|
||||||
workdir: "${{ github.workspace }}/.tests/"
|
|
||||||
command: |
|
|
||||||
make test-smoke-ssl
|
|
||||||
if: success() || failure()
|
|
||||||
|
|
||||||
- name: Test Bind
|
|
||||||
uses: cytopia/shell-command-retry-action@v0.1.3
|
|
||||||
with:
|
|
||||||
retries: 3
|
|
||||||
workdir: "${{ github.workspace }}/.tests/"
|
|
||||||
command: |
|
|
||||||
make test-smoke-bind
|
|
||||||
if: success() || failure()
|
|
||||||
|
|
||||||
- name: Test Autostart
|
|
||||||
uses: cytopia/shell-command-retry-action@v0.1.3
|
|
||||||
with:
|
|
||||||
retries: 3
|
|
||||||
workdir: "${{ github.workspace }}/.tests/"
|
|
||||||
command: |
|
|
||||||
make test-smoke-autostart
|
|
||||||
if: success() || failure()
|
|
||||||
|
|
||||||
- name: "Test Framework: CakePHP"
|
|
||||||
uses: cytopia/shell-command-retry-action@v0.1.3
|
|
||||||
with:
|
|
||||||
retries: 3
|
|
||||||
workdir: "${{ github.workspace }}/.tests/"
|
|
||||||
command: |
|
|
||||||
make test-smoke-framework-cakephp
|
|
||||||
if: success() || failure()
|
|
||||||
|
|
||||||
- name: "Test Framework: Drupal"
|
|
||||||
uses: cytopia/shell-command-retry-action@v0.1.3
|
|
||||||
with:
|
|
||||||
retries: 3
|
|
||||||
workdir: "${{ github.workspace }}/.tests/"
|
|
||||||
command: |
|
|
||||||
make test-smoke-framework-drupal
|
|
||||||
if: success() || failure()
|
|
||||||
|
|
||||||
- name: "Test Framework: Wordpress"
|
|
||||||
uses: cytopia/shell-command-retry-action@v0.1.3
|
|
||||||
with:
|
|
||||||
retries: 3
|
|
||||||
workdir: "${{ github.workspace }}/.tests/"
|
|
||||||
command: |
|
|
||||||
make test-smoke-framework-wordpress
|
|
||||||
if: success() || failure()
|
|
||||||
|
|
||||||
- name: "Test Container"
|
|
||||||
uses: cytopia/shell-command-retry-action@v0.1.3
|
|
||||||
with:
|
|
||||||
retries: 3
|
|
||||||
workdir: "${{ github.workspace }}/.tests/"
|
|
||||||
command: |
|
|
||||||
make test-smoke-container
|
|
||||||
if: success() || failure()
|
|
||||||
|
|
||||||
# ------------------------------------------------------------
|
|
||||||
# Finish
|
|
||||||
# ------------------------------------------------------------
|
|
||||||
- name: "Finish: Docker logs"
|
|
||||||
uses: cytopia/shell-command-retry-action@v0.1.3
|
|
||||||
with:
|
|
||||||
retries: 3
|
|
||||||
workdir: "${{ github.workspace }}/.tests/"
|
|
||||||
command: |
|
|
||||||
make logs
|
|
||||||
if: success() || failure()
|
|
||||||
|
|
||||||
- name: "Finish: Shutdown"
|
|
||||||
uses: cytopia/shell-command-retry-action@v0.1.3
|
|
||||||
with:
|
|
||||||
retries: 3
|
|
||||||
workdir: "${{ github.workspace }}/.tests/"
|
|
||||||
command: |
|
|
||||||
make stop
|
|
||||||
if: success() || failure()
|
|
6
.gitignore
vendored
6
.gitignore
vendored
@ -50,9 +50,9 @@
|
|||||||
|
|
||||||
|
|
||||||
# Ignore custom global vhost gen templates
|
# Ignore custom global vhost gen templates
|
||||||
/cfg/vhost-gen/apache22.yml
|
/cfg/vhost-gen/apache22.conf
|
||||||
/cfg/vhost-gen/apache24.yml
|
/cfg/vhost-gen/apache24.conf
|
||||||
/cfg/vhost-gen/nginx.yml
|
/cfg/vhost-gen/nginx.conf
|
||||||
|
|
||||||
# Ignore custom HTTPD configs
|
# Ignore custom HTTPD configs
|
||||||
/cfg/apache-2.2/*.conf
|
/cfg/apache-2.2/*.conf
|
||||||
|
@ -6,24 +6,12 @@ endif
|
|||||||
# -------------------------------------------------------------------------------------------------
|
# -------------------------------------------------------------------------------------------------
|
||||||
# Misc Targets
|
# Misc Targets
|
||||||
# -------------------------------------------------------------------------------------------------
|
# -------------------------------------------------------------------------------------------------
|
||||||
.PHONY: update-readme
|
update-readme:
|
||||||
update-readme: _update-readme-modules
|
|
||||||
update-readme: _update-readme-tools
|
|
||||||
|
|
||||||
.PHONY: _update-readme-modules
|
|
||||||
_update-readme-modules:
|
|
||||||
cat "../README.md" \
|
cat "../README.md" \
|
||||||
| perl -0 -pe "s#<!-- modules -->.*<!-- /modules -->#<!-- modules -->\n$$(./scripts/get-modules.sh)\n<!-- /modules -->#s" \
|
| perl -0 -pe "s#<!-- modules -->.*<!-- /modules -->#<!-- modules -->\n$$(./scripts/get-modules.sh)\n<!-- /modules -->#s" \
|
||||||
> "../README.md.tmp"
|
> "../README.md.tmp"
|
||||||
yes | mv -f "../README.md.tmp" "../README.md"
|
yes | mv -f "../README.md.tmp" "../README.md"
|
||||||
|
|
||||||
.PHONY: _update-readme-tools
|
|
||||||
_update-readme-tools:
|
|
||||||
cat "../README.md" \
|
|
||||||
| perl -0 -pe "s#<!-- tools -->.*<!-- /tools -->#<!-- tools -->\n$$(./scripts/get-tools.sh)\n<!-- /tools -->#s" \
|
|
||||||
> "../README.md.tmp"
|
|
||||||
yes | mv -f "../README.md.tmp" "../README.md"
|
|
||||||
|
|
||||||
|
|
||||||
# -------------------------------------------------------------------------------------------------
|
# -------------------------------------------------------------------------------------------------
|
||||||
# Linting Targets
|
# Linting Targets
|
||||||
@ -63,7 +51,7 @@ pull: ../.env
|
|||||||
###
|
###
|
||||||
start: ../.env
|
start: ../.env
|
||||||
@$(MAKE) --no-print-directory configure KEY=HOST_PATH_HTTPD_DATADIR VAL=.tests/www
|
@$(MAKE) --no-print-directory configure KEY=HOST_PATH_HTTPD_DATADIR VAL=.tests/www
|
||||||
@$(MAKE) --no-print-directory configure KEY=DEBUG_ENTRYPOINT VAL=3
|
@$(MAKE) --no-print-directory configure KEY=DEBUG_COMPOSE_ENTRYPOINT VAL=2
|
||||||
@$(MAKE) --no-print-directory configure KEY=NEW_UID VAL=$$(id -u)
|
@$(MAKE) --no-print-directory configure KEY=NEW_UID VAL=$$(id -u)
|
||||||
@$(MAKE) --no-print-directory configure KEY=NEW_GID VAL=$$(id -g)
|
@$(MAKE) --no-print-directory configure KEY=NEW_GID VAL=$$(id -g)
|
||||||
@$(PWD)/scripts/compose-start.sh
|
@$(PWD)/scripts/compose-start.sh
|
||||||
@ -172,7 +160,6 @@ test-smoke-autostart:
|
|||||||
###
|
###
|
||||||
test-smoke-framework-cakephp:
|
test-smoke-framework-cakephp:
|
||||||
$(PWD)/tests/framework-cakephp.sh
|
$(PWD)/tests/framework-cakephp.sh
|
||||||
$(PWD)/tests/framework-cakephp-php8.sh
|
|
||||||
|
|
||||||
test-smoke-framework-drupal:
|
test-smoke-framework-drupal:
|
||||||
$(PWD)/tests/framework-drupal.sh
|
$(PWD)/tests/framework-drupal.sh
|
||||||
|
@ -47,7 +47,8 @@ get_php_version() {
|
|||||||
# Check php -v
|
# Check php -v
|
||||||
>&2 printf "Fetching PHP version from php -v: "
|
>&2 printf "Fetching PHP version from php -v: "
|
||||||
if ! cli_version="$( run "docker-compose exec -T php php -v \
|
if ! cli_version="$( run "docker-compose exec -T php php -v \
|
||||||
| grep -Eo '^PHP[[:space:]]+[0-9]+\\.[0-9]+' \
|
| head -1 \
|
||||||
|
| grep -Eo 'PHP[[:space:]]+[0-9]+\\.[0-9]+' \
|
||||||
| grep -Eo '[0-9]+\\.[0-9]+'" \
|
| grep -Eo '[0-9]+\\.[0-9]+'" \
|
||||||
"${retries}" "${root_path}" "0" )"; then
|
"${retries}" "${root_path}" "0" )"; then
|
||||||
>&2 printf "FAILED\\n"
|
>&2 printf "FAILED\\n"
|
||||||
@ -117,52 +118,6 @@ replace() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
###
|
|
||||||
### Print colorized OK message
|
|
||||||
###
|
|
||||||
print_succ() {
|
|
||||||
local leading_nl="${1}"
|
|
||||||
local trailing_nl="${2}"
|
|
||||||
local message="${3}"
|
|
||||||
|
|
||||||
local green="\\033[0;32m"
|
|
||||||
local reset="\\033[0m"
|
|
||||||
|
|
||||||
if [ "${leading_nl}" = "1" ] && [ "${trailing_nl}" = "1" ]; then
|
|
||||||
printf "\\r${green}[OK]${reset} %s\\n" "${message}"
|
|
||||||
elif [ "${leading_nl}" = "1" ]; then
|
|
||||||
printf "\\r${green}[OK]${reset} %s" "${message}"
|
|
||||||
elif [ "${trailing_nl}" = "1" ]; then
|
|
||||||
printf "${green}[OK]${reset} %s\\n" "${message}"
|
|
||||||
else
|
|
||||||
printf "${green}[OK]${reset} %s" "${message}"
|
|
||||||
fi
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
###
|
|
||||||
### Print colorized FAIL message
|
|
||||||
###
|
|
||||||
print_fail() {
|
|
||||||
local leading_nl="${1}"
|
|
||||||
local trailing_nl="${2}"
|
|
||||||
local message="${3}"
|
|
||||||
|
|
||||||
local red="\\033[0;31m"
|
|
||||||
local reset="\\033[0m"
|
|
||||||
|
|
||||||
if [ "${leading_nl}" = "1" ] && [ "${trailing_nl}" = "1" ]; then
|
|
||||||
printf "\\r${red}[FAIL]${reset} %s\\n" "${message}"
|
|
||||||
elif [ "${leading_nl}" = "1" ]; then
|
|
||||||
printf "\\r${red}[FAIL]${reset} %s" "${message}"
|
|
||||||
elif [ "${trailing_nl}" = "1" ]; then
|
|
||||||
printf "${red}[FAIL]${reset} %s\\n" "${message}"
|
|
||||||
else
|
|
||||||
printf "${red}[FAIL]${reset} %s" "${message}"
|
|
||||||
fi
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
###
|
###
|
||||||
### Run command
|
### Run command
|
||||||
###
|
###
|
||||||
|
@ -53,7 +53,7 @@ until curl -sS -I --fail -o /dev/null -w "%{http_code}" "http://localhost:${HOST
|
|||||||
printf "."
|
printf "."
|
||||||
|
|
||||||
i=$(( i + 1 ))
|
i=$(( i + 1 ))
|
||||||
if [ "${i}" -eq "120" ]; then
|
if [ "${i}" -eq "60" ]; then
|
||||||
printf "[FAIL]\\n\\n"
|
printf "[FAIL]\\n\\n"
|
||||||
echo "---- curl From host ----"
|
echo "---- curl From host ----"
|
||||||
curl -sS -v "http://localhost:${HOST_PORT_HTTPD}" || true
|
curl -sS -v "http://localhost:${HOST_PORT_HTTPD}" || true
|
||||||
@ -84,7 +84,7 @@ until curl -sS --fail "http://localhost:${HOST_PORT_HTTPD}" 2>/dev/null | grep '
|
|||||||
printf "."
|
printf "."
|
||||||
|
|
||||||
i=$(( i + 1 ))
|
i=$(( i + 1 ))
|
||||||
if [ "${i}" -eq "120" ]; then
|
if [ "${i}" -eq "60" ]; then
|
||||||
printf "[FAIL]\\n"
|
printf "[FAIL]\\n"
|
||||||
curl -sS -v "http://localhost:${HOST_PORT_HTTPD}"
|
curl -sS -v "http://localhost:${HOST_PORT_HTTPD}"
|
||||||
curl -sS -I "http://localhost:${HOST_PORT_HTTPD}"
|
curl -sS -I "http://localhost:${HOST_PORT_HTTPD}"
|
||||||
@ -120,7 +120,7 @@ until cd "${DVLBOX_PATH}" && docker-compose exec -T php mongofiles --host=mongo
|
|||||||
printf "."
|
printf "."
|
||||||
|
|
||||||
i=$(( i + 1 ))
|
i=$(( i + 1 ))
|
||||||
if [ "${i}" -eq "120" ]; then
|
if [ "${i}" -eq "60" ]; then
|
||||||
printf "[FAIL]\\n"
|
printf "[FAIL]\\n"
|
||||||
run "cd ${DVLBOX_PATH} && docker-compose exec -T php mongofiles --host=mongo list" || true
|
run "cd ${DVLBOX_PATH} && docker-compose exec -T php mongofiles --host=mongo list" || true
|
||||||
run "cd ${DVLBOX_PATH} && docker-compose logs" || true
|
run "cd ${DVLBOX_PATH} && docker-compose logs" || true
|
||||||
@ -143,7 +143,7 @@ until cd "${DVLBOX_PATH}" && docker-compose exec -T php mysql --user=root --pass
|
|||||||
printf "."
|
printf "."
|
||||||
|
|
||||||
i=$(( i + 1 ))
|
i=$(( i + 1 ))
|
||||||
if [ "${i}" -eq "120" ]; then
|
if [ "${i}" -eq "60" ]; then
|
||||||
printf "[FAIL]\\n"
|
printf "[FAIL]\\n"
|
||||||
run "cd ${DVLBOX_PATH} && docker-compose exec -T php mysql --user=root --password=\"${MYSQL_ROOT_PASSWORD}\" --host=mysql -e 'show databases;'" || true
|
run "cd ${DVLBOX_PATH} && docker-compose exec -T php mysql --user=root --password=\"${MYSQL_ROOT_PASSWORD}\" --host=mysql -e 'show databases;'" || true
|
||||||
run "cd ${DVLBOX_PATH} && docker-compose logs" || true
|
run "cd ${DVLBOX_PATH} && docker-compose logs" || true
|
||||||
@ -166,7 +166,7 @@ until cd "${DVLBOX_PATH}" && docker-compose exec -T php pg_isready --host=pgsql
|
|||||||
printf "."
|
printf "."
|
||||||
|
|
||||||
i=$(( i + 1 ))
|
i=$(( i + 1 ))
|
||||||
if [ "${i}" -eq "120" ]; then
|
if [ "${i}" -eq "60" ]; then
|
||||||
printf "[FAIL]\\n"
|
printf "[FAIL]\\n"
|
||||||
run "cd ${DVLBOX_PATH} && docker-compose exec -T php pg_isready --host=pgsql" || true
|
run "cd ${DVLBOX_PATH} && docker-compose exec -T php pg_isready --host=pgsql" || true
|
||||||
run "cd ${DVLBOX_PATH} && docker-compose logs" || true
|
run "cd ${DVLBOX_PATH} && docker-compose logs" || true
|
||||||
|
@ -20,70 +20,326 @@ RETRIES=10
|
|||||||
# -------------------------------------------------------------------------------------------------
|
# -------------------------------------------------------------------------------------------------
|
||||||
|
|
||||||
PHP_TAG="$( grep 'devilbox/php' "${DVLBOX_PATH}/docker-compose.yml" | sed 's/^.*-work-//g' )"
|
PHP_TAG="$( grep 'devilbox/php' "${DVLBOX_PATH}/docker-compose.yml" | sed 's/^.*-work-//g' )"
|
||||||
PHP_MOD="$( run "curl -sS 'https://raw.githubusercontent.com/devilbox/docker-php-fpm/${PHP_TAG}/doc/php-modules.md'" "${RETRIES}" )";
|
|
||||||
|
|
||||||
|
|
||||||
get_modules() {
|
###
|
||||||
local php_version="${1}"
|
### Get PHP core modules (5 rounds)
|
||||||
local stage="${2}"
|
###
|
||||||
local modules=
|
if ! PHP52_BASE="$( run "\
|
||||||
local names=
|
curl -sS 'https://raw.githubusercontent.com/devilbox/docker-php-fpm/${PHP_TAG}/README.md' \
|
||||||
|
| tac \
|
||||||
modules="$( \
|
| tac \
|
||||||
echo "${PHP_MOD}" \
|
| grep -E '52-base' \
|
||||||
| grep -E "ext_${stage}_.+_${php_version}" \
|
|
||||||
| grep -v '><' \
|
|
||||||
| sed \
|
| sed \
|
||||||
-e "s|.*ext_${stage}_||g" \
|
-e 's/.*\">//g' \
|
||||||
-e "s|_${php_version}.*||g" \
|
-e 's/<.*//g'" "${RETRIES}" )"; then
|
||||||
)"
|
>&2 echo "Failed to retrieve modules for PHP 5.2"
|
||||||
# Ensure to fetch name with correct upper-/lower-case
|
exit 1
|
||||||
while read -r module; do
|
fi
|
||||||
name="$( \
|
|
||||||
echo "${PHP_MOD}" \
|
|
||||||
| grep -Eio ">${module}<" \
|
|
||||||
| sed -e 's|>||g' -e 's|<||g' \
|
|
||||||
| sort -u \
|
|
||||||
)"
|
|
||||||
names="$( printf "%s\n%s" "${names}" "${name}" )"
|
|
||||||
done < <(echo "${modules}")
|
|
||||||
|
|
||||||
# Remove leading and trailing newline
|
if ! PHP53_BASE="$( run "\
|
||||||
names="$( echo "${names}" | grep -v '^$' )"
|
curl -sS 'https://raw.githubusercontent.com/devilbox/docker-php-fpm/${PHP_TAG}/README.md' \
|
||||||
|
| tac \
|
||||||
|
| tac \
|
||||||
|
| grep -E '53-base' \
|
||||||
|
| sed \
|
||||||
|
-e 's/.*\">//g' \
|
||||||
|
-e 's/<.*//g'" "${RETRIES}" )"; then
|
||||||
|
>&2 echo "Failed to retrieve modules for PHP 5.3"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
# Output comma separated
|
if ! PHP54_BASE="$( run "\
|
||||||
echo "${names}" | paste -d, -s
|
curl -sS 'https://raw.githubusercontent.com/devilbox/docker-php-fpm/${PHP_TAG}/README.md' \
|
||||||
}
|
| tac \
|
||||||
|
| tac \
|
||||||
|
| grep -E '54-base' \
|
||||||
|
| sed \
|
||||||
|
-e 's/.*\">//g' \
|
||||||
|
-e 's/<.*//g'" "${RETRIES}" )"; then
|
||||||
|
>&2 echo "Failed to retrieve modules for PHP 5.4"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
if ! PHP55_BASE="$( run "\
|
||||||
|
curl -sS 'https://raw.githubusercontent.com/devilbox/docker-php-fpm/${PHP_TAG}/README.md' \
|
||||||
|
| tac \
|
||||||
|
| tac \
|
||||||
|
| grep -E '55-base' \
|
||||||
|
| sed \
|
||||||
|
-e 's/.*\">//g' \
|
||||||
|
-e 's/<.*//g'" "${RETRIES}" )"; then
|
||||||
|
>&2 echo "Failed to retrieve modules for PHP 5.5"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
PHP52_BASE="$( get_modules "5.2" "base" )"
|
if ! PHP56_BASE="$( run "\
|
||||||
PHP53_BASE="$( get_modules "5.3" "base" )"
|
curl -sS 'https://raw.githubusercontent.com/devilbox/docker-php-fpm/${PHP_TAG}/README.md' \
|
||||||
PHP54_BASE="$( get_modules "5.4" "base" )"
|
| tac \
|
||||||
PHP55_BASE="$( get_modules "5.5" "base" )"
|
| tac \
|
||||||
PHP56_BASE="$( get_modules "5.6" "base" )"
|
| grep -E '56-base' \
|
||||||
PHP70_BASE="$( get_modules "7.0" "base" )"
|
| sed \
|
||||||
PHP71_BASE="$( get_modules "7.1" "base" )"
|
-e 's/.*\">//g' \
|
||||||
PHP72_BASE="$( get_modules "7.2" "base" )"
|
-e 's/<.*//g'" "${RETRIES}" )"; then
|
||||||
PHP73_BASE="$( get_modules "7.3" "base" )"
|
>&2 echo "Failed to retrieve modules for PHP 5.6"
|
||||||
PHP74_BASE="$( get_modules "7.4" "base" )"
|
exit 1
|
||||||
PHP80_BASE="$( get_modules "8.0" "base" )"
|
fi
|
||||||
PHP81_BASE="$( get_modules "8.1" "base" )"
|
|
||||||
PHP82_BASE="$( get_modules "8.2" "base" )"
|
|
||||||
|
|
||||||
PHP52_MODS="$( get_modules "5.2" "mods" )"
|
if ! PHP70_BASE="$( run "\
|
||||||
PHP53_MODS="$( get_modules "5.3" "mods" )"
|
curl -sS 'https://raw.githubusercontent.com/devilbox/docker-php-fpm/${PHP_TAG}/README.md' \
|
||||||
PHP54_MODS="$( get_modules "5.4" "mods" )"
|
| tac \
|
||||||
PHP55_MODS="$( get_modules "5.5" "mods" )"
|
| tac \
|
||||||
PHP56_MODS="$( get_modules "5.6" "mods" )"
|
| grep -E '70-base' \
|
||||||
PHP70_MODS="$( get_modules "7.0" "mods" )"
|
| sed \
|
||||||
PHP71_MODS="$( get_modules "7.1" "mods" )"
|
-e 's/.*\">//g' \
|
||||||
PHP72_MODS="$( get_modules "7.2" "mods" )"
|
-e 's/<.*//g'" "${RETRIES}" )"; then
|
||||||
PHP73_MODS="$( get_modules "7.3" "mods" )"
|
>&2 echo "Failed to retrieve modules for PHP 7.0"
|
||||||
PHP74_MODS="$( get_modules "7.4" "mods" )"
|
exit 1
|
||||||
PHP80_MODS="$( get_modules "8.0" "mods" )"
|
fi
|
||||||
PHP81_MODS="$( get_modules "8.1" "mods" )"
|
|
||||||
PHP82_MODS="$( get_modules "8.2" "mods" )"
|
|
||||||
|
|
||||||
|
if ! PHP71_BASE="$( run "\
|
||||||
|
curl -sS 'https://raw.githubusercontent.com/devilbox/docker-php-fpm/${PHP_TAG}/README.md' \
|
||||||
|
| tac \
|
||||||
|
| tac \
|
||||||
|
| grep -E '71-base' \
|
||||||
|
| sed \
|
||||||
|
-e 's/.*\">//g' \
|
||||||
|
-e 's/<.*//g'" "${RETRIES}" )"; then
|
||||||
|
>&2 echo "Failed to retrieve modules for PHP 7.1"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
if ! PHP72_BASE="$( run "\
|
||||||
|
curl -sS 'https://raw.githubusercontent.com/devilbox/docker-php-fpm/${PHP_TAG}/README.md' \
|
||||||
|
| tac \
|
||||||
|
| tac \
|
||||||
|
| grep -E '72-base' \
|
||||||
|
| sed \
|
||||||
|
-e 's/.*\">//g' \
|
||||||
|
-e 's/<.*//g'" "${RETRIES}" )"; then
|
||||||
|
>&2 echo "Failed to retrieve modules for PHP 7.2"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
if ! PHP73_BASE="$( run "\
|
||||||
|
curl -sS 'https://raw.githubusercontent.com/devilbox/docker-php-fpm/${PHP_TAG}/README.md' \
|
||||||
|
| tac \
|
||||||
|
| tac \
|
||||||
|
| grep -E '73-base' \
|
||||||
|
| sed \
|
||||||
|
-e 's/.*\">//g' \
|
||||||
|
-e 's/<.*//g'" "${RETRIES}" )"; then
|
||||||
|
>&2 echo "Failed to retrieve modules for PHP 7.3"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
if ! PHP74_BASE="$( run "\
|
||||||
|
curl -sS 'https://raw.githubusercontent.com/devilbox/docker-php-fpm/${PHP_TAG}/README.md' \
|
||||||
|
| tac \
|
||||||
|
| tac \
|
||||||
|
| grep -E '74-base' \
|
||||||
|
| sed \
|
||||||
|
-e 's/.*\">//g' \
|
||||||
|
-e 's/<.*//g'" "${RETRIES}" )"; then
|
||||||
|
>&2 echo "Failed to retrieve modules for PHP 7.4"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
if ! PHP80_BASE="$( run "\
|
||||||
|
curl -sS 'https://raw.githubusercontent.com/devilbox/docker-php-fpm/${PHP_TAG}/README.md' \
|
||||||
|
| tac \
|
||||||
|
| tac \
|
||||||
|
| grep -E '80-base' \
|
||||||
|
| sed \
|
||||||
|
-e 's/.*\">//g' \
|
||||||
|
-e 's/<.*//g'" "${RETRIES}" )"; then
|
||||||
|
>&2 echo "Failed to retrieve modules for PHP 8.0"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
if ! PHP81_BASE="$( run "\
|
||||||
|
curl -sS 'https://raw.githubusercontent.com/devilbox/docker-php-fpm/${PHP_TAG}/README.md' \
|
||||||
|
| tac \
|
||||||
|
| tac \
|
||||||
|
| grep -E '81-base' \
|
||||||
|
| sed \
|
||||||
|
-e 's/.*\">//g' \
|
||||||
|
-e 's/<.*//g'" "${RETRIES}" )"; then
|
||||||
|
>&2 echo "Failed to retrieve modules for PHP 8.1"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
if ! PHP82_BASE="$( run "\
|
||||||
|
curl -sS 'https://raw.githubusercontent.com/devilbox/docker-php-fpm/${PHP_TAG}/README.md' \
|
||||||
|
| tac \
|
||||||
|
| tac \
|
||||||
|
| grep -E '82-base' \
|
||||||
|
| sed \
|
||||||
|
-e 's/.*\">//g' \
|
||||||
|
-e 's/<.*//g'" "${RETRIES}" )"; then
|
||||||
|
>&2 echo "Failed to retrieve modules for PHP 8.2"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
###
|
||||||
|
### Get PHP mods modules (5 rounds)
|
||||||
|
###
|
||||||
|
|
||||||
|
if ! PHP52_MODS="$( run "\
|
||||||
|
curl -sS 'https://raw.githubusercontent.com/devilbox/docker-php-fpm/${PHP_TAG}/README.md' \
|
||||||
|
| tac \
|
||||||
|
| tac \
|
||||||
|
| grep -E '52-mods' \
|
||||||
|
| sed \
|
||||||
|
-e 's/.*\">//g' \
|
||||||
|
-e 's/<.*//g'" "${RETRIES}" )"; then
|
||||||
|
>&2 echo "Failed to retrieve modules for PHP 5.2"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
if ! PHP53_MODS="$( run "\
|
||||||
|
curl -sS 'https://raw.githubusercontent.com/devilbox/docker-php-fpm/${PHP_TAG}/README.md' \
|
||||||
|
| tac \
|
||||||
|
| tac \
|
||||||
|
| grep -E '53-mods' \
|
||||||
|
| sed \
|
||||||
|
-e 's/.*\">//g' \
|
||||||
|
-e 's/<.*//g'" "${RETRIES}" )"; then
|
||||||
|
>&2 echo "Failed to retrieve modules for PHP 5.3"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
if ! PHP54_MODS="$( run "\
|
||||||
|
curl -sS 'https://raw.githubusercontent.com/devilbox/docker-php-fpm/${PHP_TAG}/README.md' \
|
||||||
|
| tac \
|
||||||
|
| tac \
|
||||||
|
| grep -E '54-mods' \
|
||||||
|
| sed \
|
||||||
|
-e 's/.*\">//g' \
|
||||||
|
-e 's/<.*//g'" "${RETRIES}" )"; then
|
||||||
|
>&2 echo "Failed to retrieve modules for PHP 5.4"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
if ! PHP55_MODS="$( run "\
|
||||||
|
curl -sS 'https://raw.githubusercontent.com/devilbox/docker-php-fpm/${PHP_TAG}/README.md' \
|
||||||
|
| tac \
|
||||||
|
| tac \
|
||||||
|
| grep -E '55-mods' \
|
||||||
|
| sed \
|
||||||
|
-e 's/.*\">//g' \
|
||||||
|
-e 's/<.*//g'" "${RETRIES}" )"; then
|
||||||
|
>&2 echo "Failed to retrieve modules for PHP 5.5"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
if ! PHP56_MODS="$( run "\
|
||||||
|
curl -sS 'https://raw.githubusercontent.com/devilbox/docker-php-fpm/${PHP_TAG}/README.md' \
|
||||||
|
| tac \
|
||||||
|
| tac \
|
||||||
|
| grep -E '56-mods' \
|
||||||
|
| sed \
|
||||||
|
-e 's/.*\">//g' \
|
||||||
|
-e 's/<.*//g'" "${RETRIES}" )"; then
|
||||||
|
>&2 echo "Failed to retrieve modules for PHP 5.6"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
if ! PHP70_MODS="$( run "\
|
||||||
|
curl -sS 'https://raw.githubusercontent.com/devilbox/docker-php-fpm/${PHP_TAG}/README.md' \
|
||||||
|
| tac \
|
||||||
|
| tac \
|
||||||
|
| grep -E '70-mods' \
|
||||||
|
| sed \
|
||||||
|
-e 's/.*\">//g' \
|
||||||
|
-e 's/<.*//g'" "${RETRIES}" )"; then
|
||||||
|
>&2 echo "Failed to retrieve modules for PHP 7.0"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
if ! PHP71_MODS="$( run "\
|
||||||
|
curl -sS 'https://raw.githubusercontent.com/devilbox/docker-php-fpm/${PHP_TAG}/README.md' \
|
||||||
|
| tac \
|
||||||
|
| tac \
|
||||||
|
| grep -E '71-mods' \
|
||||||
|
| sed \
|
||||||
|
-e 's/.*\">//g' \
|
||||||
|
-e 's/<.*//g'" "${RETRIES}" )"; then
|
||||||
|
>&2 echo "Failed to retrieve modules for PHP 7.1"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
if ! PHP72_MODS="$( run "\
|
||||||
|
curl -sS 'https://raw.githubusercontent.com/devilbox/docker-php-fpm/${PHP_TAG}/README.md' \
|
||||||
|
| tac \
|
||||||
|
| tac \
|
||||||
|
| grep -E '72-mods' \
|
||||||
|
| sed \
|
||||||
|
-e 's/.*\">//g' \
|
||||||
|
-e 's/<.*//g'" "${RETRIES}" )"; then
|
||||||
|
>&2 echo "Failed to retrieve modules for PHP 7.2"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
if ! PHP73_MODS="$( run "\
|
||||||
|
curl -sS 'https://raw.githubusercontent.com/devilbox/docker-php-fpm/${PHP_TAG}/README.md' \
|
||||||
|
| tac \
|
||||||
|
| tac \
|
||||||
|
| grep -E '73-mods' \
|
||||||
|
| sed \
|
||||||
|
-e 's/.*\">//g' \
|
||||||
|
-e 's/<.*//g'" "${RETRIES}" )"; then
|
||||||
|
>&2 echo "Failed to retrieve modules for PHP 7.3"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
if ! PHP74_MODS="$( run "\
|
||||||
|
curl -sS 'https://raw.githubusercontent.com/devilbox/docker-php-fpm/${PHP_TAG}/README.md' \
|
||||||
|
| tac \
|
||||||
|
| tac \
|
||||||
|
| grep -E '74-mods' \
|
||||||
|
| sed \
|
||||||
|
-e 's/.*\">//g' \
|
||||||
|
-e 's/<.*//g'" "${RETRIES}" )"; then
|
||||||
|
>&2 echo "Failed to retrieve modules for PHP 7.4"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
if ! PHP80_MODS="$( run "\
|
||||||
|
curl -sS 'https://raw.githubusercontent.com/devilbox/docker-php-fpm/${PHP_TAG}/README.md' \
|
||||||
|
| tac \
|
||||||
|
| tac \
|
||||||
|
| grep -E '80-mods' \
|
||||||
|
| sed \
|
||||||
|
-e 's/.*\">//g' \
|
||||||
|
-e 's/<.*//g'" "${RETRIES}" )"; then
|
||||||
|
>&2 echo "Failed to retrieve modules for PHP 8.0"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
if ! PHP81_MODS="$( run "\
|
||||||
|
curl -sS 'https://raw.githubusercontent.com/devilbox/docker-php-fpm/${PHP_TAG}/README.md' \
|
||||||
|
| tac \
|
||||||
|
| tac \
|
||||||
|
| grep -E '81-mods' \
|
||||||
|
| sed \
|
||||||
|
-e 's/.*\">//g' \
|
||||||
|
-e 's/<.*//g'" "${RETRIES}" )"; then
|
||||||
|
>&2 echo "Failed to retrieve modules for PHP 8.1"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
if ! PHP82_MODS="$( run "\
|
||||||
|
curl -sS 'https://raw.githubusercontent.com/devilbox/docker-php-fpm/${PHP_TAG}/README.md' \
|
||||||
|
| tac \
|
||||||
|
| tac \
|
||||||
|
| grep -E '82-mods' \
|
||||||
|
| sed \
|
||||||
|
-e 's/.*\">//g' \
|
||||||
|
-e 's/<.*//g'" "${RETRIES}" )"; then
|
||||||
|
>&2 echo "Failed to retrieve modules for PHP 8.2"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
###
|
###
|
||||||
### Todo: add ioncube
|
### Todo: add ioncube
|
||||||
@ -94,7 +350,7 @@ MODS="$( echo "${PHP52_MODS}, ${PHP53_MODS}, ${PHP54_MODS}, ${PHP55_MODS}, ${PHP
|
|||||||
###
|
###
|
||||||
### Get disabled modules
|
### Get disabled modules
|
||||||
###
|
###
|
||||||
DISABLED=",blackfire,ioncube,phalcon,psr,xhprof,$( grep -E '^PHP_MODULES_DISABLE=' "${DVLBOX_PATH}/env-example" | sed 's/.*=//g' ),"
|
DISABLED=",blackfire,ioncube,phalcon,psr,$( grep -E '^PHP_MODULES_DISABLE=' "${DVLBOX_PATH}/env-example" | sed 's/.*=//g' ),"
|
||||||
#echo $DISABLED
|
#echo $DISABLED
|
||||||
B="✔" # Enabled base modules (cannot be disabled)
|
B="✔" # Enabled base modules (cannot be disabled)
|
||||||
E="🗸" # Enabled mods modules (can be disabled)
|
E="🗸" # Enabled mods modules (can be disabled)
|
||||||
|
@ -1,25 +0,0 @@
|
|||||||
#!/usr/bin/env bash
|
|
||||||
|
|
||||||
# NOTE: Parsing curl to tac to circumnvent "failed writing body"
|
|
||||||
# https://stackoverflow.com/questions/16703647/why-curl-return-and-error-23-failed-writing-body
|
|
||||||
|
|
||||||
set -e
|
|
||||||
set -u
|
|
||||||
set -o pipefail
|
|
||||||
|
|
||||||
SCRIPT_PATH="$( cd "$(dirname "$0")" && pwd -P )"
|
|
||||||
DVLBOX_PATH="$( cd "${SCRIPT_PATH}/../.." && pwd -P )"
|
|
||||||
# shellcheck disable=SC1090
|
|
||||||
. "${SCRIPT_PATH}/.lib.sh"
|
|
||||||
|
|
||||||
RETRIES=10
|
|
||||||
|
|
||||||
|
|
||||||
# -------------------------------------------------------------------------------------------------
|
|
||||||
# FUNCTIONS
|
|
||||||
# -------------------------------------------------------------------------------------------------
|
|
||||||
|
|
||||||
PHP_TAG="$( grep 'devilbox/php' "${DVLBOX_PATH}/docker-compose.yml" | sed 's/^.*-work-//g' )"
|
|
||||||
PHP_TOOLS="$( run "curl -sS 'https://raw.githubusercontent.com/devilbox/docker-php-fpm/${PHP_TAG}/doc/available-tools.md'" "${RETRIES}" )";
|
|
||||||
|
|
||||||
echo "${PHP_TOOLS}" | grep -A 1000000 'TOOLS_WORK_START'
|
|
@ -1,95 +0,0 @@
|
|||||||
#!/usr/bin/env bash
|
|
||||||
|
|
||||||
# NOTE: Parsing curl to tac to circumnvent "failed writing body"
|
|
||||||
# https://stackoverflow.com/questions/16703647/why-curl-return-and-error-23-failed-writing-body
|
|
||||||
|
|
||||||
set -e
|
|
||||||
set -u
|
|
||||||
set -o pipefail
|
|
||||||
|
|
||||||
SCRIPT_PATH="$( cd "$(dirname "$0")" && pwd -P )"
|
|
||||||
DVLBOX_PATH="$( cd "${SCRIPT_PATH}/../.." && pwd -P )"
|
|
||||||
# shellcheck disable=SC1090
|
|
||||||
. "${SCRIPT_PATH}/../scripts/.lib.sh"
|
|
||||||
|
|
||||||
RETRIES=10
|
|
||||||
# see framework-cakephp.sh for PHP <8 tests
|
|
||||||
DISABLED_VERSIONS=("5.2" "5.3" "5.4" "5.5" "5.6" "7.0" "7.1" "7.2" "7.3" "7.4" "8.2")
|
|
||||||
|
|
||||||
PHP_VERSION="$( get_php_version "${DVLBOX_PATH}" )"
|
|
||||||
|
|
||||||
###
|
|
||||||
### What CakePHP Version?
|
|
||||||
###
|
|
||||||
CAKE_PHP_VERSION=4.3
|
|
||||||
|
|
||||||
|
|
||||||
echo
|
|
||||||
echo "# --------------------------------------------------------------------------------------------------"
|
|
||||||
echo "# [Framework] CakePHP ${CAKE_PHP_VERSION}"
|
|
||||||
echo "# --------------------------------------------------------------------------------------------------"
|
|
||||||
echo
|
|
||||||
|
|
||||||
|
|
||||||
# -------------------------------------------------------------------------------------------------
|
|
||||||
# Pre-check
|
|
||||||
# -------------------------------------------------------------------------------------------------
|
|
||||||
|
|
||||||
if [[ ${DISABLED_VERSIONS[*]} =~ ${PHP_VERSION} ]]; then
|
|
||||||
printf "[SKIP] Skipping all checks for PHP %s\\n" "${PHP_VERSION}"
|
|
||||||
exit 0
|
|
||||||
fi
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
# -------------------------------------------------------------------------------------------------
|
|
||||||
# ENTRYPOINT
|
|
||||||
# -------------------------------------------------------------------------------------------------
|
|
||||||
|
|
||||||
###
|
|
||||||
### Get required env values
|
|
||||||
###
|
|
||||||
MYSQL_ROOT_PASSWORD="$( "${SCRIPT_PATH}/../scripts/env-getvar.sh" "MYSQL_ROOT_PASSWORD" )"
|
|
||||||
TLD_SUFFIX="$( "${SCRIPT_PATH}/../scripts/env-getvar.sh" "TLD_SUFFIX" )"
|
|
||||||
VHOST="my-cakephp"
|
|
||||||
|
|
||||||
# Create vhost dir
|
|
||||||
create_vhost_dir "${VHOST}"
|
|
||||||
|
|
||||||
|
|
||||||
# Setup CakePHP project
|
|
||||||
run "docker-compose exec --user devilbox -T php bash -c 'cd /shared/httpd/${VHOST}; composer create-project --no-interaction --prefer-dist cakephp/app:~${CAKE_PHP_VERSION} cakephp'" "${RETRIES}" "${DVLBOX_PATH}"
|
|
||||||
run "docker-compose exec --user devilbox -T php bash -c 'cd /shared/httpd/${VHOST}; ln -sf cakephp/webroot htdocs'" "${RETRIES}" "${DVLBOX_PATH}"
|
|
||||||
run "docker-compose exec --user devilbox -T php mysql -u root -h mysql --password=\"${MYSQL_ROOT_PASSWORD}\" -e \"DROP DATABASE IF EXISTS my_cake; CREATE DATABASE my_cake;\"" "${RETRIES}" "${DVLBOX_PATH}"
|
|
||||||
|
|
||||||
# Configure CakePHP database settings
|
|
||||||
run "docker-compose exec --user devilbox -T php sed -i\"\" \"s/'host' =>.*/'host' => 'mysql',/g\" /shared/httpd/${VHOST}/cakephp/config/app_local.php" "${RETRIES}" "${DVLBOX_PATH}"
|
|
||||||
run "docker-compose exec --user devilbox -T php sed -i\"\" \"s/'username' =>.*/'username' => 'root',/g\" /shared/httpd/${VHOST}/cakephp/config/app_local.php" "${RETRIES}" "${DVLBOX_PATH}"
|
|
||||||
run "docker-compose exec --user devilbox -T php sed -i\"\" \"s/'password' =>.*/'password' => '${MYSQL_ROOT_PASSWORD}',/g\" /shared/httpd/${VHOST}/cakephp/config/app_local.php" "${RETRIES}" "${DVLBOX_PATH}"
|
|
||||||
run "docker-compose exec --user devilbox -T php sed -i\"\" \"s/'database' =>.*/'database' => 'my_cake',/g\" /shared/httpd/${VHOST}/cakephp/config/app_local.php" "${RETRIES}" "${DVLBOX_PATH}"
|
|
||||||
|
|
||||||
# Test CakePHP
|
|
||||||
ERROR=0
|
|
||||||
if ! run "docker-compose exec --user devilbox -T php curl -sS --fail 'http://${VHOST}.${TLD_SUFFIX}' | tac | tac | grep '\"bullet success\"' | grep 'mbstring'" "${RETRIES}" "${DVLBOX_PATH}"; then
|
|
||||||
ERROR=1
|
|
||||||
fi
|
|
||||||
if ! run "docker-compose exec --user devilbox -T php curl -sS --fail 'http://${VHOST}.${TLD_SUFFIX}' | tac | tac | grep '\"bullet success\"' | grep 'openssl'" "${RETRIES}" "${DVLBOX_PATH}"; then
|
|
||||||
ERROR=1
|
|
||||||
fi
|
|
||||||
if ! run "docker-compose exec --user devilbox -T php curl -sS --fail 'http://${VHOST}.${TLD_SUFFIX}' | tac | tac | grep '\"bullet success\"' | grep 'intl'" "${RETRIES}" "${DVLBOX_PATH}"; then
|
|
||||||
ERROR=1
|
|
||||||
fi
|
|
||||||
if ! run "docker-compose exec --user devilbox -T php curl -sS --fail 'http://${VHOST}.${TLD_SUFFIX}' | tac | tac | grep '\"bullet success\"' | grep 'tmp directory'" "${RETRIES}" "${DVLBOX_PATH}"; then
|
|
||||||
ERROR=1
|
|
||||||
fi
|
|
||||||
if ! run "docker-compose exec --user devilbox -T php curl -sS --fail 'http://${VHOST}.${TLD_SUFFIX}' | tac | tac | grep '\"bullet success\"' | grep 'logs directory'" "${RETRIES}" "${DVLBOX_PATH}"; then
|
|
||||||
ERROR=1
|
|
||||||
fi
|
|
||||||
if ! run "docker-compose exec --user devilbox -T php curl -sS --fail 'http://${VHOST}.${TLD_SUFFIX}' | tac | tac | grep '\"bullet success\"' | grep 'connect to the database'" "${RETRIES}" "${DVLBOX_PATH}"; then
|
|
||||||
ERROR=1
|
|
||||||
fi
|
|
||||||
|
|
||||||
if [ "${ERROR}" = "1" ]; then
|
|
||||||
run "docker-compose exec --user devilbox -T php curl 'http://${VHOST}.${TLD_SUFFIX}' || true" "1" "${DVLBOX_PATH}"
|
|
||||||
exit 1
|
|
||||||
fi
|
|
@ -13,8 +13,7 @@ DVLBOX_PATH="$( cd "${SCRIPT_PATH}/../.." && pwd -P )"
|
|||||||
. "${SCRIPT_PATH}/../scripts/.lib.sh"
|
. "${SCRIPT_PATH}/../scripts/.lib.sh"
|
||||||
|
|
||||||
RETRIES=10
|
RETRIES=10
|
||||||
# see framework-cakephp-php8.sh for PHP 8+ tests
|
DISABLED_VERSIONS=("5.2" "5.3" "5.4" "5.5" "8.0" "8.1" "8.2")
|
||||||
DISABLED_VERSIONS=("5.2" "5.3" "5.4" "5.5" "5.6" "7.0" "7.1" "7.2" "7.3" "7.4" "8.0" "8.1" "8.2")
|
|
||||||
|
|
||||||
PHP_VERSION="$( get_php_version "${DVLBOX_PATH}" )"
|
PHP_VERSION="$( get_php_version "${DVLBOX_PATH}" )"
|
||||||
|
|
||||||
|
@ -13,7 +13,7 @@ DVLBOX_PATH="$( cd "${SCRIPT_PATH}/../.." && pwd -P )"
|
|||||||
. "${SCRIPT_PATH}/../scripts/.lib.sh"
|
. "${SCRIPT_PATH}/../scripts/.lib.sh"
|
||||||
|
|
||||||
RETRIES=10
|
RETRIES=10
|
||||||
DISABLED_VERSIONS=("5.3" "5.4" "5.5" "5.6" "7.0" "7.1" "7.2" "7.3" "7.4" "8.0" "8.1" "8.2")
|
DISABLED_VERSIONS=("5.3" "5.4" "5.5" "5.6" "8.0" "8.1" "8.2")
|
||||||
DISABLED_MYSQL_VERSIONS=("mysql-8.0" "percona-8.0")
|
DISABLED_MYSQL_VERSIONS=("mysql-8.0" "percona-8.0")
|
||||||
|
|
||||||
|
|
||||||
|
@ -71,4 +71,4 @@ run "curl -sS --fail -XPOST 'http://localhost:${HOST_PORT_HTTPD}/mail.php' -d 'e
|
|||||||
# Validate
|
# Validate
|
||||||
run "curl -sS --fail 'http://localhost:${HOST_PORT_HTTPD}/mail.php' | tac | tac | grep '${MY_MAIL}' >/dev/null" "${RETRIES}"
|
run "curl -sS --fail 'http://localhost:${HOST_PORT_HTTPD}/mail.php' | tac | tac | grep '${MY_MAIL}' >/dev/null" "${RETRIES}"
|
||||||
run "curl -sS --fail 'http://localhost:${HOST_PORT_HTTPD}/mail.php' | tac | tac | grep '${MY_SUBJ}' >/dev/null" "${RETRIES}"
|
run "curl -sS --fail 'http://localhost:${HOST_PORT_HTTPD}/mail.php' | tac | tac | grep '${MY_SUBJ}' >/dev/null" "${RETRIES}"
|
||||||
run "curl -sS --fail 'http://localhost:${HOST_PORT_HTTPD}/mail.php?get-body=1' | tac | tac | grep '${MY_MESS}' >/dev/null" "${RETRIES}"
|
run "curl -sS --fail 'http://localhost:${HOST_PORT_HTTPD}/mail.php' | tac | tac | grep '${MY_MESS}' >/dev/null" "${RETRIES}"
|
||||||
|
@ -54,7 +54,7 @@ fi
|
|||||||
HOST_PORT_HTTPD="$( "${SCRIPT_PATH}/../scripts/env-getvar.sh" "HOST_PORT_HTTPD" )"
|
HOST_PORT_HTTPD="$( "${SCRIPT_PATH}/../scripts/env-getvar.sh" "HOST_PORT_HTTPD" )"
|
||||||
TLD_SUFFIX="$( "${SCRIPT_PATH}/../scripts/env-getvar.sh" "TLD_SUFFIX" )"
|
TLD_SUFFIX="$( "${SCRIPT_PATH}/../scripts/env-getvar.sh" "TLD_SUFFIX" )"
|
||||||
HTTPD_DOCROOT_DIR="$( "${SCRIPT_PATH}/../scripts/env-getvar.sh" "HTTPD_DOCROOT_DIR" )"
|
HTTPD_DOCROOT_DIR="$( "${SCRIPT_PATH}/../scripts/env-getvar.sh" "HTTPD_DOCROOT_DIR" )"
|
||||||
#HTTPD_TEMPLATE_DIR="$( "${SCRIPT_PATH}/../scripts/env-getvar.sh" "HTTPD_TEMPLATE_DIR" )"
|
HTTPD_TEMPLATE_DIR="$( "${SCRIPT_PATH}/../scripts/env-getvar.sh" "HTTPD_TEMPLATE_DIR" )"
|
||||||
|
|
||||||
|
|
||||||
###
|
###
|
||||||
@ -128,14 +128,14 @@ fi
|
|||||||
###
|
###
|
||||||
### Vhost config link is available
|
### Vhost config link is available
|
||||||
###
|
###
|
||||||
#printf "[TEST] vhost.d config link is available"
|
printf "[TEST] vhost.d config link is available"
|
||||||
#if ! run "curl -sS --fail 'http://localhost:${HOST_PORT_HTTPD}/vhosts.php' | tac | tac | grep 'vhost.d/${VHOST}.conf' >/dev/null" "${RETRIES}" "" "0"; then
|
if ! run "curl -sS --fail 'http://localhost:${HOST_PORT_HTTPD}/vhosts.php' | tac | tac | grep 'vhost.d/${VHOST}.conf' >/dev/null" "${RETRIES}" "" "0"; then
|
||||||
# printf "\\r[FAIL] vhost.d config link is available\\n"
|
printf "\\r[FAIL] vhost.d config link is available\\n"
|
||||||
# run "curl 'http://localhost:${HOST_PORT_HTTPD}/vhosts.php' || true"
|
run "curl 'http://localhost:${HOST_PORT_HTTPD}/vhosts.php' || true"
|
||||||
# exit 1
|
exit 1
|
||||||
#else
|
else
|
||||||
# printf "\\r[OK] vhost.d config link is available\\n"
|
printf "\\r[OK] vhost.d config link is available\\n"
|
||||||
#fi
|
fi
|
||||||
|
|
||||||
|
|
||||||
###
|
###
|
||||||
@ -154,62 +154,62 @@ fi
|
|||||||
###
|
###
|
||||||
### vhost-gen config link should appear
|
### vhost-gen config link should appear
|
||||||
###
|
###
|
||||||
#run "docker-compose exec --user devilbox -T php mkdir -p /shared/httpd/${VHOST}/${HTTPD_TEMPLATE_DIR}" "${RETRIES}" "${DVLBOX_PATH}"
|
run "docker-compose exec --user devilbox -T php mkdir -p /shared/httpd/${VHOST}/${HTTPD_TEMPLATE_DIR}" "${RETRIES}" "${DVLBOX_PATH}"
|
||||||
#run "cp ${DVLBOX_PATH}/cfg/vhost-gen/apache22.yml-example-vhost ${SCRIPT_PATH}/../www/${VHOST}/${HTTPD_TEMPLATE_DIR}/apache22.yml" "${RETRIES}"
|
run "cp ${DVLBOX_PATH}/cfg/vhost-gen/apache22.yml-example-vhost ${SCRIPT_PATH}/../www/${VHOST}/${HTTPD_TEMPLATE_DIR}/apache22.yml" "${RETRIES}"
|
||||||
#run "cp ${DVLBOX_PATH}/cfg/vhost-gen/apache24.yml-example-vhost ${SCRIPT_PATH}/../www/${VHOST}/${HTTPD_TEMPLATE_DIR}/apache24.yml" "${RETRIES}"
|
run "cp ${DVLBOX_PATH}/cfg/vhost-gen/apache24.yml-example-vhost ${SCRIPT_PATH}/../www/${VHOST}/${HTTPD_TEMPLATE_DIR}/apache24.yml" "${RETRIES}"
|
||||||
#run "cp ${DVLBOX_PATH}/cfg/vhost-gen/nginx.yml-example-vhost ${SCRIPT_PATH}/../www/${VHOST}/${HTTPD_TEMPLATE_DIR}/nginx.yml" "${RETRIES}"
|
run "cp ${DVLBOX_PATH}/cfg/vhost-gen/nginx.yml-example-vhost ${SCRIPT_PATH}/../www/${VHOST}/${HTTPD_TEMPLATE_DIR}/nginx.yml" "${RETRIES}"
|
||||||
#
|
|
||||||
#printf "[TEST] vhost-gen config link is available"
|
printf "[TEST] vhost-gen config link is available"
|
||||||
#if ! run "curl -sS --fail 'http://localhost:${HOST_PORT_HTTPD}/vhosts.php' | tac | tac | grep 'info_vhostgen.php?name=${VHOST}' >/dev/null" "${RETRIES}" "" "0"; then
|
if ! run "curl -sS --fail 'http://localhost:${HOST_PORT_HTTPD}/vhosts.php' | tac | tac | grep 'info_vhostgen.php?name=${VHOST}' >/dev/null" "${RETRIES}" "" "0"; then
|
||||||
# printf "\\r[FAIL] vhost-gen config link is available\\n"
|
printf "\\r[FAIL] vhost-gen config link is available\\n"
|
||||||
# run "curl 'http://localhost:${HOST_PORT_HTTPD}/vhosts.php' || true"
|
run "curl 'http://localhost:${HOST_PORT_HTTPD}/vhosts.php' || true"
|
||||||
# exit 1
|
exit 1
|
||||||
#else
|
else
|
||||||
# printf "\\r[OK] vhost-gen config link is available\\n"
|
printf "\\r[OK] vhost-gen config link is available\\n"
|
||||||
#fi
|
fi
|
||||||
|
|
||||||
|
|
||||||
###
|
###
|
||||||
### vhost-gen config should be available
|
### vhost-gen config should be available
|
||||||
###
|
###
|
||||||
#printf "[TEST] vhost-gen config is available"
|
printf "[TEST] vhost-gen config is available"
|
||||||
#if ! run "curl -sS --fail 'http://localhost:${HOST_PORT_HTTPD}/info_vhostgen.php?name=${VHOST}' | tac | tac | grep '__VHOST_NAME__' >/dev/null" "${RETRIES}" "" "0"; then
|
if ! run "curl -sS --fail 'http://localhost:${HOST_PORT_HTTPD}/info_vhostgen.php?name=${VHOST}' | tac | tac | grep '__VHOST_NAME__' >/dev/null" "${RETRIES}" "" "0"; then
|
||||||
# printf "\\r[FAIL] vhost-gen config is available\\n"
|
printf "\\r[FAIL] vhost-gen config is available\\n"
|
||||||
# run "curl 'http://localhost:${HOST_PORT_HTTPD}/info_vhostgen.php?name=${VHOST}' || true"
|
run "curl 'http://localhost:${HOST_PORT_HTTPD}/info_vhostgen.php?name=${VHOST}' || true"
|
||||||
# exit 1
|
exit 1
|
||||||
#else
|
else
|
||||||
# printf "\\r[OK] vhost-gen config is available\\n"
|
printf "\\r[OK] vhost-gen config is available\\n"
|
||||||
#fi
|
fi
|
||||||
|
|
||||||
|
|
||||||
###
|
###
|
||||||
### vhost-gen config changes are shown in intranet
|
### vhost-gen config changes are shown in intranet
|
||||||
###
|
###
|
||||||
#replace "__INDEX__" "__MY_GREP_VALUE__" "${SCRIPT_PATH}/../www/${VHOST}/${HTTPD_TEMPLATE_DIR}/apache22.yml"
|
replace "__INDEX__" "__MY_GREP_VALUE__" "${SCRIPT_PATH}/../www/${VHOST}/${HTTPD_TEMPLATE_DIR}/apache22.yml"
|
||||||
#replace "__INDEX__" "__MY_GREP_VALUE__" "${SCRIPT_PATH}/../www/${VHOST}/${HTTPD_TEMPLATE_DIR}/apache24.yml"
|
replace "__INDEX__" "__MY_GREP_VALUE__" "${SCRIPT_PATH}/../www/${VHOST}/${HTTPD_TEMPLATE_DIR}/apache24.yml"
|
||||||
#replace "__INDEX__" "__MY_GREP_VALUE__" "${SCRIPT_PATH}/../www/${VHOST}/${HTTPD_TEMPLATE_DIR}/nginx.yml"
|
replace "__INDEX__" "__MY_GREP_VALUE__" "${SCRIPT_PATH}/../www/${VHOST}/${HTTPD_TEMPLATE_DIR}/nginx.yml"
|
||||||
#
|
|
||||||
#printf "[TEST] vhost-gen config changes are shown"
|
printf "[TEST] vhost-gen config changes are shown"
|
||||||
#if ! run "curl -sS --fail 'http://localhost:${HOST_PORT_HTTPD}/info_vhostgen.php?name=${VHOST}' | tac | tac | grep '__MY_GREP_VALUE__' >/dev/null" "${RETRIES}" "" "0"; then
|
if ! run "curl -sS --fail 'http://localhost:${HOST_PORT_HTTPD}/info_vhostgen.php?name=${VHOST}' | tac | tac | grep '__MY_GREP_VALUE__' >/dev/null" "${RETRIES}" "" "0"; then
|
||||||
# printf "\\r[FAIL] vhost-gen config changes are shown\\n"
|
printf "\\r[FAIL] vhost-gen config changes are shown\\n"
|
||||||
# run "curl 'http://localhost:${HOST_PORT_HTTPD}/info_vhostgen.php?name=${VHOST}' || true"
|
run "curl 'http://localhost:${HOST_PORT_HTTPD}/info_vhostgen.php?name=${VHOST}' || true"
|
||||||
# exit 1
|
exit 1
|
||||||
#else
|
else
|
||||||
# printf "\\r[OK] vhost-gen config changes are shown\\n"
|
printf "\\r[OK] vhost-gen config changes are shown\\n"
|
||||||
#fi
|
fi
|
||||||
|
|
||||||
|
|
||||||
###
|
###
|
||||||
### Vhost disappears after removing its dir
|
### Vhost disappears after removing its dir
|
||||||
###
|
###
|
||||||
#run "docker-compose exec --user devilbox -T php rm -rf /shared/httpd/${VHOST}" "${RETRIES}" "${DVLBOX_PATH}"
|
run "docker-compose exec --user devilbox -T php rm -rf /shared/httpd/${VHOST}" "${RETRIES}" "${DVLBOX_PATH}"
|
||||||
#run "sleep 4"
|
run "sleep 4"
|
||||||
#
|
|
||||||
#printf "[TEST] vhost disappears after removing its dir"
|
printf "[TEST] vhost disappears after removing its dir"
|
||||||
#if ! run "test \"\$(curl -sS --fail 'http://localhost:${HOST_PORT_HTTPD}/vhosts.php' | tac | tac | grep -c '${VHOST}')\" = \"0\"" "${RETRIES}" "" "0"; then
|
if ! run "test \"\$(curl -sS --fail 'http://localhost:${HOST_PORT_HTTPD}/vhosts.php' | tac | tac | grep -c '${VHOST}')\" = \"0\"" "${RETRIES}" "" "0"; then
|
||||||
# printf "\\r[FAIL] vhost disappears after removing its dir\\n"
|
printf "\\r[FAIL] vhost disappears after removing its dir\\n"
|
||||||
# run "curl 'http://localhost:${HOST_PORT_HTTPD}/vhosts.php' | tac | tac | grep '${VHOST}' || true"
|
run "curl 'http://localhost:${HOST_PORT_HTTPD}/vhosts.php' | tac | tac | grep '${VHOST}' || true"
|
||||||
# exit 1
|
exit 1
|
||||||
#else
|
else
|
||||||
# printf "\\r[OK] vhost disappears after removing its dir\\n"
|
printf "\\r[OK] vhost disappears after removing its dir\\n"
|
||||||
#fi
|
fi
|
||||||
|
@ -60,11 +60,11 @@ if ! URL="$( run "\
|
|||||||
| tac \
|
| tac \
|
||||||
| grep -Eo '/vendor/phppgadmin-[.0-9]+/'" \
|
| grep -Eo '/vendor/phppgadmin-[.0-9]+/'" \
|
||||||
"${RETRIES}" "" "0" )"; then
|
"${RETRIES}" "" "0" )"; then
|
||||||
print_fail "1" "1" "Retrieve phpPgAdmin URL"
|
printf "\\r[FAILED] Retrieve phpPgAdmin URL\\n"
|
||||||
run "curl -sS 'http://localhost:${HOST_PORT_HTTPD}/index.php' || true"
|
run "curl -sS 'http://localhost:${HOST_PORT_HTTPD}/index.php' || true"
|
||||||
exit 1
|
exit 1
|
||||||
else
|
else
|
||||||
print_succ "1" "1" "Retrieve phpPgAdmin URL: ${URL}"
|
printf "\\r[OK] Retrieve phpPgAdmin URL: %s\\n" "${URL}"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
|
||||||
@ -80,18 +80,18 @@ if ! curl -sS --fail "http://localhost:${HOST_PORT_HTTPD}${URL}intro.php" | tac
|
|||||||
# 3rd Try
|
# 3rd Try
|
||||||
sleep 1
|
sleep 1
|
||||||
if ! curl -sS --fail "http://localhost:${HOST_PORT_HTTPD}${URL}intro.php" | tac | tac | grep -Eiq "welcome to phpPgAdmin"; then
|
if ! curl -sS --fail "http://localhost:${HOST_PORT_HTTPD}${URL}intro.php" | tac | tac | grep -Eiq "welcome to phpPgAdmin"; then
|
||||||
print_fail "1" "1" "Fetch ${URL}intro.php"
|
printf "\\r[FAIL] Fetch %sintro.php\\n" "${URL}"
|
||||||
curl -sS "http://localhost:${HOST_PORT_HTTPD}${URL}intro.php" || true
|
curl -sS "http://localhost:${HOST_PORT_HTTPD}${URL}intro.php" || true
|
||||||
curl -sS -I "http://localhost:${HOST_PORT_HTTPD}${URL}intro.php" || true
|
curl -sS -I "http://localhost:${HOST_PORT_HTTPD}${URL}intro.php" || true
|
||||||
exit 1
|
exit 1
|
||||||
else
|
else
|
||||||
print_succ "1" "1" "Fetch ${URL}intro.php (3 rounds)"
|
printf "\\r[OK] Fetch %sintro.php (3 rounds)\\n" "${URL}"
|
||||||
fi
|
fi
|
||||||
else
|
else
|
||||||
print_succ "1" "1" "Fetch ${URL}intro.php (2 rounds)"
|
printf "\\r[OK] Fetch %sintro.php (2 rounds)\\n" "${URL}"
|
||||||
fi
|
fi
|
||||||
else
|
else
|
||||||
print_succ "1" "1" "Fetch ${URL}intro.php (1 round)"
|
printf "\\r[OK] Fetch %sintro.php (1 round)\\n" "${URL}"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
|
||||||
@ -106,46 +106,46 @@ LIBPATH="${DVLBOXPATH}/.devilbox/www/htdocs${URL%index\.php}libraries/lib.inc.ph
|
|||||||
|
|
||||||
printf "[TEST] config.inc.php exists"
|
printf "[TEST] config.inc.php exists"
|
||||||
if [ ! -f "${CONFIGPATH}" ]; then
|
if [ ! -f "${CONFIGPATH}" ]; then
|
||||||
print_fail "1" "1" "config.inc.php exists: no"
|
printf "\\r[FAIL] config.inc.php exists: no\\n"
|
||||||
exit 1
|
exit 1
|
||||||
else
|
else
|
||||||
print_succ "1" "1" "config.inc.php exists: yes"
|
printf "\\r[OK] config.inc.php exists: yes\\n"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
# $conf['servers'][0]['host'] = 'pgsql';
|
# $conf['servers'][0]['host'] = 'pgsql';
|
||||||
printf "[TEST] config.inc.php check: \$conf['servers'][0]['host'] = 'pgsql';"
|
printf "[TEST] config.inc.php check: \$conf['servers'][0]['host'] = 'pgsql';"
|
||||||
if ! grep -E "^[[:space:]]*\\\$conf\\['servers'\\]\\[0\\]\\['host'\\][[:space:]]*=[[:space:]]*'pgsql';" "${CONFIGPATH}" >/dev/null; then
|
if ! grep -E "^[[:space:]]*\\\$conf\\['servers'\\]\\[0\\]\\['host'\\][[:space:]]*=[[:space:]]*'pgsql';" "${CONFIGPATH}" >/dev/null; then
|
||||||
print_fail "1" "1" "config.inc.php check: \$conf['servers'][0]['host'] = 'pgsql';"
|
printf "\\r[FAIL] config.inc.php check: \$conf['servers'][0]['host'] = 'pgsql';\\n"
|
||||||
if ! grep 'servers' "${CONFIGPATH}"; then
|
if ! grep 'servers' "${CONFIGPATH}"; then
|
||||||
cat "${CONFIGPATH}"
|
cat "${CONFIGPATH}"
|
||||||
fi
|
fi
|
||||||
exit 1
|
exit 1
|
||||||
else
|
else
|
||||||
print_succ "1" "1" "config.inc.php check: \$conf['servers'][0]['host'] = 'pgsql';"
|
printf "\\r[OK] config.inc.php check: \$conf['servers'][0]['host'] = 'pgsql';\\n"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
# $conf['extra_login_security'] = false;
|
# $conf['extra_login_security'] = false;
|
||||||
printf "[TEST] config.inc.php check: \$conf['extra_login_security'] = false;"
|
printf "[TEST] config.inc.php check: \$conf['extra_login_security'] = false;"
|
||||||
if ! grep -E "^[[:space:]]*\\\$conf\\['extra_login_security'\\][[:space:]]*=[[:space:]]*false;" "${CONFIGPATH}" >/dev/null; then
|
if ! grep -E "^[[:space:]]*\\\$conf\\['extra_login_security'\\][[:space:]]*=[[:space:]]*false;" "${CONFIGPATH}" >/dev/null; then
|
||||||
print_fail "1" "1" "config.inc.php check: \$conf['extra_login_security'] = false;"
|
printf "\\r[FAIL] config.inc.php check: \$conf['extra_login_security'] = false;\\n"
|
||||||
if ! grep 'extra_login_security' "${CONFIGPATH}"; then
|
if ! grep 'extra_login_security' "${CONFIGPATH}"; then
|
||||||
cat "${CONFIGPATH}"
|
cat "${CONFIGPATH}"
|
||||||
fi
|
fi
|
||||||
exit 1
|
exit 1
|
||||||
else
|
else
|
||||||
print_succ "1" "1" "config.inc.php check: \$conf['extra_login_security'] = false;"
|
printf "\\r[OK] config.inc.php check: \$conf['extra_login_security'] = false;\\n"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
# error_reporting(E_ERROR | E_WARNING | E_PARSE);
|
# error_reporting(E_ERROR | E_WARNING | E_PARSE);
|
||||||
printf "[TEST] lib.inc.php check: error_reporting(E_ERROR | E_WARNING | E_PARSE);"
|
printf "[TEST] lib.inc.php check: error_reporting(E_ERROR | E_WARNING | E_PARSE);"
|
||||||
if ! grep -E "^[[:space:]]*error_reporting\\(E_ERROR[[:space:]]*\\|[[:space:]]*E_WARNING[[:space:]]*\\|[[:space:]]*E_PARSE\\);" "${LIBPATH}" >/dev/null; then
|
if ! grep -E "^[[:space:]]*error_reporting\\(E_ERROR[[:space:]]*\\|[[:space:]]*E_WARNING[[:space:]]*\\|[[:space:]]*E_PARSE\\);" "${LIBPATH}" >/dev/null; then
|
||||||
print_fail "1" "1" "lib.inc.php check: error_reporting(E_ERROR | E_WARNING | E_PARSE);"
|
printf "\\r[FAIL] lib.inc.php check: error_reporting(E_ERROR | E_WARNING | E_PARSE);\\n"
|
||||||
if ! grep 'error_reporting' "${LIBPATH}"; then
|
if ! grep 'error_reporting' "${LIBPATH}"; then
|
||||||
cat "${LIBPATH}"
|
cat "${LIBPATH}"
|
||||||
fi
|
fi
|
||||||
exit 1
|
exit 1
|
||||||
else
|
else
|
||||||
print_succ "1" "1" "lib.inc.php check: error_reporting(E_ERROR | E_WARNING | E_PARSE);"
|
printf "\\r[OK] lib.inc.php check: error_reporting(E_ERROR | E_WARNING | E_PARSE);\\n"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
|
||||||
@ -163,7 +163,7 @@ if [ "${DEVILBOX_VENDOR_PHPPGADMIN_AUTOLOGIN}" != "1" ]; then
|
|||||||
###
|
###
|
||||||
printf "[TEST] Retrieve phpPgAdmin token page"
|
printf "[TEST] Retrieve phpPgAdmin token page"
|
||||||
if ! TOKEN_URL="$( run "curl -sS --fail -c cookie.txt 'http://localhost:${HOST_PORT_HTTPD}${URL}servers.php' | tac | tac | grep -Eo '\"redirect\\.php\\?subject=server.+\"' " "${RETRIES}" "" "0" )"; then
|
if ! TOKEN_URL="$( run "curl -sS --fail -c cookie.txt 'http://localhost:${HOST_PORT_HTTPD}${URL}servers.php' | tac | tac | grep -Eo '\"redirect\\.php\\?subject=server.+\"' " "${RETRIES}" "" "0" )"; then
|
||||||
print_fail "1" "1" "Retrieve phpPgAdmin login page"
|
printf "\\r[FAIL] Retrieve phpPgAdmin login page\\n"
|
||||||
run "curl -sS 'http://localhost:${HOST_PORT_HTTPD}${URL}servers.php' || true"
|
run "curl -sS 'http://localhost:${HOST_PORT_HTTPD}${URL}servers.php' || true"
|
||||||
run "curl -sSI 'http://localhost:${HOST_PORT_HTTPD}${URL}servers.php' || true"
|
run "curl -sSI 'http://localhost:${HOST_PORT_HTTPD}${URL}servers.php' || true"
|
||||||
rm -f cookie.txt
|
rm -f cookie.txt
|
||||||
@ -171,7 +171,7 @@ if [ "${DEVILBOX_VENDOR_PHPPGADMIN_AUTOLOGIN}" != "1" ]; then
|
|||||||
else
|
else
|
||||||
TOKEN_URL="${TOKEN_URL//\"/}"
|
TOKEN_URL="${TOKEN_URL//\"/}"
|
||||||
TOKEN_URL="${TOKEN_URL//&/&}"
|
TOKEN_URL="${TOKEN_URL//&/&}"
|
||||||
print_succ "1" "1" "Retrieve phpPgAdmin token page: ${TOKEN_URL}"
|
printf "\\r[OK] Retrieve phpPgAdmin token page:%s\\n" "${TOKEN_URL}"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
###
|
###
|
||||||
@ -180,14 +180,14 @@ if [ "${DEVILBOX_VENDOR_PHPPGADMIN_AUTOLOGIN}" != "1" ]; then
|
|||||||
printf "[TEST] Retrieve phpPgAdmin login token"
|
printf "[TEST] Retrieve phpPgAdmin login token"
|
||||||
# 1st Try
|
# 1st Try
|
||||||
if ! TOKEN="$( run "curl -sS --fail -c cookie.txt -b cookie.txt 'http://localhost:${HOST_PORT_HTTPD}${URL}${TOKEN_URL}' | tac | tac | grep -Eo 'loginPassword_[a-zA-Z0-9]+'" "${RETRIES}" "" "0" )"; then
|
if ! TOKEN="$( run "curl -sS --fail -c cookie.txt -b cookie.txt 'http://localhost:${HOST_PORT_HTTPD}${URL}${TOKEN_URL}' | tac | tac | grep -Eo 'loginPassword_[a-zA-Z0-9]+'" "${RETRIES}" "" "0" )"; then
|
||||||
print_fail "1" "1" "Retrieve phpPgAdmin login token"
|
printf "\\r[FAIL] Retrieve phpPgAdmin login token\\n"
|
||||||
run "curl -sS 'http://localhost:${TOKEN_URL_URL}' || true"
|
run "curl -sS 'http://localhost:${TOKEN_URL_URL}' || true"
|
||||||
run "curl -sSI 'http://localhost:${TOKEN_URL_URL}' || true"
|
run "curl -sSI 'http://localhost:${TOKEN_URL_URL}' || true"
|
||||||
rm -f cookie.txt
|
rm -f cookie.txt
|
||||||
exit 1
|
exit 1
|
||||||
else
|
else
|
||||||
TOKEN="$( echo "${TOKEN}" | head -1 )"
|
TOKEN="$( echo "${TOKEN}" | head -1 )"
|
||||||
print_succ "1" "1" "Retrieve phpPgAdmin login token: ${TOKEN}"
|
printf "\\r[OK] Retrieve phpPgAdmin login token: %s\\n" "${TOKEN}"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
###
|
###
|
||||||
@ -204,7 +204,7 @@ if [ "${DEVILBOX_VENDOR_PHPPGADMIN_AUTOLOGIN}" != "1" ]; then
|
|||||||
--data 'loginSubmit=Login' \
|
--data 'loginSubmit=Login' \
|
||||||
'http://localhost:${HOST_PORT_HTTPD}${URL}redirect.php' 2>/dev/null \
|
'http://localhost:${HOST_PORT_HTTPD}${URL}redirect.php' 2>/dev/null \
|
||||||
| grep -q 'Create database'" "${RETRIES}" "" "0"; then
|
| grep -q 'Create database'" "${RETRIES}" "" "0"; then
|
||||||
print_fail "1" "1" "Submit phpPgAdmin POST login"
|
printf "\\r[FAIL] Submit phpPgAdmin POST login\\n"
|
||||||
run "curl -sS -c cookie.txt -b cookie.txt \
|
run "curl -sS -c cookie.txt -b cookie.txt \
|
||||||
--data 'subject=server' \
|
--data 'subject=server' \
|
||||||
--data 'server=pgsql%3A5432%3Aallow' \
|
--data 'server=pgsql%3A5432%3Aallow' \
|
||||||
@ -224,7 +224,7 @@ if [ "${DEVILBOX_VENDOR_PHPPGADMIN_AUTOLOGIN}" != "1" ]; then
|
|||||||
rm -f cookie.txt || true
|
rm -f cookie.txt || true
|
||||||
exit 1
|
exit 1
|
||||||
else
|
else
|
||||||
print_succ "1" "1" "Submit phpPgAdmin POST login"
|
printf "\\r[OK] Submit phpPgAdmin POST login\\n"
|
||||||
fi
|
fi
|
||||||
fi
|
fi
|
||||||
|
|
||||||
@ -240,12 +240,12 @@ if [ "$( run "curl -sS --fail \
|
|||||||
| tac \
|
| tac \
|
||||||
| tac \
|
| tac \
|
||||||
| grep -Ec 'data\">(Database|Owner|Collation|Tablespace)'" "${RETRIES}" "" "0" )" != "4" ]; then
|
| grep -Ec 'data\">(Database|Owner|Collation|Tablespace)'" "${RETRIES}" "" "0" )" != "4" ]; then
|
||||||
print_fail "1" "1" "Evaluate successful phpPgAdmin login"
|
printf "\\r[FAIL] Evaluate successful phpPgAdmin login\\n"
|
||||||
run "curl -sS 'http://localhost:${HOST_PORT_HTTPD}${URL}redirect.php?subject=server&server=pgsql%3A5432%3Aallow&' || true"
|
run "curl -sS 'http://localhost:${HOST_PORT_HTTPD}${URL}redirect.php?subject=server&server=pgsql%3A5432%3Aallow&' || true"
|
||||||
run "curl -sS -I 'http://localhost:${HOST_PORT_HTTPD}${URL}redirect.php?subject=server&server=pgsql%3A5432%3Aallow&' || true"
|
run "curl -sS -I 'http://localhost:${HOST_PORT_HTTPD}${URL}redirect.php?subject=server&server=pgsql%3A5432%3Aallow&' || true"
|
||||||
rm -f cookie.txt || true
|
rm -f cookie.txt || true
|
||||||
exit 1
|
exit 1
|
||||||
else
|
else
|
||||||
print_succ "1" "1" "Evaluate successful phpPgAdmin login"
|
printf "\\r[OK] Evaluate successful phpPgAdmin login\\n"
|
||||||
fi
|
fi
|
||||||
rm -f cookie.txt || true
|
rm -f cookie.txt || true
|
||||||
|
261
CHANGELOG.md
261
CHANGELOG.md
@ -6,267 +6,6 @@ Make sure to have a look at [UPDATING.md](https://github.com/cytopia/devilbox/bl
|
|||||||
## Unreleased
|
## Unreleased
|
||||||
|
|
||||||
|
|
||||||
## Release v3.0.0-beta-0.3 (2022-01-02)
|
|
||||||
|
|
||||||
This release provides the `dvl.to` domain to be used with `TLD_SUFFIX` (set to default), which eliminates the need to set any entries in `/etc/hosts`, as all of its subdomain will point to `127.0.0.1` via official DNS. Domain has been acquired thanks to awesome sponsors!
|
|
||||||
|
|
||||||
### Fixed
|
|
||||||
- Intranet: mail.php fixed deprecation warnings [#798](https://github.com/cytopia/devilbox/issues/798)
|
|
||||||
- Added `host.docker.internal` to extra_hosts to be able to connect to the host system [#919](https://github.com/cytopia/devilbox/issues/919)
|
|
||||||
|
|
||||||
### Changed
|
|
||||||
- Use `dvl.to` as default `TLD_SUFFIX` (it always poits to `127.0.0.1` removing the need to create `/etc/hosts` entries)
|
|
||||||
|
|
||||||
### Added
|
|
||||||
- Intranet: vhost overview shows listening ports
|
|
||||||
- Intranet: vhost overview now has modals to show httpd and vhost-gen configs
|
|
||||||
- Docs: Show available tools per version in README.md
|
|
||||||
- Added `xhprof` PHP extension
|
|
||||||
|
|
||||||
|
|
||||||
## Release v3.0.0-beta-0.2 (2022-12-27)
|
|
||||||
|
|
||||||
The Backend configuration now supports websockets as well:
|
|
||||||
|
|
||||||
file: `/shared/httpd/<project>/.devilbox/backend.cfg`
|
|
||||||
```bash
|
|
||||||
# PHP-FPM backend
|
|
||||||
conf:phpfpm:tcp:php80:9000
|
|
||||||
|
|
||||||
# HTTP Reverse Proxy backend
|
|
||||||
conf:rproxy:http:172.16.238.10:3000
|
|
||||||
|
|
||||||
# HTTPS Reverse Proxy backend
|
|
||||||
conf:rproxy:https:172.16.238.10:3000
|
|
||||||
|
|
||||||
# Websocket Reverse Proxy backend
|
|
||||||
conf:rproxy:ws:172.16.238.10:3000
|
|
||||||
|
|
||||||
# SSL Websocket Reverse Proxy backend
|
|
||||||
conf:rproxy:wss:172.16.238.10:3000
|
|
||||||
```
|
|
||||||
|
|
||||||
Once you're done with `backend.cfg` changes, head over to the Intranet C&C page (http://localhost/cnc.php) and Reload `watcherd`.
|
|
||||||
|
|
||||||
|
|
||||||
### Fixed
|
|
||||||
- Intranet: vhost overview: allow HTTP 426 to succeed in vhost page (websocket projects)
|
|
||||||
- Intranet: vhost overview: Reverse Proxy or Websocket backends do not require a `htdocs/` dir for healthcheck
|
|
||||||
- Fixed reverse proxy template generation for Apache 2.2 and Apache 2.4 [vhost-gen #51](https://github.com/devilbox/vhost-gen/pull/51)
|
|
||||||
- Fixed Nginx hash bucket size length to allow long hostnames
|
|
||||||
|
|
||||||
### Added
|
|
||||||
- Reverse Proxy automation for websocket projects (`ws://<host>:<port>` or `wss:<host>:<port>`) (Does not work with Apache 2.2)
|
|
||||||
- Added tool `wscat` to be able to test websocket connections
|
|
||||||
- Intranet: show `wscat` version
|
|
||||||
- Intranet: vhost overview now also shows websocket projects
|
|
||||||
|
|
||||||
### Changed
|
|
||||||
- Do not mount any startup/autostart script directories for multi-php compose as they do not contain tools
|
|
||||||
- Updated vhost-gen templates in `cfg/vhost-gen` (replace your project templates with new ones)
|
|
||||||
|
|
||||||
|
|
||||||
## Release v3.0.0-beta-0.1 (2022-12-24) 🎅🎄🎁
|
|
||||||
|
|
||||||
This is a beta release, using a completely rewritten set of HTTPD server, which allow easy reverse Proxy integration and different PHP versions per project:
|
|
||||||
|
|
||||||
* https://github.com/devilbox/docker-nginx-stable/pull/55
|
|
||||||
* https://github.com/devilbox/docker-nginx-mainline/pull/57
|
|
||||||
* https://github.com/devilbox/docker-apache-2.2/pull/53
|
|
||||||
* https://github.com/devilbox/docker-apache-2.4/pull/54
|
|
||||||
|
|
||||||
Once it has been tested by the community, and potential errors have been addressed, a new major version will be released.
|
|
||||||
|
|
||||||
**IMPORTANT:** This release required you to copy `env-example` over onto `.env` due to some changes in variables.
|
|
||||||
|
|
||||||
### TL;DR
|
|
||||||
|
|
||||||
1. **Multiple PHP Versions**<br/>
|
|
||||||
Here is an example to run one project with a specific PHP version<br/>
|
|
||||||
```bash
|
|
||||||
# Enable all PHP versions
|
|
||||||
cp compose/docker-compose.override.yml-php-multi.yml docker-compose.override.yml
|
|
||||||
# Start default set and php80
|
|
||||||
docker-compose up php httpd bind php80
|
|
||||||
```
|
|
||||||
file: `/shared/httpd/<project>/.devilbox/backend.cfg`
|
|
||||||
```
|
|
||||||
conf:phpfpm:tcp:php80:9000
|
|
||||||
```
|
|
||||||
2. **Automated Reverse Proxy setup**<br/>
|
|
||||||
Here is an example to proxy one project to a backend service (e.g. NodeJS or Python application, which runs in the PHP container on port 3000)<br/>
|
|
||||||
file: `/shared/httpd/<project>/.devilbox/backend.cfg`
|
|
||||||
```
|
|
||||||
conf:rproxy:http:127.0.0.1:3000
|
|
||||||
```
|
|
||||||
#### PHP hostnames and IP addresses
|
|
||||||
|
|
||||||
| PHP Version | Hostname | IP address |
|
|
||||||
|-------------|----------|----------------|
|
|
||||||
| 5.4 | php54 | 172.16.238.201 |
|
|
||||||
| 5.5 | php55 | 172.16.238.202 |
|
|
||||||
| 5.6 | php56 | 172.16.238.203 |
|
|
||||||
| 7.0 | php70 | 172.16.238.204 |
|
|
||||||
| 7.1 | php71 | 172.16.238.205 |
|
|
||||||
| 7.2 | php72 | 172.16.238.206 |
|
|
||||||
| 7.3 | php73 | 172.16.238.207 |
|
|
||||||
| 7.4 | php74 | 172.16.238.208 |
|
|
||||||
| 8.0 | php80 | 172.16.238.209 |
|
|
||||||
| 8.1 | php81 | 172.16.238.210 |
|
|
||||||
| 8.2 | php82 | 172.16.238.211 |
|
|
||||||
|
|
||||||
### Fixed
|
|
||||||
- Fixed Protocol substitution bug in Reverse Proxy generation for Apache 2.2 and Apache 2.4 [vhost-gen #49](https://github.com/devilbox/vhost-gen/pull/49) [vhost-gen #50](https://github.com/devilbox/vhost-gen/pull/50)
|
|
||||||
- Fixed missing module `mod_proxy_html` in Apache 2.4 as per requirement from `vhost-gen` for Reverse Proxy setup
|
|
||||||
- Fixed encoding issue with Apache 2.4 Reverse Proxy by enabling `mod_xml2enc` module (Required by `mod_proxy_html`)
|
|
||||||
- Allow to run different PHP versions per project. fixes [#146](https://github.com/cytopia/devilbox/issues/146)
|
|
||||||
|
|
||||||
### Added
|
|
||||||
- New HTTPD server capable of auto reverse proxy creation (and different PHP versions per project)
|
|
||||||
- Intranet: Added Command & Control center to view watcherd logs and retrigger config in case of vhost changes
|
|
||||||
- Intranet: vhost page now also shows the configured Backend
|
|
||||||
- Environment variable `DEVILBOX_HTTPD_MGMT_PASS`
|
|
||||||
- Environment variable `DEVILBOX_HTTPD_MGMT_USER`
|
|
||||||
- New Docker Compose Override file `docker-compose.override.yml-php-multi.yml` (allows to run multiple PHP versions).
|
|
||||||
- Update Bind to latest version
|
|
||||||
|
|
||||||
### Changed
|
|
||||||
- Disabled `psr` extension by default [php-psr #78](https://github.com/jbboehr/php-psr/issues/78#issuecomment-722290110)
|
|
||||||
- Disabled `phalcon` extension by default
|
|
||||||
- Environment variable `DEBUG_COMPOSE_ENTRYPOINT` renamed to `DEBUG_ENTRYPOINT`
|
|
||||||
- Environment variable `HTTPD_TIMEOUT_TO_PHP_FPM` renamed to `HTTPD_BACKEND_TIMEOUT`
|
|
||||||
|
|
||||||
|
|
||||||
## Release v2.4.0 (2022-12-18)
|
|
||||||
|
|
||||||
This release might be a bit bumpy due to a massive amount of changes in upstream projects. If you encounter issues, please do raise tickets.
|
|
||||||
|
|
||||||
### General
|
|
||||||
|
|
||||||
#### New PHP-FPM images
|
|
||||||
This release uses a new set of PHP-FPM images. They have been heavily rewritten and modularized in order to make PHP extension and PHP tool generation more easy. See the following release notes for details:
|
|
||||||
|
|
||||||
> 499 changed files with 29,281 additions and 13,977 deletions.
|
|
||||||
|
|
||||||
* https://github.com/devilbox/docker-php-fpm/releases/tag/0.145
|
|
||||||
* https://github.com/devilbox/docker-php-fpm/releases/tag/0.146
|
|
||||||
* https://github.com/devilbox/docker-php-fpm/releases/tag/0.147
|
|
||||||
|
|
||||||
#### How to add modules/tools?
|
|
||||||
* **[How to build PHP modules](https://github.com/devilbox/docker-php-fpm/blob/master/php_modules/README.md)**
|
|
||||||
* **[How to install tools in PHP images](https://github.com/devilbox/docker-php-fpm/blob/master/php_tools/README.md)**
|
|
||||||
|
|
||||||
#### Available Tools
|
|
||||||
You can now also find a detailed overview about what tools are installed in what PHP version image. See here: https://github.com/devilbox/docker-php-fpm/blob/master/doc/available-tools.md
|
|
||||||
|
|
||||||
#### Gitter -> Discord
|
|
||||||
Additionally I am moving away from Gitter to **Discord**. See reason and announcement here: https://devilbox.discourse.group/t/migrating-from-gitter-to-discord/716/2
|
|
||||||
|
|
||||||
**🎮 Discord:** https://discord.gg/2wP3V6kBj4
|
|
||||||
|
|
||||||
### Fixed
|
|
||||||
- Intranet: Fixed PostgreSQL database overview
|
|
||||||
- Fixed PATH for all pre-installed composer and node tools
|
|
||||||
|
|
||||||
### Changed
|
|
||||||
- Updated PHP versions (https://github.com/cytopia/devilbox/issues/940)
|
|
||||||
- Updated MySQL versions
|
|
||||||
- Intranet: Improved installed tools overview (index.php)
|
|
||||||
- Intranet: Delayed message loading (https://github.com/cytopia/devilbox/pull/904)
|
|
||||||
|
|
||||||
### Added
|
|
||||||
- Added tool `mhsendmail` for arm64 images
|
|
||||||
- Added tool `wkhtmltopdf` for arm64 images (https://github.com/cytopia/devilbox/issues/936)
|
|
||||||
- Added tool `taskfile` (https://github.com/cytopia/devilbox/issues/934)
|
|
||||||
|
|
||||||
### Removed
|
|
||||||
- Removed tool `drush` (detail: https://github.com/cytopia/devilbox/issues/930#issuecomment-1344764908)
|
|
||||||
|
|
||||||
|
|
||||||
## Release v2.3.0 (2022-12-04)
|
|
||||||
|
|
||||||
### Fixed
|
|
||||||
- Fixed correct permission for `/opt/nvm` in PHP container [#499](https://github.com/cytopia/devilbox/issues/499), [#PHP-FPM 0.141](https://github.com/devilbox/docker-php-fpm/releases/tag/0.141)
|
|
||||||
- Fixed Debian Jessie repository trust beyond EOL [#PHP-FPM 0.140](https://github.com/devilbox/docker-php-fpm/releases/tag/0.140)
|
|
||||||
- Fixed phpPgAdmin to work with PostgreSQL 15
|
|
||||||
|
|
||||||
### Added
|
|
||||||
- Added env var to Bind to specify overall memory consumption via `MAX_CACHE_SIZE` [#BIND 0.30](https://github.com/cytopia/docker-bind/releases/tag/0.30)
|
|
||||||
- Added PHP extension: `lz4` [#PHP-FPM 0.144](https://github.com/devilbox/docker-php-fpm/releases/tag/0.144)
|
|
||||||
- Added PHP extension: `lzf` [#PHP-FPM 0.144](https://github.com/devilbox/docker-php-fpm/releases/tag/0.144)
|
|
||||||
- Added PHP extension: `zstd` [#PHP-FPM 0.144](https://github.com/devilbox/docker-php-fpm/releases/tag/0.144)
|
|
||||||
- Added serializer to Redis extension: `lz4`, `lzf` and` zstd` [#PHP-FPM 0.144](https://github.com/devilbox/docker-php-fpm/releases/tag/0.144)
|
|
||||||
- Added MariaDB 10.9 and 10.11 [#MYSQL 0.19](https://github.com/devilbox/docker-mysql/pull/24)
|
|
||||||
- Added PGSQL 15
|
|
||||||
- Added Redis 7.0
|
|
||||||
|
|
||||||
### Changed
|
|
||||||
- Switched to `phalcon` 5.x extension for PHP 8.0 and PHP 8.1 [#913](https://github.com/cytopia/devilbox/issues/913), [#PHP-FPM 0.143](https://github.com/devilbox/docker-php-fpm/releases/tag/0.143)
|
|
||||||
- Updated to latest minor versions of Apache 2.2, Apache 2.4, Nginx stable and Nginx mainline
|
|
||||||
- Updated to latest minor versions of PHP [#917](https://github.com/cytopia/devilbox/issues/917)
|
|
||||||
- Updated to latest minor versions of MySQL, MariaDB and Percona DB
|
|
||||||
- Updated PHP extensions to lastest versions [#899](https://github.com/cytopia/devilbox/issues/899)
|
|
||||||
|
|
||||||
### Removed
|
|
||||||
- Removed Phalcon DevTools for PHP 7.4 due to build error [#PHP-FPM 0.142](https://github.com/devilbox/docker-php-fpm/releases/tag/0.142)
|
|
||||||
|
|
||||||
|
|
||||||
## Release v2.2.0 (2022-04-14)
|
|
||||||
|
|
||||||
This release adds PHP-FPM community images via `docker-compose.override.yml`, which easily allows you
|
|
||||||
to build upon existing PHP images and customize them for your usecase/workflow.
|
|
||||||
|
|
||||||
#### Added
|
|
||||||
- Added PHP-FPM Community images: https://github.com/devilbox/docker-php-fpm-community/
|
|
||||||
|
|
||||||
|
|
||||||
## Release v2.1.1 (2022-04-07)
|
|
||||||
|
|
||||||
#### Changed
|
|
||||||
- Used tagged PHP images (auto-updating)instead early release branch one.
|
|
||||||
|
|
||||||
|
|
||||||
## Release v2.1.0 (2022-04-05)
|
|
||||||
|
|
||||||
This is now a 100% `arm64` compatible release.
|
|
||||||
|
|
||||||
#### Fixed
|
|
||||||
- Fixed imklog: cannot open kernel log (/proc/kmsg): Operation not permitted.
|
|
||||||
- Fixed missing `arm64` support: [#855](https://github.com/cytopia/devilbox/issues/855)
|
|
||||||
|
|
||||||
#### Added
|
|
||||||
- Added PHP images with `arm64` support for PHP: https://github.com/devilbox/docker-php-fpm/releases/tag/0.138
|
|
||||||
- Added `vips` to PHP 8.0
|
|
||||||
- Added `vips` to PHP 8.1
|
|
||||||
- Added `swoole` to PHP 8.1
|
|
||||||
|
|
||||||
#### Removed
|
|
||||||
- Removed homebrew due to arm64 issues
|
|
||||||
- Removed Ansible due to arm64 issues
|
|
||||||
|
|
||||||
|
|
||||||
## Release v2.0.0 (2022-03-28)
|
|
||||||
|
|
||||||
The goal of this release is to reduce the overall size of Docker images and bring in latest versions.
|
|
||||||
|
|
||||||
**Important:** This release introduces backwards incompatible changes due to only keeping major versions of PostreSQL and therefore removing old volumes. Additionally the PostgreSQL volume names have changed. In order to guarantee a smooth transition, backup your PostgreSQL databases in the previous version before switching and then re-importing them in this version.
|
|
||||||
|
|
||||||
#### Added
|
|
||||||
- Added CakePHP integration tests for PHP 8+
|
|
||||||
- Added `.env` variable `HTTPD_FLAVOUR` to decide between `Debian` or `Alpine` for HTTP server
|
|
||||||
|
|
||||||
#### Changed
|
|
||||||
- Changed default PostgreSQL server from `12.4` to `14-alpine` (breaking change)
|
|
||||||
- Changed default Redis server from `6.0` to `6.2-alpine`
|
|
||||||
- Changed default Memcached server from `1.6` to `1.6-alpine`
|
|
||||||
- Changed default MongoDB server from `4.4` to `5.0`
|
|
||||||
- Changed default HTTPD server flavour from `Debian` to `Alpine`
|
|
||||||
- Use tiny Alpine version of Bind container
|
|
||||||
|
|
||||||
#### Removed
|
|
||||||
- Removed CI for MongoDB `2.8` and MongoDB `3.0` due to segfault: https://github.com/docker-library/mongo/issues/251
|
|
||||||
|
|
||||||
|
|
||||||
## Release v1.11.0 (2022-03-22)
|
## Release v1.11.0 (2022-03-22)
|
||||||
|
|
||||||
#### Fixed
|
#### Fixed
|
||||||
|
11
UPDATING.md
11
UPDATING.md
@ -3,17 +3,6 @@
|
|||||||
This document will hold all information on how to update between major versions.
|
This document will hold all information on how to update between major versions.
|
||||||
|
|
||||||
|
|
||||||
## Update from `v2.4.0` to `v3.0.0` (`v3.0.0-beta-1`)
|
|
||||||
|
|
||||||
**PR:** https://github.com/cytopia/devilbox/pull/942
|
|
||||||
|
|
||||||
This PR introduces new `.env` variables, so you are required to copy `env-example` over to `.env`.
|
|
||||||
Also ensure to stop and remove containers.
|
|
||||||
```bash
|
|
||||||
docker-compose stop
|
|
||||||
docker-compose rm -f
|
|
||||||
```
|
|
||||||
|
|
||||||
## Update from `v1.8.1` to `v1.8.2`
|
## Update from `v1.8.1` to `v1.8.2`
|
||||||
|
|
||||||
**PR:** https://github.com/cytopia/devilbox/pull/750
|
**PR:** https://github.com/cytopia/devilbox/pull/750
|
||||||
|
@ -1,5 +0,0 @@
|
|||||||
[mysqld]
|
|
||||||
;key_buffer_size=16M
|
|
||||||
|
|
||||||
[mysqldump]
|
|
||||||
;quick
|
|
@ -1,5 +0,0 @@
|
|||||||
[mysqld]
|
|
||||||
;key_buffer_size=16M
|
|
||||||
|
|
||||||
[mysqldump]
|
|
||||||
;quick
|
|
@ -1,5 +0,0 @@
|
|||||||
[mysqld]
|
|
||||||
;key_buffer_size=16M
|
|
||||||
|
|
||||||
[mysqldump]
|
|
||||||
;quick
|
|
@ -1,4 +1,4 @@
|
|||||||
# PHP-FPM 5.3 config directory
|
# PHP-FPM config directory
|
||||||
|
|
||||||
## General
|
## General
|
||||||
|
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
# PHP-FPM 5.4 config directory
|
# PHP-FPM config directory
|
||||||
|
|
||||||
## General
|
## General
|
||||||
|
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
# PHP-FPM 5.5 config directory
|
# PHP-FPM config directory
|
||||||
|
|
||||||
## General
|
## General
|
||||||
|
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
# PHP-FPM 5.6 config directory
|
# PHP-FPM config directory
|
||||||
|
|
||||||
## General
|
## General
|
||||||
|
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
# PHP-FPM 7.0 config directory
|
# PHP-FPM config directory
|
||||||
|
|
||||||
## General
|
## General
|
||||||
|
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
# PHP-FPM 7.1 config directory
|
# PHP-FPM config directory
|
||||||
|
|
||||||
## General
|
## General
|
||||||
|
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
# PHP-FPM 7.2 config directory
|
# PHP-FPM config directory
|
||||||
|
|
||||||
## General
|
## General
|
||||||
|
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
# PHP-FPM 7.3 config directory
|
# PHP-FPM config directory
|
||||||
|
|
||||||
## General
|
## General
|
||||||
|
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
# PHP-FPM 7.4 config directory
|
# PHP-FPM config directory
|
||||||
|
|
||||||
## General
|
## General
|
||||||
|
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
# PHP-FPM 8.0 config directory
|
# PHP-FPM config directory
|
||||||
|
|
||||||
## General
|
## General
|
||||||
|
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
# PHP-FPM 8.1 config directory
|
# PHP-FPM config directory
|
||||||
|
|
||||||
## General
|
## General
|
||||||
|
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
# PHP-FPM 8.2 config directory
|
# PHP-FPM config directory
|
||||||
|
|
||||||
## General
|
## General
|
||||||
|
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
# PHP 5.2 ini directory
|
# PHP ini directory
|
||||||
|
|
||||||
## General
|
## General
|
||||||
|
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
# PHP 5.3 ini directory
|
# PHP ini directory
|
||||||
|
|
||||||
## General
|
## General
|
||||||
|
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
# PHP 5.4 ini directory
|
# PHP ini directory
|
||||||
|
|
||||||
## General
|
## General
|
||||||
|
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
# PHP 5.5 ini directory
|
# PHP ini directory
|
||||||
|
|
||||||
## General
|
## General
|
||||||
|
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
# PHP 5.6 ini directory
|
# PHP ini directory
|
||||||
|
|
||||||
## General
|
## General
|
||||||
|
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
# PHP 7.0 ini directory
|
# PHP ini directory
|
||||||
|
|
||||||
## General
|
## General
|
||||||
|
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
# PHP 7.1 ini directory
|
# PHP ini directory
|
||||||
|
|
||||||
## General
|
## General
|
||||||
|
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
# PHP 7.2 ini directory
|
# PHP ini directory
|
||||||
|
|
||||||
## General
|
## General
|
||||||
|
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
# PHP 7.3 ini directory
|
# PHP ini directory
|
||||||
|
|
||||||
## General
|
## General
|
||||||
|
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
# PHP 7.4 ini directory
|
# PHP ini directory
|
||||||
|
|
||||||
## General
|
## General
|
||||||
|
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
# PHP 8.0 ini directory
|
# PHP ini directory
|
||||||
|
|
||||||
## General
|
## General
|
||||||
|
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
# PHP 8.1 ini directory
|
# PHP ini directory
|
||||||
|
|
||||||
## General
|
## General
|
||||||
|
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
# PHP 8.2 ini directory
|
# PHP ini directory
|
||||||
|
|
||||||
## General
|
## General
|
||||||
|
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
# Custom startup scripts (for PHP 5.2 only)
|
# Custom startup scripts (per PHP version)
|
||||||
|
|
||||||
Any script inside this directory ending by `.sh` will be executed during the PHP container startup.
|
Any script inside this directory ending by `.sh` will be executed during the PHP container startup.
|
||||||
This is useful to apply your custom settings such as installing software that usually requires
|
This is useful to apply your custom settings such as installing software that usually requires
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
# Custom startup scripts (for PHP 5.3 only)
|
# Custom startup scripts (per PHP version)
|
||||||
|
|
||||||
Any script inside this directory ending by `.sh` will be executed during the PHP container startup.
|
Any script inside this directory ending by `.sh` will be executed during the PHP container startup.
|
||||||
This is useful to apply your custom settings such as installing software that usually requires
|
This is useful to apply your custom settings such as installing software that usually requires
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
# Custom startup scripts (for PHP 5.4 only)
|
# Custom startup scripts (per PHP version)
|
||||||
|
|
||||||
Any script inside this directory ending by `.sh` will be executed during the PHP container startup.
|
Any script inside this directory ending by `.sh` will be executed during the PHP container startup.
|
||||||
This is useful to apply your custom settings such as installing software that usually requires
|
This is useful to apply your custom settings such as installing software that usually requires
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
# Custom startup scripts (for PHP 5.5 only)
|
# Custom startup scripts (per PHP version)
|
||||||
|
|
||||||
Any script inside this directory ending by `.sh` will be executed during the PHP container startup.
|
Any script inside this directory ending by `.sh` will be executed during the PHP container startup.
|
||||||
This is useful to apply your custom settings such as installing software that usually requires
|
This is useful to apply your custom settings such as installing software that usually requires
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
# Custom startup scripts (for PHP 5.6 only)
|
# Custom startup scripts (per PHP version)
|
||||||
|
|
||||||
Any script inside this directory ending by `.sh` will be executed during the PHP container startup.
|
Any script inside this directory ending by `.sh` will be executed during the PHP container startup.
|
||||||
This is useful to apply your custom settings such as installing software that usually requires
|
This is useful to apply your custom settings such as installing software that usually requires
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
# Custom startup scripts (for PHP 7.0 only)
|
# Custom startup scripts (per PHP version)
|
||||||
|
|
||||||
Any script inside this directory ending by `.sh` will be executed during the PHP container startup.
|
Any script inside this directory ending by `.sh` will be executed during the PHP container startup.
|
||||||
This is useful to apply your custom settings such as installing software that usually requires
|
This is useful to apply your custom settings such as installing software that usually requires
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
# Custom startup scripts (for PHP 7.1 only)
|
# Custom startup scripts (per PHP version)
|
||||||
|
|
||||||
Any script inside this directory ending by `.sh` will be executed during the PHP container startup.
|
Any script inside this directory ending by `.sh` will be executed during the PHP container startup.
|
||||||
This is useful to apply your custom settings such as installing software that usually requires
|
This is useful to apply your custom settings such as installing software that usually requires
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
# Custom startup scripts (for PHP 7.2 only)
|
# Custom startup scripts (per PHP version)
|
||||||
|
|
||||||
Any script inside this directory ending by `.sh` will be executed during the PHP container startup.
|
Any script inside this directory ending by `.sh` will be executed during the PHP container startup.
|
||||||
This is useful to apply your custom settings such as installing software that usually requires
|
This is useful to apply your custom settings such as installing software that usually requires
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
# Custom startup scripts (for PHP 7.3 only)
|
# Custom startup scripts (per PHP version)
|
||||||
|
|
||||||
Any script inside this directory ending by `.sh` will be executed during the PHP container startup.
|
Any script inside this directory ending by `.sh` will be executed during the PHP container startup.
|
||||||
This is useful to apply your custom settings such as installing software that usually requires
|
This is useful to apply your custom settings such as installing software that usually requires
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
# Custom startup scripts (for PHP 7.4 only)
|
# Custom startup scripts (per PHP version)
|
||||||
|
|
||||||
Any script inside this directory ending by `.sh` will be executed during the PHP container startup.
|
Any script inside this directory ending by `.sh` will be executed during the PHP container startup.
|
||||||
This is useful to apply your custom settings such as installing software that usually requires
|
This is useful to apply your custom settings such as installing software that usually requires
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
# Custom startup scripts (for PHP 8.0 only)
|
# Custom startup scripts (per PHP version)
|
||||||
|
|
||||||
Any script inside this directory ending by `.sh` will be executed during the PHP container startup.
|
Any script inside this directory ending by `.sh` will be executed during the PHP container startup.
|
||||||
This is useful to apply your custom settings such as installing software that usually requires
|
This is useful to apply your custom settings such as installing software that usually requires
|
||||||
|
Some files were not shown because too many files have changed in this diff Show More
Loading…
x
Reference in New Issue
Block a user