增加构建通知
This commit is contained in:
parent
fe66ee4d5f
commit
360b794bff
@ -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;
|
||||||
|
|
||||||
|
|||||||
@ -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;
|
||||||
|
|
||||||
|
|||||||
@ -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;
|
|
||||||
}
|
|
||||||
@ -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 {
|
|
||||||
|
|
||||||
|
|
||||||
}
|
|
||||||
@ -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 {
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
}
|
|
||||||
@ -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;
|
|
||||||
|
|
||||||
}
|
|
||||||
@ -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_system,type=JENKINS)
|
* 部署系统ID(关联sys_external_system,type=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;
|
||||||
|
|||||||
@ -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;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@ -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;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@ -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 部署系统ID(Jenkins系统)
|
||||||
|
* @param buildType 构建类型
|
||||||
|
* @return 团队应用列表
|
||||||
|
*/
|
||||||
|
List<TeamApplication> findByDeploySystemIdAndBuildType(Long deploySystemId, BuildTypeEnum buildType);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@ -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());
|
||||||
|
|
||||||
// 设置部署系统信息
|
// 设置部署系统信息
|
||||||
|
|||||||
@ -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);
|
||||||
|
|||||||
@ -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_system,type=GIT)',
|
code_source_system_id BIGINT NULL COMMENT '代码源系统ID(关联sys_external_system,type=GIT)',
|
||||||
code_source_project_id BIGINT NULL COMMENT '代码源项目ID(Git项目ID)',
|
code_source_project_id BIGINT NULL COMMENT '代码源项目ID(Git项目ID)',
|
||||||
deploy_system_id BIGINT NULL COMMENT '部署系统ID(关联sys_external_system,type=JENKINS)',
|
deploy_system_id BIGINT NULL COMMENT '部署系统ID(关联sys_external_system,type=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),
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user