From a6c4eaa537014cf18d8deaf0abc936daac3f7284 Mon Sep 17 00:00:00 2001
From: lvzk <897706680@qq.com>
Date: Sat, 19 Apr 2025 22:39:35 +0800
Subject: [PATCH 1/2] =?UTF-8?q?[=E5=8A=9F=E8=83=BD]=E5=8F=91=E5=B8=83?=
=?UTF-8?q?=E6=94=AF=E6=8C=81=E8=93=9D=E7=BB=BF=E6=89=A7=E8=A1=8C=E7=AD=96?=
=?UTF-8?q?=E7=95=A5=20#[1402157146800128]=E5=8F=91=E5=B8=83=E6=94=AF?=
=?UTF-8?q?=E6=8C=81=E8=93=9D=E7=BB=BF=E6=89=A7=E8=A1=8C=E7=AD=96=E7=95=A5?=
=?UTF-8?q?=20http://192.168.0.96:8090/demo/rdm.html#/story-detail/9390509?=
=?UTF-8?q?47543040/939050947543042/1402157146800128?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
.../env/GetDeployAppConfigEnvInfoApi.java | 26 +++++-
.../api/bluegreen/SaveBlueGreenApi.java | 82 +++++++++++++++++
.../bluegreen/SaveInstanceBlueGreenApi.java | 77 ++++++++++++++++
.../api/bluegreen/SearchBlueGreenApi.java | 87 ++++++++++++++++++
.../dao/mapper/DeployBlueGreenMapper.java | 49 ++++++++++
.../dao/mapper/DeployBlueGreenMapper.xml | 89 +++++++++++++++++++
.../type/DeployJobSourceTypeHandler.java | 52 ++++++++++-
.../changelog/2025-04-19/neatlogic_tenant.sql | 25 ++++++
.../resources/deploy/sqlscript/dml.sql | 5 +-
9 files changed, 487 insertions(+), 5 deletions(-)
create mode 100644 src/main/java/neatlogic/module/deploy/api/bluegreen/SaveBlueGreenApi.java
create mode 100644 src/main/java/neatlogic/module/deploy/api/bluegreen/SaveInstanceBlueGreenApi.java
create mode 100644 src/main/java/neatlogic/module/deploy/api/bluegreen/SearchBlueGreenApi.java
create mode 100644 src/main/java/neatlogic/module/deploy/dao/mapper/DeployBlueGreenMapper.java
create mode 100644 src/main/java/neatlogic/module/deploy/dao/mapper/DeployBlueGreenMapper.xml
create mode 100644 src/main/resources/neatlogic/resources/deploy/changelog/2025-04-19/neatlogic_tenant.sql
diff --git a/src/main/java/neatlogic/module/deploy/api/appconfig/env/GetDeployAppConfigEnvInfoApi.java b/src/main/java/neatlogic/module/deploy/api/appconfig/env/GetDeployAppConfigEnvInfoApi.java
index 3da3c014..d428352e 100644
--- a/src/main/java/neatlogic/module/deploy/api/appconfig/env/GetDeployAppConfigEnvInfoApi.java
+++ b/src/main/java/neatlogic/module/deploy/api/appconfig/env/GetDeployAppConfigEnvInfoApi.java
@@ -15,6 +15,7 @@ along with this program. If not, see .*/
package neatlogic.module.deploy.api.appconfig.env;
+import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import com.alibaba.nacos.common.utils.CollectionUtils;
@@ -29,11 +30,13 @@ import neatlogic.framework.deploy.auth.DEPLOY_BASE;
import neatlogic.framework.deploy.dto.app.DeployAppConfigEnvDBConfigVo;
import neatlogic.framework.deploy.dto.app.DeployAppEnvAutoConfigKeyValueVo;
import neatlogic.framework.deploy.dto.app.DeployAppEnvAutoConfigVo;
+import neatlogic.framework.deploy.dto.app.DeployInstanceBlueGreenVo;
import neatlogic.framework.deploy.dto.instance.DeployInstanceVersionVo;
import neatlogic.framework.restful.annotation.*;
import neatlogic.framework.restful.constvalue.OperationTypeEnum;
import neatlogic.framework.restful.core.privateapi.PrivateApiComponentBase;
import neatlogic.module.deploy.dao.mapper.DeployAppConfigMapper;
+import neatlogic.module.deploy.dao.mapper.DeployBlueGreenMapper;
import neatlogic.module.deploy.dao.mapper.DeployInstanceVersionMapper;
import neatlogic.module.deploy.dao.mapper.DeployResourceMapper;
import org.springframework.stereotype.Service;
@@ -64,6 +67,9 @@ public class GetDeployAppConfigEnvInfoApi extends PrivateApiComponentBase {
@Resource
private DeployResourceMapper deployResourceMapper;
+ @Resource
+ private DeployBlueGreenMapper blueGreenMapper;
+
@Override
public String getToken() {
return "deploy/app/config/env/info/get";
@@ -110,7 +116,7 @@ public class GetDeployAppConfigEnvInfoApi extends PrivateApiComponentBase {
Map versionMap = instanceVersionVoList.stream().collect(Collectors.toMap(DeployInstanceVersionVo::getResourceId, e -> e));
JSONArray instanceArray = new JSONArray();
for (ResourceVo resourceVo : instanceList) {
- JSONObject instanceObj = (JSONObject) JSONObject.toJSON(resourceVo);
+ JSONObject instanceObj = (JSONObject) JSON.toJSON(resourceVo);
instanceObj.put("version", versionMap.containsKey(resourceVo.getId()) ? versionMap.get(resourceVo.getId()).getVersion() : "");
instanceObj.put("instanceVersion", versionMap.get(resourceVo.getId()));
instanceArray.add(instanceObj);
@@ -133,6 +139,24 @@ public class GetDeployAppConfigEnvInfoApi extends PrivateApiComponentBase {
autoConfigVo.setInstanceIp(instanceResourceVo.getIp());
autoConfigVo.setInstancePort(instanceResourceVo.getPort());
}
+
+ //补充蓝绿
+ List instanceBlueGreenVos = blueGreenMapper.listInstanceBlueGreen(paramObj.getLong("appSystemId"), paramObj.getLong("appModuleId"), paramObj.getLong("envId"), instanceIdList);
+ if(CollectionUtils.isNotEmpty(instanceBlueGreenVos)){
+ Map deployInstanceBlueGreenVoMap = instanceBlueGreenVos.stream().collect(Collectors.toMap(DeployInstanceBlueGreenVo::getResourceId, e->e));
+ JSONArray instanceArray = envInfo.getJSONArray("instanceList");
+ if(CollectionUtils.isNotEmpty(instanceArray)){
+ for (int i = 0; i < instanceArray.size(); i++) {
+ JSONObject instanceJson = instanceArray.getJSONObject(i);
+ DeployInstanceBlueGreenVo deployInstanceBlueGreenVo = deployInstanceBlueGreenVoMap.get(instanceJson.getLong("id"));
+ if(deployInstanceBlueGreenVo != null) {
+ instanceJson.put("blueGreenId", deployInstanceBlueGreenVo.getBlueGreenId());
+ instanceJson.put("blueGreenName", deployInstanceBlueGreenVo.getBlueGreenName());
+ }
+ }
+ }
+
+ }
}
/*获取DB配置,核实dbResourceId是否存在,不存在则删除关系*/
diff --git a/src/main/java/neatlogic/module/deploy/api/bluegreen/SaveBlueGreenApi.java b/src/main/java/neatlogic/module/deploy/api/bluegreen/SaveBlueGreenApi.java
new file mode 100644
index 00000000..58bc6dbe
--- /dev/null
+++ b/src/main/java/neatlogic/module/deploy/api/bluegreen/SaveBlueGreenApi.java
@@ -0,0 +1,82 @@
+/*
+ * Copyright (C) 2025 深圳极向量科技有限公司 All Rights Reserved.
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see .
+ */
+package neatlogic.module.deploy.api.bluegreen;
+
+import com.alibaba.fastjson.JSON;
+import com.alibaba.fastjson.JSONObject;
+import neatlogic.framework.auth.core.AuthAction;
+import neatlogic.framework.common.constvalue.ApiParamType;
+import neatlogic.framework.deploy.auth.DEPLOY_BASE;
+import neatlogic.framework.deploy.dto.app.DeployBlueGreenVo;
+import neatlogic.framework.restful.annotation.Description;
+import neatlogic.framework.restful.annotation.Input;
+import neatlogic.framework.restful.annotation.OperationType;
+import neatlogic.framework.restful.annotation.Param;
+import neatlogic.framework.restful.constvalue.OperationTypeEnum;
+import neatlogic.framework.restful.core.privateapi.PrivateApiComponentBase;
+import neatlogic.module.deploy.dao.mapper.DeployBlueGreenMapper;
+import org.springframework.stereotype.Service;
+
+import javax.annotation.Resource;
+
+/**
+ * @author longrf
+ * @date 2022/12/8 14:42
+ */
+
+@Service
+@AuthAction(action = DEPLOY_BASE.class)
+@OperationType(type = OperationTypeEnum.SEARCH)
+public class SaveBlueGreenApi extends PrivateApiComponentBase {
+
+ @Resource
+ DeployBlueGreenMapper deployBlueGreenMapper;
+
+ @Override
+ public String getName() {
+ return "nmdab.savebluegreenapi.getname";
+ }
+
+ @Override
+ public String getToken() {
+ return "deploy/bluegreen/save";
+ }
+
+ @Override
+ public String getConfig() {
+ return null;
+ }
+
+ @Input({
+ @Param(name = "id", type = ApiParamType.LONG, desc = "id"),
+ @Param(name = "name", type = ApiParamType.STRING, desc = "common.name", isRequired = true, xss = true),
+ @Param(name = "sort", type = ApiParamType.INTEGER, desc = "common.sort", isRequired = true),
+ @Param(name = "isActive", type = ApiParamType.INTEGER, desc = "common.isactive", isRequired = true),
+ })
+ @Description(desc = "nmdab.savebluegreenapi.getname")
+ @Override
+ public Object myDoService(JSONObject paramObj) throws Exception {
+ Long id = paramObj.getLong("id");
+ DeployBlueGreenVo blueGreenVo = JSON.toJavaObject(paramObj, DeployBlueGreenVo.class);
+ if(id != null){
+ deployBlueGreenMapper.updateBlueGreen(blueGreenVo);
+ }else{
+ deployBlueGreenMapper.insertBlueGreen(blueGreenVo);
+ }
+ return null;
+ }
+}
diff --git a/src/main/java/neatlogic/module/deploy/api/bluegreen/SaveInstanceBlueGreenApi.java b/src/main/java/neatlogic/module/deploy/api/bluegreen/SaveInstanceBlueGreenApi.java
new file mode 100644
index 00000000..a174cc00
--- /dev/null
+++ b/src/main/java/neatlogic/module/deploy/api/bluegreen/SaveInstanceBlueGreenApi.java
@@ -0,0 +1,77 @@
+/*
+ * Copyright (C) 2025 深圳极向量科技有限公司 All Rights Reserved.
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see .
+ */
+package neatlogic.module.deploy.api.bluegreen;
+
+import com.alibaba.fastjson.JSON;
+import com.alibaba.fastjson.JSONObject;
+import neatlogic.framework.auth.core.AuthAction;
+import neatlogic.framework.common.constvalue.ApiParamType;
+import neatlogic.framework.deploy.auth.DEPLOY_BASE;
+import neatlogic.framework.deploy.dto.app.DeployInstanceBlueGreenVo;
+import neatlogic.framework.restful.annotation.Description;
+import neatlogic.framework.restful.annotation.Input;
+import neatlogic.framework.restful.annotation.OperationType;
+import neatlogic.framework.restful.annotation.Param;
+import neatlogic.framework.restful.constvalue.OperationTypeEnum;
+import neatlogic.framework.restful.core.privateapi.PrivateApiComponentBase;
+import neatlogic.module.deploy.dao.mapper.DeployBlueGreenMapper;
+import org.springframework.stereotype.Service;
+
+import javax.annotation.Resource;
+
+/**
+ * @author longrf
+ * @date 2022/12/8 14:42
+ */
+
+@Service
+@AuthAction(action = DEPLOY_BASE.class)
+@OperationType(type = OperationTypeEnum.SEARCH)
+public class SaveInstanceBlueGreenApi extends PrivateApiComponentBase {
+
+ @Resource
+ DeployBlueGreenMapper deployBlueGreenMapper;
+
+ @Override
+ public String getName() {
+ return "nmdab.saveinstancebluegreenapi.getname";
+ }
+
+ @Override
+ public String getToken() {
+ return "deploy/app/instance/bluegreen/save";
+ }
+
+ @Override
+ public String getConfig() {
+ return null;
+ }
+
+ @Input({
+ @Param(name = "appSystemId", type = ApiParamType.LONG, desc = "应用id", isRequired = true),
+ @Param(name = "appModuleId", type = ApiParamType.LONG, desc = "模块id", isRequired = true),
+ @Param(name = "envId", type = ApiParamType.LONG, desc = "环境id", isRequired = true),
+ @Param(name = "resourceId", type = ApiParamType.LONG, desc = "实例id", isRequired = true),
+ @Param(name = "blueGreenId", type = ApiParamType.LONG, desc = "蓝绿id", isRequired = true)
+ })
+ @Description(desc = "nmdab.saveinstancebluegreenapi.getname")
+ @Override
+ public Object myDoService(JSONObject paramObj) throws Exception {
+ DeployInstanceBlueGreenVo instanceBlueGreenVo = JSON.toJavaObject(paramObj, DeployInstanceBlueGreenVo.class);
+ return deployBlueGreenMapper.insertInstanceBlueGreen(instanceBlueGreenVo);
+ }
+}
diff --git a/src/main/java/neatlogic/module/deploy/api/bluegreen/SearchBlueGreenApi.java b/src/main/java/neatlogic/module/deploy/api/bluegreen/SearchBlueGreenApi.java
new file mode 100644
index 00000000..0944410a
--- /dev/null
+++ b/src/main/java/neatlogic/module/deploy/api/bluegreen/SearchBlueGreenApi.java
@@ -0,0 +1,87 @@
+/*
+ * Copyright (C) 2025 深圳极向量科技有限公司 All Rights Reserved.
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see .
+ */
+package neatlogic.module.deploy.api.bluegreen;
+
+import com.alibaba.fastjson.JSONObject;
+import neatlogic.framework.auth.core.AuthAction;
+import neatlogic.framework.common.constvalue.ApiParamType;
+import neatlogic.framework.deploy.auth.DEPLOY_BASE;
+import neatlogic.framework.deploy.dto.app.DeployBlueGreenVo;
+import neatlogic.framework.deploy.dto.type.DeployTypeVo;
+import neatlogic.framework.restful.annotation.*;
+import neatlogic.framework.restful.constvalue.OperationTypeEnum;
+import neatlogic.framework.restful.core.privateapi.PrivateApiComponentBase;
+import neatlogic.framework.util.TableResultUtil;
+import neatlogic.module.deploy.dao.mapper.DeployBlueGreenMapper;
+import org.springframework.stereotype.Service;
+
+import javax.annotation.Resource;
+import java.util.ArrayList;
+import java.util.List;
+
+/**
+ * @author longrf
+ * @date 2022/12/8 14:42
+ */
+
+@Service
+@AuthAction(action = DEPLOY_BASE.class)
+@OperationType(type = OperationTypeEnum.SEARCH)
+public class SearchBlueGreenApi extends PrivateApiComponentBase {
+
+ @Resource
+ DeployBlueGreenMapper deployBlueGreenMapper;
+
+ @Override
+ public String getName() {
+ return "nmdab.searchbluegreenapi.getname";
+ }
+
+ @Override
+ public String getToken() {
+ return "deploy/bluegreen/search";
+ }
+
+ @Override
+ public String getConfig() {
+ return null;
+ }
+
+ @Input({
+ @Param(name = "keyword", type = ApiParamType.STRING, desc = "nmdab.searchbluegreenapi.input.param.desc.keyword", xss = true),
+ @Param(name = "isActive", type = ApiParamType.INTEGER, desc = "nmdab.searchbluegreenapi.input.param.desc.isactive"),
+ @Param(name = "currentPage", type = ApiParamType.INTEGER, desc = "common.currentpage"),
+ @Param(name = "pageSize", type = ApiParamType.INTEGER, desc = "nmdab.searchbluegreenapi.input.param.desc.pagesize"),
+ @Param(name = "needPage", type = ApiParamType.BOOLEAN, desc = "nmdab.searchbluegreenapi.input.param.desc.needpage")
+ })
+ @Output({
+ @Param(name = "tbodyList", type = ApiParamType.JSONARRAY, explode = DeployTypeVo[].class),
+ @Param(explode = DeployBlueGreenVo.class)
+ })
+ @Description(desc = "nmdab.searchbluegreenapi.getname")
+ @Override
+ public Object myDoService(JSONObject paramObj) throws Exception {
+ DeployBlueGreenVo deployBlueGreenVo = paramObj.toJavaObject(DeployBlueGreenVo.class);
+ List deployBlueGreenList = new ArrayList<>();
+ int rowNum = deployBlueGreenMapper.getBlueGreenCount(deployBlueGreenVo);
+ if (rowNum > 0) {
+ deployBlueGreenVo.setRowNum(rowNum);
+ deployBlueGreenList = deployBlueGreenMapper.searchBlueGreen(deployBlueGreenVo);
+ }
+ return TableResultUtil.getResult(deployBlueGreenList, deployBlueGreenVo);
+ }
+}
diff --git a/src/main/java/neatlogic/module/deploy/dao/mapper/DeployBlueGreenMapper.java b/src/main/java/neatlogic/module/deploy/dao/mapper/DeployBlueGreenMapper.java
new file mode 100644
index 00000000..83dbc8a7
--- /dev/null
+++ b/src/main/java/neatlogic/module/deploy/dao/mapper/DeployBlueGreenMapper.java
@@ -0,0 +1,49 @@
+/*
+ * Copyright (C) 2025 深圳极向量科技有限公司 All Rights Reserved.
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see .
+ */
+package neatlogic.module.deploy.dao.mapper;
+
+import neatlogic.framework.deploy.dto.app.DeployBlueGreenVo;
+import neatlogic.framework.deploy.dto.app.DeployInstanceBlueGreenVo;
+import neatlogic.framework.deploy.dto.app.DeployJobPhaseNodeBlueGreenVo;
+import org.apache.ibatis.annotations.Param;
+
+import java.util.List;
+
+/**
+ * @author longrf
+ * @date 2022/12/8 15:07
+ */
+
+public interface DeployBlueGreenMapper {
+
+
+ Integer getBlueGreenCount(DeployBlueGreenVo deployBlueGreenVo);
+
+ List searchBlueGreen(DeployBlueGreenVo deployBlueGreenVo);
+
+ Integer updateBlueGreen(DeployBlueGreenVo deployBlueGreenVo);
+
+ Integer insertBlueGreen(DeployBlueGreenVo deployBlueGreenVo);
+
+ Integer insertInstanceBlueGreen(DeployInstanceBlueGreenVo instanceBlueGreenVo);
+
+ List listInstanceBlueGreen(@Param("appSystemId") Long appSystemId, @Param("appModuleId") Long appModuleId, @Param("envId") Long envId, @Param("resourceIdList") List instanceIdList);
+
+ void insertDeployJobPhaseNodeBlueGreen(List deployJobPhaseNodeBlueGreenVos);
+
+ void deleteJobPhaseNodeBlueGreenByJobPhaseIdAndUpdateTag(Long jobPhaseId, Long updateTag);
+}
diff --git a/src/main/java/neatlogic/module/deploy/dao/mapper/DeployBlueGreenMapper.xml b/src/main/java/neatlogic/module/deploy/dao/mapper/DeployBlueGreenMapper.xml
new file mode 100644
index 00000000..fc31059c
--- /dev/null
+++ b/src/main/java/neatlogic/module/deploy/dao/mapper/DeployBlueGreenMapper.xml
@@ -0,0 +1,89 @@
+
+
+
+
+
+
+
+
+
+
+
+ update `deploy_blue_green` set `name` = #{name},`is_active` = #{isActive}
+ where `id` = #{id}
+
+
+
+ insert into `deploy_blue_green` (`id`, `name`, `sort`, `is_active`)
+ values (#{id}, #{name}, #{sort}, #{isActive})
+
+
+ insert into `deploy_app_instance_blue_green` (`app_system_id`, `app_module_id`, `env_id`, `resource_id`,
+ `blue_green_id`)
+ values (#{appSystemId}, #{appModuleId}, #{envId}, #{resourceId}, #{blueGreenId})
+ on duplicate key
+ update `blue_green_id` = #{blueGreenId}
+
+
+
+ insert into `deploy_job_phase_node_blue_green`(`job_id`,
+ `job_phase_id`,`job_phase_node_id`,`blue_green_id`,`update_tag`)
+ values
+
+ (#{jobId}, #{jobPhaseId},#{jobPhaseNodeId},#{blueGreenId},#{updateTag})
+
+ on duplicate key
+ update `blue_green_id` = VALUES(`blue_green_id`),
+ `update_tag` = VALUES(`update_tag`)
+
+
+
+ DELETE
+ FROM `deploy_job_phase_node_blue_green`
+ where `job_phase_id` = #{jobPhaseId}
+ and `update_tag` != #{updateTag}
+
+
\ No newline at end of file
diff --git a/src/main/java/neatlogic/module/deploy/job/source/type/DeployJobSourceTypeHandler.java b/src/main/java/neatlogic/module/deploy/job/source/type/DeployJobSourceTypeHandler.java
index e9505c71..59e1d261 100644
--- a/src/main/java/neatlogic/module/deploy/job/source/type/DeployJobSourceTypeHandler.java
+++ b/src/main/java/neatlogic/module/deploy/job/source/type/DeployJobSourceTypeHandler.java
@@ -46,9 +46,7 @@ import neatlogic.framework.deploy.auth.BATCHDEPLOY_MODIFY;
import neatlogic.framework.deploy.auth.DEPLOY_MODIFY;
import neatlogic.framework.deploy.auth.core.DeployAppAuthChecker;
import neatlogic.framework.deploy.constvalue.*;
-import neatlogic.framework.deploy.dto.app.DeployAppConfigAuthorityActionVo;
-import neatlogic.framework.deploy.dto.app.DeployPipelineConfigVo;
-import neatlogic.framework.deploy.dto.app.DeployProfileVo;
+import neatlogic.framework.deploy.dto.app.*;
import neatlogic.framework.deploy.dto.instance.DeployInstanceVersionVo;
import neatlogic.framework.deploy.dto.job.DeployJobContentVo;
import neatlogic.framework.deploy.dto.job.DeployJobVo;
@@ -114,6 +112,9 @@ public class DeployJobSourceTypeHandler extends AutoexecJobSourceTypeHandlerBase
@Resource
DeployInstanceVersionMapper deployInstanceVersionMapper;
+ @Resource
+ DeployBlueGreenMapper deployBlueGreenMapper;
+
@Override
public String getName() {
return JobSourceType.DEPLOY.getValue();
@@ -753,6 +754,11 @@ public class DeployJobSourceTypeHandler extends AutoexecJobSourceTypeHandlerBase
Long appModuleId = deployJobVo.getAppModuleId();
Long envId = deployJobVo.getEnvId();
List instanceIdList = jobPhaseNodeVoList.stream().map(AutoexecJobPhaseNodeVo::getResourceId).filter(Objects::nonNull).collect(Collectors.toList());
+ List deployInstanceBlueGreenVos = deployBlueGreenMapper.listInstanceBlueGreen(deployJobVo.getAppSystemId(), deployJobVo.getAppModuleId(), deployJobVo.getEnvId(), instanceIdList);
+ Map deployInstanceBlueGreenVoMap = new HashMap<>();
+ if (CollectionUtils.isNotEmpty(deployInstanceBlueGreenVos)) {
+ deployInstanceBlueGreenVoMap = deployInstanceBlueGreenVos.stream().collect(Collectors.toMap(DeployInstanceBlueGreenVo::getResourceId, e -> e));
+ }
if (CollectionUtils.isNotEmpty(instanceIdList)) {
List instanceVersionVoList = deployInstanceVersionMapper.getDeployInstanceVersionByEnvIdAndInstanceIdList(appSystemId, appModuleId, envId, instanceIdList);
Map versionMap = instanceVersionVoList.stream().collect(Collectors.toMap(DeployInstanceVersionVo::getResourceId, e -> e));
@@ -764,10 +770,50 @@ public class DeployJobSourceTypeHandler extends AutoexecJobSourceTypeHandlerBase
}
extraInfo.put("version", versionMap.containsKey(jobPhaseNodeVo.getResourceId()) ? versionMap.get(jobPhaseNodeVo.getResourceId()).getVersion() : "");
extraInfo.put("instanceVersion", versionMap.get(jobPhaseNodeVo.getResourceId()));
+
+ DeployInstanceBlueGreenVo deployInstanceBlueGreenVo = deployInstanceBlueGreenVoMap.get(jobPhaseNodeVo.getResourceId());
+ if (deployInstanceBlueGreenVo != null) {
+ extraInfo.put("blueGreenId", deployInstanceBlueGreenVo.getBlueGreenId());
+ extraInfo.put("blueGreenName", deployInstanceBlueGreenVo.getBlueGreenName());
+ }
jobPhaseNodeVo.setExtraInfo(extraInfo);
}
}
}
}
}
+
+ @Override
+ public void handleAddJobPhaseNodeEvent(AutoexecJobVo jobVo, List autoexecJobPhaseNodeVos, String userName, Long protocolId, Long updateTag) {
+ //补充作业节点蓝绿关系
+ if (CollectionUtils.isNotEmpty(autoexecJobPhaseNodeVos)) {
+ DeployJobVo deployJobVo = deployJobMapper.getDeployJobByJobId(jobVo.getId());
+ List resourceIdList = autoexecJobPhaseNodeVos.stream().map(AutoexecJobPhaseNodeVo::getResourceId).collect(Collectors.toList());
+ List deployInstanceBlueGreenVos = deployBlueGreenMapper.listInstanceBlueGreen(deployJobVo.getAppSystemId(), deployJobVo.getAppModuleId(), deployJobVo.getEnvId(), resourceIdList);
+ if (CollectionUtils.isNotEmpty(deployInstanceBlueGreenVos)) {
+ Map deployInstanceBlueGreenVoMap = deployInstanceBlueGreenVos.stream().collect(Collectors.toMap(DeployInstanceBlueGreenVo::getResourceId, e -> e));
+ List deployJobPhaseNodeBlueGreenVos = new ArrayList<>();
+ for (AutoexecJobPhaseNodeVo autoexecJobPhaseNodeVo : autoexecJobPhaseNodeVos) {
+ DeployJobPhaseNodeBlueGreenVo blueGreenVo = new DeployJobPhaseNodeBlueGreenVo();
+ blueGreenVo.setJobId(jobVo.getId());
+ blueGreenVo.setJobPhaseId(jobVo.getCurrentPhase().getId());
+ blueGreenVo.setJobPhaseNodeId(autoexecJobPhaseNodeVo.getNodeId());
+ blueGreenVo.setUpdateTag(updateTag);
+ DeployInstanceBlueGreenVo instanceBlueGreenVo = deployInstanceBlueGreenVoMap.get(autoexecJobPhaseNodeVo.getResourceId());
+ if (instanceBlueGreenVo != null) {
+ blueGreenVo.setBlueGreenId(instanceBlueGreenVo.getBlueGreenId());
+ deployJobPhaseNodeBlueGreenVos.add(blueGreenVo);
+ }
+ }
+ if (CollectionUtils.isNotEmpty(deployJobPhaseNodeBlueGreenVos)) {
+ deployBlueGreenMapper.insertDeployJobPhaseNodeBlueGreen(deployJobPhaseNodeBlueGreenVos);
+ }
+ }
+ }
+ }
+
+ @Override
+ public void handleDeleteJobPhaseNodeEvent(Long jobPhaseId, Long updateTag) {
+ deployBlueGreenMapper.deleteJobPhaseNodeBlueGreenByJobPhaseIdAndUpdateTag(jobPhaseId, updateTag);
+ }
}
diff --git a/src/main/resources/neatlogic/resources/deploy/changelog/2025-04-19/neatlogic_tenant.sql b/src/main/resources/neatlogic/resources/deploy/changelog/2025-04-19/neatlogic_tenant.sql
new file mode 100644
index 00000000..cb77cfb4
--- /dev/null
+++ b/src/main/resources/neatlogic/resources/deploy/changelog/2025-04-19/neatlogic_tenant.sql
@@ -0,0 +1,25 @@
+CREATE TABLE IF NOT EXISTS `deploy_blue_green` (
+ `id` bigint NOT NULL COMMENT 'id',
+ `name` varchar(50) NULL COMMENT '姓名',
+ `sort` integer NULL COMMENT '排序',
+ `is_active` tinyint(1) NULL DEFAULT 1 COMMENT '是否激活',
+ PRIMARY KEY (`id`),
+ UNIQUE INDEX `uniqu`(`id`)
+) COMMENT = '发布蓝绿表';
+
+CREATE TABLE IF NOT EXISTS `deploy_app_instance_blue_green` (
+ `id` bigint NOT NULL COMMENT 'id',
+ `app_system_id` bigint NULL COMMENT '系统id',
+ `app_module_id` bigint NULL COMMENT '模块id',
+ `env_id` bigint NULL COMMENT '环境id',
+ `resource_id` bigint NULL COMMENT '实例id',
+ `blue_green_id` bigint NULL COMMENT '蓝绿id',
+ PRIMARY KEY (`id`, `app_system_id`, `app_module_id`, `env_id`, `resource_id`) USING BTREE
+) COMMENT = '发布实例蓝绿关系表';
+
+
+CREATE TABLE IF NOT EXISTS `deploy_job_phase_node_blue_green` (
+ `job_phase_node_id` bigint NOT NULL COMMENT '作业节点ID',
+ `blue_green_id` bigint NOT NULL COMMENT '蓝绿ID',
+ PRIMARY KEY (`job_phase_node_id`, `blue_green_id`)
+) COMMENT = '发布作业蓝绿id';
\ No newline at end of file
diff --git a/src/main/resources/neatlogic/resources/deploy/sqlscript/dml.sql b/src/main/resources/neatlogic/resources/deploy/sqlscript/dml.sql
index f0720d03..92476650 100644
--- a/src/main/resources/neatlogic/resources/deploy/sqlscript/dml.sql
+++ b/src/main/resources/neatlogic/resources/deploy/sqlscript/dml.sql
@@ -9,4 +9,7 @@ insert ignore into `deploy_type_status`(`type_id`,`is_active`) values (477316643
insert ignore into `deploy_type_status`(`type_id`,`is_active`) values (477317977612288,1);
insert ignore into `deploy_type_status`(`type_id`,`is_active`) values (477319286235136,1);
insert ignore into `deploy_type_status`(`type_id`,`is_active`) values (651160662843392,1);
-insert ignore into `deploy_type_status`(`type_id`,`is_active`) values (681687327449088,1);
\ No newline at end of file
+insert ignore into `deploy_type_status`(`type_id`,`is_active`) values (681687327449088,1);
+
+insert ignore into `deploy_blue_green`(`id`,`name`,`sort`,`is_active`) values (1,'蓝',1,1);
+insert ignore into `deploy_blue_green`(`id`,`name`,`sort`,`is_active`) values (2,'绿',2,1);
\ No newline at end of file
--
Gitee
From efa7d976a86cdeb98fedfd02118c4ad0779a4f2e Mon Sep 17 00:00:00 2001
From: lvzk <897706680@qq.com>
Date: Mon, 21 Apr 2025 16:25:46 +0800
Subject: [PATCH 2/2] =?UTF-8?q?[=E5=8A=9F=E8=83=BD]=E5=8F=91=E5=B8=83?=
=?UTF-8?q?=E6=94=AF=E6=8C=81=E8=93=9D=E7=BB=BF=E6=89=A7=E8=A1=8C=E7=AD=96?=
=?UTF-8?q?=E7=95=A5=20#[1402157146800128]=E5=8F=91=E5=B8=83=E6=94=AF?=
=?UTF-8?q?=E6=8C=81=E8=93=9D=E7=BB=BF=E6=89=A7=E8=A1=8C=E7=AD=96=E7=95=A5?=
=?UTF-8?q?=20http://192.168.0.96:8090/demo/rdm.html#/story-detail/9390509?=
=?UTF-8?q?47543040/939050947543042/1402157146800128?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
.../env/GetDeployAppConfigEnvInfoApi.java | 38 ++++++++-------
.../dao/mapper/DeployBlueGreenMapper.java | 6 ++-
.../dao/mapper/DeployBlueGreenMapper.xml | 17 +++++--
.../type/DeployJobSourceTypeHandler.java | 46 ++++++++++++++++---
4 files changed, 76 insertions(+), 31 deletions(-)
diff --git a/src/main/java/neatlogic/module/deploy/api/appconfig/env/GetDeployAppConfigEnvInfoApi.java b/src/main/java/neatlogic/module/deploy/api/appconfig/env/GetDeployAppConfigEnvInfoApi.java
index d428352e..32af5576 100644
--- a/src/main/java/neatlogic/module/deploy/api/appconfig/env/GetDeployAppConfigEnvInfoApi.java
+++ b/src/main/java/neatlogic/module/deploy/api/appconfig/env/GetDeployAppConfigEnvInfoApi.java
@@ -39,11 +39,13 @@ import neatlogic.module.deploy.dao.mapper.DeployAppConfigMapper;
import neatlogic.module.deploy.dao.mapper.DeployBlueGreenMapper;
import neatlogic.module.deploy.dao.mapper.DeployInstanceVersionMapper;
import neatlogic.module.deploy.dao.mapper.DeployResourceMapper;
+import org.apache.commons.collections4.MapUtils;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import javax.annotation.Resource;
import java.util.ArrayList;
+import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.stream.Collectors;
@@ -108,17 +110,31 @@ public class GetDeployAppConfigEnvInfoApi extends PrivateApiComponentBase {
//获取实例autoConfig
if (CollectionUtils.isNotEmpty(instanceIdList)) {
-
List instanceList = deployResourceMapper.getAppInstanceResourceListByIdList(instanceIdList);
// 补充实例当前版本信息
List instanceVersionVoList = deployInstanceVersionMapper.getDeployInstanceVersionByEnvIdAndInstanceIdList(envAutoConfigVo.getAppSystemId(), envAutoConfigVo.getAppModuleId(), envAutoConfigVo.getEnvId(), instanceIdList);
+ //补充蓝绿
+ Map deployInstanceBlueGreenVoMap = new HashMap<>();
+ Map versionMap = new HashMap<>();
+ List instanceBlueGreenVos = blueGreenMapper.listInstanceBlueGreen(paramObj.getLong("appSystemId"), paramObj.getLong("appModuleId"), paramObj.getLong("envId"), instanceIdList);
+ if (CollectionUtils.isNotEmpty(instanceBlueGreenVos)) {
+ deployInstanceBlueGreenVoMap = instanceBlueGreenVos.stream().collect(Collectors.toMap(DeployInstanceBlueGreenVo::getResourceId, e -> e));
+ }
if (CollectionUtils.isNotEmpty(instanceVersionVoList)) {
- Map versionMap = instanceVersionVoList.stream().collect(Collectors.toMap(DeployInstanceVersionVo::getResourceId, e -> e));
+ versionMap = instanceVersionVoList.stream().collect(Collectors.toMap(DeployInstanceVersionVo::getResourceId, e -> e));
+ }
+ if (MapUtils.isNotEmpty(deployInstanceBlueGreenVoMap) || MapUtils.isNotEmpty(versionMap)) {
JSONArray instanceArray = new JSONArray();
for (ResourceVo resourceVo : instanceList) {
JSONObject instanceObj = (JSONObject) JSON.toJSON(resourceVo);
instanceObj.put("version", versionMap.containsKey(resourceVo.getId()) ? versionMap.get(resourceVo.getId()).getVersion() : "");
instanceObj.put("instanceVersion", versionMap.get(resourceVo.getId()));
+ DeployInstanceBlueGreenVo deployInstanceBlueGreenVo = deployInstanceBlueGreenVoMap.get(instanceObj.getLong("id"));
+ if (deployInstanceBlueGreenVo != null) {
+ instanceObj.put("blueGreenId", deployInstanceBlueGreenVo.getBlueGreenId());
+ instanceObj.put("blueGreenName", deployInstanceBlueGreenVo.getBlueGreenName());
+ instanceObj.put("blueGreenSort", deployInstanceBlueGreenVo.getBlueGreenSort());
+ }
instanceArray.add(instanceObj);
}
envInfo.put("instanceList", instanceArray);
@@ -139,24 +155,6 @@ public class GetDeployAppConfigEnvInfoApi extends PrivateApiComponentBase {
autoConfigVo.setInstanceIp(instanceResourceVo.getIp());
autoConfigVo.setInstancePort(instanceResourceVo.getPort());
}
-
- //补充蓝绿
- List instanceBlueGreenVos = blueGreenMapper.listInstanceBlueGreen(paramObj.getLong("appSystemId"), paramObj.getLong("appModuleId"), paramObj.getLong("envId"), instanceIdList);
- if(CollectionUtils.isNotEmpty(instanceBlueGreenVos)){
- Map deployInstanceBlueGreenVoMap = instanceBlueGreenVos.stream().collect(Collectors.toMap(DeployInstanceBlueGreenVo::getResourceId, e->e));
- JSONArray instanceArray = envInfo.getJSONArray("instanceList");
- if(CollectionUtils.isNotEmpty(instanceArray)){
- for (int i = 0; i < instanceArray.size(); i++) {
- JSONObject instanceJson = instanceArray.getJSONObject(i);
- DeployInstanceBlueGreenVo deployInstanceBlueGreenVo = deployInstanceBlueGreenVoMap.get(instanceJson.getLong("id"));
- if(deployInstanceBlueGreenVo != null) {
- instanceJson.put("blueGreenId", deployInstanceBlueGreenVo.getBlueGreenId());
- instanceJson.put("blueGreenName", deployInstanceBlueGreenVo.getBlueGreenName());
- }
- }
- }
-
- }
}
/*获取DB配置,核实dbResourceId是否存在,不存在则删除关系*/
diff --git a/src/main/java/neatlogic/module/deploy/dao/mapper/DeployBlueGreenMapper.java b/src/main/java/neatlogic/module/deploy/dao/mapper/DeployBlueGreenMapper.java
index 83dbc8a7..6f7a4ec1 100644
--- a/src/main/java/neatlogic/module/deploy/dao/mapper/DeployBlueGreenMapper.java
+++ b/src/main/java/neatlogic/module/deploy/dao/mapper/DeployBlueGreenMapper.java
@@ -43,7 +43,9 @@ public interface DeployBlueGreenMapper {
List listInstanceBlueGreen(@Param("appSystemId") Long appSystemId, @Param("appModuleId") Long appModuleId, @Param("envId") Long envId, @Param("resourceIdList") List instanceIdList);
- void insertDeployJobPhaseNodeBlueGreen(List deployJobPhaseNodeBlueGreenVos);
+ List listDeployJobPhaseNodeBlueGreen(@Param("list")List jobNodeList);
- void deleteJobPhaseNodeBlueGreenByJobPhaseIdAndUpdateTag(Long jobPhaseId, Long updateTag);
+ void insertDeployJobPhaseNodeBlueGreen(@Param("list") List deployJobPhaseNodeBlueGreenVos);
+
+ void deleteJobPhaseNodeBlueGreenByJobPhaseIdAndUpdateTag(@Param("jobPhaseId") Long jobPhaseId,@Param("updateTag") Long updateTag);
}
diff --git a/src/main/java/neatlogic/module/deploy/dao/mapper/DeployBlueGreenMapper.xml b/src/main/java/neatlogic/module/deploy/dao/mapper/DeployBlueGreenMapper.xml
index fc31059c..05d35903 100644
--- a/src/main/java/neatlogic/module/deploy/dao/mapper/DeployBlueGreenMapper.xml
+++ b/src/main/java/neatlogic/module/deploy/dao/mapper/DeployBlueGreenMapper.xml
@@ -39,7 +39,7 @@
+
+
update `deploy_blue_green` set `name` = #{name},`is_active` = #{isActive}
where `id` = #{id}
@@ -72,8 +83,8 @@
insert into `deploy_job_phase_node_blue_green`(`job_id`,
`job_phase_id`,`job_phase_node_id`,`blue_green_id`,`update_tag`)
values
-
- (#{jobId}, #{jobPhaseId},#{jobPhaseNodeId},#{blueGreenId},#{updateTag})
+
+ (#{nodeBlueGreen.jobId}, #{nodeBlueGreen.jobPhaseId},#{nodeBlueGreen.jobPhaseNodeId},#{nodeBlueGreen.blueGreenId},#{nodeBlueGreen.updateTag})
on duplicate key
update `blue_green_id` = VALUES(`blue_green_id`),
diff --git a/src/main/java/neatlogic/module/deploy/job/source/type/DeployJobSourceTypeHandler.java b/src/main/java/neatlogic/module/deploy/job/source/type/DeployJobSourceTypeHandler.java
index 59e1d261..053b6e58 100644
--- a/src/main/java/neatlogic/module/deploy/job/source/type/DeployJobSourceTypeHandler.java
+++ b/src/main/java/neatlogic/module/deploy/job/source/type/DeployJobSourceTypeHandler.java
@@ -754,10 +754,11 @@ public class DeployJobSourceTypeHandler extends AutoexecJobSourceTypeHandlerBase
Long appModuleId = deployJobVo.getAppModuleId();
Long envId = deployJobVo.getEnvId();
List instanceIdList = jobPhaseNodeVoList.stream().map(AutoexecJobPhaseNodeVo::getResourceId).filter(Objects::nonNull).collect(Collectors.toList());
- List deployInstanceBlueGreenVos = deployBlueGreenMapper.listInstanceBlueGreen(deployJobVo.getAppSystemId(), deployJobVo.getAppModuleId(), deployJobVo.getEnvId(), instanceIdList);
- Map deployInstanceBlueGreenVoMap = new HashMap<>();
- if (CollectionUtils.isNotEmpty(deployInstanceBlueGreenVos)) {
- deployInstanceBlueGreenVoMap = deployInstanceBlueGreenVos.stream().collect(Collectors.toMap(DeployInstanceBlueGreenVo::getResourceId, e -> e));
+ List jobNodeIdList = jobPhaseNodeVoList.stream().map(AutoexecJobPhaseNodeVo::getId).filter(Objects::nonNull).collect(Collectors.toList());
+ List deployJobNodeBlueGreenVos = deployBlueGreenMapper.listDeployJobPhaseNodeBlueGreen(jobNodeIdList);
+ Map deployJobPhaseNodeBlueGreenVoMap = new HashMap<>();
+ if (CollectionUtils.isNotEmpty(deployJobNodeBlueGreenVos)) {
+ deployJobPhaseNodeBlueGreenVoMap = deployJobNodeBlueGreenVos.stream().collect(Collectors.toMap(DeployJobPhaseNodeBlueGreenVo::getJobPhaseNodeId, e -> e));
}
if (CollectionUtils.isNotEmpty(instanceIdList)) {
List instanceVersionVoList = deployInstanceVersionMapper.getDeployInstanceVersionByEnvIdAndInstanceIdList(appSystemId, appModuleId, envId, instanceIdList);
@@ -771,10 +772,43 @@ public class DeployJobSourceTypeHandler extends AutoexecJobSourceTypeHandlerBase
extraInfo.put("version", versionMap.containsKey(jobPhaseNodeVo.getResourceId()) ? versionMap.get(jobPhaseNodeVo.getResourceId()).getVersion() : "");
extraInfo.put("instanceVersion", versionMap.get(jobPhaseNodeVo.getResourceId()));
- DeployInstanceBlueGreenVo deployInstanceBlueGreenVo = deployInstanceBlueGreenVoMap.get(jobPhaseNodeVo.getResourceId());
+ DeployJobPhaseNodeBlueGreenVo deployInstanceBlueGreenVo = deployJobPhaseNodeBlueGreenVoMap.get(jobPhaseNodeVo.getId());
if (deployInstanceBlueGreenVo != null) {
extraInfo.put("blueGreenId", deployInstanceBlueGreenVo.getBlueGreenId());
extraInfo.put("blueGreenName", deployInstanceBlueGreenVo.getBlueGreenName());
+ extraInfo.put("blueGreenSort", deployInstanceBlueGreenVo.getBlueGreenSort());
+ }
+ jobPhaseNodeVo.setExtraInfo(extraInfo);
+ }
+ }
+ }
+ }
+ }
+
+ @Override
+ public void addExtraJobPhaseNodeBlueGreenInfoByList(Long jobId, List jobPhaseNodeVoList) {
+ if (jobId != null && CollectionUtils.isNotEmpty(jobPhaseNodeVoList)) {
+ DeployJobVo deployJobVo = deployJobMapper.getDeployJobByJobId(jobId);
+ if (deployJobVo != null) {
+ List jobNodeIdList = jobPhaseNodeVoList.stream().map(AutoexecJobPhaseNodeVo::getId).filter(Objects::nonNull).collect(Collectors.toList());
+ List deployJobNodeBlueGreenVos = deployBlueGreenMapper.listDeployJobPhaseNodeBlueGreen(jobNodeIdList);
+ Map deployJobPhaseNodeBlueGreenVoMap = new HashMap<>();
+ if (CollectionUtils.isNotEmpty(deployJobNodeBlueGreenVos)) {
+ deployJobPhaseNodeBlueGreenVoMap = deployJobNodeBlueGreenVos.stream().collect(Collectors.toMap(DeployJobPhaseNodeBlueGreenVo::getJobPhaseNodeId, e -> e));
+ }
+ if (CollectionUtils.isNotEmpty(jobNodeIdList)) {
+ JSONObject extraInfo = null;
+ for (AutoexecJobPhaseNodeVo jobPhaseNodeVo : jobPhaseNodeVoList) {
+ extraInfo = jobPhaseNodeVo.getExtraInfo();
+ if (extraInfo == null) {
+ extraInfo = new JSONObject();
+ }
+
+ DeployJobPhaseNodeBlueGreenVo deployJobNodeBlueGreenVo = deployJobPhaseNodeBlueGreenVoMap.get(jobPhaseNodeVo.getId());
+ if (deployJobNodeBlueGreenVo != null) {
+ extraInfo.put("blueGreenId", deployJobNodeBlueGreenVo.getBlueGreenId());
+ extraInfo.put("blueGreenName", deployJobNodeBlueGreenVo.getBlueGreenName());
+ extraInfo.put("blueGreenSort", deployJobNodeBlueGreenVo.getBlueGreenSort());
}
jobPhaseNodeVo.setExtraInfo(extraInfo);
}
@@ -797,7 +831,7 @@ public class DeployJobSourceTypeHandler extends AutoexecJobSourceTypeHandlerBase
DeployJobPhaseNodeBlueGreenVo blueGreenVo = new DeployJobPhaseNodeBlueGreenVo();
blueGreenVo.setJobId(jobVo.getId());
blueGreenVo.setJobPhaseId(jobVo.getCurrentPhase().getId());
- blueGreenVo.setJobPhaseNodeId(autoexecJobPhaseNodeVo.getNodeId());
+ blueGreenVo.setJobPhaseNodeId(autoexecJobPhaseNodeVo.getId());
blueGreenVo.setUpdateTag(updateTag);
DeployInstanceBlueGreenVo instanceBlueGreenVo = deployInstanceBlueGreenVoMap.get(autoexecJobPhaseNodeVo.getResourceId());
if (instanceBlueGreenVo != null) {
--
Gitee