增加构建通知

This commit is contained in:
dengqichen 2025-11-28 11:23:59 +08:00
parent e7211f8699
commit 7bf536cb41
2 changed files with 30 additions and 3 deletions

View File

@ -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;

View File

@ -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配置
* <p>当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<DeployApprovalTaskDTO> getMyApprovalTasks(Long teamId, Long environmentId, List<String> workflowDefinitionKeys) {
// 1. 获取当前登录用户