align launcher build version handling
This commit is contained in:
@@ -140,7 +140,7 @@ export function DeploymentManagementPage() {
|
||||
<PageTitle
|
||||
eyebrow="어플리케이션"
|
||||
title="배포 관리"
|
||||
description="생성된 릴리즈를 개발, 검수, 운영 환경에 배포하고 재배포와 롤백을 관리합니다."
|
||||
description="생성된 릴리즈를 개발 또는 운영 환경에 배포하고 재배포와 롤백을 관리합니다."
|
||||
actions={
|
||||
<Button className="h-8 px-3 text-[13px]" disabled={filteredReleases.length === 0} onClick={() => openDeployModal()}>
|
||||
<Plus className="size-4" />
|
||||
@@ -268,7 +268,10 @@ export function DeploymentManagementPage() {
|
||||
<option value="">릴리즈 선택</option>
|
||||
{filteredReleases.map((release) => <option key={release.id} value={release.id}>{release.app.name} {release.version}</option>)}
|
||||
</select>
|
||||
<input className="h-9 w-full rounded-md border border-input bg-background px-3 text-sm outline-none" value={environment} onChange={(event) => setEnvironment(event.target.value)} placeholder="dev / release / prod" />
|
||||
<select className="h-9 w-full rounded-md border border-input bg-background px-3 text-sm outline-none" value={environment} onChange={(event) => setEnvironment(event.target.value)}>
|
||||
<option value="dev">개발</option>
|
||||
<option value="prod">운영</option>
|
||||
</select>
|
||||
<input className="h-9 w-full rounded-md border border-input bg-background px-3 text-sm outline-none" value={namespace} onChange={(event) => setNamespace(event.target.value)} placeholder="stdo-lms" />
|
||||
<label className="flex items-center gap-2 rounded-md border border-border bg-muted/20 px-3 py-2 text-sm text-foreground">
|
||||
<input
|
||||
|
||||
@@ -90,6 +90,7 @@ export function LauncherBuildPage() {
|
||||
const backendSource = source?.backend;
|
||||
const clientSource = source?.client;
|
||||
const artifactName = `autonomy-studio-launcher-${version || activeVersion?.version || '0.0.0'}.deb`;
|
||||
const clientArtifactPreview = 'package.json 버전과 실제 .deb 파일명 기준으로 빌드 후 자동 확정';
|
||||
const backendImageName = backendSource?.image || 'localhost:5000/studio-launcher-be';
|
||||
const backendImageTag = `${backendImageName.replace(/\/$/, '')}:${version || '0.1.0'}`;
|
||||
const backendDockerfile = backendSource?.dockerfile || 'Dockerfile';
|
||||
@@ -163,9 +164,9 @@ export function LauncherBuildPage() {
|
||||
repository: isBackend ? backendSource?.repository ?? undefined : clientSource?.repository ?? activeVersion?.repository ?? undefined,
|
||||
branch,
|
||||
commitSha: commitSha.trim() || undefined,
|
||||
version: version.trim(),
|
||||
version: isBackend ? version.trim() : undefined,
|
||||
uploadPath: isBackend ? backendDockerfile : uploadPath,
|
||||
artifact: isBackend ? backendImageName.replace(/^localhost:5000\//, '') : artifactName,
|
||||
artifact: isBackend ? backendImageName.replace(/^localhost:5000\//, '') : undefined,
|
||||
downloadUrl: isBackend ? backendImageTag : r2PublicBaseUrl ? downloadUrl : undefined
|
||||
})
|
||||
.then(({ job }) => {
|
||||
@@ -187,7 +188,7 @@ export function LauncherBuildPage() {
|
||||
title="빌드 관리"
|
||||
description="런처 클라이언트 설치 파일과 백엔드 컨테이너 이미지를 구성요소별로 빌드합니다."
|
||||
actions={
|
||||
<Button className="h-8 px-3 text-[13px]" onClick={createJob} disabled={!version.trim()}>
|
||||
<Button className="h-8 px-3 text-[13px]" onClick={createJob} disabled={isBackend && !version.trim()}>
|
||||
<Play className="size-4" />
|
||||
실행
|
||||
</Button>
|
||||
@@ -207,10 +208,17 @@ export function LauncherBuildPage() {
|
||||
<Card className="min-w-0 overflow-hidden">
|
||||
<CardHeader title="빌드 요청" description={isBackend ? '브랜치와 커밋 기준으로 런처 백엔드 이미지를 빌드하고 레지스트리에 푸시합니다.' : '브랜치와 커밋 기준으로 런처 설치 파일을 생성합니다.'} />
|
||||
<div className="space-y-4 p-5">
|
||||
{isBackend ? (
|
||||
<label className="block">
|
||||
<span className="text-xs font-medium text-muted-foreground">{isBackend ? '이미지 태그' : '버전'}</span>
|
||||
<span className="text-xs font-medium text-muted-foreground">이미지 태그 버전</span>
|
||||
<input className="mt-2 h-9 w-full rounded-md border border-input bg-background px-3 text-sm text-foreground outline-none focus:ring-2 focus:ring-ring" value={version} onChange={(event) => setVersion(event.target.value)} />
|
||||
</label>
|
||||
) : (
|
||||
<div className="rounded-md border border-border bg-muted/20 px-3 py-2">
|
||||
<p className="text-xs font-medium text-muted-foreground">버전</p>
|
||||
<p className="mt-1 text-sm font-medium text-foreground">빌드 후 package.json 기준으로 자동 확정</p>
|
||||
</div>
|
||||
)}
|
||||
<label className="block">
|
||||
<span className="text-xs font-medium text-muted-foreground">브랜치</span>
|
||||
<select className="mt-2 h-9 w-full rounded-md border border-input bg-background px-3 text-sm text-foreground outline-none focus:ring-2 focus:ring-ring" value={branch} onChange={(event) => setBranch(event.target.value)}>
|
||||
@@ -224,12 +232,12 @@ export function LauncherBuildPage() {
|
||||
<input className="mt-2 h-9 w-full rounded-md border border-input bg-background px-3 font-mono text-sm text-foreground outline-none placeholder:text-muted-foreground focus:ring-2 focus:ring-ring" value={commitSha} onChange={(event) => setCommitSha(event.target.value)} placeholder="비워두면 브랜치 최신 커밋" />
|
||||
</label>
|
||||
<div className="rounded-md border border-border bg-background p-3">
|
||||
<p className="text-xs text-muted-foreground">{isBackend ? '이미지' : '예상 산출물'}</p>
|
||||
<p className="mt-2 break-all font-mono text-xs text-foreground">{isBackend ? backendImageTag : artifactName}</p>
|
||||
<p className="text-xs text-muted-foreground">{isBackend ? '이미지' : '산출물'}</p>
|
||||
<p className="mt-2 break-all font-mono text-xs text-foreground">{isBackend ? backendImageTag : clientArtifactPreview}</p>
|
||||
<p className="mt-2 text-xs text-muted-foreground">{isBackend ? 'Dockerfile' : 'R2 Object Key'}</p>
|
||||
<p className="mt-1 break-all font-mono text-xs text-foreground">{isBackend ? backendDockerfile : uploadPath}</p>
|
||||
<p className="mt-1 break-all font-mono text-xs text-foreground">{isBackend ? backendDockerfile : clientArtifactPreview}</p>
|
||||
<p className="mt-2 text-xs text-muted-foreground">{isBackend ? 'Repository' : '다운로드 URL'}</p>
|
||||
<p className="mt-1 break-all font-mono text-xs text-foreground">{isBackend ? backendSource?.repository || '-' : downloadUrl}</p>
|
||||
<p className="mt-1 break-all font-mono text-xs text-foreground">{isBackend ? backendSource?.repository || '-' : clientArtifactPreview}</p>
|
||||
</div>
|
||||
</div>
|
||||
</Card>
|
||||
|
||||
@@ -160,8 +160,8 @@ export function createLauncherBuildJob(input: {
|
||||
repository?: string;
|
||||
branch?: string;
|
||||
commitSha?: string;
|
||||
version: string;
|
||||
artifact: string;
|
||||
version?: string;
|
||||
artifact?: string;
|
||||
uploadPath?: string;
|
||||
downloadUrl?: string;
|
||||
}) {
|
||||
|
||||
@@ -367,7 +367,7 @@ export function RuntimeConfigPage() {
|
||||
<div className="flex items-start justify-between gap-4 border-b border-border px-5 py-4">
|
||||
<div>
|
||||
<h2 className="text-sm font-semibold text-foreground">런타임 프로필</h2>
|
||||
<p className="mt-1 text-xs leading-5 text-muted-foreground">개발, 검수, 운영처럼 배포 환경별로 적용할 설정 묶음입니다.</p>
|
||||
<p className="mt-1 text-xs leading-5 text-muted-foreground">개발과 운영처럼 배포 환경별로 적용할 설정 묶음입니다.</p>
|
||||
</div>
|
||||
<span className="text-xs text-muted-foreground">총 {profiles.length}개</span>
|
||||
</div>
|
||||
@@ -643,7 +643,6 @@ export function RuntimeConfigPage() {
|
||||
<span className="text-xs font-medium text-muted-foreground">환경</span>
|
||||
<select className="mt-2 h-9 w-full rounded-md border border-input bg-background px-3 text-sm text-foreground outline-none focus:ring-2 focus:ring-ring" value={profileEnvironment} onChange={(event) => setProfileEnvironment(event.target.value)}>
|
||||
<option value="dev">개발</option>
|
||||
<option value="stage">검수</option>
|
||||
<option value="prod">운영</option>
|
||||
</select>
|
||||
</label>
|
||||
|
||||
Reference in New Issue
Block a user