From 360b794bffb4b5dc6c8043f01e16fae628cecbb9 Mon Sep 17 00:00:00 2001 From: dengqichen Date: Thu, 27 Nov 2025 17:29:47 +0800 Subject: [PATCH] =?UTF-8?q?=E5=A2=9E=E5=8A=A0=E6=9E=84=E5=BB=BA=E9=80=9A?= =?UTF-8?q?=E7=9F=A5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../deploy/dto/TeamApplicationDTO.java | 4 +++ ...ployableTeamEnvironmentApplicationDTO.java | 4 +++ .../build/JenkinsBaseBuildVariables.java | 24 ------------- .../build/JenkinsJavaBuildVariables.java | 16 --------- .../build/JenkinsNodeJsBuildVariables.java | 15 -------- .../variables/form/BuildFormVariables.java | 16 --------- .../deploy/entity/TeamApplication.java | 15 ++++++-- .../backend/deploy/enums/BuildTypeEnum.java | 34 ++++--------------- .../deploy/query/TeamApplicationQuery.java | 5 +++ .../ITeamApplicationRepository.java | 10 ++++++ .../service/impl/DeployServiceImpl.java | 1 + .../service/impl/JenkinsBuildServiceImpl.java | 5 +-- .../db/changelog/changes/v1.0.0-schema.sql | 6 ++-- 13 files changed, 49 insertions(+), 106 deletions(-) delete mode 100644 backend/src/main/java/com/qqchen/deploy/backend/deploy/dto/variables/build/JenkinsBaseBuildVariables.java delete mode 100644 backend/src/main/java/com/qqchen/deploy/backend/deploy/dto/variables/build/JenkinsJavaBuildVariables.java delete mode 100644 backend/src/main/java/com/qqchen/deploy/backend/deploy/dto/variables/build/JenkinsNodeJsBuildVariables.java delete mode 100644 backend/src/main/java/com/qqchen/deploy/backend/deploy/dto/variables/form/BuildFormVariables.java diff --git a/backend/src/main/java/com/qqchen/deploy/backend/deploy/dto/TeamApplicationDTO.java b/backend/src/main/java/com/qqchen/deploy/backend/deploy/dto/TeamApplicationDTO.java index 03db6d01..09e7ee7d 100644 --- a/backend/src/main/java/com/qqchen/deploy/backend/deploy/dto/TeamApplicationDTO.java +++ b/backend/src/main/java/com/qqchen/deploy/backend/deploy/dto/TeamApplicationDTO.java @@ -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; diff --git a/backend/src/main/java/com/qqchen/deploy/backend/deploy/dto/UserDeployableTeamEnvironmentApplicationDTO.java b/backend/src/main/java/com/qqchen/deploy/backend/deploy/dto/UserDeployableTeamEnvironmentApplicationDTO.java index e61a23de..0f1fbdff 100644 --- a/backend/src/main/java/com/qqchen/deploy/backend/deploy/dto/UserDeployableTeamEnvironmentApplicationDTO.java +++ b/backend/src/main/java/com/qqchen/deploy/backend/deploy/dto/UserDeployableTeamEnvironmentApplicationDTO.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 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; diff --git a/backend/src/main/java/com/qqchen/deploy/backend/deploy/dto/variables/build/JenkinsBaseBuildVariables.java b/backend/src/main/java/com/qqchen/deploy/backend/deploy/dto/variables/build/JenkinsBaseBuildVariables.java deleted file mode 100644 index 8c88a5d9..00000000 --- a/backend/src/main/java/com/qqchen/deploy/backend/deploy/dto/variables/build/JenkinsBaseBuildVariables.java +++ /dev/null @@ -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 envs; - - private String script; -} \ No newline at end of file diff --git a/backend/src/main/java/com/qqchen/deploy/backend/deploy/dto/variables/build/JenkinsJavaBuildVariables.java b/backend/src/main/java/com/qqchen/deploy/backend/deploy/dto/variables/build/JenkinsJavaBuildVariables.java deleted file mode 100644 index 16a21ed5..00000000 --- a/backend/src/main/java/com/qqchen/deploy/backend/deploy/dto/variables/build/JenkinsJavaBuildVariables.java +++ /dev/null @@ -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 { - - -} \ No newline at end of file diff --git a/backend/src/main/java/com/qqchen/deploy/backend/deploy/dto/variables/build/JenkinsNodeJsBuildVariables.java b/backend/src/main/java/com/qqchen/deploy/backend/deploy/dto/variables/build/JenkinsNodeJsBuildVariables.java deleted file mode 100644 index adcf5551..00000000 --- a/backend/src/main/java/com/qqchen/deploy/backend/deploy/dto/variables/build/JenkinsNodeJsBuildVariables.java +++ /dev/null @@ -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 { - - - -} \ No newline at end of file diff --git a/backend/src/main/java/com/qqchen/deploy/backend/deploy/dto/variables/form/BuildFormVariables.java b/backend/src/main/java/com/qqchen/deploy/backend/deploy/dto/variables/form/BuildFormVariables.java deleted file mode 100644 index 2489c0ea..00000000 --- a/backend/src/main/java/com/qqchen/deploy/backend/deploy/dto/variables/form/BuildFormVariables.java +++ /dev/null @@ -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; - -} diff --git a/backend/src/main/java/com/qqchen/deploy/backend/deploy/entity/TeamApplication.java b/backend/src/main/java/com/qqchen/deploy/backend/deploy/entity/TeamApplication.java index 3cce498c..10e12940 100644 --- a/backend/src/main/java/com/qqchen/deploy/backend/deploy/entity/TeamApplication.java +++ b/backend/src/main/java/com/qqchen/deploy/backend/deploy/entity/TeamApplication.java @@ -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 { @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 { /** * 部署系统ID(关联sys_external_system,type=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; diff --git a/backend/src/main/java/com/qqchen/deploy/backend/deploy/enums/BuildTypeEnum.java b/backend/src/main/java/com/qqchen/deploy/backend/deploy/enums/BuildTypeEnum.java index 5cf34043..dd7cb672 100644 --- a/backend/src/main/java/com/qqchen/deploy/backend/deploy/enums/BuildTypeEnum.java +++ b/backend/src/main/java/com/qqchen/deploy/backend/deploy/enums/BuildTypeEnum.java @@ -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; } diff --git a/backend/src/main/java/com/qqchen/deploy/backend/deploy/query/TeamApplicationQuery.java b/backend/src/main/java/com/qqchen/deploy/backend/deploy/query/TeamApplicationQuery.java index e6d3582e..4af9a149 100644 --- a/backend/src/main/java/com/qqchen/deploy/backend/deploy/query/TeamApplicationQuery.java +++ b/backend/src/main/java/com/qqchen/deploy/backend/deploy/query/TeamApplicationQuery.java @@ -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; } diff --git a/backend/src/main/java/com/qqchen/deploy/backend/deploy/repository/ITeamApplicationRepository.java b/backend/src/main/java/com/qqchen/deploy/backend/deploy/repository/ITeamApplicationRepository.java index a306f272..efe4c8c2 100644 --- a/backend/src/main/java/com/qqchen/deploy/backend/deploy/repository/ITeamApplicationRepository.java +++ b/backend/src/main/java/com/qqchen/deploy/backend/deploy/repository/ITeamApplicationRepository.java @@ -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 findByDeploySystemId(Long deploySystemId); + + /** + * 根据部署系统ID和构建类型查询团队应用(用于Jenkins构建通知) + * + * @param deploySystemId 部署系统ID(Jenkins系统) + * @param buildType 构建类型 + * @return 团队应用列表 + */ + List findByDeploySystemIdAndBuildType(Long deploySystemId, BuildTypeEnum buildType); } 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 12317e50..bfb4fb9b 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 @@ -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()); // 设置部署系统信息 diff --git a/backend/src/main/java/com/qqchen/deploy/backend/deploy/service/impl/JenkinsBuildServiceImpl.java b/backend/src/main/java/com/qqchen/deploy/backend/deploy/service/impl/JenkinsBuildServiceImpl.java index 772b1907..f0f6963f 100644 --- a/backend/src/main/java/com/qqchen/deploy/backend/deploy/service/impl/JenkinsBuildServiceImpl.java +++ b/backend/src/main/java/com/qqchen/deploy/backend/deploy/service/impl/JenkinsBuildServiceImpl.java @@ -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 teamApps = teamApplicationRepository - .findByDeploySystemId(externalSystemId); + .findByDeploySystemIdAndBuildType(externalSystemId, BuildTypeEnum.JENKINS); if (teamApps.isEmpty()) { log.info("没有团队绑定该Jenkins系统: externalSystemId={}", externalSystemId); diff --git a/backend/src/main/resources/db/changelog/changes/v1.0.0-schema.sql b/backend/src/main/resources/db/changelog/changes/v1.0.0-schema.sql index c93281a1..d65e4cf4 100644 --- a/backend/src/main/resources/db/changelog/changes/v1.0.0-schema.sql +++ b/backend/src/main/resources/db/changelog/changes/v1.0.0-schema.sql @@ -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_system,type=GIT)', code_source_project_id BIGINT NULL COMMENT '代码源项目ID(Git项目ID)', - deploy_system_id BIGINT NULL COMMENT '部署系统ID(关联sys_external_system,type=JENKINS)', - deploy_job VARCHAR(100) NULL COMMENT '部署任务ID(关联deploy_jenkins_job)', + deploy_system_id BIGINT NULL COMMENT '部署系统ID(关联sys_external_system,type=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),