refactor: use nginx -s reload instead of systemd

- doc: add comment
This commit is contained in:
2026-08-17 10:10:14 +08:00
parent 79f18fcdea
commit f536987a7e
62 changed files with 2216 additions and 598 deletions
+21 -1
View File
@@ -1,4 +1,6 @@
// Package daemonclient submits local CLI requests to the running daemon service.
// Package daemonclient 提供了命令行客户端向正在运行的守护进程服务提交请求的能力。
// 它负责把调用方参数封装成 daemonapi.Request、通过 Unix Socket 发送请求并解析流式响应,
// 将进度事件通过回调逐条透传给调用方,最终返回携带终态的最终结果。
package daemonclient
import (
@@ -12,6 +14,11 @@ import (
"yms-daemon/internal/daemonapi"
)
// Update 向守护进程提交一次后端更新请求,输入类型由 inputType 指定。
// socketPath 守护进程 Unix Socket 的绝对路径,service 是目标服务名,
// file 本地制品文件的绝对路径,progress 在非空时会在每收到一条进度事件时被调用一次。
// 返回的 daemonapi.Response 为最终结果;当路径校验失败、连接失败或守护进程返回错误时返回 error。
// 该函数不修改传入文件,可并发调用,每次调用都会建立独立的连接。
func Update(ctx context.Context, socketPath string, service string, inputType string, file string, progress func(daemonapi.Response)) (daemonapi.Response, error) {
if !filepath.IsAbs(socketPath) || !filepath.IsAbs(file) {
return daemonapi.Response{}, errors.New("daemon socket and update file paths must be absolute")
@@ -20,6 +27,11 @@ func Update(ctx context.Context, socketPath string, service string, inputType st
return submit(ctx, socketPath, request, progress)
}
// UpdateContainerImage 向守护进程提交一次基于容器镜像的后端更新请求。
// socketPath 守护进程 Unix Socket 的绝对路径,service 是目标服务名,
// imageReference 必填的容器镜像引用,startLog 控制更新完成后是否输出容器启动日志,
// progress 在非空时会在每收到一条进度事件时被调用一次。
// 返回的 daemonapi.Response 为最终结果;当路径非法、镜像引用为空、连接失败或守护进程返回错误时返回 error。
func UpdateContainerImage(ctx context.Context, socketPath string, service string, imageReference string, startLog bool, progress func(daemonapi.Response)) (daemonapi.Response, error) {
if !filepath.IsAbs(socketPath) {
return daemonapi.Response{}, errors.New("daemon socket path must be absolute")
@@ -31,6 +43,10 @@ func UpdateContainerImage(ctx context.Context, socketPath string, service string
return submit(ctx, socketPath, request, progress)
}
// Restart 向守护进程提交一次后端重启请求,不更换任何制品。
// socketPath 守护进程 Unix Socket 的绝对路径,service 是目标服务名,
// progress 在非空时会在每收到一条进度事件时被调用一次。
// 返回的 daemonapi.Response 为最终结果;当路径非法、连接失败或守护进程返回错误时返回 error。
func Restart(ctx context.Context, socketPath string, service string, progress func(daemonapi.Response)) (daemonapi.Response, error) {
if !filepath.IsAbs(socketPath) {
return daemonapi.Response{}, errors.New("daemon socket path must be absolute")
@@ -39,6 +55,10 @@ func Restart(ctx context.Context, socketPath string, service string, progress fu
return submit(ctx, socketPath, request, progress)
}
// submit 通过 Unix Socket 把 request 发送给守护进程并读取响应流,供本包各公开函数复用。
// 它会以换行分隔的 JSON 编码请求,写完后关闭写端以向对端发送结束信号,
// 随后循环解码响应:进度事件通过 progress 回调透传,最终结果则返回给调用方。
// 当连接失败、编解码失败、对端返回未知响应类型或最终结果携带错误时返回 error。
func submit(ctx context.Context, socketPath string, request daemonapi.Request, progress func(daemonapi.Response)) (daemonapi.Response, error) {
dialer := net.Dialer{}
connection, err := dialer.DialContext(ctx, "unix", socketPath)