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,10 +55,13 @@ 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, " [OK]")
|
fmt.Println("Check YAML Configure:", yamlUrl, " [ERROR]", err.Error())
|
||||||
yamlPath := filepath.Join(env.MeshEnv.Prefix, service.Srv.EtcPath, fmt.Sprintf("%s_%s.yaml", service.Srv.ServiceKey, env.MeshEnv.RuntimeMode))
|
} else {
|
||||||
utils.StringToFile(yamlPath, string(body))
|
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))
|
||||||
|
utils.StringToFile(yamlPath, string(body))
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -66,15 +69,26 @@ 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)
|
||||||
if version != " - " {
|
|
||||||
for _, srv := range reles.Data {
|
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 != " - " {
|
||||||
|
|
||||||
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