搜索中心
搜索中心 搜索快照

系统运维 - 持续集成

使用专业的代码管理工具(gitsvn)是一个不错的选择,通过专业的代码管理工具+部署脚本,可以让系统实现持续开发集成,加速迭代。

自动部署PHP脚本参考

专业的 CI 固然好,在早期通过简单的脚本实现持续集成也是个不错的选择。

在服务端通过脚本拉取最新的仓库代码,实现持续集成功能。

&1");
    echo 'OK';
    return;
}

$ret = shell_exec("git pull origin master 2>&1");
$lines = explode("\n", $ret);
if (isset($lines[0])) {
    unset($lines[0]);
}
echo "=== Deploy Code ===\n" . join("\n", $lines) . "\n";

echo "=== Clear Bootstrap Cache ===\n" . $ret . "\n";
$ret = shell_exec("rm -rfv ../bootstrap/cache/* 2>&1");

echo "=== Clear Storage Cache ===\n" . $ret . "\n";
$ret = shell_exec("rm -rfv ../storage/framework/cache/* 2>&1");

$ret = shell_exec("php ../artisan cache:clear 2>&1");
echo "=== Clear System Cache ===\n" . $ret . "\n";

$ret = shell_exec("php ../artisan view:clear 2>&1");
echo "=== Clear View Cache ===\n" . $ret . "\n";

$ret = shell_exec("php ../artisan migrate 2>&1");
echo "=== Migrate ===\n" . $ret . "\n";

$ret = shell_exec("php ../artisan modstart:module-install-all 2>&1");
echo "=== ModStart ModuleInstallAll ===\n" . $ret . "\n";

$ret = shell_exec("php ../artisan config:cache 2>&1");
echo "=== Optimize Config Cache ===\n" . $ret . "\n";

$ret = shell_exec("php ../artisan optimize 2>&1");
echo "=== Optimize Code ===\n" . $ret . "\n";

计算自安装模块包

在老的项目中计算

";
    exit(-1);
}

$newDir = $argv[1];

$moduleConfig = require(__DIR__ . '/config/module.php');
$systemModules = array_keys($moduleConfig['system']);
$localModules = array_values(array_filter(array_map(function ($o) {
    if (preg_match('/\/module\/(.*?)\/$/', $o, $mat)) {
        if (strpos($mat[1], '_delete_.') === 0) {
            return null;
        }
        return $mat[1];
    }
    return null;
}, glob(__DIR__ . '/module/*/'))));

$userInstalledModules = array_values(array_filter(array_map(function ($m) use ($systemModules) {
    return in_array($m, $systemModules) ? null : $m;
}, $localModules)));

$commands = [];
foreach ($userInstalledModules as $m) {
    $commands[] = "cp -av module/$m ../$newDir/module/";
}

echo "# 用户自安装模块迁移命令\n";
echo join("\n", $commands) . "\n";
查看原文
QQ
微信