增加构建通知

This commit is contained in:
dengqichen 2025-11-27 17:29:47 +08:00
parent fe66ee4d5f
commit 360b794bff
13 changed files with 49 additions and 106 deletions

View File

@ -1,5 +1,6 @@
package com.qqchen.deploy.backend.deploy.dto;
import com.qqchen.deploy.backend.deploy.enums.BuildTypeEnum;
import com.qqchen.deploy.backend.framework.dto.BaseDTO;
import io.swagger.v3.oas.annotations.media.Schema;
import jakarta.validation.constraints.NotNull;
@ -23,6 +24,9 @@ public class TeamApplicationDTO extends BaseDTO {
@NotNull(message = "环境ID不能为空")
private Long environmentId;
@Schema(description = "构建类型", example = "JENKINS")
private BuildTypeEnum buildType;
@Schema(description = "分支名称", example = "develop")
private String branch;

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 lombok.Data;
@ -30,6 +31,9 @@ public class UserDeployableTeamEnvironmentApplicationDTO {
@Schema(description = "应用描述")
private String applicationDesc;
@Schema(description = "构建类型JENKINS-Jenkins构建NATIVE-脚本部署)")
private BuildTypeEnum buildType;
@Schema(description = "分支名称")
private String branch;

View File

@ -1,24 +0,0 @@
package com.qqchen.deploy.backend.deploy.dto.variables.build;
import com.qqchen.deploy.backend.framework.annotation.formily.*;
import lombok.Data;
import java.util.Map;
/**
* Jenkins构建变量
*/
@Data
@FormilyForm(name = "Jenkins构建配置")
public class JenkinsBaseBuildVariables {
private String externalSystemId;
private String viewId;
private String jobId;
private Map<String, String> envs;
private String script;
}

View File

@ -1,16 +0,0 @@
package com.qqchen.deploy.backend.deploy.dto.variables.build;
import com.qqchen.deploy.backend.framework.annotation.formily.FormilyForm;
import lombok.Data;
import lombok.EqualsAndHashCode;
/**
* Jenkins构建变量
*/
@EqualsAndHashCode(callSuper = true)
@Data
public class JenkinsJavaBuildVariables extends JenkinsBaseBuildVariables {
}

View File

@ -1,15 +0,0 @@
package com.qqchen.deploy.backend.deploy.dto.variables.build;
import lombok.Data;
import lombok.EqualsAndHashCode;
/**
* Jenkins构建变量
*/
@EqualsAndHashCode(callSuper = true)
@Data
public class JenkinsNodeJsBuildVariables extends JenkinsBaseBuildVariables {
}

View File

@ -1,16 +0,0 @@
package com.qqchen.deploy.backend.deploy.dto.variables.form;
import com.qqchen.deploy.backend.workflow.annotation.SchemaProperty;
import lombok.Data;
@Data
public class BuildFormVariables {
@SchemaProperty(
title = "禅道任务号",
description = "禅道任务号",
required = true
)
private String taskNo;
}

View File

@ -1,9 +1,9 @@
package com.qqchen.deploy.backend.deploy.entity;
import com.qqchen.deploy.backend.deploy.enums.BuildTypeEnum;
import com.qqchen.deploy.backend.framework.annotation.LogicDelete;
import com.qqchen.deploy.backend.framework.domain.Entity;
import jakarta.persistence.Column;
import jakarta.persistence.Table;
import jakarta.persistence.*;
import lombok.Data;
import lombok.EqualsAndHashCode;
@ -38,6 +38,13 @@ public class TeamApplication extends Entity<Long> {
@Column(name = "environment_id", nullable = false)
private Long environmentId;
/**
* 构建类型JENKINS-Jenkins构建NATIVE-脚本部署
*/
@Enumerated(EnumType.STRING)
@Column(name = "build_type", length = 50)
private BuildTypeEnum buildType;
/**
* 分支名称
*/
@ -58,12 +65,14 @@ public class TeamApplication extends Entity<Long> {
/**
* 部署系统ID关联sys_external_systemtype=JENKINS
* 仅当 buildType=JENKINS 时使用
*/
@Column(name = "deploy_system_id")
private Long deploySystemId;
/**
* 部署任务ID关联deploy_jenkins_job
* 部署任务名称Jenkins Job名称
* 仅当 buildType=JENKINS 时使用
*/
@Column(name = "deploy_job", length = 100)
private String deployJob;

View File

@ -1,9 +1,6 @@
package com.qqchen.deploy.backend.deploy.enums;
import com.fasterxml.jackson.annotation.JsonValue;
import com.qqchen.deploy.backend.deploy.dto.variables.build.JenkinsJavaBuildVariables;
import com.qqchen.deploy.backend.deploy.dto.variables.build.JenkinsNodeJsBuildVariables;
import com.qqchen.deploy.backend.deploy.dto.variables.form.BuildFormVariables;
import lombok.Getter;
/**
@ -21,45 +18,32 @@ public enum BuildTypeEnum {
DevelopmentLanguageTypeEnum.GO,
DevelopmentLanguageTypeEnum.PYTHON
},
BuildFormVariables.class,
new Class[] {
JenkinsJavaBuildVariables.class,
JenkinsNodeJsBuildVariables.class,
null,
null
},
"Jenkins构建"
),
NATIVE(
"NATIVE",
"Native构建",
null,
null,
null,
"Native构建"
"脚本部署",
new DevelopmentLanguageTypeEnum[] {
DevelopmentLanguageTypeEnum.JAVA
},
"通过自定义脚本进行构建部署"
),
CODE_ARTS(
"CODE_ARTS",
"CodeArts构建",
null,
null,
null,
"CodeArts构建"
),
GITLAB_RUNNER(
"GITLAB_RUNNER",
"GitLab Runner构建",
null,
null,
null,
"GitLab Runner构建"
),
GITHUB_ACTION(
"GITHUB_ACTION",
"GitHub Action构建",
null,
null,
null,
"GitHub Action构建"
);
@ -70,18 +54,12 @@ public enum BuildTypeEnum {
private final DevelopmentLanguageTypeEnum[] supportedLanguages;
private final Class<?> formVariablesSchema;
private final Class<?>[] buildVariables;
private final String description;
BuildTypeEnum(String code, String name, DevelopmentLanguageTypeEnum[] supportedLanguages, Class<?> formVariablesSchema, Class<?>[] buildVariables, String description) {
BuildTypeEnum(String code, String name, DevelopmentLanguageTypeEnum[] supportedLanguages, String description) {
this.code = code;
this.name = name;
this.supportedLanguages = supportedLanguages;
this.formVariablesSchema = formVariablesSchema;
this.buildVariables = buildVariables;
this.description = description;
}

View File

@ -1,5 +1,6 @@
package com.qqchen.deploy.backend.deploy.query;
import com.qqchen.deploy.backend.deploy.enums.BuildTypeEnum;
import com.qqchen.deploy.backend.framework.annotation.QueryField;
import com.qqchen.deploy.backend.framework.query.BaseQuery;
import io.swagger.v3.oas.annotations.media.Schema;
@ -28,5 +29,9 @@ public class TeamApplicationQuery extends BaseQuery {
@QueryField(field = "environmentId")
@Schema(description = "环境ID")
private Long environmentId;
@QueryField(field = "buildType")
@Schema(description = "构建类型")
private BuildTypeEnum buildType;
}

View File

@ -1,6 +1,7 @@
package com.qqchen.deploy.backend.deploy.repository;
import com.qqchen.deploy.backend.deploy.entity.TeamApplication;
import com.qqchen.deploy.backend.deploy.enums.BuildTypeEnum;
import com.qqchen.deploy.backend.framework.repository.IBaseRepository;
import org.springframework.data.jpa.repository.Query;
import org.springframework.data.repository.query.Param;
@ -116,5 +117,14 @@ public interface ITeamApplicationRepository extends IBaseRepository<TeamApplicat
* @return 团队应用列表
*/
List<TeamApplication> findByDeploySystemId(Long deploySystemId);
/**
* 根据部署系统ID和构建类型查询团队应用用于Jenkins构建通知
*
* @param deploySystemId 部署系统IDJenkins系统
* @param buildType 构建类型
* @return 团队应用列表
*/
List<TeamApplication> findByDeploySystemIdAndBuildType(Long deploySystemId, BuildTypeEnum buildType);
}

View File

@ -556,6 +556,7 @@ public class DeployServiceImpl implements IDeployService {
dto.setApplicationCode(app.getAppCode());
dto.setApplicationName(app.getAppName());
dto.setApplicationDesc(app.getAppDesc());
dto.setBuildType(teamApp.getBuildType());
dto.setBranch(teamApp.getBranch());
// 设置部署系统信息

View File

@ -7,6 +7,7 @@ import com.qqchen.deploy.backend.deploy.dto.JenkinsSyncHistoryDTO;
import com.qqchen.deploy.backend.framework.utils.JsonUtils;
import com.qqchen.deploy.backend.deploy.entity.*;
import com.qqchen.deploy.backend.deploy.dto.JenkinsBuildDTO;
import com.qqchen.deploy.backend.deploy.enums.BuildTypeEnum;
import com.qqchen.deploy.backend.deploy.enums.ExternalSystemSyncStatus;
import com.qqchen.deploy.backend.deploy.enums.JenkinsSyncType;
import com.qqchen.deploy.backend.deploy.integration.response.*;
@ -448,9 +449,9 @@ public class JenkinsBuildServiceImpl extends BaseServiceImpl<JenkinsBuild, Jenki
return;
}
// 2. 反查团队绑定关系
// 2. 反查团队绑定关系只查询构建类型为JENKINS的应用
List<TeamApplication> teamApps = teamApplicationRepository
.findByDeploySystemId(externalSystemId);
.findByDeploySystemIdAndBuildType(externalSystemId, BuildTypeEnum.JENKINS);
if (teamApps.isEmpty()) {
log.info("没有团队绑定该Jenkins系统: externalSystemId={}", externalSystemId);

View File

@ -807,17 +807,19 @@ CREATE TABLE deploy_team_application
team_id BIGINT NOT NULL COMMENT '团队ID',
application_id BIGINT NOT NULL COMMENT '应用ID',
environment_id BIGINT NOT NULL COMMENT '环境ID',
build_type VARCHAR(50) NULL COMMENT '构建类型JENKINS-Jenkins构建NATIVE-脚本部署)',
branch VARCHAR(100) NULL COMMENT '分支名称',
code_source_system_id BIGINT NULL COMMENT '代码源系统ID关联sys_external_systemtype=GIT',
code_source_project_id BIGINT NULL COMMENT '代码源项目IDGit项目ID',
deploy_system_id BIGINT NULL COMMENT '部署系统ID关联sys_external_systemtype=JENKINS',
deploy_job VARCHAR(100) NULL COMMENT '部署任务ID关联deploy_jenkins_job',
deploy_system_id BIGINT NULL COMMENT '部署系统ID关联sys_external_systemtype=JENKINS仅当build_type=JENKINS时使用',
deploy_job VARCHAR(100) NULL COMMENT '部署任务名称Jenkins Job名称仅当build_type=JENKINS时使用',
workflow_definition_id BIGINT NULL COMMENT '工作流定义ID关联workflow_definition',
UNIQUE INDEX uk_team_app_env (team_id, application_id, environment_id),
INDEX idx_team (team_id),
INDEX idx_application (application_id),
INDEX idx_environment (environment_id),
INDEX idx_build_type (build_type),
INDEX idx_code_source_system (code_source_system_id),
INDEX idx_deploy_system (deploy_system_id),
INDEX idx_deploy_job (deploy_job),