diff --git a/backend/src/main/java/com/qqchen/deploy/backend/deploy/dto/DeployExecuteRequest.java b/backend/src/main/java/com/qqchen/deploy/backend/deploy/dto/DeployExecuteRequest.java index ff6e3fc3..d14105ba 100644 --- a/backend/src/main/java/com/qqchen/deploy/backend/deploy/dto/DeployExecuteRequest.java +++ b/backend/src/main/java/com/qqchen/deploy/backend/deploy/dto/DeployExecuteRequest.java @@ -1,5 +1,6 @@ package com.qqchen.deploy.backend.deploy.dto; +import com.qqchen.deploy.backend.deploy.enums.BuildTypeEnum; import io.swagger.v3.oas.annotations.media.Schema; import jakarta.validation.Valid; import jakarta.validation.constraints.NotBlank; @@ -19,8 +20,11 @@ import java.util.List; @Schema(description = "部署执行请求") public class DeployExecuteRequest { - @Schema(description = "Jenkins配置", required = true) - @NotNull(message = "Jenkins配置不能为空") + @Schema(description = "构建类型", required = true) + @NotNull(message = "构建类型不能为空") + private BuildTypeEnum buildType; + + @Schema(description = "Jenkins配置(buildType为JENKINS时必填)") @Valid private JenkinsConfig jenkins; diff --git a/backend/src/main/java/com/qqchen/deploy/backend/deploy/service/impl/DeployServiceImpl.java b/backend/src/main/java/com/qqchen/deploy/backend/deploy/service/impl/DeployServiceImpl.java index bfb4fb9b..fe1205ff 100644 --- a/backend/src/main/java/com/qqchen/deploy/backend/deploy/service/impl/DeployServiceImpl.java +++ b/backend/src/main/java/com/qqchen/deploy/backend/deploy/service/impl/DeployServiceImpl.java @@ -2,6 +2,7 @@ package com.qqchen.deploy.backend.deploy.service.impl; import com.qqchen.deploy.backend.deploy.dto.*; import com.qqchen.deploy.backend.deploy.entity.*; +import com.qqchen.deploy.backend.deploy.enums.BuildTypeEnum; import com.qqchen.deploy.backend.deploy.repository.*; import com.qqchen.deploy.backend.notification.entity.NotificationChannel; import com.qqchen.deploy.backend.notification.entity.NotificationTemplate; @@ -744,7 +745,11 @@ public class DeployServiceImpl implements IDeployService { @Override @Transactional public DeployResultDTO executeDeploy(DeployExecuteRequest request) { - log.info("开始执行部署: teamApplicationId={}, applicationCode={}, environmentCode={}", request.getTeamApplicationId(), request.getApplicationCode(), request.getEnvironmentCode()); + log.info("开始执行部署: teamApplicationId={}, applicationCode={}, environmentCode={}, buildType={}", + request.getTeamApplicationId(), request.getApplicationCode(), request.getEnvironmentCode(), request.getBuildType()); + + // 0. 根据构建类型校验Jenkins配置 + validateJenkinsConfig(request); // 1. 查询工作流定义 TeamApplication teamApp = teamApplicationRepository.findById(request.getTeamApplicationId()).orElseThrow(() -> new BusinessException(ResponseCode.TEAM_APPLICATION_NOT_FOUND)); @@ -800,6 +805,24 @@ public class DeployServiceImpl implements IDeployService { return result; } + /** + * 根据构建类型校验Jenkins配置 + *
当buildType为JENKINS时,jenkins配置必填
+ */
+ private void validateJenkinsConfig(DeployExecuteRequest request) {
+ if (request.getBuildType() == BuildTypeEnum.JENKINS) {
+ if (request.getJenkins() == null) {
+ throw new BusinessException(ResponseCode.DEPLOY_JENKINS_CONFIG_MISSING);
+ }
+ if (request.getJenkins().getServerId() == null) {
+ throw new BusinessException(ResponseCode.INVALID_PARAM, new Object[]{"Jenkins服务器ID不能为空"});
+ }
+ if (request.getJenkins().getJobName() == null || request.getJenkins().getJobName().isBlank()) {
+ throw new BusinessException(ResponseCode.INVALID_PARAM, new Object[]{"Jenkins任务名称不能为空"});
+ }
+ }
+ }
+
@Override
public List