Merge branch 'master' of https://git.apinb.com/bsm-tools/bsm
This commit is contained in:
		
						commit
						3849568b18
					
				|  | @ -0,0 +1,8 @@ | ||||||
|  | # Actions 编译部署配置文件,文件格式:YAML | ||||||
|  | # | ||||||
|  | # 微服务相关配置 | ||||||
|  | service: | ||||||
|  |   origin: bsm | ||||||
|  |   image: golang:1.22.0-bookworm | ||||||
|  |   describe: system cli cmd | ||||||
|  | 
 | ||||||
|  | @ -1,4 +1,4 @@ | ||||||
| package cmd | package commands | ||||||
| 
 | 
 | ||||||
| import ( | import ( | ||||||
| 	"fmt" | 	"fmt" | ||||||
|  | @ -55,26 +55,40 @@ func etcExecute(ls []LocalServices) { | ||||||
| 	for _, service := range ls { | 	for _, service := range ls { | ||||||
| 		yamlUrl := fmt.Sprintf("%s%s/%s/%s_%s.yaml", service.Srv.OssUrl, service.Srv.EtcPath, env.MeshEnv.Workspace, service.Srv.ServiceKey, env.MeshEnv.RuntimeMode) | 		yamlUrl := fmt.Sprintf("%s%s/%s/%s_%s.yaml", service.Srv.OssUrl, service.Srv.EtcPath, env.MeshEnv.Workspace, service.Srv.ServiceKey, env.MeshEnv.RuntimeMode) | ||||||
| 		body, err := utils.HttpGet(yamlUrl) | 		body, err := utils.HttpGet(yamlUrl) | ||||||
| 		checkError(err) | 		if err != nil { | ||||||
|  | 			fmt.Println("Check YAML Configure:", yamlUrl, " [ERROR]", err.Error()) | ||||||
|  | 		} else { | ||||||
| 			fmt.Println("Check YAML Configure:", yamlUrl, " [OK]") | 			fmt.Println("Check YAML Configure:", yamlUrl, " [OK]") | ||||||
| 			yamlPath := filepath.Join(env.MeshEnv.Prefix, service.Srv.EtcPath, fmt.Sprintf("%s_%s.yaml", service.Srv.ServiceKey, env.MeshEnv.RuntimeMode)) | 			yamlPath := filepath.Join(env.MeshEnv.Prefix, service.Srv.EtcPath, fmt.Sprintf("%s_%s.yaml", service.Srv.ServiceKey, env.MeshEnv.RuntimeMode)) | ||||||
| 			utils.StringToFile(yamlPath, string(body)) | 			utils.StringToFile(yamlPath, string(body)) | ||||||
| 		} | 		} | ||||||
| 	} | 	} | ||||||
|  | } | ||||||
| 
 | 
 | ||||||
| func getLocalServices() []LocalServices { | func getLocalServices() []LocalServices { | ||||||
| 	reles := getRegistryReleases() | 	reles := getRegistryReleases() | ||||||
| 
 | 
 | ||||||
| 	dirFs, err := os.ReadDir(env.MeshEnv.Prefix) | 	dirFs, err := os.ReadDir(env.MeshEnv.Prefix) | ||||||
| 	checkError(err) |  | ||||||
| 
 | 
 | ||||||
| 	ls := make([]LocalServices, 0) | 	ls := make([]LocalServices, 0) | ||||||
| 	for _, v := range dirFs { | 
 | ||||||
| 		version := getCurrentVersion(v.Name()) | 	checkError(err) | ||||||
|  | 
 | ||||||
|  | 	for _, v := range reles.Data { | ||||||
|  | 		var check bool = false | ||||||
|  | 		for _, srv := range dirFs { | ||||||
|  | 			if v.ServiceKey == srv.Name() { | ||||||
|  | 				check = true | ||||||
|  | 				break | ||||||
|  | 			} | ||||||
|  | 		} | ||||||
|  | 
 | ||||||
|  | 		if check { | ||||||
|  | 			version := getCurrentVersion(v.ServiceKey) | ||||||
| 			if version != " - " { | 			if version != " - " { | ||||||
| 			for _, srv := range reles.Data { | 
 | ||||||
| 				ls = append(ls, LocalServices{ | 				ls = append(ls, LocalServices{ | ||||||
| 					Srv:          srv, | 					Srv:          v, | ||||||
| 					LocalVersion: version, | 					LocalVersion: version, | ||||||
| 				}) | 				}) | ||||||
| 			} | 			} | ||||||
|  | @ -106,7 +120,7 @@ func serviceExecute(ls []LocalServices) { | ||||||
| 		} else { | 		} else { | ||||||
| 			service.Srv.Stop() | 			service.Srv.Stop() | ||||||
| 			downUrl := service.Srv.OssUrl + service.Srv.FilePath | 			downUrl := service.Srv.OssUrl + service.Srv.FilePath | ||||||
| 			fmt.Println("Check Microservice", service.Srv.ServiceKey, service.Srv.Version, downUrl) | 			fmt.Println("Update Microservice", service.Srv.ServiceKey, service.Srv.Version, downUrl) | ||||||
| 			binPath := filepath.Join(env.MeshEnv.Prefix, service.Srv.ServiceKey) | 			binPath := filepath.Join(env.MeshEnv.Prefix, service.Srv.ServiceKey) | ||||||
| 			DownloadFile(downUrl, binPath, func(length, downLen int64) { | 			DownloadFile(downUrl, binPath, func(length, downLen int64) { | ||||||
| 				fmt.Fprintf(os.Stdout, "Total:%d KB, Current:%d KB, Percent:%.2f%%\r", length, downLen, (float32(downLen)/float32(length))*100) | 				fmt.Fprintf(os.Stdout, "Total:%d KB, Current:%d KB, Percent:%.2f%%\r", length, downLen, (float32(downLen)/float32(length))*100) | ||||||
|  | @ -1,4 +1,4 @@ | ||||||
| package cmd | package commands | ||||||
| 
 | 
 | ||||||
| import ( | import ( | ||||||
| 	"fmt" | 	"fmt" | ||||||
|  | @ -10,7 +10,7 @@ import ( | ||||||
| 
 | 
 | ||||||
| func getFilePath(srv *Service) (binPath, logsPath string) { | func getFilePath(srv *Service) (binPath, logsPath string) { | ||||||
| 	binPath = filepath.Join(env.MeshEnv.Prefix, srv.ServiceKey) | 	binPath = filepath.Join(env.MeshEnv.Prefix, srv.ServiceKey) | ||||||
| 	logsPath = filepath.Join(env.MeshEnv.Prefix, "logs", srv.ServiceKey+"@"+srv.Version+".log") | 	logsPath = filepath.Join(env.MeshEnv.Prefix, "logs", srv.ServiceKey+"-"+srv.Version+".log") | ||||||
| 	return | 	return | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
|  | @ -1,4 +1,4 @@ | ||||||
| package cmd | package commands | ||||||
| 
 | 
 | ||||||
| import ( | import ( | ||||||
| 	"encoding/json" | 	"encoding/json" | ||||||
|  | @ -1,4 +1,4 @@ | ||||||
| package cmd | package commands | ||||||
| 
 | 
 | ||||||
| import ( | import ( | ||||||
| 	"fmt" | 	"fmt" | ||||||
|  | @ -64,7 +64,7 @@ func installExecute(srv string) { | ||||||
| 		DownloadFile(downUrl, binPath, func(length, downLen int64) { | 		DownloadFile(downUrl, binPath, func(length, downLen int64) { | ||||||
| 			fmt.Fprintf(os.Stdout, "Total:%d KB, Current:%d KB, Percent:%.2f%%\r", length, downLen, (float32(downLen)/float32(length))*100) | 			fmt.Fprintf(os.Stdout, "Total:%d KB, Current:%d KB, Percent:%.2f%%\r", length, downLen, (float32(downLen)/float32(length))*100) | ||||||
| 		}) | 		}) | ||||||
| 
 | 		fmt.Println("[6/6] Download Success!") | ||||||
| 		fmt.Println("[6/6] Restart Microservice:", srv) | 		fmt.Println("[6/6] Restart Microservice:", srv) | ||||||
| 		service.Start() | 		service.Start() | ||||||
| 		fmt.Println("Install Successful!") | 		fmt.Println("Install Successful!") | ||||||
|  | @ -1,4 +1,4 @@ | ||||||
| package cmd | package commands | ||||||
| 
 | 
 | ||||||
| import ( | import ( | ||||||
| 	"encoding/json" | 	"encoding/json" | ||||||
|  | @ -0,0 +1,72 @@ | ||||||
|  | package commands | ||||||
|  | 
 | ||||||
|  | import ( | ||||||
|  | 	"fmt" | ||||||
|  | 	"os" | ||||||
|  | 	"path/filepath" | ||||||
|  | 
 | ||||||
|  | 	"git.apinb.com/bsm-sdk/engine/env" | ||||||
|  | 	"git.apinb.com/bsm-sdk/engine/utils" | ||||||
|  | 	"github.com/spf13/cobra" | ||||||
|  | ) | ||||||
|  | 
 | ||||||
|  | var restartCmd = &cobra.Command{ | ||||||
|  | 	Use:   "restart", | ||||||
|  | 	Short: "<ServiceKey> 更新一个微服务的服务,并重启该服务.", | ||||||
|  | 	Run: func(cmd *cobra.Command, args []string) { | ||||||
|  | 		if len(args) != 1 { | ||||||
|  | 			fmt.Println("Update a microservice service and restart it!") | ||||||
|  | 			return | ||||||
|  | 		} | ||||||
|  | 
 | ||||||
|  | 		srv := args[0] | ||||||
|  | 		execbin := filepath.Join(env.MeshEnv.Prefix, srv) | ||||||
|  | 		binExists := utils.PathExists(execbin) | ||||||
|  | 		if !binExists { | ||||||
|  | 			fmt.Println(srv, "microservice not install") | ||||||
|  | 		} else { | ||||||
|  | 			restartExecute(srv) | ||||||
|  | 		} | ||||||
|  | 	}, | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | func restartExecute(srv string) { | ||||||
|  | 	localVersion := getCurrentVersion(srv) | ||||||
|  | 	fmt.Println("[1/5] Check local microservice version:", localVersion) | ||||||
|  | 
 | ||||||
|  | 	service := getService(srv) | ||||||
|  | 	if service == nil { | ||||||
|  | 		fmt.Println("ERR:", srv, "Not Found!") | ||||||
|  | 		os.Exit(0) | ||||||
|  | 	} | ||||||
|  | 
 | ||||||
|  | 	fmt.Println("[2/5] Check registry microservice version:", service.Version) | ||||||
|  | 
 | ||||||
|  | 	service.Stop() | ||||||
|  | 
 | ||||||
|  | 	yamlUrl := fmt.Sprintf("%s%s/%s/%s_%s.yaml", service.OssUrl, service.EtcPath, env.MeshEnv.Workspace, srv, env.MeshEnv.RuntimeMode) | ||||||
|  | 	body, err := utils.HttpGet(yamlUrl) | ||||||
|  | 	checkError(err) | ||||||
|  | 	fmt.Println("[3/5] Download YAML Configure:", yamlUrl, " [OK]") | ||||||
|  | 	yamlPath := filepath.Join(env.MeshEnv.Prefix, service.EtcPath, fmt.Sprintf("%s_%s.yaml", srv, env.MeshEnv.RuntimeMode)) | ||||||
|  | 	utils.StringToFile(yamlPath, string(body)) | ||||||
|  | 
 | ||||||
|  | 	if localVersion != service.Version { | ||||||
|  | 		downUrl := service.OssUrl + service.FilePath | ||||||
|  | 		fmt.Println("[4/5] Download Binrary File:", downUrl) | ||||||
|  | 		binPath := filepath.Join(env.MeshEnv.Prefix, srv) | ||||||
|  | 		DownloadFile(downUrl, binPath, func(length, downLen int64) { | ||||||
|  | 			fmt.Fprintf(os.Stdout, "Total:%d KB, Current:%d KB, Percent:%.2f%%\r", length, downLen, (float32(downLen)/float32(length))*100) | ||||||
|  | 		}) | ||||||
|  | 
 | ||||||
|  | 		fmt.Println("[5/5] Start Microservice:", srv) | ||||||
|  | 		service.Start() | ||||||
|  | 		fmt.Println("Updated Success!") | ||||||
|  | 	} else { | ||||||
|  | 		fmt.Println("[4/5] "+srv+" Already the latest version:", localVersion) | ||||||
|  | 		fmt.Println("[5/5] Restart Microservice:", srv) | ||||||
|  | 		service.Start() | ||||||
|  | 		fmt.Println("Restart Success!") | ||||||
|  | 	} | ||||||
|  | 
 | ||||||
|  | } | ||||||
|  | @ -1,4 +1,4 @@ | ||||||
| package cmd | package commands | ||||||
| 
 | 
 | ||||||
| import ( | import ( | ||||||
| 	"fmt" | 	"fmt" | ||||||
|  | @ -22,7 +22,7 @@ func init() { | ||||||
| 		registryUrl = env.GetEnvDefault("BlocksMesh_Registry", "http://registry.apinb.com") | 		registryUrl = env.GetEnvDefault("BlocksMesh_Registry", "http://registry.apinb.com") | ||||||
| 	} | 	} | ||||||
| 
 | 
 | ||||||
| 	rootCmd.AddCommand(psCmd, installCmd, updateCmd, checkCmd) | 	rootCmd.AddCommand(psCmd, installCmd, updateCmd, checkCmd, restartCmd) | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| var rootCmd = &cobra.Command{ | var rootCmd = &cobra.Command{ | ||||||
|  | @ -0,0 +1 @@ | ||||||
|  | package commands | ||||||
|  | @ -1,4 +1,4 @@ | ||||||
| package cmd | package commands | ||||||
| 
 | 
 | ||||||
| import ( | import ( | ||||||
| 	"fmt" | 	"fmt" | ||||||
|  | @ -61,7 +61,7 @@ func updateExecute(srv string) { | ||||||
| 
 | 
 | ||||||
| 		fmt.Println("[5/5] Start Microservice:", srv) | 		fmt.Println("[5/5] Start Microservice:", srv) | ||||||
| 		service.Start() | 		service.Start() | ||||||
| 		fmt.Println("Install Successful!") | 		fmt.Println("Updated Success!") | ||||||
| 	} | 	} | ||||||
| 
 | 
 | ||||||
| } | } | ||||||
|  | @ -0,0 +1,14 @@ | ||||||
|  | package main | ||||||
|  | 
 | ||||||
|  | import ( | ||||||
|  | 	"fmt" | ||||||
|  | 
 | ||||||
|  | 	"git.apinb.com/bsm-sdk/engine/vars" | ||||||
|  | 	"git.apinb.com/bsm-tools/bsm/cmd/commands" | ||||||
|  | ) | ||||||
|  | 
 | ||||||
|  | func main() { | ||||||
|  | 	fmt.Printf("Blocks Service Cli Version: %s \n", vars.VERSION) | ||||||
|  | 
 | ||||||
|  | 	commands.Execute() | ||||||
|  | } | ||||||
|  | @ -1 +0,0 @@ | ||||||
| package cmd |  | ||||||
		Loading…
	
		Reference in New Issue