CI/CD в Gitea Actions и установка одной командой
CI / test (push) Successful in 56s

Workflow CI гоняет gofmt, vet, тесты и сборку на каждый push в main;
workflow Release по тегу v* собирает бинарники под linux/amd64 и arm64,
считает контрольные суммы и публикует релиз через API Gitea.

Оба workflow забирают код через git, а не actions/checkout: это
JS-действие, которому нужен Node внутри контейнера, а в образе golang его
нет. Заодно сборка перестала зависеть от доступности github.com, что для
self-hosted инстанса существенно.

Скрипт deploy/get.sh ставит последний релиз одной командой: определяет
архитектуру, забирает файлы релиза, сверяет sha256 (бинарник ставится с
правами root) и передаёт управление install.sh. Обновление — та же
команда.

Версия сборки попадает в бинарник через ldflags, доступна как
`pzmanager version` и видна в панели на вкладке «Настройки»: без неё
нельзя понять, какой релиз стоит на сервере.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
2026-09-04 19:27:30 +03:00
co-authored by Claude Opus 5
parent 29782dcce9
commit 49d549463a
9 changed files with 356 additions and 23 deletions
+2
View File
@@ -127,6 +127,7 @@ type managerConfigDTO struct {
BackupKeep int `json:"backup_keep"`
BackupStopServer bool `json:"backup_stop_server"`
ConfigPath string `json:"config_path"`
Version string `json:"version"`
}
func (s *Server) handleGetManagerConfig(w http.ResponseWriter, r *http.Request) {
@@ -145,6 +146,7 @@ func (s *Server) handleGetManagerConfig(w http.ResponseWriter, r *http.Request)
BackupKeep: c.Backup.Keep,
BackupStopServer: c.Backup.StopServer,
ConfigPath: c.Path(),
Version: s.version,
})
}
+4
View File
@@ -26,6 +26,7 @@ const csrfHeader = "X-PZM-Request"
// Server связывает HTTP-слой со всеми подсистемами менеджера.
type Server struct {
version string
cfg *config.Config
users *auth.Store
sup *pzserver.Supervisor
@@ -43,6 +44,8 @@ type Server struct {
// Options — то, что нужно собрать серверу API.
type Options struct {
// Version — версия сборки, панель показывает её в настройках.
Version string
Config *config.Config
Users *auth.Store
Supervisor *pzserver.Supervisor
@@ -57,6 +60,7 @@ type Options struct {
// New собирает HTTP-обработчик панели.
func New(o Options) *Server {
return &Server{
version: o.Version,
cfg: o.Config,
users: o.Users,
sup: o.Supervisor,