Проверка на чистой ВМ: служба впервые установленного модуля включается в автозапуск, даже если unit-файл уже положил образ (иначе bj-crypto после перезагрузки не стартовал); bj-crypto в готовности — предупреждение, а не блокер (пакеты для НРД подписывает шлюз), до установки модуля не проверяется; в мастере без ссылки «Открыть мастер» на самом мастере, без двойного заголовка «Наша организация», без QUIK и DEPO в текстах и маршрутах уведомлений, если их нет в лицензии; «162 участника», понятная сводка готовности; адрес SMTP через JoinHostPort
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_014FsEKyJrYF69Cj9ZXzFLRi
This commit is contained in:
@@ -40,6 +40,7 @@ type InstallResult struct {
|
||||
Release string `json:"release,omitempty"`
|
||||
Installed []map[string]string `json:"installed,omitempty"`
|
||||
Restarted []string `json:"restarted,omitempty"`
|
||||
Enabled []string `json:"enabled,omitempty"` // службы, включённые в автозапуск (впервые установленные модули)
|
||||
}
|
||||
|
||||
// InstallStaged — установить компоненты из каталога подготовки: manifest.json (подписанный),
|
||||
@@ -129,6 +130,10 @@ func InstallStaged(staging string, opt InstallOptions) (res InstallResult) {
|
||||
ts := time.Now().Format("20060102-150405")
|
||||
var units, newUnits []string
|
||||
for _, j := range jobs {
|
||||
// Модуля на сервере ещё не было — его службу включаем, даже если unit-файл уже стоит: установка
|
||||
// с образа кладёт unit-файлы всех служб сразу (выключенными), а файл модуля приезжает обновлением.
|
||||
_, statErr := os.Stat(j.c.PathAt(opt.Root))
|
||||
fresh := statErr != nil
|
||||
if err := installFile(j.file, j.c.PathAt(opt.Root), j.c.Exec, ts); err != nil {
|
||||
return fail("установка %s: %v", j.c.Name, err)
|
||||
}
|
||||
@@ -140,7 +145,7 @@ func InstallStaged(staging string, opt InstallOptions) (res InstallResult) {
|
||||
if err != nil {
|
||||
return fail("служба %s: %v", j.c.Unit, err)
|
||||
}
|
||||
if added {
|
||||
if added || fresh {
|
||||
newUnits = append(newUnits, j.c.Unit)
|
||||
}
|
||||
}
|
||||
@@ -153,6 +158,7 @@ func InstallStaged(staging string, opt InstallOptions) (res InstallResult) {
|
||||
return fail("включение служб %s: %v: %s", strings.Join(newUnits, ", "), err, strings.TrimSpace(string(out)))
|
||||
}
|
||||
}
|
||||
res.Enabled = newUnits
|
||||
for _, j := range jobs {
|
||||
if j.c.Name == "bj-installer" && opt.Root == "" {
|
||||
// новые службы и скрипты из обновлённого установщика; перезапуск служб — отдельно ниже
|
||||
|
||||
Reference in New Issue
Block a user