From 8aaf8bd3f1954a13375e20d1fb43ee1d1d19c439 Mon Sep 17 00:00:00 2001
From: lvzk <897706680@qq.com>
Date: Fri, 4 Jul 2025 18:34:50 +0800
Subject: [PATCH 1/3] =?UTF-8?q?[=E5=8A=9F=E8=83=BD]=E6=89=B9=E9=87=8F?=
=?UTF-8?q?=E5=8F=91=E5=B8=83=E6=9D=83=E9=99=90=E4=BC=98=E5=8C=96=20#[1457?=
=?UTF-8?q?884850782208]=E6=89=B9=E9=87=8F=E5=8F=91=E5=B8=83=E6=9D=83?=
=?UTF-8?q?=E9=99=90=E4=BC=98=E5=8C=96=20http://192.168.0.96:8090/demo/rdm?=
=?UTF-8?q?.html#/story-detail/939050947543040/939050947543042/14578848507?=
=?UTF-8?q?82208?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
.../AddBatchDeployJobFromPipelineApi.java | 4 +-
.../auth/core/BatchDeployAuthChecker.java | 2 +-
.../dao/mapper/DeployBatchJobMapper.xml | 3 +-
.../type/DeployJobSourceTypeHandler.java | 70 ++++++++++++++++---
.../service/DeployBatchJobServiceImpl.java | 8 ++-
.../deploy/service/DeployCiServiceImpl.java | 2 +-
6 files changed, 70 insertions(+), 19 deletions(-)
diff --git a/src/main/java/neatlogic/module/deploy/api/job/batch/AddBatchDeployJobFromPipelineApi.java b/src/main/java/neatlogic/module/deploy/api/job/batch/AddBatchDeployJobFromPipelineApi.java
index 37f7d9d7..d4968482 100644
--- a/src/main/java/neatlogic/module/deploy/api/job/batch/AddBatchDeployJobFromPipelineApi.java
+++ b/src/main/java/neatlogic/module/deploy/api/job/batch/AddBatchDeployJobFromPipelineApi.java
@@ -26,8 +26,8 @@ import neatlogic.framework.autoexec.constvalue.JobStatus;
import neatlogic.framework.autoexec.constvalue.JobTriggerType;
import neatlogic.framework.autoexec.constvalue.ReviewStatus;
import neatlogic.framework.common.constvalue.ApiParamType;
-import neatlogic.framework.deploy.auth.BATCHDEPLOY_MODIFY;
import neatlogic.framework.deploy.auth.BATCHDEPLOY_VERIFY;
+import neatlogic.framework.deploy.auth.DEPLOY_BASE;
import neatlogic.framework.deploy.constvalue.JobSource;
import neatlogic.framework.deploy.dto.job.DeployJobVo;
import neatlogic.framework.deploy.dto.pipeline.PipelineJobTemplateVo;
@@ -54,7 +54,7 @@ import javax.annotation.Resource;
import java.util.Objects;
@Service
-@AuthAction(action = BATCHDEPLOY_MODIFY.class)
+@AuthAction(action = DEPLOY_BASE.class)
@OperationType(type = OperationTypeEnum.UPDATE)
@Transactional
public class AddBatchDeployJobFromPipelineApi extends PrivateApiComponentBase {
diff --git a/src/main/java/neatlogic/module/deploy/auth/core/BatchDeployAuthChecker.java b/src/main/java/neatlogic/module/deploy/auth/core/BatchDeployAuthChecker.java
index 6b528139..aab8c5ff 100644
--- a/src/main/java/neatlogic/module/deploy/auth/core/BatchDeployAuthChecker.java
+++ b/src/main/java/neatlogic/module/deploy/auth/core/BatchDeployAuthChecker.java
@@ -67,7 +67,7 @@ public class BatchDeployAuthChecker {
* @return 是|否
*/
public static boolean isCanAbort(DeployJobVo deployJobVo) {
- if (!Objects.equals(JobStatus.CHECKED.getValue(), deployJobVo.getStatus())) {
+ if (!Objects.equals(JobStatus.CHECKED.getValue(), deployJobVo.getStatus()) && Objects.equals(deployJobVo.getReviewStatus(), ReviewStatus.PASSED.getValue())) {
return UserContext.get().getUserUuid().equals(deployJobVo.getExecUser());
}
return false;
diff --git a/src/main/java/neatlogic/module/deploy/dao/mapper/DeployBatchJobMapper.xml b/src/main/java/neatlogic/module/deploy/dao/mapper/DeployBatchJobMapper.xml
index b27cf352..c9b6b343 100644
--- a/src/main/java/neatlogic/module/deploy/dao/mapper/DeployBatchJobMapper.xml
+++ b/src/main/java/neatlogic/module/deploy/dao/mapper/DeployBatchJobMapper.xml
@@ -88,7 +88,8 @@ along with this program. If not, see .-->
e.start_time as startTime,
e.end_time as endTime,
e.source as source,
- e.config_hash as configHash
+ e.config_hash as configHash,
+ e.parent_id as parentId
from deploy_job_lane_group_job AS d
LEFT JOIN autoexec_job AS e ON d.job_id = e.id
where d.group_id = #{groupId}
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 54f32fa3..39f613d4 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
@@ -33,26 +33,30 @@ import neatlogic.framework.autoexec.exception.AutoexecJobNotFoundException;
import neatlogic.framework.autoexec.exception.AutoexecJobPhaseNotFoundException;
import neatlogic.framework.autoexec.job.source.type.AutoexecJobSourceTypeHandlerBase;
import neatlogic.framework.autoexec.util.AutoexecUtil;
+import neatlogic.framework.cmdb.crossover.IAppSystemMapper;
import neatlogic.framework.cmdb.crossover.ICiEntityCrossoverMapper;
import neatlogic.framework.cmdb.crossover.IResourceCrossoverMapper;
import neatlogic.framework.cmdb.dto.cientity.CiEntityVo;
import neatlogic.framework.cmdb.dto.resourcecenter.ResourceVo;
+import neatlogic.framework.cmdb.dto.resourcecenter.entity.AppSystemVo;
import neatlogic.framework.cmdb.exception.cientity.CiEntityNotFoundException;
import neatlogic.framework.cmdb.exception.resourcecenter.AppEnvNotFoundException;
+import neatlogic.framework.cmdb.exception.resourcecenter.AppSystemNotFoundException;
import neatlogic.framework.common.constvalue.systemuser.SystemUser;
import neatlogic.framework.crossover.CrossoverServiceFactory;
import neatlogic.framework.dao.mapper.runner.RunnerMapper;
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.constvalue.JobSource;
import neatlogic.framework.deploy.constvalue.JobSourceType;
+import neatlogic.framework.deploy.constvalue.*;
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;
import neatlogic.framework.deploy.dto.pipeline.PipelineJobTemplateVo;
+import neatlogic.framework.deploy.dto.pipeline.PipelineVo;
import neatlogic.framework.deploy.dto.sql.DeploySqlJobPhaseVo;
import neatlogic.framework.deploy.dto.sql.DeploySqlNodeDetailVo;
import neatlogic.framework.deploy.dto.version.DeployVersionBuildNoVo;
@@ -117,6 +121,9 @@ public class DeployJobSourceTypeHandler extends AutoexecJobSourceTypeHandlerBase
@Resource
DeployBlueGreenMapper deployBlueGreenMapper;
+ @Resource
+ DeployPipelineMapper deployPipelineMapper;
+
@Override
public String getName() {
return JobSourceType.DEPLOY.getValue();
@@ -553,8 +560,8 @@ public class DeployJobSourceTypeHandler extends AutoexecJobSourceTypeHandlerBase
}
@Override
- public List getPhaseSqlStatusList(AutoexecJobPhaseVo jobPhaseVo,Long runnerMapId, List needCountStatusList) {
- return deploySqlMapper.getDeployJobSqlStatusList(jobPhaseVo.getJobId(), jobPhaseVo.getName(),runnerMapId, needCountStatusList);
+ public List getPhaseSqlStatusList(AutoexecJobPhaseVo jobPhaseVo, Long runnerMapId, List needCountStatusList) {
+ return deploySqlMapper.getDeployJobSqlStatusList(jobPhaseVo.getJobId(), jobPhaseVo.getName(), runnerMapId, needCountStatusList);
}
@Override
@@ -603,7 +610,8 @@ public class DeployJobSourceTypeHandler extends AutoexecJobSourceTypeHandlerBase
@Override
public void myExecuteAuthCheck(AutoexecJobVo jobVo) {
- if (AuthActionChecker.checkByUserUuid(UserContext.get().getUserUuid(true), BATCHDEPLOY_MODIFY.class.getSimpleName()) || Objects.equals(UserContext.get().getUserUuid(), SystemUser.SYSTEM.getUserUuid())) {
+ //包含BATCHJOB_MODIFY 或 系统用户 则拥有所有应用的执行权限
+ if (Boolean.TRUE.equals(AuthActionChecker.checkByUserUuid(UserContext.get().getUserUuid(true), BATCHDEPLOY_MODIFY.class.getSimpleName())) || Objects.equals(UserContext.get().getUserUuid(), SystemUser.SYSTEM.getUserUuid())) {
return;
}
DeployJobVo deployJobVo;
@@ -616,10 +624,41 @@ public class DeployJobSourceTypeHandler extends AutoexecJobSourceTypeHandlerBase
}
deployJobVo = deployJobTmp;
}
- //包含BATCHJOB_MODIFY 则拥有所有应用的执行权限
- if (!AuthActionChecker.checkByUserUuid(UserContext.get().getUserUuid(true), BATCHDEPLOY_MODIFY.class.getSimpleName()) && !Objects.equals(UserContext.get().getUserUuid(), SystemUser.SYSTEM.getUserUuid())) {
- Set authSet = DeployAppAuthChecker.builder(deployJobVo.getAppSystemId()).addEnvAction(deployJobVo.getEnvId()).addScenarioAction(deployJobVo.getScenarioId()).check();
- if (!authSet.containsAll(Arrays.asList(deployJobVo.getEnvId().toString(), deployJobVo.getScenarioId().toString()))) {
+ //如果作业来源于批量发布则应该判断是否有对应超级流水线的执行权限
+ if (JobSource.isBatch(jobVo.getSource()) && jobVo.getParentId() != null) {
+ AutoexecJobVo parentJob = autoexecJobMapper.getJobInfoWithInvoke(jobVo.getParentId());
+ if (parentJob != null) {
+ PipelineVo pipelineVo = deployPipelineMapper.getPipelineById(parentJob.getInvokeId());
+ if (pipelineVo != null) {
+ List pipelineIdList = deployPipelineMapper.checkHasAuthPipelineIdList(Collections.singletonList(pipelineVo.getId()), UserContext.get().getUserUuid(true));
+ //“应用流水线” 需要 应用配置中的“流水线权限”或对应超级流水线里面的授权
+ if (Objects.equals(pipelineVo.getType(), PipelineType.APPSYSTEM.getValue())) {
+ IAppSystemMapper appSystemMapper = CrossoverServiceFactory.getApi(IAppSystemMapper.class);
+ AppSystemVo appSystemVo = appSystemMapper.getAppSystemById(pipelineVo.getAppSystemId());
+ if (appSystemVo == null) {
+ throw new AppSystemNotFoundException(pipelineVo.getAppSystemId());
+ }
+ if (!pipelineIdList.contains(pipelineVo.getId())) {
+ Set actionSet = DeployAppAuthChecker.builder(pipelineVo.getAppSystemId())
+ .addOperationAction(DeployAppConfigAction.PIPELINE.getValue())
+ .check();
+ if (!actionSet.contains(DeployAppConfigAction.PIPELINE.getValue())) {
+ throw new DeployAppPipelineAuthException(appSystemVo, pipelineVo);
+ }
+ }
+ //“全局流水线” 需要 对应超级流水线里面的授权
+ } else if (Objects.equals(pipelineVo.getType(), PipelineType.GLOBAL.getValue()) && !pipelineIdList.contains(pipelineVo.getId())) {
+ throw new DeployAppPipelineAuthException(pipelineVo);
+ }
+ }
+ }
+ } else {
+ Set authSet = DeployAppAuthChecker.builder(deployJobVo.getAppSystemId())
+ .addEnvAction(deployJobVo.getEnvId())
+ .addScenarioAction(deployJobVo.getScenarioId())
+ .addOperationAction(DeployAppConfigAction.EXECUTE.getValue())
+ .check();
+ if (!authSet.containsAll(Arrays.asList(deployJobVo.getEnvId().toString(), deployJobVo.getScenarioId().toString(), DeployAppConfigAction.EXECUTE.getValue()))) {
throw new DeployJobCannotExecuteException(deployJobVo);
}
}
@@ -634,14 +673,14 @@ public class DeployJobSourceTypeHandler extends AutoexecJobSourceTypeHandlerBase
public void getJobActionAuth(AutoexecJobVo jobVo) {
boolean isHasAuth = false;
//包含BATCHJOB_MODIFY 则拥有所有应用的执行权限
- if (AuthActionChecker.checkByUserUuid(UserContext.get().getUserUuid(true), BATCHDEPLOY_MODIFY.class.getSimpleName())) {
+ if (Boolean.TRUE.equals(AuthActionChecker.checkByUserUuid(UserContext.get().getUserUuid(true), BATCHDEPLOY_MODIFY.class.getSimpleName()))) {
isHasAuth = true;
} else {
if (!Objects.equals(jobVo.getSource(), JobSource.BATCHDEPLOY.getValue())) {
DeployJobVo deployJobVo = deployJobMapper.getDeployJobByJobId(jobVo.getId());
if (deployJobVo != null) {
- Set authSet = DeployAppAuthChecker.builder(deployJobVo.getAppSystemId()).addEnvAction(deployJobVo.getEnvId()).addScenarioAction(deployJobVo.getScenarioId()).check();
- if (authSet.containsAll(Arrays.asList(deployJobVo.getEnvId().toString(), deployJobVo.getScenarioId().toString()))) {
+ Set authSet = DeployAppAuthChecker.builder(deployJobVo.getAppSystemId()).addEnvAction(deployJobVo.getEnvId()).addScenarioAction(deployJobVo.getScenarioId()).addOperationAction(DeployAppConfigAction.EXECUTE.getValue()).check();
+ if (authSet.containsAll(Arrays.asList(deployJobVo.getEnvId().toString(), deployJobVo.getScenarioId().toString(), DeployAppConfigAction.EXECUTE.getValue()))) {
isHasAuth = true;
}
}
@@ -885,4 +924,13 @@ public class DeployJobSourceTypeHandler extends AutoexecJobSourceTypeHandlerBase
public void handleDeleteJobPhaseNodeEvent(Long jobPhaseId, Long updateTag) {
//deployBlueGreenMapper.deleteJobPhaseNodeBlueGreenByJobPhaseIdAndUpdateTag(jobPhaseId, updateTag);
}
+
+ @Override
+ public void autoexecTakeOver(AutoexecJobVo jobVo) {
+ //如果是批量作业则需要自动接管作业
+ if(JobSource.isBatch(jobVo.getSource())) {
+ autoexecJobMapper.updateJobExecUser(jobVo.getId(), UserContext.get().getUserUuid(true));
+ jobVo.setExecUser(UserContext.get().getUserUuid(true));
+ }
+ }
}
diff --git a/src/main/java/neatlogic/module/deploy/service/DeployBatchJobServiceImpl.java b/src/main/java/neatlogic/module/deploy/service/DeployBatchJobServiceImpl.java
index e3bc5665..468e2f5d 100644
--- a/src/main/java/neatlogic/module/deploy/service/DeployBatchJobServiceImpl.java
+++ b/src/main/java/neatlogic/module/deploy/service/DeployBatchJobServiceImpl.java
@@ -78,6 +78,7 @@ public class DeployBatchJobServiceImpl implements DeployBatchJobService, IDeploy
// parentId为-1时,代表该作业是父作业
deployJobVo.setParentId(-1L);
deployJobMapper.insertAutoExecJob(deployJobVo);
+ deployJobMapper.insertJobInvoke(deployJobVo.getId(), deployJobVo.getInvokeId(), deployJobVo.getSource(), deployJobVo.getRouteId());
if (CollectionUtils.isNotEmpty(pipelineVo.getAuthList())) {
for (PipelineAuthVo authVo : pipelineVo.getAuthList()) {
DeployJobAuthVo deployAuthVo = new DeployJobAuthVo();
@@ -155,7 +156,6 @@ public class DeployBatchJobServiceImpl implements DeployBatchJobService, IDeploy
}
}
- deployJobMapper.insertJobInvoke(deployJobVo.getId(), deployJobVo.getInvokeId(), deployJobVo.getSource(), deployJobVo.getRouteId());
if (isFire) {
deployBatchJobService.fireBatch(deployJobVo.getId(), JobAction.RESET_REFIRE.getValue(), JobAction.RESET_REFIRE.getValue());
@@ -309,9 +309,11 @@ public class DeployBatchJobServiceImpl implements DeployBatchJobService, IDeploy
jobVo.setAction(groupVo.getJobAction());
IAutoexecJobActionHandler refireAction = AutoexecJobActionHandlerFactory.getAction(JobAction.REFIRE.getValue());
jobVo.setPassThroughEnv(passThroughEnv);
- jobVo.setIsTakeOver(1);
jobVo.setExecUser(UserContext.get().getUserUuid(true));
refireAction.doService(jobVo);
+ } catch (ApiRuntimeException e) {
+ deployBatchJobMapper.updateGroupStatus(new LaneGroupVo(groupId, JobStatus.FAILED.getValue()));
+ throw new ApiRuntimeException(e.getMessage(),e);
} catch (Exception ex) {
deployBatchJobMapper.updateGroupStatus(new LaneGroupVo(groupId, JobStatus.FAILED.getValue()));
logger.error("Fire job by batch failed," + ex.getMessage(), ex);
@@ -401,7 +403,7 @@ public class DeployBatchJobServiceImpl implements DeployBatchJobService, IDeploy
// groupStatus = nextGroupId == null ? groupStatus : JobPhaseStatus.WAIT_INPUT.getValue();
// }
// if (groupStatus.equalsIgnoreCase(JobStatus.FAILED.getValue())) {
- deployBatchJobMapper.updateBatchJobStatusByGroupId(groupVo.getId(), JobStatus.FAILED.getValue());
+ deployBatchJobMapper.updateBatchJobStatusByGroupId(groupVo.getId(), JobStatus.FAILED.getValue());
// }
} else if (groupStatus.equalsIgnoreCase(JobStatus.ABORTED.getValue())) {
deployBatchJobMapper.updateBatchJobStatusByGroupId(groupVo.getId(), JobStatus.ABORTED.getValue());
diff --git a/src/main/java/neatlogic/module/deploy/service/DeployCiServiceImpl.java b/src/main/java/neatlogic/module/deploy/service/DeployCiServiceImpl.java
index 7242e48e..0af775cf 100644
--- a/src/main/java/neatlogic/module/deploy/service/DeployCiServiceImpl.java
+++ b/src/main/java/neatlogic/module/deploy/service/DeployCiServiceImpl.java
@@ -252,7 +252,7 @@ public class DeployCiServiceImpl implements DeployCiService {
}
deployJobVo.setAppSystemModuleVersionList(Collections.singletonList(new DeploySystemModuleVersionVo(ci.getAppSystemId(), ci.getAppModuleId(), deployVersionId)));
deployJobVo.setReviewStatus(ReviewStatus.PASSED.getValue());
- deployJobVo.setSource(JobSource.DEPLOY_CI.getValue());// 可能是
+ deployJobVo.setSource(JobSource.DEPLOY_CI_PIPELINE.getValue());// 可能是
deployJobVo.setExecUser(UserContext.get().getUserUuid());
return deployJobVo;
}
--
Gitee
From f7ad2f251084913d5c3fe057dd35cf186c1bcf62 Mon Sep 17 00:00:00 2001
From: lvzk <897706680@qq.com>
Date: Tue, 12 Aug 2025 19:16:49 +0800
Subject: [PATCH 2/3] =?UTF-8?q?[=E5=8A=9F=E8=83=BD]=E6=B5=8B=E8=AF=95?=
=?UTF-8?q?=E8=87=AA=E5=8A=A8=E5=8C=96=E6=88=96=E5=8F=91=E5=B8=83=E4=BD=9C?=
=?UTF-8?q?=E4=B8=9A=E7=9A=84=E6=89=A7=E8=A1=8C=E4=BA=BA=E5=BA=94=E8=AF=A5?=
=?UTF-8?q?=E6=98=AF=E7=82=B9=E5=87=BB=E6=89=A7=E8=A1=8C=E6=8C=89=E9=92=AE?=
=?UTF-8?q?=E7=9A=84=E4=BA=BA?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
.../deploy/schedule/plugin/DeployJobScheduleJob.java | 9 +++++++--
1 file changed, 7 insertions(+), 2 deletions(-)
diff --git a/src/main/java/neatlogic/module/deploy/schedule/plugin/DeployJobScheduleJob.java b/src/main/java/neatlogic/module/deploy/schedule/plugin/DeployJobScheduleJob.java
index 428a2efc..a23937c9 100644
--- a/src/main/java/neatlogic/module/deploy/schedule/plugin/DeployJobScheduleJob.java
+++ b/src/main/java/neatlogic/module/deploy/schedule/plugin/DeployJobScheduleJob.java
@@ -43,6 +43,7 @@ import neatlogic.module.deploy.dao.mapper.DeployScheduleMapper;
import neatlogic.module.deploy.service.DeployBatchJobService;
import neatlogic.module.deploy.service.DeployJobService;
import org.apache.commons.collections4.CollectionUtils;
+import org.apache.commons.lang3.StringUtils;
import org.quartz.DisallowConcurrentExecution;
import org.quartz.JobExecutionContext;
import org.slf4j.Logger;
@@ -137,10 +138,14 @@ public class DeployJobScheduleJob extends JobBase {
schedulerManager.unloadJob(jobObject);
return;
}
- UserVo execUser = userMapper.getUserBaseInfoByUuid(scheduleVo.getLcu());
+ String execUserUuid = scheduleVo.getLcu();
+ if(StringUtils.isNotBlank(jobObject.getTestUserUuid())){
+ execUserUuid = jobObject.getTestUserUuid();
+ }
+ UserVo execUser = userMapper.getUserBaseInfoByUuid(execUserUuid);
if (execUser == null) {
schedulerManager.unloadJob(jobObject);
- logger.error("execUser: {} not exist!", scheduleVo.getLcu());
+ logger.error("execUser: {} not exist!", execUserUuid);
return;
}
AuthenticationInfoVo authenticationInfo = authenticationInfoService.getAuthenticationInfo(execUser.getUuid());
--
Gitee
From d5a947979444de9570bbd42d4ecb9dbdf6dd9a5d Mon Sep 17 00:00:00 2001
From: lvzk <897706680@qq.com>
Date: Tue, 12 Aug 2025 19:19:00 +0800
Subject: [PATCH 3/3] =?UTF-8?q?[=E5=8A=9F=E8=83=BD]=E6=B5=8B=E8=AF=95?=
=?UTF-8?q?=E8=87=AA=E5=8A=A8=E5=8C=96=E6=88=96=E5=8F=91=E5=B8=83=E4=BD=9C?=
=?UTF-8?q?=E4=B8=9A=E7=9A=84=E6=89=A7=E8=A1=8C=E4=BA=BA=E5=BA=94=E8=AF=A5?=
=?UTF-8?q?=E6=98=AF=E7=82=B9=E5=87=BB=E6=89=A7=E8=A1=8C=E6=8C=89=E9=92=AE?=
=?UTF-8?q?=E7=9A=84=E4=BA=BA?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
.../module/deploy/schedule/plugin/DeployJobScheduleJob.java | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/src/main/java/neatlogic/module/deploy/schedule/plugin/DeployJobScheduleJob.java b/src/main/java/neatlogic/module/deploy/schedule/plugin/DeployJobScheduleJob.java
index a23937c9..85fc1c35 100644
--- a/src/main/java/neatlogic/module/deploy/schedule/plugin/DeployJobScheduleJob.java
+++ b/src/main/java/neatlogic/module/deploy/schedule/plugin/DeployJobScheduleJob.java
@@ -139,7 +139,7 @@ public class DeployJobScheduleJob extends JobBase {
return;
}
String execUserUuid = scheduleVo.getLcu();
- if(StringUtils.isNotBlank(jobObject.getTestUserUuid())){
+ if(jobObject.isTest() == 1 && StringUtils.isNotBlank(jobObject.getTestUserUuid())){
execUserUuid = jobObject.getTestUserUuid();
}
UserVo execUser = userMapper.getUserBaseInfoByUuid(execUserUuid);
--
Gitee