diff --git a/.fastRequest/collections/Root/server/ExecutionController/patchCommandToAgentAll.rapi b/.fastRequest/collections/Root/server/ExecutionController/patchCommandToAgentAll.rapi index 443ffbd..62cd30d 100644 --- a/.fastRequest/collections/Root/server/ExecutionController/patchCommandToAgentAll.rapi +++ b/.fastRequest/collections/Root/server/ExecutionController/patchCommandToAgentAll.rapi @@ -10,7 +10,7 @@ "filePath": "~.fastRequest~collections~Root~server~ExecutionController~patchCommandToAgentAll.rapi", "headerList": [], "id": "api_io.wdd.rpc.controller.ExecutionController.patchCommandToAgentAll", - "name": "[命令]- 发送命令至所有的主机", + "allCmiiImageName": "[命令]- 发送命令至所有的主机", "paramGroup": { "bodyKeyValueListJson": "", "className": "io.wdd.rpc.controller.ExecutionController", diff --git a/.fastRequest/collections/Root/server/SchedulerController/createScriptScheduler.rapi b/.fastRequest/collections/Root/server/SchedulerController/createScriptScheduler.rapi index f702cd0..429f78e 100644 --- a/.fastRequest/collections/Root/server/SchedulerController/createScriptScheduler.rapi +++ b/.fastRequest/collections/Root/server/SchedulerController/createScriptScheduler.rapi @@ -10,11 +10,11 @@ "filePath": "~.fastRequest~collections~Root~server~SchedulerController~createScriptScheduler.rapi", "headerList": [], "id": "api_io.wdd.rpc.controller.SchedulerController.createScriptScheduler", - "name": "新增一个定时脚本任务", + "allCmiiImageName": "新增一个定时脚本任务", "paramGroup": { - "bodyKeyValueListJson": "{\n \"schedulerUuid\": \"\",\n \"name\": \"测试任务\",\n \"cronExpress\": \"30 */30 * * * ? *\",\n \"description\": \"这是注释内容\",\n \"scriptContent\": \"echo yes \\napt-get update \\necho no \\napt-get install nginx -y\",\n \"targetMachine\": \"Chengdu-amd64-98-98066f\",\n \"lastExecutionId\": null,\n \"lastExecutionResultKey\": \"\",\n \"lastExecutionStatus\": null ,\n \"createTime\": \"\",\n \"updateTime\": \"\",\n \"nextScheduleTime\": \"\",\n \"lastScheduleTime\": \"\"\n}", + "bodyKeyValueListJson": "{\n \"schedulerUuid\": \"\",\n \"allCmiiImageName\": \"测试任务\",\n \"cronExpress\": \"30 */30 * * * ? *\",\n \"description\": \"这是注释内容\",\n \"scriptContent\": \"echo yes \\napt-get update \\necho no \\napt-get install nginx -y\",\n \"targetMachine\": \"Chengdu-amd64-98-98066f\",\n \"lastExecutionId\": null,\n \"lastExecutionResultKey\": \"\",\n \"lastExecutionStatus\": null ,\n \"createTime\": \"\",\n \"updateTime\": \"\",\n \"nextScheduleTime\": \"\",\n \"lastScheduleTime\": \"\"\n}", "className": "io.wdd.rpc.controller.SchedulerController", - "jsonDocument": "{\n \"schedulerUuid\": \"No comment,Value =schedulerUuid_9dr3w\",\n \"name\": \"No comment,Value =name_ucmeh\",\n \"cronExpress\": \"No comment,Value =cronExpress_qbwqm\",\n \"description\": \"No comment,Value =description_drj0c\",\n \"scriptContent\": \"脚本任务的内容\",\n \"targetMachine\": \"执行目标机器agent_topic_name列表,使用, 分隔\",\n \"lastExecutionId\": \"与 execution_log表的主键对应,方便查询执行日志\",\n \"lastExecutionResultKey\": \"与 execution_log表的 result_key 对应,方便查询执行日志\",\n \"lastExecutionStatus\": \"任务上次执行状态\",\n \"createTime\": \"定时脚本任务创建时间\",\n \"updateTime\": \"上次更新时间\",\n \"nextScheduleTime\": \"任务下次计划执行时间\",\n \"lastScheduleTime\": \"任务上次计划执行时间\"\n}", + "jsonDocument": "{\n \"schedulerUuid\": \"No comment,Value =schedulerUuid_9dr3w\",\n \"allCmiiImageName\": \"No comment,Value =name_ucmeh\",\n \"cronExpress\": \"No comment,Value =cronExpress_qbwqm\",\n \"description\": \"No comment,Value =description_drj0c\",\n \"scriptContent\": \"脚本任务的内容\",\n \"targetMachine\": \"执行目标机器agent_topic_name列表,使用, 分隔\",\n \"lastExecutionId\": \"与 execution_log表的主键对应,方便查询执行日志\",\n \"lastExecutionResultKey\": \"与 execution_log表的 result_key 对应,方便查询执行日志\",\n \"lastExecutionStatus\": \"任务上次执行状态\",\n \"createTime\": \"定时脚本任务创建时间\",\n \"updateTime\": \"上次更新时间\",\n \"nextScheduleTime\": \"任务下次计划执行时间\",\n \"lastScheduleTime\": \"任务上次计划执行时间\"\n}", "method": "createScriptScheduler", "methodDescription": "新增一个定时脚本任务", "methodType": "POST", diff --git a/.fastRequest/collections/Root/server/SchedulerController/queryAllQuartzJob.rapi b/.fastRequest/collections/Root/server/SchedulerController/queryAllQuartzJob.rapi index 80338e0..e4f1544 100644 --- a/.fastRequest/collections/Root/server/SchedulerController/queryAllQuartzJob.rapi +++ b/.fastRequest/collections/Root/server/SchedulerController/queryAllQuartzJob.rapi @@ -10,7 +10,7 @@ "filePath": "~.fastRequest~collections~Root~server~SchedulerController~queryAllQuartzJob.rapi", "headerList": [], "id": "api_io.wdd.rpc.controller.SchedulerController.queryAllQuartzJob", - "name": "查询所有job", + "allCmiiImageName": "查询所有job", "paramGroup": { "bodyKeyValueListJson": "", "className": "io.wdd.rpc.controller.SchedulerController", diff --git a/.fastRequest/collections/Root/server/SchedulerController/queryAllTriggers.rapi b/.fastRequest/collections/Root/server/SchedulerController/queryAllTriggers.rapi index 6858ff6..cef5b05 100644 --- a/.fastRequest/collections/Root/server/SchedulerController/queryAllTriggers.rapi +++ b/.fastRequest/collections/Root/server/SchedulerController/queryAllTriggers.rapi @@ -10,7 +10,7 @@ "filePath": "~.fastRequest~collections~Root~server~SchedulerController~queryAllTriggers.rapi", "headerList": [], "id": "api_io.wdd.rpc.controller.SchedulerController.queryAllTriggers", - "name": "查询所有的触发器Trigger", + "allCmiiImageName": "查询所有的触发器Trigger", "paramGroup": { "bodyKeyValueListJson": "", "className": "io.wdd.rpc.controller.SchedulerController", diff --git a/.fastRequest/collections/Root/server/SchedulerController/queryRunQuartzJob.rapi b/.fastRequest/collections/Root/server/SchedulerController/queryRunQuartzJob.rapi index 3a2d4ec..d506cf5 100644 --- a/.fastRequest/collections/Root/server/SchedulerController/queryRunQuartzJob.rapi +++ b/.fastRequest/collections/Root/server/SchedulerController/queryRunQuartzJob.rapi @@ -10,7 +10,7 @@ "filePath": "~.fastRequest~collections~Root~server~SchedulerController~queryRunQuartzJob.rapi", "headerList": [], "id": "api_io.wdd.rpc.controller.SchedulerController.queryRunQuartzJob", - "name": "查询所有运行job", + "allCmiiImageName": "查询所有运行job", "paramGroup": { "bodyKeyValueListJson": "", "className": "io.wdd.rpc.controller.SchedulerController", diff --git a/.fastRequest/collections/Root/server/StatusController/GetHealthyStatusAgentList.rapi b/.fastRequest/collections/Root/server/StatusController/GetHealthyStatusAgentList.rapi index 0d673c6..42e9b2b 100644 --- a/.fastRequest/collections/Root/server/StatusController/GetHealthyStatusAgentList.rapi +++ b/.fastRequest/collections/Root/server/StatusController/GetHealthyStatusAgentList.rapi @@ -10,7 +10,7 @@ "filePath": "~.fastRequest~collections~Root~server~StatusController~GetHealthyStatusAgentList.rapi", "headerList": [], "id": "api_io.wdd.rpc.controller.StatusController.GetHealthyStatusAgentList", - "name": "[ 状态-Agent ] Map", + "allCmiiImageName": "[ 状态-Agent ] Map", "paramGroup": { "bodyKeyValueListJson": "", "className": "io.wdd.rpc.controller.StatusController", diff --git a/.fastRequest/collections/Root/server/StatusController/ManualUpdateAgentStatus.rapi b/.fastRequest/collections/Root/server/StatusController/ManualUpdateAgentStatus.rapi index 97f1b45..c31466d 100644 --- a/.fastRequest/collections/Root/server/StatusController/ManualUpdateAgentStatus.rapi +++ b/.fastRequest/collections/Root/server/StatusController/ManualUpdateAgentStatus.rapi @@ -10,7 +10,7 @@ "filePath": "~.fastRequest~collections~Root~server~StatusController~ManualUpdateAgentStatus.rapi", "headerList": [], "id": "api_io.wdd.rpc.controller.StatusController.ManualUpdateAgentStatus", - "name": "手动更新Agent的状态", + "allCmiiImageName": "手动更新Agent的状态", "paramGroup": { "bodyKeyValueListJson": "", "className": "io.wdd.rpc.controller.StatusController", diff --git a/.run/go build agent-go.run.xml b/.run/go build agent-go.run.xml index 9605132..8a5b251 100644 --- a/.run/go build agent-go.run.xml +++ b/.run/go build agent-go.run.xml @@ -1,6 +1,7 @@ - - - + + + diff --git a/agent/pom.xml b/agent/pom.xml index d35face..82c390d 100644 --- a/agent/pom.xml +++ b/agent/pom.xml @@ -12,7 +12,7 @@ io.wdd agent - agent + agent agent @@ -56,7 +56,7 @@ github - GitHub Apache Maven Packages + GitHub Apache Maven Packages https://maven.pkg.github.com/zeaslity/ProjectOctopus diff --git a/cmii_operator/CmiiK8sOperator_test.go b/cmii_operator/CmiiK8sOperator_test.go index 4882fa8..f35518a 100644 --- a/cmii_operator/CmiiK8sOperator_test.go +++ b/cmii_operator/CmiiK8sOperator_test.go @@ -67,7 +67,7 @@ func TestRestartCmiiFrontendDeployment(t *testing.T) { func TestRestartCmiiDeployment(t *testing.T) { cmiiEnv := integration - appName := "cmii-uav-cloud-live" + appName := "cmii-uav-device" kill := CmiiOperator.DeploymentRestartByKill(cmiiEnv, appName) assert.Equal(t, kill, true, "have unhealthy pod !") @@ -237,7 +237,7 @@ func TestUpdateCmiiDeploymentImageTag(t *testing.T) { cmiiEnv := demo appName := "cmii-uav-platform" - newTag := "5.4.0" + newTag := "5.4.0-25263-0311" tag := UpdateCmiiDeploymentImageTag(cmiiEnv, appName, newTag) assert.Equal(t, tag, true, "update image tag failed !") diff --git a/cmii_operator/CmiiOperator.go b/cmii_operator/CmiiOperator.go index 120c144..68fa79f 100644 --- a/cmii_operator/CmiiOperator.go +++ b/cmii_operator/CmiiOperator.go @@ -2,7 +2,9 @@ package cmii_operator import ( "errors" + "io/fs" "os" + "path/filepath" "strings" "wdd.io/agent-go/executor" "wdd.io/agent-go/utils" @@ -12,16 +14,128 @@ import ( const OfflineImageGzipFolderPrefix = "/root/octopus_image/" const OfflineDeployHarborHost = "harbor.wdd.io" const PublicDeployHarborHost = "42.192.52.227" -const DirectPushDeployHarborHost = "36.134.28.60" +const DirectPushDeployHarborHost = "36.134.71.138" -func FetchDemoImages(projectName string, gzipSplit bool) (errorPullImageList, errorGzipImageList []string) { +type ImageSyncEntity struct { + ProjectName string + ProjectVersion string + DirectHarborHost string + PushToDemoMinio bool +} + +type ImageSyncResult struct { + ErrorPullImageList []string + ErrorGzipImageList []string + ErrorPushImageNameList []string + RealImageNameList []string + RealGzipFileNameList []string + AllCmiiImageNameList []string +} + +func (sync ImageSyncEntity) PullFromEntityAndSyncConditionally() (imageSyncResult ImageSyncResult) { + + var realCmiiImageList []string + var errorPullImageList []string + var errorGzipImageList []string + var allCmiiImageNameList []string + var allGzipFileNameList []string + var errorPushImageNameList []string + var gzipFolderFullPath string + // get all image name by Name or Version + // pull images + // compress + if sync.ProjectVersion == "" { + // get version + if sync.DirectHarborHost == "" { + errorPullImageList, errorGzipImageList, allCmiiImageNameList = FetchVersionImages(sync.ProjectVersion, true) + gzipFolderFullPath = OfflineImageGzipFolderPrefix + sync.ProjectVersion + } else { + errorPullImageList, errorGzipImageList, allCmiiImageNameList = FetchVersionImages(sync.ProjectVersion, false) + } + } else { + // get demo images + if sync.DirectHarborHost == "" { + errorPullImageList, errorGzipImageList, allCmiiImageNameList = FetchDemoImages(sync.ProjectName, true) + gzipFolderFullPath = OfflineImageGzipFolderPrefix + sync.ProjectName + } else { + errorPullImageList, errorGzipImageList, allCmiiImageNameList = FetchDemoImages(sync.ProjectName, false) + } + } + + realCmiiImageList = append(realCmiiImageList, remove(allCmiiImageNameList, errorPullImageList)...) + realCmiiImageList = append(realCmiiImageList, remove(allCmiiImageNameList, errorGzipImageList)...) + + // direct push if can + if sync.DirectHarborHost != "" { + // push to + errorPushImageNameList = image.TagFromListAndPushToCHarbor(realCmiiImageList, sync.DirectHarborHost) + + // build + imageSyncResult.AllCmiiImageNameList = allCmiiImageNameList + imageSyncResult.ErrorPullImageList = errorPullImageList + imageSyncResult.ErrorGzipImageList = errorGzipImageList + imageSyncResult.ErrorPushImageNameList = errorPushImageNameList + + // no gzip file + + return imageSyncResult + } + + // get gzip file name list + err := filepath.WalkDir(gzipFolderFullPath, func(path string, d fs.DirEntry, err error) error { + if err != nil { + log.ErrorF("error getting gzip file name list 1! %s", err.Error()) + } + if !d.IsDir() { + allGzipFileNameList = append(allGzipFileNameList, d.Name()) + } + return nil + }) + if err != nil { + log.ErrorF("error getting gzip file name list 2! %s", err.Error()) + } + + // push to demo minio + if sync.PushToDemoMinio { + log.InfoF("pretend to push to minio !") + // create path + // push + } + + // build + imageSyncResult.AllCmiiImageNameList = allCmiiImageNameList + imageSyncResult.ErrorPullImageList = errorPullImageList + imageSyncResult.ErrorGzipImageList = errorGzipImageList + imageSyncResult.ErrorPushImageNameList = errorPushImageNameList + imageSyncResult.RealGzipFileNameList = allGzipFileNameList + + // no gzip file + + return imageSyncResult +} + +func remove(s1, s2 []string) []string { + m := make(map[string]struct{}, len(s2)) + for _, v := range s2 { + m[v] = struct{}{} + } + res := make([]string, 0, len(s1)) + for _, v := range s1 { + if _, ok := m[v]; !ok { + res = append(res, v) + } + } + return res +} + +func FetchDemoImages(projectName string, gzipSplit bool) (errorPullImageList, errorGzipImageList, allCmiiImageName []string) { // generate a project folder err := os.MkdirAll(OfflineImageGzipFolderPrefix+projectName, os.ModeDir) if err != nil { if !errors.Is(err, os.ErrExist) { log.ErrorF("[FetchDemoImages] - create folder of %s error %s", OfflineImageGzipFolderPrefix+projectName, err.Error()) - return errorPullImageList, errorGzipImageList + return errorPullImageList, errorGzipImageList, allCmiiImageName } } @@ -54,9 +168,13 @@ func FetchDemoImages(projectName string, gzipSplit bool) (errorPullImageList, er ) // download image - backendPull := image.ImagePullFromCmiiHarborByMap(backendMap, true) - frontendPull := image.ImagePullFromCmiiHarborByMap(frontendMap, true) - srsPull := image.ImagePullFromCmiiHarborByMap(srsMap, true) + backendFullNameList, backendPull := image.PullFromCmiiHarborByMap(backendMap, true) + frontendFullNameList, frontendPull := image.PullFromCmiiHarborByMap(frontendMap, true) + srsFullNameList, srsPull := image.PullFromCmiiHarborByMap(srsMap, true) + + allCmiiImageName = append(allCmiiImageName, backendFullNameList...) + allCmiiImageName = append(allCmiiImageName, frontendFullNameList...) + allCmiiImageName = append(allCmiiImageName, srsFullNameList...) // compress image if gzipSplit { @@ -84,32 +202,30 @@ func FetchDemoImages(projectName string, gzipSplit bool) (errorPullImageList, er errorPullImageList = append(errorPullImageList, frontendPull...) errorPullImageList = append(errorPullImageList, srsPull...) - return errorPullImageList, errorGzipImageList + return errorPullImageList, errorGzipImageList, allCmiiImageName } -func FetchVersionImages(cmiiVersion string, gzipSplit bool) (errorPullImageList, errorGzipImageList []string) { +func FetchVersionImages(cmiiVersion string, shouldGzip bool) (errorPullImageList, errorGzipImageList, allCmiiImageName []string) { // generate a project folder err := os.MkdirAll(OfflineImageGzipFolderPrefix+cmiiVersion, os.ModeDir) if err != nil { if !errors.Is(err, os.ErrExist) { log.ErrorF("[FetchDemoImages] - create folder of %s error %s", OfflineImageGzipFolderPrefix+cmiiVersion, err.Error()) - return errorPullImageList, errorGzipImageList + return errorPullImageList, errorGzipImageList, allCmiiImageName } } backendMap := CmiiBackendAppMap frontendMap := CmiiFrontendAppMap - for app, _ := range backendMap { + for app := range backendMap { backendMap[app] = cmiiVersion } - for app, _ := range frontendMap { + for app := range frontendMap { frontendMap[app] = cmiiVersion } - var allCmiiImageName []string - allCmiiImageName = append(allCmiiImageName, image.ConvertCMiiImageMapToList(backendMap)...) allCmiiImageName = append(allCmiiImageName, image.ConvertCMiiImageMapToList(frontendMap)...) @@ -130,12 +246,16 @@ func FetchVersionImages(cmiiVersion string, gzipSplit bool) (errorPullImageList, } } - utils.BeautifulPrint(allCmiiImageName) + utils.BeautifulPrintListWithTitle(allCmiiImageName, "Cmii Version Image => "+cmiiVersion) // do work - errorPullImageList, errorGzipImageList = image.PullFromListAndCompressSplit(allCmiiImageName, OfflineImageGzipFolderPrefix+cmiiVersion) + if shouldGzip { + errorPullImageList, errorGzipImageList = image.PullFromListAndCompressSplit(allCmiiImageName, OfflineImageGzipFolderPrefix+cmiiVersion) + } else { + errorPullImageList = image.PullFromFullNameList(allCmiiImageName) + } - return errorPullImageList, errorGzipImageList + return errorPullImageList, errorGzipImageList, allCmiiImageName } func FetchDependencyRepos(gzipSplit bool) (errorPullImageList, errorGzipImageList []string) { @@ -151,14 +271,13 @@ func FetchDependencyRepos(gzipSplit bool) (errorPullImageList, errorGzipImageLis pull, gzipImageList := image.PullFromListAndCompressSplit(image.Rancher1204Amd64, OfflineImageGzipFolderPrefix+"rke/") return append(errorPullImageList, pull...), append(errorGzipImageList, gzipImageList...) - } -func LoadSplitGzipImageToTargetHarbor(projectName, targetHarborHost string) (errorLoadImageNameList, errorPushImageNameList []string) { +func LoadSplitCmiiGzipImageToTargetHarbor(projectName, targetHarborHost string) (errorLoadImageNameList, errorPushImageNameList []string) { // list folder projectGzipFolder := OfflineImageGzipFolderPrefix + projectName - errorLoadImageNameList = append(errorLoadImageNameList, image.ImageLoadFromFolderPath(projectGzipFolder)...) + errorLoadImageNameList = append(errorLoadImageNameList, image.LoadFromFolderPath(projectGzipFolder)...) // read from json errorPushImageNameList = append(errorPushImageNameList, image.TagFromListAndPushToCHarbor(image.Cmii520DemoImageList, targetHarborHost)...) diff --git a/cmii_operator/CmiiOperator_test.go b/cmii_operator/CmiiOperator_test.go index c0f1c48..20b6a3a 100644 --- a/cmii_operator/CmiiOperator_test.go +++ b/cmii_operator/CmiiOperator_test.go @@ -7,18 +7,19 @@ import ( func TestFetchDemoImages(t *testing.T) { - errorPullImageList, errorGzipImageList := FetchDemoImages("shls", true) + errorPullImageList, errorGzipImageList, allCmiiImageName := FetchDemoImages("shls", true) utils.BeautifulPrintListWithTitle(errorPullImageList, "cmii errorPullImageList") utils.BeautifulPrintListWithTitle(errorGzipImageList, "cmii errorGzipImageList") - + utils.BeautifulPrintListWithTitle(allCmiiImageName, "cmii allCmiiImageName") } func TestFetchVersionImages(t *testing.T) { - errorPullImageList, errorGzipImageList := FetchVersionImages("5.4.0", true) + errorPullImageList, errorGzipImageList, allCmiiImageName := FetchVersionImages("5.4.0", true) utils.BeautifulPrintListWithTitle(errorPullImageList, "cmii errorPullImageList") utils.BeautifulPrintListWithTitle(errorGzipImageList, "cmii errorGzipImageList") + utils.BeautifulPrintListWithTitle(allCmiiImageName, "cmii allCmiiImageName") } func TestFetchDependencyRepos(t *testing.T) { @@ -27,11 +28,10 @@ func TestFetchDependencyRepos(t *testing.T) { utils.BeautifulPrintListWithTitle(errorPullImageList, "dep errorPullImageList") utils.BeautifulPrintListWithTitle(errorGzipImageList, "dep errorGzipImageList") - } func TestLoadSplitGzipImageToTargetHarbor(t *testing.T) { - errorLoadImageNameList, errorPushImageNameList := LoadSplitGzipImageToTargetHarbor("cqga", OfflineDeployHarborHost) + errorLoadImageNameList, errorPushImageNameList := LoadSplitCmiiGzipImageToTargetHarbor("xmyd", DirectPushDeployHarborHost) utils.BeautifulPrintListWithTitle(errorLoadImageNameList, "errorLoadImageNameList") utils.BeautifulPrintListWithTitle(errorPushImageNameList, "errorPushImageNameList") @@ -43,3 +43,15 @@ func TestLoadSplitDepGzipImageToTargetHarbor(t *testing.T) { utils.BeautifulPrintListWithTitle(errorLoadImageNameList, "errorLoadImageNameList") utils.BeautifulPrintListWithTitle(errorPushImageNameList, "errorPushImageNameList") } + +func TestImageSyncEntity_PullFromEntityAndSyncConditionally(t *testing.T) { + imageSyncEntity := ImageSyncEntity{ + ProjectVersion: "5.4.0", + DirectHarborHost: "36.134.71.138", + } + + imageSyncResult := imageSyncEntity.PullFromEntityAndSyncConditionally() + + utils.BeautifulPrint(imageSyncResult) + +} diff --git a/cmii_operator/actual_project/proxy_project/linux/socks5_linux_amd64 b/cmii_operator/actual_project/proxy_project/linux/socks5_linux_amd64 index 71cb666..93bca07 100644 Binary files a/cmii_operator/actual_project/proxy_project/linux/socks5_linux_amd64 and b/cmii_operator/actual_project/proxy_project/linux/socks5_linux_amd64 differ diff --git a/cmii_operator/actual_project/zyga/operator.go b/cmii_operator/actual_project/zyga/operator.go index 7b2256d..120263b 100644 --- a/cmii_operator/actual_project/zyga/operator.go +++ b/cmii_operator/actual_project/zyga/operator.go @@ -1,6 +1,7 @@ package main import ( + "wdd.io/agent-go/utils" "wdd.io/cmii_operator" ) @@ -37,87 +38,87 @@ func main() { //} // restart all backend - cmii_operator.RestartCmiiBackendDeployment(realNamespace) + //cmii_operator.RestartCmiiBackendDeployment(realNamespace) //cmii_operator.RestartCmiiFrontendDeployment(realNamespace) - //backMap := map[string]string{ - // "cmii-admin-data": "5.4.0", - // "cmii-admin-gateway": "5.4.0", - // "cmii-admin-user": "5.4.0", - // "cmii-app-release": "4.2.0-validation", - // "cmii-open-gateway": "5.4.0", - // "cmii-suav-supervision": "5.2.0", - // "cmii-uav-airspace": "5.4.0", - // "cmii-uav-alarm": "5.4.0", - // "cmii-uav-autowaypoint": "4.1.6-cm", - // "cmii-uav-brain": "5.4.0", - // "cmii-uav-cloud-live": "5.4.0", - // "cmii-uav-clusters": "5.2.0", - // "cmii-uav-cms": "5.3.0", - // "cmii-uav-data-post-process": "5.4.0", - // "cmii-uav-depotautoreturn": "5.4.0", - // "cmii-uav-developer": "5.4.0", - // "cmii-uav-device": "5.4.0-25916", - // "cmii-uav-emergency": "5.3.0", - // "cmii-uav-gateway": "5.4.0", - // "cmii-uav-gis-server": "5.4.0", - // "cmii-uav-grid-datasource": "5.2.0-24810", - // "cmii-uav-grid-engine": "5.1.0", - // "cmii-uav-grid-manage": "5.1.0", - // "cmii-uav-industrial-portfolio": "5.4.0-27348-1", - // "cmii-uav-integration": "5.4.0-25916", - // "cmii-uav-kpi-monitor": "5.4.0", - // "cmii-uav-logger": "5.4.0", - // "cmii-uav-material-warehouse": "5.4.0", - // "cmii-uav-mission": "5.4.0-26462-0307", - // "cmii-uav-mqtthandler": "5.4.0-25916", - // "cmii-uav-multilink": "5.4.0", - // "cmii-uav-notice": "5.4.0", - // "cmii-uav-oauth": "5.4.0", - // "cmii-uav-process": "5.4.0", - // "cmii-uav-surveillance": "5.4.0-25916", - // "cmii-uav-threedsimulation": "5.1.0", - // "cmii-uav-tower": "5.4.0", - // "cmii-uav-user": "5.4.0", - // "cmii-uav-waypoint": "5.4.0-26768", - //} + backMap := map[string]string{ + //"cmii-admin-data": "5.4.0", + //"cmii-admin-gateway": "5.4.0", + //"cmii-admin-user": "5.4.0", + //"cmii-app-release": "4.2.0-validation", + //"cmii-open-gateway": "5.4.0", + //"cmii-suav-supervision": "5.2.0", + //"cmii-uav-airspace": "5.4.0", + //"cmii-uav-alarm": "5.4.0", + //"cmii-uav-autowaypoint": "4.1.6-cm", + //"cmii-uav-brain": "5.4.0", + //"cmii-uav-cloud-live": "5.4.0", + //"cmii-uav-clusters": "5.2.0", + //"cmii-uav-cms": "5.3.0", + //"cmii-uav-data-post-process": "5.4.0", + //"cmii-uav-depotautoreturn": "5.4.0", + //"cmii-uav-developer": "5.4.0", + //"cmii-uav-device": "5.4.0-25916", + //"cmii-uav-emergency": "5.3.0", + //"cmii-uav-gateway": "5.4.0", + //"cmii-uav-gis-server": "5.4.0", + //"cmii-uav-grid-datasource": "5.2.0-24810", + //"cmii-uav-grid-engine": "5.1.0", + //"cmii-uav-grid-manage": "5.1.0", + //"cmii-uav-industrial-portfolio": "5.4.0-27348-1", + //"cmii-uav-integration": "5.4.0-25916", + //"cmii-uav-kpi-monitor": "5.4.0", + //"cmii-uav-logger": "5.4.0", + //"cmii-uav-material-warehouse": "5.4.0", + //"cmii-uav-mission": "5.4.0-26462-0307", + //"cmii-uav-mqtthandler": "5.4.0-25916", + //"cmii-uav-multilink": "5.4.0", + //"cmii-uav-notice": "5.4.0", + //"cmii-uav-oauth": "5.4.0", + //"cmii-uav-process": "5.4.0", + "cmii-uav-surveillance": "5.4.0-leaflet", + //"cmii-uav-threedsimulation": "5.1.0", + //"cmii-uav-tower": "5.4.0", + //"cmii-uav-user": "5.4.0", + //"cmii-uav-waypoint": "5.4.0-26768", + } // - //frontMap := map[string]string{ - // "cmii-suav-platform-supervision": "5.4.0", - // "cmii-suav-platform-supervisionh5": "5.4.0", - // "cmii-uav-platform": "5.4.0-25263", - // "cmii-uav-platform-ai-brain": "5.4.0", - // "cmii-uav-platform-armypeople": "5.4.0", - // "cmii-uav-platform-base": "5.4.0", - // "cmii-uav-platform-cms-portal": "5.4.0", - // "cmii-uav-platform-detection": "5.4.0", - // "cmii-uav-platform-emergency-rescue": "5.2.0", - // "cmii-uav-platform-hljtt": "5.3.0-hjltt", - // "cmii-uav-platform-jiangsuwenlv": "4.1.3-jiangsu-0427", - // "cmii-uav-platform-logistics": "5.4.0", - // "cmii-uav-platform-media": "5.4.0", - // "cmii-uav-platform-multiterminal": "5.4.0", - // "cmii-uav-platform-mws": "5.4.0", - // "cmii-uav-platform-oms": "5.4.0", - // "cmii-uav-platform-open": "5.4.0", - // "cmii-uav-platform-qingdao": "4.1.6-24238-qingdao", - // "cmii-uav-platform-qinghaitourism": "4.1.0-21377-0508", - // "cmii-uav-platform-security": "4.1.6", - // "cmii-uav-platform-securityh5": "5.4.0", - // "cmii-uav-platform-seniclive": "5.2.0", - // "cmii-uav-platform-share": "5.4.0", - // "cmii-uav-platform-splice": "5.4.0", - // "cmii-uav-platform-threedsimulation": "5.2.0-21392", - // "cmii-uav-platform-visualization": "5.2.0", - //} + frontMap := map[string]string{ + "cmii-uav-platform": "5.4.0-leaflet", + //"cmii-suav-platform-supervision": "5.4.0", + //"cmii-suav-platform-supervisionh5": "5.4.0", + //"cmii-uav-platform-ai-brain": "5.4.0", + //"cmii-uav-platform-armypeople": "5.4.0", + //"cmii-uav-platform-base": "5.4.0", + //"cmii-uav-platform-cms-portal": "5.4.0", + //"cmii-uav-platform-detection": "5.4.0", + //"cmii-uav-platform-emergency-rescue": "5.2.0", + //"cmii-uav-platform-hljtt": "5.3.0-hjltt", + //"cmii-uav-platform-jiangsuwenlv": "4.1.3-jiangsu-0427", + //"cmii-uav-platform-logistics": "5.4.0", + //"cmii-uav-platform-media": "5.4.0", + //"cmii-uav-platform-multiterminal": "5.4.0", + //"cmii-uav-platform-mws": "5.4.0", + //"cmii-uav-platform-oms": "5.4.0", + //"cmii-uav-platform-open": "5.4.0", + //"cmii-uav-platform-qingdao": "4.1.6-24238-qingdao", + //"cmii-uav-platform-qinghaitourism": "4.1.0-21377-0508", + //"cmii-uav-platform-security": "4.1.6", + //"cmii-uav-platform-securityh5": "5.4.0", + //"cmii-uav-platform-seniclive": "5.2.0", + //"cmii-uav-platform-share": "5.4.0", + //"cmii-uav-platform-splice": "5.4.0", + //"cmii-uav-platform-threedsimulation": "5.2.0-21392", + //"cmii-uav-platform-visualization": "5.2.0", + } // - //cmii_operator.CmiiOperator = k8sOperator + cmii_operator.CmiiOperator = k8sOperator // - //result := cmii_operator.UpdateCmiiImageTagFromNameTagMap(realNamespace, backMap) - //utils.BeautifulPrint(result) - // - //result = cmii_operator.UpdateCmiiImageTagFromNameTagMap(realNamespace, frontMap) - //utils.BeautifulPrint(result) + result := cmii_operator.UpdateCmiiImageTagFromNameTagMap(realNamespace, backMap) + utils.BeautifulPrint(result) + + result = cmii_operator.UpdateCmiiImageTagFromNameTagMap(realNamespace, frontMap) + utils.BeautifulPrint(result) } diff --git a/cmii_operator/image/CmiiDependencyImageConfig.go b/cmii_operator/image/CmiiDependencyImageConfig.go index 1b1a57f..61a4742 100644 --- a/cmii_operator/image/CmiiDependencyImageConfig.go +++ b/cmii_operator/image/CmiiDependencyImageConfig.go @@ -25,6 +25,7 @@ var MiddlewareAmd64 = []string{ "nginx:1.21.3", "redis:6.0.20-alpine", "dyrnq/nfs-subdir-external-provisioner:v4.0.2", + "jerrychina2020/rke-tools:v0.175-linux", "busybox:latest", } @@ -85,7 +86,6 @@ var Rancher1204Amd64 = []string{ "rancher/rancher-webhook:v0.1.0-beta9", "rancher/rancher:v2.5.7", "rancher/rke-tools:v0.1.72", - "jerrychina2020/rke-tools:v0.175-linux", "rancher/security-scan:v0.1.14", "rancher/security-scan:v0.2.2", "rancher/shell:v0.1.6", diff --git a/cmii_operator/image/CmiiImageSync.go b/cmii_operator/image/CmiiImageSync.go index 40261e9..761fa1b 100644 --- a/cmii_operator/image/CmiiImageSync.go +++ b/cmii_operator/image/CmiiImageSync.go @@ -17,6 +17,7 @@ import ( "strings" "wdd.io/agent-go/executor" "wdd.io/agent-go/logger" + "wdd.io/agent-go/utils" ) var apiClient = newClient() @@ -109,7 +110,7 @@ func Delete(imageName string) []types.ImageDeleteResponseItem { func PruneAllCmiiImages() (errorRemoveImageNameList []string) { - apiClient.ImagesPrune(context.TODO(), filters.Args{}) + _, _ = apiClient.ImagesPrune(context.TODO(), filters.Args{}) imageGetAll := GetAll() @@ -134,6 +135,8 @@ func PruneAllCmiiImages() (errorRemoveImageNameList []string) { } } + _, _ = apiClient.ImagesPrune(context.TODO(), filters.Args{}) + return errorRemoveImageNameList } @@ -175,11 +178,15 @@ func PushToOctopusKindHarbor(targetImageName string) (pushResult io.ReadCloser) return pushResult } +// TagFromListAndPushToCHarbor 需要支持 harbor.cdcyy.cn ip:8033 rancher/rancher:v2.5.7 nginx:latest func TagFromListAndPushToCHarbor(referenceImageList []string, targetHarborHost string) (errorPushImageNameList []string) { for _, imageName := range referenceImageList { + // check image + // harbor.cdcyy.cn cmiiImageFullName := imageName + if strings.HasPrefix(imageName, "cmii") { cmiiImageFullName = CmiiHarborPrefix + imageName } @@ -190,7 +197,10 @@ func TagFromListAndPushToCHarbor(referenceImageList []string, targetHarborHost s } if strings.Contains(imageName, "/") { + // imageName = strings.Split(imageName, "/")[1] + } else { + } targetImageName := targetHarborHost + ":8033/" + targetProject + "/" + imageName @@ -232,14 +242,14 @@ func PullFromCmiiHarbor(imageName string) (pullResult io.ReadCloser) { return pullResult } -func ImagePullFromCmiiHarborByMap(imageVersionMap map[string]string, silentMode bool) (errorPullImageList []string) { +func PullFromCmiiHarborByMap(imageVersionMap map[string]string, silentMode bool) (fullImageNameList, errorPullImageList []string) { - fullImageNameList := ConvertCMiiImageMapToList(imageVersionMap) - return ImagePullFromFullNameList(fullImageNameList) + fullImageNameList = ConvertCMiiImageMapToList(imageVersionMap) + return fullImageNameList, PullFromFullNameList(fullImageNameList) } -func ImagePullCMiiFromFileJson(filePathName string) { +func PullCmiiFromFileJson(filePathName string) { readFile, err := os.ReadFile(filePathName) if err != nil { @@ -274,7 +284,8 @@ func ImagePullCMiiFromFileJson(filePathName string) { } -func ImagePullFromFullNameList(fullImageNameList []string) (errorPullImageList []string) { +// PullFromFullNameList 根据镜像名列表拉取全部的镜像 +func PullFromFullNameList(fullImageNameList []string) (errorPullImageList []string) { for _, dep := range fullImageNameList { @@ -301,7 +312,7 @@ func ImagePullFromFullNameList(fullImageNameList []string) (errorPullImageList [ func PullFromListAndCompressSplit(fullImageNameList []string, gzipFolder string) (errorPullImageList, errorGzipImageList []string) { - errorPullImageList = ImagePullFromFullNameList(fullImageNameList) + errorPullImageList = PullFromFullNameList(fullImageNameList) // generate a project folder err := os.MkdirAll(gzipFolder, os.ModeDir) @@ -311,16 +322,22 @@ func PullFromListAndCompressSplit(fullImageNameList []string, gzipFolder string) } } + var tarGzipFileNameList []string + for _, image := range fullImageNameList { + if !SaveToTarGZ(image, gzipFolder) { errorGzipImageList = append(errorGzipImageList, image) + continue } + tarGzipFileNameList = append(tarGzipFileNameList, convertImageGzipFileName(image)) } + utils.BeautifulPrintListWithTitle(tarGzipFileNameList, "image gzip name list") return errorPullImageList, errorGzipImageList } -func ImageLoadFromFile(gzipFullPath string) bool { +func LoadFromGzipFilePath(gzipFullPath string) bool { openFile, err := os.OpenFile(gzipFullPath, 0, fs.ModePerm) if err != nil { log.ErrorF("[ImageLoadFromFile] - failed to open file %s, error is %s", gzipFullPath, err.Error()) @@ -344,7 +361,7 @@ func ImageLoadFromFile(gzipFullPath string) bool { return true } -func ImageLoadFromFolderPath(folderPath string) (errorLoadImageNameList []string) { +func LoadFromFolderPath(folderPath string) (errorLoadImageNameList []string) { if !strings.HasSuffix(folderPath, "/") { folderPath += "/" } @@ -358,7 +375,7 @@ func ImageLoadFromFolderPath(folderPath string) (errorLoadImageNameList []string // load gzip file for _, dirEntry := range dirEntries { if strings.HasSuffix(dirEntry.Name(), ".tar.gz") { - if !ImageLoadFromFile(folderPath + dirEntry.Name()) { + if !LoadFromGzipFilePath(folderPath + dirEntry.Name()) { errorLoadImageNameList = append(errorLoadImageNameList, folderPath+dirEntry.Name()) } } @@ -385,6 +402,7 @@ func SaveToTarGZ(targetImageName, folderPathPrefix string) bool { for _, repoTag := range imageGetByName.RepoTags { if !strings.Contains(repoTag, "8033") { realImageTag = repoTag + break } } @@ -393,9 +411,9 @@ func SaveToTarGZ(targetImageName, folderPathPrefix string) bool { folderPathPrefix += "/" } _ = os.MkdirAll(folderPathPrefix, os.ModeDir) + gzipImageFile = folderPathPrefix + gzipImageFile log.InfoF("[ImageSaveToTarGZ] - start to save [%s] to [%s]", realImageTag, gzipImageFile) - _ = os.Remove(gzipImageFile) tarFile, err := os.Create(gzipImageFile) if err != nil { @@ -420,9 +438,19 @@ func SaveToTarGZ(targetImageName, folderPathPrefix string) bool { return true } -// convertImageGzipFileName 必须输出长度完全一致的内容 +// convertImageGzipFileName 必须输出长度为4的内容 =出现得次数为3 func convertImageGzipFileName(imageRepoTag string) (gzipFileName string) { + // harbor.cdcyy.cn/cmii/cmii-uav-platform:5.4.0 ==> cmlc=cmii=cmii-uav-platform=5.4.0.tar.gz + // rancher/fleet:v0.3.4 + + // ossr/srs:v5.0.1 ==> docker=cmii=srs=v5.0.1.tar.gz + // nginx:latest + // bitnami/minio:2022.5.4 + // simonrupf/chronyd:0.4.3 + + // 10.1.1.1:8033/cmii/ok:1.2 不支持 不允许存在 + split := strings.Split(imageRepoTag, ":") //log.DebugF(" %s to %s", imageRepoTag, split) if len(split) == 1 { @@ -433,28 +461,23 @@ func convertImageGzipFileName(imageRepoTag string) (gzipFileName string) { first := strings.Split(split[0], "/") //log.DebugF(" split[0] %s to %s", split[0], first) if len(first) == 3 { - - if strings.Contains(first[0], "cdcyy") { - gzipFileName += "cmlc=" + // harbor.cdcyy.cn/cmii/cmii-uav-platform:5.4.0 + // docker.io/ossr/srs:v5.0.1 + if strings.HasPrefix(split[0], CmiiHarborPrefix) { + gzipFileName += "cmlc=cmii=" } else { - gzipFileName += "docker=" + gzipFileName += "docker=cmii=" } - - gzipFileName += first[1] - gzipFileName += "=" gzipFileName += first[2] gzipFileName += "=" } else if len(first) == 4 { - if strings.Contains(first[0], "cdcyy") { - gzipFileName += "cmlc=" - } else { - gzipFileName += "docker=" + // harbor.cdcyy.cn/cmii/ossr/srs:v5.0.1 + if !strings.HasPrefix(split[0], CmiiHarborPrefix) { + return imageRepoTag } - - gzipFileName += first[1] - gzipFileName += "=" - gzipFileName += first[2] + gzipFileName += "cmlc=cmii=" + gzipFileName += first[3] gzipFileName += "=" } else if len(first) == 2 { // bitnami/redis @@ -465,7 +488,7 @@ func convertImageGzipFileName(imageRepoTag string) (gzipFileName string) { gzipFileName += first[1] gzipFileName += "=" } else if len(first) == 1 { - // nginx + // nginx:latest return "docker=library=" + split[0] + "=" + split[1] + ".tar.gz" } diff --git a/cmii_operator/image/CmiiImageSync_test.go b/cmii_operator/image/CmiiImageSync_test.go index c7a12a4..4a32c70 100644 --- a/cmii_operator/image/CmiiImageSync_test.go +++ b/cmii_operator/image/CmiiImageSync_test.go @@ -100,7 +100,7 @@ func TestImagePushToOctopusKindHarbor(t *testing.T) { } func TestImageLoadFromFile(t *testing.T) { - loadFromFile := ImageLoadFromFile("/root/octopus_image/cqga/cqga/cmlc=cmii=cmii-uav-user=5.2.0.tar.gz") + loadFromFile := LoadFromGzipFilePath("/root/octopus_image/cqga/cqga/cmlc=cmii=cmii-uav-user=5.2.0.tar.gz") assert.Equal(t, loadFromFile, true, "image load error !") } @@ -117,20 +117,12 @@ func TestConvertImageGzipFileName(t *testing.T) { test := []string{ "bitnami/redis:6.2.6-debian-10-r0", - "bitnami/mysql:8.1.0-debian-11-r42", "simonrupf/chronyd:0.4.3", - "bitnami/bitnami-shell:11-debian-11-r136", "harbor.cdcyy.com.cn/cmii/cmii-rtsp-operator:v4.1.0", "harbor.cdcyy.com.cn/cmii/ossrs/srs:v4.0.136", - "bitnami/rabbitmq:3.9.12-debian-10-r3", "ossrs/srs:v4.0.136", - "emqx/emqx:4.2.12", - "nacos/nacos-server:v2.1.2", "mongo:5.0", "bitnami/minio:2023.5.4", - "kubernetesui/metrics-scraper:v1.0.4", - "redis:6.0.20-alpine", - "dyrnq/nfs-subdir-external-provisioner:v4.0.2", "busybox:latest", "busybox", } diff --git a/cmii_operator/image/image_sync.sh b/cmii_operator/image/image_sync.sh index 3d0c62e..3511088 100644 --- a/cmii_operator/image/image_sync.sh +++ b/cmii_operator/image/image_sync.sh @@ -6,29 +6,29 @@ cmii_image_list=( docker=ossrs=srs=v4.0.136.tar.gz ) middle_image_list=( - cmlc=cmii=nfs-subdir-external-provisioner=v4.0.2.tar.gz - docker=busybox=latest.tar.gz - cmlc=cmii=srs=v4.0-r3.tar.gz - docker=emqx=emqx=4.2.12.tar.gz docker=bitnami=bitnami-shell=10-debian-10-r140.tar.gz docker=kubernetesui=dashboard=v2.0.1.tar.gz docker=bitnami=bitnami-shell=11-debian-11-r136.tar.gz docker=kubernetesui=metrics-scraper=v1.0.4.tar.gz docker=bitnami=minio=2022.5.4.tar.gz - docker=mongo=5.0.tar.gz + docker=library=busybox=latest.tar.gz docker=bitnami=minio=2023.5.4.tar.gz - docker=nacos=nacos-server=v2.1.2-slim.tar.gz + docker=library=mongo=5.0.tar.gz docker=bitnami=mysql=8.0.35-debian-11-r1.tar.gz - docker=nginx=1.21.3.tar.gz + docker=library=nginx=1.21.3.tar.gz docker=bitnami=mysql=8.1.0-debian-11-r42.tar.gz - docker=ossrs=srs=v4.0.136.tar.gz + docker=library=rabbitmq=3.9-management.tar.gz docker=bitnami=rabbitmq=3.11.26-debian-11-r2.tar.gz - docker=ossrs=srs=v5.0.195.tar.gz + docker=library=redis=6.0.20-alpine.tar.gz docker=bitnami=rabbitmq=3.9.12-debian-10-r3.tar.gz - docker=rabbitmq=3.9-management.tar.gz + docker=nacos=nacos-server=v2.1.2-slim.tar.gz docker=bitnami=redis=6.2.14-debian-11-r1.tar.gz - docker=redis=6.0.20-alpine.tar.gz + docker=ossrs=srs=v4.0.136.tar.gz docker=bitnami=redis=6.2.6-debian-10-r0.tar.gz + docker=ossrs=srs=v4.0-r3.tar.gz + docker=dyrnq=nfs-subdir-external-provisioner=v4.0.2.tar.gz + docker=ossrs=srs=v5.0.195.tar.gz + docker=emqx=emqx=4.2.12.tar.gz docker=simonrupf=chronyd=0.4.3.tar.gz ) rke_image_list=( @@ -161,19 +161,20 @@ image_load_to_harbor() { echo done - # for image in "${middle_image_list[@]}"; do - # echo "start to load => $image" - # docker load <"$image" - # echo "" - # local app_name_prefix=$(echo $image | cut -d "=" -f2) - # local app_name=$(echo $image | cut -d "=" -f3) - # local ccc=$(echo $image | cut -d "=" -f4) - # local app_tag="${ccc%.tar.gz}" - # echo "from $app_name_prefix/$app_name:$app_tag ==> $target_harbor_host/rancher/$app_name:$app_tag" - # echo "start to push => $target_harbor_host/rancher/$app_name:$app_tag" - # docker login -u admin -p V2ryStr@ngPss $target_harbor_host - # docker push "$target_harbor_host/rancher/$app_name:$app_tag" - # done +for image in "${middle_image_list[@]}"; do + echo "start to load => $image" + docker load <"$image" + echo "" + # docker=bitnami=redis=6.2.14-debian-11-r1.tar.gz + local app_name_prefix=$(echo $image | cut -d "=" -f2) + local app_name=$(echo $image | cut -d "=" -f3) + local ccc=$(echo $image | cut -d "=" -f4) + local app_tag="${ccc%.tar.gz}" + echo "from $app_name_prefix/$app_name:$app_tag ==> $target_harbor_host/cmii/$app_name:$app_tag" + echo "start to push => $target_harbor_host/cmii/$app_name:$app_tag" + docker login -u admin -p V2ryStr@ngPss $target_harbor_host + docker push "$target_harbor_host/cmii/$app_name:$app_tag" +done } diff --git a/cmii_operator/log/cmii-update-log.txt b/cmii_operator/log/cmii-update-log.txt index f46c941..e6423ef 100644 --- a/cmii_operator/log/cmii-update-log.txt +++ b/cmii_operator/log/cmii-update-log.txt @@ -109,3 +109,5 @@ 2024-03-08-14-15-41 zyga cmii-uav-platform-share 8033/cmii/cmii-uav-platform-share5.4.0 2024-03-08-14-15-55 zyga cmii-uav-platform-multiterminal 8033/cmii/cmii-uav-platform-multiterminal5.4.0 2024-03-08-15-16-14 uavcloud-demo cmii-uav-platform 5.4.0-25263 5.4.0 +2024-03-11-11-20-15 zyga cmii-uav-surveillance 5.4.0 5.4.0-leaflet +2024-03-11-15-42-15 uavcloud-demo cmii-uav-platform 5.4.0 5.4.0-25263-0311 diff --git a/common/pom.xml b/common/pom.xml index 54f8af6..42aee4a 100644 --- a/common/pom.xml +++ b/common/pom.xml @@ -12,7 +12,7 @@ io.wdd common - common + common common diff --git a/pom.xml b/pom.xml index 6009b66..8694b94 100644 --- a/pom.xml +++ b/pom.xml @@ -16,7 +16,7 @@ pom 1.0.0 - ProjectOctopus + ProjectOctopus ProjectOctopus diff --git a/server/pom.xml b/server/pom.xml index 4c05f32..0175795 100644 --- a/server/pom.xml +++ b/server/pom.xml @@ -11,7 +11,7 @@ server - server + server server diff --git a/server/src/main/resources/bootstrap.yml-back b/server/src/main/resources/bootstrap.yml-back index c98f222..768d1fd 100644 --- a/server/src/main/resources/bootstrap.yml-back +++ b/server/src/main/resources/bootstrap.yml-back @@ -1,6 +1,6 @@ spring: application: - name: octopus-server + allCmiiImageName: octopus-server profiles: active: local cloud: diff --git a/server/src/main/resources/mapper/ScriptSchedulerMapper.xml b/server/src/main/resources/mapper/ScriptSchedulerMapper.xml index 42ac1dc..39c6ad9 100644 --- a/server/src/main/resources/mapper/ScriptSchedulerMapper.xml +++ b/server/src/main/resources/mapper/ScriptSchedulerMapper.xml @@ -6,7 +6,7 @@ - + @@ -21,7 +21,8 @@ - scheduler_uuid,name,cron_express, + scheduler_uuid + ,allCmiiImageName,cron_express, description,script_content,target_machine, last_execution_id,last_execution_result_key,last_execution_status, create_time,update_time,next_schedule_time, diff --git a/server/src/test/java/io/wdd/server/func/TestBaseFuncScheduler.java b/server/src/test/java/io/wdd/server/func/TestBaseFuncScheduler.java index 8d7682f..cef8a6e 100644 --- a/server/src/test/java/io/wdd/server/func/TestBaseFuncScheduler.java +++ b/server/src/test/java/io/wdd/server/func/TestBaseFuncScheduler.java @@ -48,15 +48,15 @@ public class TestBaseFuncScheduler { // Long projectServerId = 1722453318596550657L;// lappro // Long projectServerId = 1752602668144975873L;// cqlyj // Long projectServerId = 1764575895186030593L;// 上海雷视联动 -// Long projectServerId = 1765290465066692610L;// 吉林移动 - Long projectServerId = 1765654823726669826L;// 资阳公安 + Long projectServerId = 1765290465066692610L;// 吉林移动 +// Long projectServerId = 1765654823726669826L;// 资阳公安 projectDeployContext.setProjectId(projectServerId); // String masterNodeServerName = "Shanghai-amd64-09"; // cgga -// String masterNodeServerName = "Chengdu-amd64-51"; // lap pro - String masterNodeServerName = "Ziyang-amd64-61"; // 资阳公安 + String masterNodeServerName = "Chengdu-amd64-51"; // 吉林移动 +// String masterNodeServerName = "Ziyang-amd64-61"; // 资阳公安 ProjectServerVO projectServerVO = coreProjectServerService.projectServerOne(projectServerId); Map> collect = projectServerVO.getBindingServerList().stream().collect( @@ -123,15 +123,15 @@ public class TestBaseFuncScheduler { // AppFunctionEnum.DEPLOY_K8S_DASHBOARD, // AppFunctionEnum.DEPLOY_NFS, // AppFunctionEnum.DEPLOY_TEST_NFS -// AppFunctionEnum.DEPLOY_K8S_NAMESPACE, -// AppFunctionEnum.DEPLOY_K8S_PVC, -// AppFunctionEnum.DEPLOY_K8S_MYSQL, -// AppFunctionEnum.DEPLOY_K8S_REDIS, -// AppFunctionEnum.DEPLOY_K8S_MIDDLEWARES + AppFunctionEnum.DEPLOY_K8S_NAMESPACE, + AppFunctionEnum.DEPLOY_K8S_PVC, + AppFunctionEnum.DEPLOY_K8S_MYSQL, + AppFunctionEnum.DEPLOY_K8S_REDIS, + AppFunctionEnum.DEPLOY_K8S_MIDDLEWARES // AppFunctionEnum.DEPLOY_INGRESS, // AppFunctionEnum.DEPLOY_FRONTEND // AppFunctionEnum.DEPLOY_BACKEND - AppFunctionEnum.DEPLOY_K8S_SRS +// AppFunctionEnum.DEPLOY_K8S_SRS ); projectDeployContext.setMasterAppProcedure(appFunctionEnumList); diff --git a/setting-aliyun.xml b/setting-aliyun.xml index 7ec0915..c1654fe 100644 --- a/setting-aliyun.xml +++ b/setting-aliyun.xml @@ -111,7 +111,7 @@ under the License. aliyunmaven * - 阿里云公共仓库 + 阿里云公共仓库 https://maven.aliyun.com/repository/public @@ -208,7 +208,7 @@ under the License. jdk14 - Repository for JDK 1.4 builds + Repository for JDK 1.4 builds http://www.myhost.com/maven/jdk14 default always @@ -241,7 +241,7 @@ under the License. - target-env + target-env devFilght diff --git a/socks5_txthinking/main.go b/socks5_txthinking/main.go index 5d68257..711bf7e 100644 --- a/socks5_txthinking/main.go +++ b/socks5_txthinking/main.go @@ -11,7 +11,7 @@ func main() { fmt.Println("start socks5 server error must provide listen port !") return } - if len(os.Args) > 3 { + if len(os.Args) > 4 { fmt.Println("start socks5 server error !") return } diff --git a/source/pom.xml b/source/pom.xml index b6466dc..8fdfb7f 100644 --- a/source/pom.xml +++ b/source/pom.xml @@ -13,7 +13,7 @@ io.wdd source - source + source UTF-8 diff --git a/source/src/main/java/io/wdd/source/bitnamiredisshell/bitnami-redis-6.2/Dockerfile b/source/src/main/java/io/wdd/source/bitnamiredisshell/bitnami-redis-6.2/Dockerfile index f8f1938..6235f96 100644 --- a/source/src/main/java/io/wdd/source/bitnamiredisshell/bitnami-redis-6.2/Dockerfile +++ b/source/src/main/java/io/wdd/source/bitnamiredisshell/bitnami-redis-6.2/Dockerfile @@ -4,7 +4,7 @@ ARG TARGETARCH LABEL org.opencontainers.image.authors="https://bitnami.com/contact" \ org.opencontainers.image.description="Application packaged by Bitnami" \ - org.opencontainers.image.ref.name="6.2.8-debian-11-r0" \ + org.opencontainers.image.ref.allCmiiImageName="6.2.8-debian-11-r0" \ org.opencontainers.image.source="https://github.com/bitnami/containers/tree/main/bitnami/redis" \ org.opencontainers.image.title="redis" \ org.opencontainers.image.vendor="VMware, Inc." \ diff --git a/source/src/main/java/io/wdd/source/bitnamiredisshell/bitnami-redis-6.2/prebuildfs/opt/bitnami/licenses/licenses.txt b/source/src/main/java/io/wdd/source/bitnamiredisshell/bitnami-redis-6.2/prebuildfs/opt/bitnami/licenses/licenses.txt index c76ba31..de7a9d6 100644 --- a/source/src/main/java/io/wdd/source/bitnamiredisshell/bitnami-redis-6.2/prebuildfs/opt/bitnami/licenses/licenses.txt +++ b/source/src/main/java/io/wdd/source/bitnamiredisshell/bitnami-redis-6.2/prebuildfs/opt/bitnami/licenses/licenses.txt @@ -1,3 +1,3 @@ Bitnami containers ship with software bundles. You can find the licenses under: /opt/bitnami/nami/COPYING -/opt/bitnami/[name-of-bundle]/licenses/[bundle-version].txt +/opt/bitnami/[allCmiiImageName-of-bundle]/licenses/[bundle-version].txt diff --git a/source/src/main/java/io/wdd/wdd_server.sql b/source/src/main/java/io/wdd/wdd_server.sql index e89a06a..2eabebe 100644 --- a/source/src/main/java/io/wdd/wdd_server.sql +++ b/source/src/main/java/io/wdd/wdd_server.sql @@ -67,7 +67,7 @@ INSERT INTO `app_info` VALUES (1596765526292430849, 'appName_obevz', 'appInfo_ut DROP TABLE IF EXISTS `appdomain_info`; CREATE TABLE `appdomain_info` ( `app_domain_id` bigint NOT NULL, - `app_domain_name` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NULL DEFAULT NULL COMMENT 'app associated domain name', + `app_domain_name` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NULL DEFAULT NULL COMMENT 'app associated domain allCmiiImageName', `app_domain_port` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NULL DEFAULT NULL COMMENT 'app domain port', `domain_id` bigint NULL DEFAULT NULL COMMENT 'app associated domain_info id', `create_time` datetime(0) NULL DEFAULT NULL, @@ -89,13 +89,13 @@ DROP TABLE IF EXISTS `domain_info`; CREATE TABLE `domain_info` ( `domain_id` bigint NOT NULL, `domain_name` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NULL DEFAULT NULL COMMENT 'complete domain url', - `domain_provider` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NULL DEFAULT NULL COMMENT 'domain provider name', + `domain_provider` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NULL DEFAULT NULL COMMENT 'domain provider allCmiiImageName', `register_time` datetime(0) NULL DEFAULT NULL, `expire_time` datetime(0) NULL DEFAULT NULL, `create_time` datetime(0) NULL DEFAULT NULL, `update_time` datetime(0) NULL DEFAULT NULL, `dns_ip` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NULL DEFAULT NULL COMMENT 'the dns record to the server ip', - `dns_provider` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NULL DEFAULT NULL COMMENT 'domain dns provider name', + `dns_provider` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NULL DEFAULT NULL COMMENT 'domain dns provider allCmiiImageName', `dns_type` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NULL DEFAULT NULL COMMENT 'dns type for A AAAA CNAME\r\n', `dns_manage_api` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NULL DEFAULT NULL, `is_delete` tinyint NULL DEFAULT 0, @@ -195,8 +195,8 @@ CREATE TABLE `server_domain_relation` ( DROP TABLE IF EXISTS `server_info`; CREATE TABLE `server_info` ( `server_id` bigint UNSIGNED NOT NULL AUTO_INCREMENT COMMENT 'server primary key', - `topic_name` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NULL DEFAULT NULL COMMENT 'octopus message unique key name', - `server_name` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NOT NULL COMMENT 'server host name', + `topic_name` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NULL DEFAULT NULL COMMENT 'octopus message unique key allCmiiImageName', + `server_name` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NOT NULL COMMENT 'server host allCmiiImageName', `server_ip_pb_v4` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NULL DEFAULT NULL COMMENT 'server public ipv4\r\n', `server_ip_in_v4` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NULL DEFAULT NULL COMMENT 'server inner ipv4\r\n', `server_ip_pb_v6` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NULL DEFAULT NULL COMMENT 'server public ipv6\r\n',