feat(update): 支持更新到 ulthon_admin 的 master 分支

新增 `--update-master` 选项,允许用户选择更新到远程仓库的 master 分支,而非默认的最新标签版本。这为需要最新开发版代码的场景提供了灵活性。
This commit is contained in:
augushong
2026-05-07 22:59:19 +08:00
parent 2663bf4a5a
commit 37c8142721
2 changed files with 49 additions and 30 deletions

View File

@@ -64,41 +64,59 @@ class AdminUpdateServiceBase
$last_version_repo = $last_version_git->cloneRepository($this->useRepo, $last_version_dir);
$tags = $last_version_repo->getTags();
$is_update_master = (bool)$input->getOption('update-master');
$last_version = null;
$update_level = Env::get('adminsystem.update_level', 'production');
if ($update_level == 'production') {
$tags = array_filter($tags, function ($value) {
if (strpos($value, '-')) {
return false;
}
return true;
});
}
usort($tags, function ($a, $b) {
return version_compare($a, $b);
});
$last_version = $tags[count($tags) - 1];
if ($last_version == $current_version) {
$output->writeln('当前版本为最新版本');
if ($input->hasOption('reinstall')) {
$output->writeln('重装代码');
} else {
if ($is_update_master) {
$output->writeln('当前更新源master');
$output->writeln('切换最新代码到 master 分支');
try {
$last_version_repo->checkout('master');
} catch (\Throwable $e) {
$output->error('切换 master 分支失败,请检查远程分支名是否为 master');
$this->cleanWorkpaceDir();
return;
}
}
$last_version = 'master';
} else {
$output->writeln('当前更新源latest tag');
$tags = $last_version_repo->getTags();
// 将最新代码切换到最新版本,因为最新的提交可能没有发布版本
$output->writeln('切换最新代码的最新版本');
$last_version_repo->checkout($last_version);
$update_level = Env::get('adminsystem.update_level', 'production');
if ($update_level == 'production') {
$tags = array_filter($tags, function ($value) {
if (strpos($value, '-')) {
return false;
}
return true;
});
}
usort($tags, function ($a, $b) {
return version_compare($a, $b);
});
$last_version = $tags[count($tags) - 1];
if ($last_version == $current_version) {
$output->writeln('当前版本为最新版本');
if ((bool)$input->getOption('reinstall')) {
$output->writeln('重装代码');
} else {
$this->cleanWorkpaceDir();
return;
}
}
// 将最新代码切换到最新版本,因为最新的提交可能没有发布版本
$output->writeln('切换最新代码的最新版本');
$last_version_repo->checkout($last_version);
}
$current_version_git = new Git();
$output->writeln('获取当前版本代码');

View File

@@ -23,6 +23,7 @@ class UpdateBase extends Command
$this->setName('admin:update')
->addOption('reinstall', null, Option::VALUE_NONE, '重装版本')
->addOption('update-ulthon', null, Option::VALUE_NONE, '更新 ulthon_admin')
->addOption('update-master', null, Option::VALUE_NONE, '更新 ulthon_admin 的 master 分支')
->setDescription('更新系统代码');
}
@@ -33,7 +34,7 @@ class UpdateBase extends Command
$repo = static::REPO;
if($input->hasOption('update-ulthon')){
if ((bool)$input->getOption('update-ulthon')) {
$repo = 'ulthon_admin';
}