diff --git a/frontend/src/pages/Deploy/Team/List/components/TeamApplicationDialog.tsx b/frontend/src/pages/Deploy/Team/List/components/TeamApplicationDialog.tsx index 1ce3b34c..9496d0ff 100644 --- a/frontend/src/pages/Deploy/Team/List/components/TeamApplicationDialog.tsx +++ b/frontend/src/pages/Deploy/Team/List/components/TeamApplicationDialog.tsx @@ -25,7 +25,9 @@ import { useToast } from '@/components/ui/use-toast'; import type { TeamApplication, Application, + BuildType, } from '../types'; +import { BUILD_TYPE_OPTIONS } from '../types'; import type { RepositoryBranchResponse } from '@/pages/Resource/Git/List/types'; import type { WorkflowDefinition } from '@/pages/Workflow/Definition/List/types'; import { getExternalSystemList } from '@/pages/Resource/External/List/service'; @@ -46,6 +48,7 @@ interface TeamApplicationDialogProps { onSave: (data: { id?: number; appId: number; + buildType: BuildType | null; branch: string; deploySystemId: number | null; deployJob: string; @@ -78,6 +81,7 @@ const TeamApplicationDialog: React.FC = ({ // 表单状态 const [formData, setFormData] = useState({ appId: null as number | null, + buildType: 'JENKINS' as BuildType | null, branch: '', deploySystemId: null as number | null, deployJob: '', @@ -111,6 +115,7 @@ const TeamApplicationDialog: React.FC = ({ // 编辑模式:填充现有数据 setFormData({ appId: application.applicationId, + buildType: application.buildType || 'JENKINS', branch: application.branch || '', deploySystemId: application.deploySystemId || null, deployJob: application.deployJob || '', @@ -144,6 +149,7 @@ const TeamApplicationDialog: React.FC = ({ // 新建模式:重置表单 setFormData({ appId: null, + buildType: 'JENKINS', branch: '', deploySystemId: null, deployJob: '', @@ -221,6 +227,7 @@ const TeamApplicationDialog: React.FC = ({ const handleAppChange = (appId: number) => { setFormData({ appId: appId, + buildType: formData.buildType, branch: '', deploySystemId: null, deployJob: '', @@ -232,6 +239,18 @@ const TeamApplicationDialog: React.FC = ({ setBranches([]); }; + // 处理构建类型选择 + const handleBuildTypeChange = (buildType: BuildType) => { + setFormData({ + ...formData, + buildType, + // 切换构建类型时清空 Jenkins 相关配置 + deploySystemId: null, + deployJob: '', + }); + setJenkinsJobs([]); + }; + // 处理 Jenkins 系统选择 const handleJenkinsSystemChange = (systemId: number) => { setFormData({ @@ -297,9 +316,10 @@ const TeamApplicationDialog: React.FC = ({ await onSave({ id: mode === 'edit' && application ? application.id : undefined, appId: formData.appId, + buildType: formData.buildType, branch: formData.branch, - deploySystemId: formData.deploySystemId, - deployJob: formData.deployJob, + deploySystemId: formData.buildType === 'JENKINS' ? formData.deploySystemId : null, + deployJob: formData.buildType === 'JENKINS' ? formData.deployJob : '', workflowDefinitionId: formData.workflowDefinitionId, codeSourceSystemId: formData.codeSourceSystemId, codeSourceProjectId: formData.codeSourceProjectId, @@ -328,14 +348,14 @@ const TeamApplicationDialog: React.FC = ({ return ( - + {mode === 'edit' ? '编辑' : '添加'}应用配置 - {environmentName} - +
{/* 应用选择 */}
@@ -378,6 +398,140 @@ const TeamApplicationDialog: React.FC = ({ )}
+ {/* 构建类型选择 */} +
+ + +

+ Jenkins构建:通过Jenkins执行构建任务;脚本部署:通过自定义脚本执行部署 +

+
+ + {/* Jenkins 系统 - 仅在构建类型为 JENKINS 时显示 */} + {formData.buildType === 'JENKINS' && ( +
+ + +
+ )} + + {/* Jenkins Job - 仅在构建类型为 JENKINS 时显示 */} + {formData.buildType === 'JENKINS' && ( +
+ + {formData.deploySystemId ? ( + + + + + +
+ + setJobSearchValue(e.target.value)} + /> +
+ +
+ {filteredJobs.length === 0 ? ( +
+ 未找到Job +
+ ) : ( + filteredJobs.map((job) => ( +
{ + setFormData({ + ...formData, + deployJob: job.jobName, + }); + setJobSearchValue(''); + setJobPopoverOpen(false); + }} + > + + {job.jobName} + + {job.jobName === formData.deployJob && ( + + )} +
+ )) + )} +
+
+
+
+ ) : ( + + )} +
+ )} + {/* 代码源选择 */}
@@ -588,111 +742,6 @@ const TeamApplicationDialog: React.FC = ({ )}
- {/* Jenkins 系统 */} -
- - -
- - {/* Jenkins Job */} -
- - {formData.deploySystemId ? ( - - - - - -
- - setJobSearchValue(e.target.value)} - /> -
- -
- {filteredJobs.length === 0 ? ( -
- 未找到Job -
- ) : ( - filteredJobs.map((job) => ( -
{ - setFormData({ - ...formData, - deployJob: job.jobName, - }); - setJobSearchValue(''); - setJobPopoverOpen(false); - }} - > - - {job.jobName} - - {job.jobName === formData.deployJob && ( - - )} -
- )) - )} -
-
-
-
- ) : ( - - )} -
- {/* 工作流定义 */}
diff --git a/frontend/src/pages/Deploy/Team/List/components/TeamApplicationManageDialog.tsx b/frontend/src/pages/Deploy/Team/List/components/TeamApplicationManageDialog.tsx index ee56092a..e011972b 100644 --- a/frontend/src/pages/Deploy/Team/List/components/TeamApplicationManageDialog.tsx +++ b/frontend/src/pages/Deploy/Team/List/components/TeamApplicationManageDialog.tsx @@ -136,6 +136,7 @@ export const TeamApplicationManageDialog: React.FC< const handleSaveApplication = async (data: { id?: number; appId: number; + buildType: 'JENKINS' | 'NATIVE' | null; branch: string; deploySystemId: number | null; deployJob: string; @@ -149,6 +150,7 @@ export const TeamApplicationManageDialog: React.FC< teamId, applicationId: data.appId, environmentId: editingEnvironment.id, + buildType: data.buildType || undefined, branch: data.branch, deploySystemId: data.deploySystemId || undefined, deployJob: data.deployJob, @@ -240,6 +242,7 @@ export const TeamApplicationManageDialog: React.FC< 应用名称 环境 + 构建类型 分支 Jenkins系统 Jenkins Job @@ -258,11 +261,18 @@ export const TeamApplicationManageDialog: React.FC< {getEnvironmentName(app.environmentId)} + + {app.buildType === 'JENKINS' ? 'Jenkins构建' : app.buildType === 'NATIVE' ? '脚本部署' : '-'} + {app.branch || '-'} - {app.deploySystemName || `系统 ${app.deploySystemId}`} + {app.buildType === 'JENKINS' + ? (app.deploySystemName || (app.deploySystemId ? `系统 ${app.deploySystemId}` : '-')) + : '-'} + + + {app.buildType === 'JENKINS' ? (app.deployJob || '-') : '-'} - {app.deployJob || '-'} {app.workflowDefinitionName || '-'} diff --git a/frontend/src/pages/Deploy/Team/List/types.ts b/frontend/src/pages/Deploy/Team/List/types.ts index 8f3515f6..d758b287 100644 --- a/frontend/src/pages/Deploy/Team/List/types.ts +++ b/frontend/src/pages/Deploy/Team/List/types.ts @@ -105,6 +105,19 @@ export interface TeamEnvironmentConfigRequest { // ==================== 团队应用关联相关 ==================== +/** + * 构建类型枚举 + */ +export type BuildType = 'JENKINS' | 'NATIVE'; + +/** + * 构建类型选项 + */ +export const BUILD_TYPE_OPTIONS = [ + { value: 'JENKINS', label: 'Jenkins构建' }, + { value: 'NATIVE', label: '脚本部署' }, +] as const; + /** * 团队应用关联响应 */ @@ -112,6 +125,7 @@ export interface TeamApplication extends BaseResponse { teamId: number; applicationId: number; environmentId: number; + buildType?: BuildType; // 构建类型 branch?: string; deploySystemId?: number; deployJob?: string; @@ -135,6 +149,7 @@ export interface TeamApplicationRequest { teamId: number; applicationId: number; environmentId: number; + buildType?: BuildType; // 构建类型 branch?: string; deploySystemId?: number; deployJob?: string;