diff --git a/src/pages/applications/DeploymentManagementPage.tsx b/src/pages/applications/DeploymentManagementPage.tsx index ba24057..fe8eb88 100644 --- a/src/pages/applications/DeploymentManagementPage.tsx +++ b/src/pages/applications/DeploymentManagementPage.tsx @@ -80,6 +80,7 @@ export function DeploymentManagementPage() { const [deployModalOpen, setDeployModalOpen] = useState(false); const [selectedDeployment, setSelectedDeployment] = useState(null); const [loading, setLoading] = useState(true); + const [deploying, setDeploying] = useState(false); const [page, setPage] = useState(1); const [range, setRange] = useState('week'); const [totalDeployments, setTotalDeployments] = useState(0); @@ -159,6 +160,8 @@ export function DeploymentManagementPage() { }; const deploy = async () => { + if (deploying) return; + setDeploying(true); try { const result = await createDeployment({ releaseId, environment: 'prod', namespace, updateLauncherAppVersion }); toast({ type: 'success', message: '배포 작업이 실행되었습니다.' }); @@ -167,6 +170,8 @@ export function DeploymentManagementPage() { await refresh(); } catch (error) { toast({ type: 'error', message: error instanceof Error ? error.message : '배포 실행에 실패했습니다.' }); + } finally { + setDeploying(false); } }; @@ -310,9 +315,11 @@ export function DeploymentManagementPage() { - setDeployModalOpen(false)} footer={<>}> + { + if (!deploying) setDeployModalOpen(false); + }} footer={<>}>
- { const release = releases.find((item) => item.id === event.target.value); setReleaseId(event.target.value); setNamespace(release?.app.namespace || ''); @@ -320,12 +327,13 @@ export function DeploymentManagementPage() { {deployableReleases.map((release) => )} - setNamespace(event.target.value)} placeholder="stdo-lms" /> + setNamespace(event.target.value)} placeholder="stdo-lms" />