修改上传版本呢目录

This commit is contained in:
ayflying
2025-04-14 11:17:19 +08:00
parent 08f2b2d9bc
commit 97bf7fc390

View File

@@ -2,13 +2,14 @@ package cmd
import ( import (
"context" "context"
"github.com/ayflying/utility_go/package/s3" "github.com/ayflying/utility_go/pkg"
"github.com/gogf/gf/v2/frame/g" "github.com/gogf/gf/v2/frame/g"
"github.com/gogf/gf/v2/net/ghttp" "github.com/gogf/gf/v2/net/ghttp"
"github.com/gogf/gf/v2/os/gcfg" "github.com/gogf/gf/v2/os/gcfg"
"github.com/gogf/gf/v2/os/gcmd" "github.com/gogf/gf/v2/os/gcmd"
"github.com/gogf/gf/v2/os/gctx" "github.com/gogf/gf/v2/os/gctx"
"os" "os"
"path"
"time" "time"
) )
@@ -17,6 +18,8 @@ type serverCfg struct {
Address string `json:"address" dc:"服务地址"` Address string `json:"address" dc:"服务地址"`
Prod bool `json:"prod" dc:"是否生产环境"` Prod bool `json:"prod" dc:"是否生产环境"`
S3 string `json:"s3" dc:"使用哪个对象储存中转"` S3 string `json:"s3" dc:"使用哪个对象储存中转"`
Arch string `json:"arch" dc:"架构"`
System string `json:"system" dc:"系统"`
} }
type UpdateReq struct { type UpdateReq struct {
@@ -24,8 +27,6 @@ type UpdateReq struct {
FileUrl string `json:"file_url" dc:"文件地址"` FileUrl string `json:"file_url" dc:"文件地址"`
} }
var s3Mod *s3.Mod
var ( var (
Update = gcmd.Command{ Update = gcmd.Command{
Name: "update", Name: "update",
@@ -36,9 +37,30 @@ var (
g.Log().Info(ctx, "准备上传更新文件") g.Log().Info(ctx, "准备上传更新文件")
//加载编辑配置文件 //加载编辑配置文件
g.Cfg("hack").GetAdapter().(*gcfg.AdapterFile).SetFileName("hack/config.yaml") g.Cfg("hack").GetAdapter().(*gcfg.AdapterFile).SetFileName("hack/config.yaml")
//获取文件名
getFileName, err := g.Cfg("hack").Get(ctx, "gfcli.build.name") getFileName, err := g.Cfg("hack").Get(ctx, "gfcli.build.name")
Filename := getFileName.String() Filename := getFileName.String()
////获取架构
//getArch, err := g.Cfg("hack").Get(ctx, "gfcli.build.arch")
//Arch := getArch.String()
//if Arch == "" {
// Arch = "amd64"
//}
//
////获取操作系统
//getSystem, err := g.Cfg("hack").Get(ctx, "gfcli.build.system")
//System := getSystem.String()
//
//if System == "" {
// System = "linux"
//}
//var systemName = System + "_" + Arch
//获取版本号
getVersion, err := g.Cfg("hack").Get(ctx, "gfcli.build.version")
Version := getVersion.String()
var list []*serverCfg var list []*serverCfg
serverList := g.Cfg().MustGet(ctx, "server_list") serverList := g.Cfg().MustGet(ctx, "server_list")
serverList.Scan(&list) serverList.Scan(&list)
@@ -59,7 +81,9 @@ var (
g.Dump("需要更新的服务器", list) g.Dump("需要更新的服务器", list)
//获取上传链接 //获取上传链接
var url = make(map[string]string) var url = make(map[string]string)
filename := "linux_amd64/" + Filename var system = make(map[string]string)
//filename := "linux_amd64/" + Filename
//filename := path.Join(Version, "linux_amd64", Filename)
client := g.Client() client := g.Client()
client.SetTimeout(time.Minute) client.SetTimeout(time.Minute)
@@ -73,13 +97,29 @@ var (
} }
//查询当前上传地址是否存在 //查询当前上传地址是否存在
if _, ok := url[v.S3]; !ok { _, ok2 := system[v.System+v.Arch]
if _, ok := url[v.S3]; !ok || !ok2 {
var systemName = "linux_amd64"
if v.Arch != "" && v.System != "" {
systemName = v.System + "_" + v.Arch
}
var filename = path.Join(Version, systemName, Filename)
g.Log().Debugf(ctx, "当前上传文件:"+filename)
url[v.S3], err = UploadS3(v.S3, filename) url[v.S3], err = UploadS3(v.S3, filename)
if err != nil { if err != nil {
g.Log().Error(ctx, err) g.Log().Error(ctx, err)
return return
} }
system[v.System+v.Arch] = filename
if err != nil {
g.Log().Error(ctx, err)
return
} }
}
continue
g.Log().Debugf(ctx, "准备同步服务器:%v,url=%v", v.Name, address+"/callback/update") g.Log().Debugf(ctx, "准备同步服务器:%v,url=%v", v.Name, address+"/callback/update")
get, err := client.Post(ctx, address+"/callback/update", &UpdateReq{ get, err := client.Post(ctx, address+"/callback/update", &UpdateReq{
@@ -107,9 +147,13 @@ var (
func UploadS3(typ string, filename string) (res string, err error) { func UploadS3(typ string, filename string) (res string, err error) {
//updateServerS3Name, _ := g.Config().Get(ctx, "update_server_s3_name") //updateServerS3Name, _ := g.Config().Get(ctx, "update_server_s3_name")
s3Mod = s3.New(typ) var s3Mod = pkg.S3(typ)
bucketName := s3Mod.GetCfg().BucketName bucketName := s3Mod.GetCfg().BucketName
obj, err := os.Open(filename) obj, err := os.Open(filename)
if err != nil {
return
}
defer obj.Close()
ff, err := obj.Stat() ff, err := obj.Stat()
_, err = s3Mod.PutObject(obj, filename, bucketName, ff.Size()) _, err = s3Mod.PutObject(obj, filename, bucketName, ff.Size())
if err != nil { if err != nil {