Bläddra i källkod

1, 优化升级服务程序,新增允许使用外部升级配置文件的功能; 2, 上传用于升级测试的样例DEMO和配置文件

niujiuru 21 timmar sedan
förälder
incheckning
8807343dc1

+ 2 - 0
upgrade.service/main.go

@@ -75,6 +75,8 @@ func (p *program) Start(s service.Service) error {
 		Handler: mux,
 	}
 
+	p.loadUpgradeConfig() // 如果有外部升级配置文件, 则优先使用它
+
 	p.ctx, p.cancel = context.WithCancel(context.Background())
 	go p.upgradeLoop()
 

+ 5 - 0
upgrade.service/networkd_upgrade_test/networkd-upgrade.json

@@ -0,0 +1,5 @@
+{
+  "version" : "0.0.0.2",
+  "sha256"  : "4bdbed84b8b69c7b1746d1cc9a123881007111ce1b2089776d3c594c47e39416"
+}
+

BIN
upgrade.service/networkd_upgrade_test/networkd-v0.0.0.2.tar.gz


BIN
upgrade.service/networkd_upgrade_test/networkd-v0.0.0.3.tar.gz


+ 9 - 0
upgrade.service/networkd_upgrade_test/upgrade.json

@@ -0,0 +1,9 @@
+[
+  {
+    "name": "networkd",
+    "enable": true,
+    "checkVerURL": "ftp://bxsban:yf1234567@8.136.98.49:21/rtu_bsp_framework/networkd.service/networkd-upgrade.json",
+    "clonePkgURL": "ftp://bxsban:yf1234567@8.136.98.49:21/rtu_bsp_framework/networkd.service/networkd-v0.0.0.2.tar.gz",
+    "installPath": "/opt/yfkj/networkd.service"
+  }
+]

+ 25 - 7
upgrade.service/upgrade.go

@@ -2,6 +2,7 @@ package main
 
 import (
 	"context"
+	"encoding/json"
 	"errors"
 	"fmt"
 	"os"
@@ -17,13 +18,13 @@ import (
 )
 
 type serviceUpgradeConfig struct {
-	Name string // 去掉"yfkj-"前缀和".service"
-	// 后缀的服务名, 也是升级包中可执行程序的名称
-	Enable      bool     /// 是否启用自动升级//
-	CheckVerURL string   /// 版本检查的 URL //
-	ClonePkgURL string   /// 升级包克隆 URL //
-	InstallPath string   /// 服务安装的路径 //
-	ReplaceDirs []string /// 需要安装的目录 //
+	Name string `json:"name"` // 去掉"yfkj-"前缀和".service"后缀的
+	// 服务名, 也是升级包中可执行程序的名称
+	Enable      bool     `json:"enable"`      /// 是否启用自动升级/
+	CheckVerURL string   `json:"checkVerURL"` /// 版本检查的 URL /
+	ClonePkgURL string   `json:"clonePkgURL"` /// 升级包克隆 URL /
+	InstallPath string   `json:"installPath"` /// 服务安装的路径 /
+	ReplaceDirs []string `json:"replaceDirs"` /// 需要安装的目录 /
 }
 
 var upgradeServices = []serviceUpgradeConfig{
@@ -86,6 +87,23 @@ var upgradeServices = []serviceUpgradeConfig{
 	},
 }
 
+func (p *program) loadUpgradeConfig() {
+	configFile := filepath.Join(baseapp.CFG_DIR, "upgrade.json")
+
+	data, err := os.ReadFile(configFile)
+	if err != nil {
+		return
+	}
+
+	var services []serviceUpgradeConfig
+	if err := json.Unmarshal(data, &services); err != nil {
+		return
+	}
+
+	upgradeServices = services
+	baseapp.Logger.Infof("[%s] 使用外部升级配置", p.name)
+}
+
 func isNetworkOK() bool {
 	_, _, tcpOK, httpOK, _ := netmgrd.CheckNetwork()
 	return tcpOK || httpOK