增加构建通知

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

View File

@ -1,5 +1,6 @@
package com.qqchen.deploy.backend.deploy.dto; package com.qqchen.deploy.backend.deploy.dto;
import com.qqchen.deploy.backend.deploy.enums.BuildTypeEnum;
import io.swagger.v3.oas.annotations.media.Schema; import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data; import lombok.Data;
@ -30,6 +31,9 @@ public class UserDeployableTeamEnvironmentApplicationDTO {
@Schema(description = "应用描述") @Schema(description = "应用描述")
private String applicationDesc; private String applicationDesc;
@Schema(description = "构建类型JENKINS-Jenkins构建NATIVE-脚本部署)")
private BuildTypeEnum buildType;
@Schema(description = "分支名称") @Schema(description = "分支名称")
private String branch; 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; 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.annotation.LogicDelete;
import com.qqchen.deploy.backend.framework.domain.Entity; import com.qqchen.deploy.backend.framework.domain.Entity;
import jakarta.persistence.Column; import jakarta.persistence.*;
import jakarta.persistence.Table;
import lombok.Data; import lombok.Data;
import lombok.EqualsAndHashCode; import lombok.EqualsAndHashCode;
@ -38,6 +38,13 @@ public class TeamApplication extends Entity<Long> {
@Column(name = "environment_id", nullable = false) @Column(name = "environment_id", nullable = false)
private Long environmentId; 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 * 部署系统ID关联sys_external_systemtype=JENKINS
* 仅当 buildType=JENKINS 时使用
*/ */
@Column(name = "deploy_system_id") @Column(name = "deploy_system_id")
private Long deploySystemId; private Long deploySystemId;
/** /**
* 部署任务ID关联deploy_jenkins_job * 部署任务名称Jenkins Job名称
* 仅当 buildType=JENKINS 时使用
*/ */
@Column(name = "deploy_job", length = 100) @Column(name = "deploy_job", length = 100)
private String deployJob; private String deployJob;

View File

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

View File

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

View File

@ -1,6 +1,7 @@
package com.qqchen.deploy.backend.deploy.repository; package com.qqchen.deploy.backend.deploy.repository;
import com.qqchen.deploy.backend.deploy.entity.TeamApplication; 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 com.qqchen.deploy.backend.framework.repository.IBaseRepository;
import org.springframework.data.jpa.repository.Query; import org.springframework.data.jpa.repository.Query;
import org.springframework.data.repository.query.Param; import org.springframework.data.repository.query.Param;
@ -116,5 +117,14 @@ public interface ITeamApplicationRepository extends IBaseRepository<TeamApplicat
* @return 团队应用列表 * @return 团队应用列表
*/ */
List<TeamApplication> findByDeploySystemId(Long deploySystemId); 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.setApplicationCode(app.getAppCode());
dto.setApplicationName(app.getAppName()); dto.setApplicationName(app.getAppName());
dto.setApplicationDesc(app.getAppDesc()); dto.setApplicationDesc(app.getAppDesc());
dto.setBuildType(teamApp.getBuildType());
dto.setBranch(teamApp.getBranch()); 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.framework.utils.JsonUtils;
import com.qqchen.deploy.backend.deploy.entity.*; import com.qqchen.deploy.backend.deploy.entity.*;
import com.qqchen.deploy.backend.deploy.dto.JenkinsBuildDTO; 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.ExternalSystemSyncStatus;
import com.qqchen.deploy.backend.deploy.enums.JenkinsSyncType; import com.qqchen.deploy.backend.deploy.enums.JenkinsSyncType;
import com.qqchen.deploy.backend.deploy.integration.response.*; import com.qqchen.deploy.backend.deploy.integration.response.*;
@ -448,9 +449,9 @@ public class JenkinsBuildServiceImpl extends BaseServiceImpl<JenkinsBuild, Jenki
return; return;
} }
// 2. 反查团队绑定关系 // 2. 反查团队绑定关系只查询构建类型为JENKINS的应用
List<TeamApplication> teamApps = teamApplicationRepository List<TeamApplication> teamApps = teamApplicationRepository
.findByDeploySystemId(externalSystemId); .findByDeploySystemIdAndBuildType(externalSystemId, BuildTypeEnum.JENKINS);
if (teamApps.isEmpty()) { if (teamApps.isEmpty()) {
log.info("没有团队绑定该Jenkins系统: externalSystemId={}", externalSystemId); log.info("没有团队绑定该Jenkins系统: externalSystemId={}", externalSystemId);

View File

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