Documentation
¶
Index ¶
- Constants
- func CompareVersions(cur, latest string) int
- type Asset
- type Checker
- type LocalPackage
- type Manager
- func (m *Manager) Checker() *Checker
- func (m *Manager) IsRunning() bool
- func (m *Manager) Start(ctx context.Context, targetVersion string) error
- func (m *Manager) StartLocal(ctx context.Context, localPath string) error
- func (m *Manager) Status() State
- func (m *Manager) ValidateLocal(localPath string) (LocalPackage, error)
- type Release
- type State
Constants ¶
const ( // 升级阶段 StageIdle = "idle" StageDownloading = "downloading" StageVerifying = "verifying" StageInstalling = "installing" StageRestarting = "restarting" StageUpstaging = "upstaging" StageFailed = "failed" )
const ( CmpLT = -1 // cur < latest(存在新版本) CmpEQ = 0 // 相等 CmpGT = 1 // cur > latest )
语义化版本比较结果
Variables ¶
This section is empty.
Functions ¶
func CompareVersions ¶
CompareVersions 比较当前运行版本与目标(latest)版本。 规则:主版本号逐段比较;主版本相同时,稳定版(无预发布后缀)高于预发布版(SNAPSHOT/beta 等)。 返回 CmpLT 表示 latest 比 cur 新(存在更新)。
Types ¶
type Asset ¶
type Asset struct {
Name string `json:"name"`
Size int64 `json:"size"`
BrowserDownloadURL string `json:"browser_download_url"`
}
Asset 描述一个 Release 附件。
type Checker ¶
type Checker struct {
// contains filtered or unexported fields
}
Checker 负责查询 GitHub Releases 并挑选当前平台可用的升级归档。
func NewChecker ¶
NewChecker 构造 GitHub 更新检查器。apiBase 为空时使用官方 API。
func (*Checker) ArchiveAsset ¶
ArchiveAsset 依据当前平台挑选可升级的 tar.gz 归档。 归档命名见 .goreleaser.yml archives.name_template:
edgeCore-{{.RawVersion}}-{{.Os}}-{{.Arch}}[{{.Arm}}].tar.gz
func (*Checker) FetchLatest ¶
FetchLatest 获取仓库最新(非 Draft/Pre-release)Release。
type LocalPackage ¶
type LocalPackage struct {
FileName string `json:"file_name"` // 原文件名
Format string `json:"format"` // tar.gz | deb | rpm
Version string `json:"version"`
Arch string `json:"arch"` // 安装包声明的架构(amd64/arm64/arm7/arm)
Size int64 `json:"size"`
Compatible bool `json:"compatible"` // 是否与当前运行平台匹配
Reason string `json:"reason,omitempty"`
Path string `json:"path"` // 服务端暂存路径(仅校验通过时返回)
}
LocalPackage 描述一个上传的本地安装包。
type Manager ¶
type Manager struct {
// contains filtered or unexported fields
}
Manager 编排一键自动升级:下载→校验→备份→替换→重启→健康检查/失败回滚。
func NewManager ¶
NewManager 构造升级管理器。installDir 默认 /usr/local/bin/edgeCore。
func (*Manager) StartLocal ¶
StartLocal 以异步方式执行本地安装包升级/降级(指定文件,不限版本高低)。
func (*Manager) ValidateLocal ¶
func (m *Manager) ValidateLocal(localPath string) (LocalPackage, error)
ValidateLocal 校验本地安装包:解析文件名 → 架构兼容 → 深度校验内容。 校验通过且平台兼容时返回 Compatible=true,Path 为该文件的暂存路径。
type Release ¶
type Release struct {
TagName string `json:"tag_name"`
Name string `json:"name"`
Body string `json:"body"`
HTMLURL string `json:"html_url"`
PublishedAt string `json:"published_at"`
Draft bool `json:"draft"`
Prerelease bool `json:"prerelease"`
Assets []Asset `json:"assets"`
}
Release 描述一个 GitHub Release(取自 /releases/latest)。